FreeRTOS移植各种bug
小白头铁第三天:完成基础FreeRTOS移植,搭建好了整个系统框架,接下来就是添加任务函数,进入系统轮询,愿最终芯片内存足以支撑我完成整个系统配置!
1、不同芯片的keil配置
具体细节参见移植数据文档,主要修改包括:
Device(芯片选择);
Taeget(ARM Compiler设置);
C/C++(Define以及Include Paths选择);
编译link选择以及flash型号选择
2、相关C文件以及函数修改
具体细节参见移植数据文档,主要修改包括:
delay函数修改;
sys.c文件的修改;
usart.c文件的修改;
添加startup_stmXXXXX.s文件;
专用于FreeRTOS系统的宏定义配置;
如果遇到内存出现不够的,运行下一步进入HardFault_Handler的情况,需要在FreeRTOSConfig.h中修改堆栈大小如
/***************************************************************************************************************/
/* FreeRTOS与内存申请有关配置选项 */
/***************************************************************************************************************/
#define configSUPPORT_DYNAMIC_ALLOCATION 1 //支持动态内存申请
#define configTOTAL_HEAP_SIZE ((size_t)(10 * 1024)) //系统所有总的堆大小,原是20 * 1024
总结
移植时,需要考虑到移植前后芯片型号配置问题,不同芯片其内存运行大小是不同的,容易出现堆栈溢出等情况,同时也要配置好软件的相关配置,使程序最终得以编译!
“bug千万条,保命第一条!哈哈”