将STM32F4_uCOS_System Migration\\Project\%uC-LIB下所有文件加入到uC-LIB组。
将STM32F4_uCOS_System Migration\\Project\%uC-LIB\\Ports\\ARM-Cortex-M4\\RealView下文件加入到uC-LIB组。
将STM32F4_uCOS_System Migration\\Project\%uC-CPU下所有文件加入到uC-CPU组。
将STM32F4_uCOS_System Migration\\Project\%uC-CPU\\ARM-Cortex-M4\\RealView下所有文件加入到uC-CPU组。
将STM32F4_uCOS_System Migration\\Project\%uC-Serial\\Driver\\ST下文件加入到uC-Serial组。 将STM32F4_uCOS_System Migration\\Project\%uC-Serial\\Driver\\ST\\STM3240x下文件加入到uC-Serial组。
将STM32F4_uCOS_System Migration\\Project\%uC-Serial\\Line下文件加入到uC-Serial组。 将STM32F4_uCOS_System Migration\\Project\%uC-Serial\\OS\%uCOS-II下文件加入到uC-Serial组。
将STM32F4_uCOS_System Migration\\Project\%uC-Serial\\Source下文件加入到uC-Serial组。
将STM32F4_uCOS_System Migration\\Project\\BSP文件下所有文件加入到BSP组中。
将Micrium\\Software\\EvalBoards\\ST\\STM3240G-EVAL\%uCOS-II文件夹下app.c中内容全选复制到User组中的main.c,替换main.c全部内容,此时STM32F4_uCOS_System
Migration\\Project\\User文件夹下应该还有一个main.h的文件,此文件可以删掉,也可以留着添加其他内容。我选择删掉,如果不删掉main.h,则需要将void TimingDelay_Decrement(void);(第40行)这一行删掉。
此外还需要将User组中stm32f4xx_it.c文件中SysTick_Handler函数里内容删掉(即144行),还有若已删除main.h,则删除头文件包含#include “main.h”(即第32行);若未删除,则不用操作。
此时User组中所有的文件如下图所示。
至此uCOS的文件添加完毕,需要添加一些相应的头文件路径,如下图所示。
此时编译整个工程,没有错误,没有警告,但是这里面没有加测试代码,需要加入代码进行验证。
2.4 移植后测试
此时虽然编译没有错误和警告,但是将程序灌入开发板,程序不能正常运行,卡死在
B OSStartHang这条语句上,查找了一下原因,是因为startup_stm32f40xx.s这个文件出错了,需要做相应的修改。
解决办法:
1、 修改startup_stm32f40xx.s这个文件,但是因为此次移植,是将整个uCOS-II系统的代码
都加入工程,未做裁剪,所以startup_stm32f40xx.s这个文件已不能满足系统需求。 2、 startup_stm32f40xx.s这个文件不能满足需求,所以从参考工程中招解决办法。
将资料\\移植\\1\\Micrium\\Software\\EvalBoards\\ST\\STM3240G-EVAL\\BSP\\KeilMDK文件夹下cstartup.s这个文件复制到STM32F4_uCOS_System Migration\\Libraries\\CMSIS文件夹下,然后将MDK工程中CMSIS组中的startup_stm32f40xx.s移除,将cstartup.s加入到CMSIS组中。
2.5 错误和技巧
以上的所有步骤都做完了,理论上,不会出现异常,但是由于操作失误,我出现了一个问题,就是工程仍然不能执行,找了一天,终于发现问题所在。
文中蓝色位置就是导致,我出现工程不能执行的错误。若是选中此项,需要修改启动代码(网上找的解答),有这个需求,请看客自己去找答案。此处修改成如下图所示,问题就解决了。
至此所有的问题都已解决,uCOS系统移植是可以裁减的,各位看客可以根据自己的需求进行移植。
相关推荐: