Delete 04-实时操作系统/第四层:实时操作系统.md
This commit is contained in:
@@ -1,116 +0,0 @@
|
|||||||
# 🟣 第四层:实时操作系统(RTOS)
|
|
||||||
|
|
||||||
本模块介绍嵌入式 RTOS(如 FreeRTOS)的基础知识、任务调度机制、资源管理方式以及在实际项目中的使用模式。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔹 RTOS 基础概念
|
|
||||||
|
|
||||||
### 什么是 RTOS?
|
|
||||||
- RTOS(Real-Time Operating System)是用于嵌入式设备中的轻量级操作系统,能提供任务调度、时间管理、资源管理等功能。
|
|
||||||
- 特点:确定性、实时性、多任务调度、资源隔离
|
|
||||||
|
|
||||||
### 常见 RTOS
|
|
||||||
- FreeRTOS(开源、广泛使用)
|
|
||||||
- RT-Thread(国产开源,图形化支持强)
|
|
||||||
- CMSIS-RTOS(ARM 标准接口)
|
|
||||||
- Zephyr(Linux 基金会支持,适合物联网)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔹 任务管理
|
|
||||||
|
|
||||||
### 创建任务
|
|
||||||
```c
|
|
||||||
xTaskCreate(TaskFunction_t pxTaskCode,
|
|
||||||
const char * const pcName,
|
|
||||||
configSTACK_DEPTH_TYPE usStackDepth,
|
|
||||||
void *pvParameters,
|
|
||||||
UBaseType_t uxPriority,
|
|
||||||
TaskHandle_t *pxCreatedTask);
|
|
||||||
```
|
|
||||||
|
|
||||||
### 任务状态
|
|
||||||
- Ready:就绪状态
|
|
||||||
- Running:运行中
|
|
||||||
- Blocked:等待事件/超时
|
|
||||||
- Suspended:挂起
|
|
||||||
- Deleted:已删除
|
|
||||||
|
|
||||||
### 任务优先级与调度算法
|
|
||||||
- 抢占式优先调度(Preemptive)
|
|
||||||
- 时间片轮转调度(Time Slicing)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔹 时间管理
|
|
||||||
|
|
||||||
### 延时与定时
|
|
||||||
```c
|
|
||||||
vTaskDelay(pdMS_TO_TICKS(1000)); // 延时 1 秒
|
|
||||||
```
|
|
||||||
|
|
||||||
### 软件定时器
|
|
||||||
```c
|
|
||||||
xTimerCreate();
|
|
||||||
xTimerStart();
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔹 线程间通信
|
|
||||||
|
|
||||||
### 队列(Queue)
|
|
||||||
- 用于任务间数据传递(FIFO 结构)
|
|
||||||
```c
|
|
||||||
xQueueCreate();
|
|
||||||
xQueueSend();
|
|
||||||
xQueueReceive();
|
|
||||||
```
|
|
||||||
|
|
||||||
### 信号量(Semaphore)
|
|
||||||
- 二值信号量(同步)
|
|
||||||
- 计数信号量(共享资源数量)
|
|
||||||
- 互斥信号量(用于资源保护)
|
|
||||||
|
|
||||||
### 消息队列(Message Queue)
|
|
||||||
- 用于传递结构化数据或消息结构体
|
|
||||||
|
|
||||||
### 事件组(Event Group)
|
|
||||||
- 类似标志位,可用于多任务同步
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔹 资源管理
|
|
||||||
|
|
||||||
### 内存管理方式
|
|
||||||
- 静态分配(推荐)
|
|
||||||
- 动态分配(需要注意碎片与失败处理)
|
|
||||||
|
|
||||||
### 临界区保护
|
|
||||||
```c
|
|
||||||
taskENTER_CRITICAL();
|
|
||||||
taskEXIT_CRITICAL();
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔹 FreeRTOS 配置与移植
|
|
||||||
|
|
||||||
### 配置项(FreeRTOSConfig.h)
|
|
||||||
- `configUSE_PREEMPTION`:是否使用抢占式调度
|
|
||||||
- `configMAX_PRIORITIES`:最大任务优先级数
|
|
||||||
- `configMINIMAL_STACK_SIZE`:最小栈空间大小
|
|
||||||
|
|
||||||
### 移植步骤
|
|
||||||
1. 提供 SysTick 定时器实现
|
|
||||||
2. 提供上下文切换代码(汇编)
|
|
||||||
3. 编写启动任务入口函数 `vTaskStartScheduler()`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔹 实践应用场景
|
|
||||||
|
|
||||||
- 多任务协同:传感器数据采集 + 通信模块处理
|
|
||||||
- 响应式控制:定时器 + 外部中断 + 优先级控制
|
|
||||||
- 任务调度机制优化(任务嵌套/抢占/时间片轮转)
|
|
||||||
Reference in New Issue
Block a user