- 博客(6)
- 收藏
- 关注
原创 深入浅出理解FreeRTOS内核(3)——任务(下)
本文摘要:FreeRTOS任务创建与管理的核心要点:1)任务必须设计为死循环,否则需手动删除;2)静态创建任务需要配置configSUPPORT_STATIC_ALLOCATION并实现空闲任务和定时器任务的内存分配函数;3)每个任务需要独立的任务栈和控制块(TCB),静态方式使用堆空间;4)强调内存对齐对CPU访问效率的重要性;5)静态创建函数xTaskCreateStatic需提供堆栈缓冲区和任务控制块,并进行严格校验。文章详细解析了FreeRTOS任务机制的底层实现原理。
2025-06-15 00:19:07
791
原创 深入浅出理解FreeRTOS内核(3)——任务(中)
本文摘要:FreeRTOS任务优先级机制解析,重点介绍了在就绪列表中查找最高优先级任务的实现方式。系统通过taskSELECT_HIGHEST_PRIORITY_TASK宏从就绪任务列表中选择优先级最高的任务,当configUSE_PORT_OPTIMISED_TASK_SELECTION为0时采用通用方法遍历查找,为1时则使用针对特定微控制器架构优化的方法。代码展示了如何记录任务优先级(taskRECORD_READY_PRIORITY)和重置优先级(taskRESET_READY_PRIORITY)的
2025-06-13 00:23:06
1168
原创 深入浅出理解FreeRTOS内核(3)——任务(上)
摘要FreeRTOS内核任务机制通过将裸机系统中的单一循环拆分为多个独立任务实现并发执行。任务创建需要定义任务栈(StackType_t数组)、任务函数(无限循环结构)和任务控制块(TCB)。静态任务创建使用xTaskCreateStatic()函数,其核心是prvInitialiseNewTask()初始化过程,包括:1)计算栈顶指针并字节对齐;2)设置任务名称;3)维护TCB中的关键信息如栈指针、任务列表节点等。每个任务拥有独立栈空间,通过TCB中的xStateListItem挂载到调度队列,实现任务
2025-06-12 01:04:42
926
原创 深入浅出理解FreeRTOS内核(2)——CM3的中断与临界段的保护
本文介绍了STM32中的NVIC(嵌套向量中断控制器)及其工作原理。首先阐述了CM3内核的寄存器组和特殊功能寄存器,包括堆栈指针的选择和操作模式。接着详细解析了ARM Cortex-M中断机制,重点分析了STM32的中断优先级管理,包括抢占优先级和子优先级的分配方式。然后讨论了CM3的中断清单、优先级规则和中断向量表机制,特别是向量表重定位功能。最后简要提及了硬Fault等系统异常。文章通过寄存器结构、优先级分组和向量表配置等方面,全面讲解了STM32中断系统的底层实现原理。
2025-06-03 23:20:31
908
原创 深入浅出理解FreeRTOS内核(1)——列表与列表项
本文分析了FreeRTOS中链表节点和链表的实现机制。链表节点(xLIST_ITEM)采用双向链表结构,包含前驱/后继指针、所属链表指针和辅助排序值。链表的根节点(xLIST)包含节点计数、索引指针和特殊尾节点(xListEnd)。尾节点通过循环指向前后自身实现初始化。文章详细讲解了节点的两种插入方式:尾插法通过调整4个指针完成插入;升序插入则根据辅助值确定位置。此外还介绍了完整性检查机制和数据类型重定义等细节。整体呈现了FreeRTOS高效简洁的链表管理实现。
2025-06-02 15:03:21
801
原创 STM32串口IAP(OTA)升级过程解析
本文解析了STM32基于串口的IAP(OTA)固件升级方案。首先介绍了STM32的内存分布和启动流程,包括FLASH、SRAM和系统存储器的启动方式。然后阐述了IAP设计逻辑,重点分析了AB分区理念的实现方法。文章详细讲解了串口空闲中断结合DMA的传输机制、外部Flash的读写操作,以及Xmodem协议在固件传输中的应用。此外还介绍了Bootloader命令行的设计、相关API接口以及从Bootloader跳转到应用程序的关键技术。最后说明了如何使用MDK工具生成.bin文件。该方案可扩展为基于云平台的双分
2025-05-28 22:44:04
1827
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人