freertos 移植关键点

1,源文件准备 (freertos官网获取源码

1)与FreeRTOS内核有关的文件数量仅为3个,分别是list.c  queue.c  tasks.c

    croutine.c  timers.c  也是必须得文件

    该文件位于FreeRTOS\Source

2)与内存分配有关的文件共有4个,分别是heap_1.c,heap_2.c,heap_3.c,heap_4.c,heap_5.c  最新版有5个文件只需选择其中 

  的1个。

    该文件位于Source\portable\MemMang。

3) 与移植相关的代码包括port.c portmacro.h。这些代码不但和编译器有关还和平台(MCU)有关。FreeRTOS先以编译器为大类,然后再以平台(MCU)为小类。在这里选择Keil编译器,平台为ARM_CM4F。

    该文件位于Source\portable\RVDS\ARM_CM4F。

4)除了上述内容之外,还包括FreeRTOS内核相关的头文件。

    该文件FreeRTOS\Source\include。

tip: 1、FreeRTOS中联合程序(co-routine)与任务类似,但在实现上区别,可参考http://www.openrtos.cn/freertos/taskandcr.html获取详细内容。简单而言联合程序相当于不能抢占的任务,其优先级均低于任务。因为其非抢占性,因此其需要的系统资源更少,不需要独立的堆栈空间。

2、portmacro.h 主要包括两部分内容,第一部分定义了一系列内核代码中用到的数据类型。FreeRTOS 与 uC/OS-II 一样,并不直接使用charint 等这些原生类型,而是将其重新定义为一系列以port开头的新类型。在uC/OS-II的移植代码中,通常采用 typedef 来定义新的类型,而FreeRTOS的作者似乎更喜欢用宏定义。


2、freertos 需要的使用到的中断和硬件

freertos需要使用三个中断:

1) systick     系统时钟

2) PendSV   任务调度需要使用

3 )  SVC         任务调度需要使用

SVC(系统服务调用)用于任务启动,有些操作系统不允许应用程序直接访问硬件,而是通过提供一些系统服务函数,通过SVC来调用;

PendSV(可挂起系统调用)用于完成任务切换,它的最大特性是如果当前有优先级比它高的中断在运行,PendSV会推迟执行,直到高优先级中断执行完毕;

SysTick用于产生系统节拍时钟,提供一个时间片,如果多个任务共享同一个优先级,则每次SysTick中断,下一个任务将获得一个时间片。

PendSV和SysTick异常优先级设置为最低,这样任务切换不会打断某个中断服务程序,中断服务程序也不会被延迟,这样简化了设计,有利于系统稳定。

3、系统配置

  FreeRTOSConfig.h需要自行加入工程,并且配置内容


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值