轻松自编小型嵌入式操作系统
轻松自编小型嵌入式操作系统
前 言
第1篇 小型嵌入式操作系统基础
0 概 述
1 实现一个简单的3任务调度系统
1.1 硬件和软件的准备
1.1.1 实验开发板
1.1.2 集成环境开发工具软件
1.2 构建简单的3任务调度操作系统
1.2.1 用KEIL C51建立一个工程
1.2.2 定义系统需要的变量
1.2.3 系统初始化及建立任务函数
1.2.4 建立一个简单的任务调度器
1.2.5 在实验板上运行
总 结
2 嵌入式操作系统的程序文件
2.1 RW/CZXT-1.0嵌入式操作系统的功能和特点
2.2 RW/CZXT-1.0嵌入式操作系统的程序文件
2.2.1 系统的宏定义文件:XT-HDY.H
2.2.2 系统的配置文件:XT-PZ.H
2.2.3 系统的头文件XT.H
2.2.4 系统的初始化文件XT-INT.C
2.2.5 系统的调度文件XT-TD.C
2.2.6 系统任务管理文件XT-RWGL.C
2.2.7 系统时间管理文件XT-SHIJ.C
2.2.8 信号量、邮箱文件XT-XHL.C,XT-XXYX.C
2.2.9 消息队列功能文件XT-XXDL.C
2.2.10 内存管理功能文件XT-NCGL.C
2.2.11 系统服务功能文件XT-FUWU.C
2.2.12 系统MAIN文件XT-MAIN.C
总 结
3 系统变量定义及初始化
3.1 系统的宏定义
3.1.1 系统状态模式的宏标志
3.1.2 任务状态宏标志
3.1.3 其他宏标志
3.2 系统变量的定义及其作用
3.2.1 定义系统管理控制块
3.2.2 定义任务的任务栈
3.2.3 定义任务的运行队列
3.3 任务控制块的定义及其作用
3.3.1 定义一个类型结构体:RWK
3.3.2 用类型结构体为每个任务定义任务控制块
3.4 系统的初始化操作
3.4.1 系统变量初始化
3.4.2 系统总初始化函数的结构
3.5 静态创建应用任务
3.5.1 在系统的头文件XT.H中,声明任务函数
3.5.2 定义任务栈
3.5.3 把任务函数的入口地址存放在任务栈中
3.5.4 初始化任务控制块
3.3.5 任务在运行队列中进行登记
3.5.6 在MAIN文件中编写任务函数模型
3.6 系统基础模型的编译和调试
3.6.1 在MAIN文件中加入各个程序文件
3.6.2 为系统建立MAIN函数
3.6.3 编译和调试
3.6.4 采用简单的方式启动任务运行
总 结
4 任务调度器设计
4.1 时间片轮转调度方法
4.1.1 时间片轮转调度工作原理
4.1.2 时间片轮转调度工作模式
4.1.3 基于“优先和普通结合”的时间片轮转调度算法
4.1.4 提高系统实时性的其他方法
4.2 任务运行队列
4.2.1 运行队列的结构
4.2.2 运行队列的操作
4.3 堆栈原理、堆栈操作
4.3.1 任务栈设计
4.3.2 堆栈操作
4.4 任务调度器设计与实现
4.4.1 任务级调度器设计与实现
4.4.2 中断级调度器设计与实现
4.4.3 调度器设计注意事项
4.5 调度时机
4.5.1 任务调度的时机和调度限制
4.5.2 调度器上锁、解锁
4.5.3 中断嵌套计数器
4.6 调度器的应用对象
4.7 系统启动设计
总 结
5 系统时间管理与应用函数设计
5.1 AT89Sxx单片机定时器的设置
5.1.1 T0定时器的工作方式设置
5.1.2 T0定时器中断功能设置
5.1.3 T0定时器初值设置
5.1.4 T0定时器设置的程序代码
5.2 定时器驱动操作系统运行的原理
5.2.1 时间节拍与任务的运行时间片
5.2.2 定时器中断服务
5.3 时间延时应用函数设计
5.3.1 时间节拍延时函数
5.3.2 100ms延时函数
5.3.3 1s延时函数
5.3.4 恢复正在延时的任务
5.4 应用实验
总 结
6 任务管理与应用函数设计
6.1 任务的状态
6.1.1 任务状态的宏定义
6.1.2 任务状态
6.2 任务状态的改变
6.2.1 任务状态迁移
6.2.2 状态转换过程说明
6.3 控制任务的应用函数设计
6.3.1 挂起任务
6.3.2 恢复挂起的任务
6.3.3 任务等待中断信号
6.3.4 恢复等待中断的任务
6.4 应用实验
6.4.1 任务的工作要求
6.4.2 在MAIN文件中定义LED指示灯端口及相关变量
6.4.3 在任务函数中编写任务工作的程序代码
总 结
7 嵌入式操作系统的实验应用
7.1 组织程序文件
7.2 系统关键参数配置
7.2.1 任务的总数量
7.2.2 任务栈长度
7.2.3 系统时钟粒度
7.2.4 时间片长度
7.2.5 延时基数
7.3 设计任务及其程序代码
7.3.1 确定任务的工作
7.3.2 定义任务运行所需的相关变量
7.3.3 任务函数的工作流程
7.3.4 任务函数的程序代码
7.4 在实验板上运行测试
总 结
第2篇 内核功能扩展
8 扩展任务管理功能
8.1 任务类型
8.1.1 系统空闲任务
8.1.2 首次任务
8.1.3 普通任务
8.1.4 实时任务
8.2 片外任务栈设计
8.2.1 堆栈指针
8.2.2 任务私有栈与公共运行栈结合的形式
8.3 动态创建应用任务
8.3.1 修改相关功能函数
8.3.2 实现动态创建任务
8.4 调度器任务切换操作
8.4.1 任务级调度器任务切换操作
8.4.2 中断级调度器任务切换操作
8.4.3 启动函数中任务调度操作
8.5 实时任务管理
8.5.1 实时令旗设计
8.5.2 就绪登记表
8.5.3 实时任务调度策略
8.5.4 为系统功能函数设计实时任务管理功能
8.6 应用实验
8.6.1 任务工作分配
8.6.2 动态创建应用任务
8.6.3 实验工程完整的程序代码
总 结
9 信号量设计
9.1 信号量的作用
9.1.1 作为任务运行的标志
9.1.2 作为共享资源的使用标志
9.1.3 作为资源的数量标志
9.2 从简单实例了解信号量
9.3 信号量的类型
9.3.1 二进制型信号量
9.3.2 十进制型信号量
9.3.3 互斥型信号量
9.4 信号量的数据结构
9.4.1 信号量的宏定义标志及配置
9.4.2 定义信号量控制块
9.4.3 初始化控制块
9.5 信号量的应用函数设计
9.5.1 内部操作函数
9.5.2 创建信号量
9.5.3 阻塞申请信号量
9.5.4 非阻塞申请信号量
9.5.5 释放信号量
9.5.6 阻塞申请互斥信号量
9.6 应用实验
9.6.1 实验的项目
9.6.2 应用任务的工作分配
9.6.3 本实验的程序代码
总 结
10 邮箱设计
10.1 从简单实例了解消息邮箱
10.2 邮箱的数据结构
10.2.1 有关邮箱的宏定义标志
10.2.2 定义邮箱控制块
10.2.3 初始化邮箱控制块
10.3 邮箱的应用函数设计
10.3.1 内部操作函数
10.3.2 创建邮箱
10.3.3 发消息给邮箱
10.3.4 阻塞式读邮箱
10.3.5 非阻塞式读邮箱
10.4 应用实验
10.4.1 实验的项目
10.4.2 应用任务的工作分配
10.4.3 本实验的程序代码
总 结
11 消息队列设计
11.1 从简单实例了解消息队列
11.2 消息队列的数据结构
11.2.1 有关消息队列的宏定义标志
11.2.2 定义消息队列控制块
11.2.3 初始化消息队列控制块
11.3 消息队列应用函数设计
11.3.1 内部操作函数
11.3.2 创建消息队列
11.3.3 发送消息给队列
11.3.4 非阻塞式读消息队列
11.3.5 阻塞式读消息队列
11.4 应用实验
11.4.1 实验的项目
11.4.2 应用任务的工作分配
11.4.3 本实验的程序代码
总结
12 实现简单内存管理功能
12.1 内存分区管理机制
12.1.1 内存分区
12.1.2 内存块
12.1.3 定义内存分区
12.1.4 内存分区管理
12.2 内存管理控制块
12.2.1 内存管理控制块的数据结构
12.2.2 内存管理控制块初始化
12.3 内存分区管理应用函数设计
12.3.1 创建内存分区
12.3.2 申请一个内存块
12.3.3 释放归还一个内存块
12.4 内存块操作函数设计
12.4.1 清空内存块
12.4.2 在内存块中写入一个数据
12.4.3 从内存块中读出一个数据
12.5 应用实验
12.5.1 实验的项目
12.5.2 应用任务的工作分配
12.5.3 本实验的程序代码
总结
13 操作系统的服务功能
13.1 系统服务功能介绍
13.2 系统服务功能设计
13.2.1 系统服务功能的工作原理
13.2.2 工作原理分析
13.2.3 服务功能配置
13.2.4 相关定义
13.2.5 操作系统复位服务
13.2.6 操作系统暂停服务
总 结
第3篇 操作系统的应用实战
14 操作系统在水处理控制系统中的应用
14.1 矿泉水水处理系统结构
14.1.1 水处理系统的结构及工艺处理流程
14.1.2 矿泉水的处理方法
14.2 水处理系统控制方案
14.2.1 系统的工作模式
14.2.2 CO2混合控制
14.2.3 臭氧混合控制
14.2.4 设备运行信号检测
14.2.5 控制信号检测
14.2.6 键盘输入和显示
14.3 控制系统主板硬件设计
14.3.1 控制主板硬件结构
14.3.2 控制主板硬件设计方案
14.4 控制系统软件设计
14.4.1 软件功能处理方案分析
14.4.2 为任务分配软件功能
14.4.3 操作系统应用配置
14.4.4 控制系统程序代码设计
14.5 控制系统软件测试
14.5.1 程序代码语法检查
14.5.2 软件仿真测试
14.5.3 软硬件功能测试
总 结
附录A 系统API应用函数应用说明
A.1 任务管理功能的API应用函数
A.2 时间管理功能的API应用函数
A.3 信号量管理功能的API应用函数
A.4 邮箱管理功能的API应用函数
A.5 消息队列管理功能的API应用函数
A.6 内存管理功能的API应用函数
A.7 服务功能的API应用函数
附录B 基础系统完整的程序代码
B.1 宏定义文件
B.2 配置文件
B.3 系统头文件
B.4 系统初始化文件
B.5 系统调度文件
B.6 时间管理文件
B.7 任务管理文件
思维导图
防止博客图床图片失效,防止图片源站外链:
http://www.processon.com/chart_image/5e5b4b20e4b0c037b60830c3.png)
思维导图在线编辑链接: