这个笔记主要依据韦东山freertos快速入门系列记录,感谢韦东山老师的总结。
什么是实时操作系统?
操作系统是一个控制程序,负责协调分配计算资源和内存资源给不同的应用程序使用,并防止系统出现故障。
操作系统通过一个调度算法和内存管理算法尽可能把资源公平且有效率地分配给不同的程序。
应用程序通过调用操作系统提供的API接口获得相应资源完成指定的任务。
一个通用操作系统提供的主要功能有:
- 任务(应用程序)的调度管理
- 堆栈和内存管理
- 文件管理
- 队列管理
- 中断和定时器管理
- 资源管理
- 输入输出管理
实时性的含义
实时操作系统(RTOS-Real Time Operating System)中实时(Real Time)指的是任务(Task)或者说实现一个功能的线程(Thread)必须在给定的时间(Deadline)内完成。
一个实时操作系统能尽力保障每个任务能在一个已知的最大运行时间(Maximum Response Time)内完成,包括
- 对中断和内部异常的处理
- 对安全相关的事件的处理
- 任务调度机制等
FreeRTOS
FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。
由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。
FreeRTOS的特性
- 具有抢占式或者合作式的实时操作系统内核
- 功能可裁剪,最小占用10kB左右rom空间,0.5kB ram空间
- 具有低功耗模式
- 有互斥锁、信号量、消息队列等功能
- 运行过程可追踪
freeRTOS自带的两个数据类型
BaseType_t是最高效的返回值
变量名前缀规范
在freertos中有变量命名的常用规范:
文件系统
- 文件系统要有严格的组织形式,使得文件能够以块为单位进行存储。
- 文件系统中也要有索引区,用来方便查找一个文件分成的多个块都存放在了什么位置。
- 如果文件系统中有的文件是热点文件,近期经常被读取和写入,文件系统应该有缓存层。
- 文件应该用文件夹的形式组织起来,方便管理和查询。
- Linux 内核要在自己的内存里面维护一套数据结构,来保存哪些文件被哪些进程打开和使用。