导图社区 RTOS
学习了一下实时操作系统和MCU,理解加深中,RTOS它是一种专门设计用于在特定时间内完成特定功能,并对外部事件做出快速响应的计算机操作系统。
编辑于2024-10-15 22:16:13RTOS
本质:实时操作系统(Real-Time Operating system)在指定或确定的时间内执行的计算机任务,并对外部事件做出响应,多任务处理 特点:响应时间确定性 功能:任务调度,时间管理,任务管理,任务通信,稳定和实时 RTOS是专门针对实时应用设计的操作系统,优先级调度>处理实时任务 Linux是开源通用操作系统,时间片调度和优先级调度>处理通用任务 Windows是商业操作系统,时间片调度和优先级调度>处理通用任务
linux时间片轮换调度RR:操作系统为每个进程分配一个固定时间段(时间片),允许该进程在CPU上运行,当进程的时间片用完后如果还没有执行完,就会被置于就绪队列的末尾>避免某个进程长时间占用CPU
就绪队列是操作系统用于管理就绪状态的重要数据结构
系统管理进程的基本状态
运行态
进程正在CPU上执行,或者已经准备好立刻在CPU上执行
就绪状态
已经获得除了CPU以外的所有资源
只要获得CPU就立刻执行,本质是进程等待CPU分配的一种状态
阻塞等待态
等待某个事件而不能继续执行
系统管理进程的扩展状态
新建状态
终止状态
进程执行完毕或者被终止,操作系统还没有完全释放资源和控制进程块
需要父进程收集其退出状态
挂起状态
暂时停止执行
保存其当前状态,,通过激活操作恢复执行
僵尸态
Linux中的特殊进程状态状态
不可中断休眠态
D
等待I/O完成,不可中断
可中断休眠态
S
等待某个事件,等待过程可以被中断,被信号唤醒
停止态
T
收到SIGSTOP
僵尸态
Z
进程已经结束但没有被他的父进程收集退出状态
POSIX可移植操作系统接口
可移植操作系统接口
API应用程序接口
分类
POSIX.1核心标准,操作系统接口
POSIX.2规定API和工具
POSIX.3规定标准化Shell扩展
POSIX.规定网络编程相关API
进程管理接口:exit,fork,wait 文件管理接口:open,close,read,write 目录管理接口: 网络通信接口:socket,bind,listen,accept 线程同步:pthread-create,pthread-join,pthread-mutex-lock 信号:signal,kill
MCU
微控制器单片机组成
中央处理器CPU
随机存储器RAM
只读存储器ROM
中断系统,定时器计数器
输入输出接口I/O
集成到一块硅片上
应用:家电控制,汽车,智能家居
特点:体积小,接口多,低功耗,易于扩展(外设接口和总线多),高度集成,应用广泛
工作原理
通过内部的CPU对指令进行解码和执行,从而控制外部设备运行,通过I/O接口和外部设备进行型数据交换,通过中断系统响应外部事件,通过定时器和计数器实现定时和计数的功能
各种系统
时钟系统
原理:由一个或者多个振荡器,分频器,计数器组成。振荡器产生原始时钟信号,这些信号通过分频器,AHB,APB总线分频因子和计数器组件进行分频,倍频和计数操作>产生CPU所需的各种时钟信号>控制工作速度和时序
分类
内部时钟
内部振荡器精度不高
内部低速时钟LSI(时钟源)
频率低
用于看门狗和RTC(时钟种类)
RTC实时时钟,掉电后继续运行的定时器,提供日期和时间信息
内部高速时钟HSI
频率高
系统时钟和PLL
PLL(锁相环)是产生稳定频率的电路,用于时钟信号的倍频和分频
外部时钟
外部晶振精度高
通过MCU的相关寄存器来选择合适的频率
外部低速LSE
32.768KHz,RTC用
外部高速HSE
4-16MHz系统时钟和PLL输入
时钟源的选择差不多都是:2高加PLL
各种存储
闪存Flash Memory,不易丢失数据,掉电也不会丢失数据(RTC也是,ROM也是)
可多次擦除和写入,适合长期储存
高速读写,抗震(因为没有机械结构),可靠
分类
NOR闪存:代码存储
NAND:数据存储
应用:U盘,移动设备
RAM,容易丢失数据,掉电丢失
读写速度快,适合临时存储
读写概念
读
CPU从存储器读取信息,将信息传输到内部数据总线,再由CPU取走该内容作为所需要的信息使用
写
CPU将数据寄存器的内容放到数据总线上,然后向存储器发送“写”控制信号
ROM,不容易丢失数据,掉电不丢失
读写速度快,适合临时存储
存储器映射
地址映射,将外设的内存地址映射到CPU的空间地址
中断响应过程
流程:中断发生,MCU暂停当前正在执行的任务,保存现场,然后跳转到中断处理函数(ISR)去处理中断,
中断请求:响应中断
中断检测:检测未处理的中断
中断响应:置位优先级标志>清楚中断源标志>将当前的程序计数器压栈,保护现场后面才能回来>根据中断源进入相应中断程序入口>中断处理>中断返回(清除优先级标志,从断点地址返回程序)
通信接口
SPI(Serial Peripheral Interface)串行外设接口
高速,全双工,同步通信总线
主从模式:一个主设备(通过时钟信号传输数据SCK),一个或者多个从设备
应用:存储器,显示器
编写驱动程序实现主设备和从设备之间的通信
I2C(集成电路总线)
同步串行通信
主从模式:主设备生产时钟信号SCL,多主多从
应用:传感器模块,液晶显示屏
驱动实现设备之间的通信
UART(通用异步收发传输器)
异步串行通信接口,全双工
多主从架构
起始位+数据位+校验位+停止位,引脚传输数据发送(TX),接收(RX)
应用:串口打印机,模块通信
驱动实现设备间通信
在嵌入式软件中的应用步骤
根据硬件平台和项目需求选择合适的RTOS
初始化RTOS,启动代码中初始化RTOS相关的数据,时钟和定时器
创建和配置任务
实现任务间通信和同步
通信机制
信号量
消息队列
邮箱
启动RTOS调度器
放入嵌入式优点:提高系统的实时性和多核处理能力
应用领域:汽车,嵌入式医疗
几种常见的RTOS
FreeRTOS
迷你实时操作系统,轻量级操作系统
GPL,可移植,可剪裁,免费,小巧
应用于:资源有限控制器
WIFI,蓝牙,
embOS
快速响应,灵活性,省电
uC/OS
由Micrium维护
可移植,可剪裁,可配置
应用:单片机,数字信号处理
资源管理
内存管理
动态内存分配malloc,calloc,realloc,free
内存碎片:多个不连续的小的空闲碎片
内存池:优化内存分配,和减少内存碎片
信号量
二值信号量最简单的信号量,只有2种状态:有效1无效0,通过获取(take)和释放(give)来同步执行
计数信号量多个资源的可用性
互斥锁
保护共享资源,锁继承特性
队列:任务间通信
创建,销毁,发送消息(放入队尾),接收数据(队头取出)