1,FreeRTOS背景介绍
RTOS简介:
实时操作系统,本用于追求实时性的嵌入式系统,典型:ucos/uclinux/vxworks;
特点:中断响应快、一般可嵌套中断、使用实地址、多任务;
(实地址:)
近年来趋势:由RTOS向IoTOS转型,典型:FreeRTOS/LiteOS/rt-thread;
(IoTOS:主要与物联网相关,涉及到各种通讯协议等)
FreeRTOS简介:
以前是第三方免费rtos,后被Amazon收购;
官网地址:
FreeRTOS官网地址
RTOS学习主要学什么?
(1)RTOS的应用开发,核心是任务创建、IPC、内存管理等;
(2)RTOS的内核开发,核心是kernel部分源码解析和port部分硬件相关;
(3)IoT开发,核心是IoTOS提供的组件和资源使用;
2,FreeRTOS源码分析
目录结构:
创建SourceInsight工程,删除无关文件,主要保留Demo和Source文件夹:
task.c文件中主要是任务的创建、删除、优先级设置等函数:
TCB(task control block):
task的本质是一个函数。
内核的几个链表:
通过链表对源码进行分析。
任务创建函数:
任务删除函数:
3,FreeRTOS的配置
配置文件:
FreeRTOSConfig.h 开发者设置的配置文件;
FreeRTOS.h 源码中的配置文件;
开启任务调度:
demo的main.c文件的主函数中
空任务的创建和调度:
Idle task中是一个死循环 for( ; ; )
注意:该函数是宏定义的形式。
4,STM32CubeMAX移植FreeRTOS
暂未完成;
(理解:看完相关视频,对RTOS有了初步的理解,其与裸机的主要区别,例如,裸机中如果要使LED闪烁,需要在while循环中点亮LED和熄灭LED之间设定一个延时,程序运行到延时是在原地打转,而RTOS中的延时是切换到了其他任务中,程序不是在原地空转)。