1 裸机与RTOS介绍
1.1 裸机与RTOS的区别
1.2 裸机与RTOS的特点
裸机:裸机又称为前后台系统,前台系统指的是终端服务函数,后台系统指的是大循环,即应用程序。
RTOS全称为:Real Time OS,即实时操作系统,强调的是实时性。
1.2 RTOS系统
RTOS全称为:Real Time OS,即实时操作系统,强调的是实时性。
实时操作系统 | 硬实时 | 要求在规定时间内必须完成操作,硬实时系统不允许超时。 |
软实时 | 软实时系统中处理过程超时的后果没那么严格。 |
在实时操作系统中,我们可以把要实现的功能划分为多个任务,每个任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是一个死循环。
RTOS操作系统:FreeRTOS、UCOS、RTX、RT-Thread、DJYOS等。
RTOS操作系统的核心在于:实时内核(可剥夺型内核)。
可剥夺型内核:顾名思义就是可以剥夺其他任务的CPU使用权,它总是运行就绪任务中的优先级最高的那个任务。
RTOS的内核负责管理所有的任务,内核决定了运行哪个任务,何时停止当前任务切换到其他任务,这个是内核的多任务管理能力。
2 FreeRTOS系统简介
2.1 FreeRTOS系统简介
FreeRTOS是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。FreeRTOS提供了实时操作系统所需要的所有功能,包括资源管理、同步、任内务通信等。FreeRTOS使用C语言和汇编共同编写,只有极少数与处理器相关的部分代码采用汇编。
3 FreeRTOS移植
准备工作:准备一个简单的程序,如流水灯。开发板:STM32F7系列
工具:参考手册使用的是KEIL,我用的是IAR。在移植过程中有点区别。
具体步骤参考:正点原子的STM32F767 FreeRTOS开发手册第二章 FreeRTOS移植
3.1 IAR与KEIL在移植过程中的区别:(以下是IAR,参考手册是KEIL)
3.1.1 添加RTOS源码
保留IAR文件夹,添加port.c的时候记得选IAR中的.c文件。添加头文件的时候也是IAR里的。
3.1.2 在IAR中移植发生的错误
(1) 添加FreeRTOSConfig.h文件(参考手册)
(2) 发生vApplicationTickHook错误
解决方案
(3)发生vAssertCalled错误
解决方案
(4)发生SysTick_Handler错误
解决方案
(5)vApplicationMallocFailedHook错误
解决方案
(6) PendSV_Handler/SVC_Handler错误
解决方案
(7)no definition "vPortEnableVFP"
解决方案
在工程里面加入这个.s文件
(8)Failed to open #include file ‘FreeRTOSConfig.h’
解决方案
3.2 移植完成但是灯不闪
可能是没有修改stm32f7xx_it.c文件