[DemoCode下载] 如何移植FreeRTOS至M451

[复制链接]
4737|20
 楼主| 落叶行健ywm 发表于 2015-10-17 15:04 | 显示全部楼层 |阅读模式
#开发环境
开发IDE:CoIDE_V2Beta
编译工具:GNU Tools for ARM Embedded Processors 4.7-Q2 2014


###第一步:搭建基本工程框架
这个步骤基本在安装CoIDE_V2Beta工具后安装上面的引导就可以顺序完成了。
选择的组件是:
        1:C_library     用于c库吧
        2:Retarget_printf   用于打印printf使用
        3:M451     M453的库函数组件,这个是CooCox官方优化过的,也可以自己根据新塘官方的库函数自己搭建

基本搭建完成后,你就可以再main函数里进行自己初始化,printf函数的功能实现等基本功能了。
printf函数功能需要修改Retarget_printf组件下的prinf.c这个文件的一个函数,如下添加相关串口信息就可以了。也要在IDE的配置选项中的“Link”中勾选“Don't usestandard system start files”和选择一个cLibrary.这样你就可以使用printf功能了。

  1. __attribute__ ((weak)) void PrintChar(char c)
  2.         {
  3.                 /* Send a char like:
  4.                    while(Transfer not completed);
  5.                    Transmit a char;
  6.                 */       
  7.                 //记得要初始化化串口0哦
  8.                 while(UART0->FIFOSTS & UART_FIFOSTS_TXFULL_Msk);
  9.             
  10.             UART0->DAT = c;
  11.             if(c == '\n')
  12.             {
  13.                 while(UART0->FIFOSTS & UART_FIFOSTS_TXFULL_Msk);
  14.                 UART0->DAT = '\r';
  15.                 }
  16.         }
工程目录图如下:

工程目录结构

工程目录结构



###第二步:将FreeRTOS工程文件加入
下载“FreeRTOSV8.2.1”源码,加入需要的部分
工程目录图如下:

FreeRTOS目录结构

FreeRTOS目录结构

###第三步:配置FreeRTOS,编写测试代码

配置信息参考新塘官方库函数里面的或者FreeRTOS代码里的CM4F的例子。
例子就随便参考官方例子自己测试吧。
对了,记得要配置IDE使能FPU这个功能,否则编译器报找不到-mthumb这个错误。我就被这个折腾了半天困难。

###附录一:我的工程源码下载地址
https://git.oschina.net/490054348/M451_FreeRTOS.git
一份用markdown写的文件
如何移植FreeRTOS至M451.pdf (62.53 KB, 下载次数: 51)
cowboy2014 发表于 2015-10-17 21:11 | 显示全部楼层
移植过ucos ii,不过我觉得是差不多的
ccw1986 发表于 2015-10-17 21:28 | 显示全部楼层
FreeRTOS是可剥夺型内核的操作系统吗
598330983 发表于 2015-10-18 07:36 来自手机 | 显示全部楼层
要配置IDE使能FPU这个功能,否则编译器报找不到-mthumb这个错误
奥德赛 发表于 2015-10-18 08:57 | 显示全部楼层
主要是那个汇编文件如何写吧
mintspring 发表于 2015-10-18 10:42 | 显示全部楼层
FreeOS怎么玩,移植后了,怎么应用自己的工程?
稳稳の幸福 发表于 2015-10-18 12:39 | 显示全部楼层
安装CoIDE_V2Beta工具后安装上面的引导就可以顺序完成了。
这个怎么还是beta版本啊,更新速度不给力
huangcunxiake 发表于 2015-10-18 15:40 | 显示全部楼层
我觉得这个COIED是很酷的,代码给的都挺好用的。
Messi1999 发表于 2015-10-18 20:50 | 显示全部楼层
printf函数功能需要修改Retarget_printf组件下的prinf.c这个文件的一个函数。
小猫爱吃鱼 发表于 2015-10-19 08:42 | 显示全部楼层
我看到在startup.s文件需要初始化堆栈,而在移植ucos ii的时候也需要初始化堆栈,不知道具体该怎么弄啊
 楼主| 落叶行健ywm 发表于 2015-10-19 13:35 | 显示全部楼层
小猫爱吃鱼 发表于 2015-10-19 08:42
我看到在startup.s文件需要初始化堆栈,而在移植ucos ii的时候也需要初始化堆栈,不知道具体该怎么弄啊 ...

移植FreeRTOS时都自动搞定了,只要配置一个值就可以了。我感觉比uc2好移植多了
 楼主| 落叶行健ywm 发表于 2015-10-19 13:35 | 显示全部楼层
huangcunxiake 发表于 2015-10-18 15:40
我觉得这个COIED是很酷的,代码给的都挺好用的。

是的,eclipse定制版的,很喜欢
 楼主| 落叶行健ywm 发表于 2015-10-19 13:36 | 显示全部楼层
mintspring 发表于 2015-10-18 10:42
FreeOS怎么玩,移植后了,怎么应用自己的工程?

这个也很简单的,后续我会在代码里添加些。我现在的项目就在使用,感觉很爽
 楼主| 落叶行健ywm 发表于 2015-10-19 13:37 | 显示全部楼层
ccw1986 发表于 2015-10-17 21:28
FreeRTOS是可剥夺型内核的操作系统吗

这个暂时我还没了解,我现在只是应用阶段,以后再研究吧。不过作为个全球用的一个种类,功能还是可以肯定的
 楼主| 落叶行健ywm 发表于 2015-10-19 13:38 | 显示全部楼层
cowboy2014 发表于 2015-10-17 21:11
移植过ucos ii,不过我觉得是差不多的

我个人感觉比ucos ii好移植多了。
huangcunxiake 发表于 2015-10-19 21:50 | 显示全部楼层
回头我有什么不懂的,来这问楼主,先谢谢。
mintspring 发表于 2015-10-31 14:45 | 显示全部楼层
eclipse定制版的,很喜欢
cowboy2014 发表于 2015-11-2 20:31 | 显示全部楼层
有移植ucos ii例程的吗
yiyigirl2014 发表于 2016-8-7 14:16 | 显示全部楼层
移植过ucos ii,不过我觉得是差不多的,下载学习一下。
天灵灵地灵灵 发表于 2016-8-9 22:57 | 显示全部楼层
来学习一下系统移植,这个貌似高手都会
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:爱这个世界!

34

主题

715

帖子

18

粉丝
快速回复 在线客服 返回列表 返回顶部