微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > (四)移植FreeRTOS系统到麒麟座

(四)移植FreeRTOS系统到麒麟座

时间:10-02 整理:3721RD 点击:

车体等装备准备好了,传感器已就位。开始传感器数据采集部分工作。


MPU6050采用IIC接口来读取数据。准备使用软件模拟IIC。这种方式比较耗费CPU资源。考虑了一下还是使用一个小型实时系统好了。利用实时系统的任务管理来保证高优先级任务的执行。
之前一直在用RTX系统,这次想试试FreeRTOS系统。花了一天时间把150页的FreeRTOS指南看了一遍。感觉和RTX系统差不多。不过RTX系统和FreeRTOS系统的源码我都没看,只阅读过UCOS-II系统的源码。不过从移植文件上看,FreeRTOS系统的代码量应该比UCOS-II小很多。

FreeRTOS的主要特点如下:

1. 支持抢占式调度,合作式调度和时间片调度

2. 具有低功耗模式,称为tickless模式

3. FreeRTOS-MPU支持M3/M4/M7内核的MPU(内存保护单元)

4. 典型的内核使用大小在4k~9k

5. 支持消息队列、二值信号量、计数信号量、递归信号量和互斥信号量,可用于任务与任务之间的消息传递和同步,任务与终端间的消息传递和同步

6. 任务数量不限,任务优先级数量不限

7. 高效的软件定时器,不需要损耗额外的CPU时间,除非需要执行定时器任务

8. 任务间直接的消息传递,速度较快

9. FreeRTOS的队列是其它通信和同步机制的基础


话不多说,开始移植,在这里记录下过程分享给想同样想试试这个系统的小伙伴。也方便以后再次用的时候自己查阅一下。毕竟不常用,不熟悉。


到这个网站可以下载到最新源码,网址是:https://sourceforge.net/projects/freertos/files/latest/download?source=files
下载之后解压,在文件夹里找到Source文件夹,并把它复制到你的工程里。此文件夹里包含系统源码文件。FreeRTOS的源码核心部分是tasks.c和list.c,其余的几个文件功能都是可选的,例如软件定时器、队列、协程等等。


然后在DEMO文件夹里找到FreeRTOSConfig.h,里面包含系统时钟、任务最大优先级、是否使用钩子函数等等一系列配置。在编写系统任务前,有必要对配置文件FreeRTOSConfig.h进行检查。FreeRTOSConfig.h里面几乎都是一些宏定义。


在工程中添加新的头文件搜索路径:

.\FreeRTOS\include;

.\FreeRTOS\portable\RVDS\ARM_CM3

添加内存管理的方案四heap_4.c和port.c文件,该方案具有内存块碎片合并功能,比heap_2.c的最优内存块分配方案要稳定很多。

移植结果如图:



编译结果无错误。这里省略了不少细节,包括更改启动文件里,系统用到的3个中断向量等等。后面的帖子在补充吧,第一次用这个,发现什么问题就顺便在帖子里说一下。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top