摘要: 一、busybox简介 busybox是一个可执行文件,可以用作最简单的根文件系统,例如ls命令可以借助busybox这个可执行文件实现。 二、编译过程 # 解压 tar xjf busybox-1.31.1.tar.bz2 cd busybox-1.31.1/ # 编译 vi Makefile c 阅读全文
posted @ 2025-07-29 21:55 gramming 阅读(438) 评论(0) 推荐(0)
摘要: 一、Linux的I2C子系统框架介绍 I2C总线和I2C协议、SMBus协议 标准模式:100kbps、快速模式:400kbps、高速模式:3.4Mbps I2C接上拉电阻的作用:保证总线空闲处于高电平(开漏/开极输出输出0时总线处于高阻态)、实现线与功能(一个设备拉低总线的时候其他设备也能感知到) 阅读全文
posted @ 2025-07-22 16:13 gramming 阅读(214) 评论(0) 推荐(0)
摘要: 一、Pinctrl子系统介绍 描述引脚 复用引脚 配置引脚 二、Pinctrl子系统的三层 用户层,作为使用pinctrl子系统的消费者,在设备树中定义pinctrl的状态,并对某种状态引用pinctrl-controller的某个节点 核心层,core.c,提供了pinctrl-device相关的 阅读全文
posted @ 2025-07-21 10:56 gramming 阅读(517) 评论(0) 推荐(0)
摘要: 一、Linux的GPIO驱动框架介绍 功能包含:控制引脚的方向(输入/输出)、读取输入值、设置输出值、中断等 屏蔽了物理硬件层面的真实有效电平,在内核中使用逻辑电平,如输出1在高电平有效时输出高电平,在低电平有效时输出低电平 管理芯片自带的GPIO和扩展的GPIO,扩展的GPIO速度较慢,使用时不建 阅读全文
posted @ 2025-07-18 18:25 gramming 阅读(524) 评论(0) 推荐(0)
摘要: 一、软件定时器的特性 定时器的关键成员:周期、回调函数 定时器的指定类型:一次性、可自动重载定时器 定时器的状态:运行、休眠 FreeRTOS的软件定时器基于Tick中断实现,但是由于实时系统不允许在内核、中断中执行不确定时间的代码,因此定时器函数被放到了RTOS守护任务中实现 二、RTOS守护任务 阅读全文
posted @ 2025-07-14 21:46 gramming 阅读(420) 评论(0) 推荐(0)
摘要: 一、事件组和任务通知介绍 事件组可以用来广播,当事件发生时,所有符合条件的任务都会被唤醒;任务通知时高效的任务间通信方式,但是只能给单个任务发送单个数据。 二、关键结构体 typedef struct xEventGroupDefinition { EventBits_t uxEventBits; 阅读全文
posted @ 2025-07-14 20:56 gramming 阅读(300) 评论(0) 推荐(0)
摘要: 一、信号量和互斥量介绍 FreeRTOS的信号量和互斥量是限制资源访问数量的机制,传递状态,实现任务间的同步。信号量有计数信号量和二值信号量,互斥量相较于二值信号量能够解决优先级反转的问题。 二、信号量创建函数 // 创建计数型信号量 #define xSemaphoreCreateCounting 阅读全文
posted @ 2025-07-08 21:30 gramming 阅读(381) 评论(0) 推荐(0)
摘要: 一、队列介绍 FreeRTOS的队列能够实现任务到任务、任务到中断、中断到任务之间的消息传递,采用值拷贝完成传输数据,队列由队列头和环形缓冲区组成。 二、队列关键结构体 typedef struct QueueDefinition { int8_t *pcHead; // 指向队列存储区域头的指针 阅读全文
posted @ 2025-07-07 23:51 gramming 阅读(472) 评论(0) 推荐(0)
摘要: 一、FreeRTOS的任务介绍 FreeRTOS中的任务就是一个函数,一般是永不返回的,一个函数可以用来创建多个任务,每个任务都有自己的栈空间。任务有以下几种内容:任务的创建和删除、任务调度、任务优先级、任务状态、特殊任务。 二、TCB结构体 typedef struct tskTaskContro 阅读全文
posted @ 2025-07-01 21:46 gramming 阅读(349) 评论(0) 推荐(0)
摘要: 一、基础介绍 链表是FreeRTOS其他功能实现的基础,提供了清晰的API接口,本次分析其具体实现。 二、结构体成员介绍 // 这里忽略了volatile关键字 // 链表成员 struct xLIST_ITEM{ TickType_t xItemValue; // 值,用作排序用 struct x 阅读全文
posted @ 2025-06-30 18:38 gramming 阅读(324) 评论(0) 推荐(0)