本书以电子科技大学自主设计的开源操作系统aCoral在ARM9 Mini2440嵌入式平台上的设计过程为思路,逐步介绍aCoral的实现,再延伸到它对多核嵌入式处理器的支持,在此过程中,介绍嵌入式实时操作系统的其他相关技术和理论,比如:实时调度机制与策略、多核计算等,让学生对其有更全面的认识。此外,全书综合应用了计算机组成原理、计算机操作系统、汇编语言、C程序设计、数据结构、嵌入式系统概论、ARM处理器及其应用等课程的知识点,力求理论与实践紧密结合,帮助读者融汇贯通上述课程的相关知识。本书中的相关代码请读者登录华信教育资源网免费注册后下载使用。
第1章 概论 1
1.1 轮询系统(Polling Systems) 2
1.2 前后台系统(Foreground Background Systems) 2
1.3 嵌入式操作系统 3
1.3.1 简单内核 3
1.3.2 RTOS结构 4
1.3.3 多核RTOS 5
1.4 从裸板开始啊啊 6
1.5 aCoral 6
1.6 本书结构 7
习题 8
第2章 轮询系统 9
2.1 轮询系统概述 9
2.1.1 程序框架 9
2.1.2 调度 9
2.1.3 典型系统 11
2.2 搭建开发环境 11
2.3 启动Mini2440 14
2.3.1 为什么需要启动 14
2.3.2 启动流程 15
2.4 轮询的实现 29
习题 30
第3章 前后台系统 31
3.1 前后台结构 31
3.1.1 前后台系统的应用 31
3.1.2 运行方式 32
3.1.3 系统性能 32
3.1.4 前后台交换 33
3.1.5 典型系统 34
3.2 中断和中断服务 34
3.2.1 中断 34
3.2.2 中断服务 35
3.3 ARM的中断机制 35
3.4 一个简单的S3C2440中断服务 35
3.4.1 中断返回 36
3.4.2 中断注册 37
3.4.3 状态保存和现场恢复 39
3.5 前后台的实现 40
3.5.1 启动Mini2440 40
3.5.2 后台主循环 40
3.5.3 前台中断处理 43
习题 44
第4章 内核基础 46
4.1 基本术语 46
4.2 RTOS的特点 47
习题 50
第5章 搭建aCoral交叉开发环境 51
5.1 安装Ubuntu 51
5.2 安装交叉开发工具链 52
5.2.1 使用制作好的工具链 52
5.2.2 自己制作工具链 52
5.3 构建aCoral项目文件 53
习题 55
第6章 编写内核 56
6.1 aCoral线程 56
6.1.1 描述线程 57
6.1.2 线程优先级 65
6.2 调度策略 67
6.2.1 线程调度分层结构 67
6.2.2 调度策略分类 67
6.2.3 描述调度策略 68
6.2.4 查找调度策略 69
6.2.5 注册调度策略 70
6.3 基本调度机制 72
6.3.1 创建线程 72
6.3.2 调度线程 85
6.3.3 线程退出 96
6.3.4 其他基本机制 99
6.4 事务处理机制 106
6.4.1 中断管理 106
6.4.2 时钟管理 121
6.5 内存管理机制 124
6.5.1 主流内存管理机制 125
6.5.2 嵌入式系统对内存管理的特殊要求 126
6.5.3 aCoral的内存管理机制 127
6.5.4 aCoral内存管理初始化 150
6.6 线程交互机制 151
6.6.1 互斥机制 152
6.6.2 同步机制 166
6.6.3 通信机制 168
习题 179
第7章 启动内核 181
7.1 RTOS的引导模式 181
7.1.1 需要Bootloader的引导模式 181
7.1.2 不需要Bootloader的引导模式 182
7.2 Bootloader 182
7.3 aCoral环境下启动2440 185
7.4 启动aCoral 191
习题 199
第8章 移植内核 200
8.1 硬件抽象层移植 200
8.1.1 启动接口 201
8.1.2 中断接口 201
8.1.3 线程相关接口 203
8.1.4 时间相关接口 204
8.1.5 内存相关接口 205
8.1.6 开发板相关接口 205
8.1.7 多核(CMP)相关接口 205
8.1.8 移植文件规范 207
8.1.9 移植实例 208
8.2 项目移植 216
8.2.1 生成对应开发板的项目 216
8.2.2 添加到官网 220
习题 221
第9章 编译与运行内核 222
9.1 编译aCoral 222
9. 2 烧写aCoral到开发板ARM Mini2440 223
9.2.1 安装串口工具 223
9.2.2 安装烧写工具(DNW工具) 224
9.2.3 烧写与运行aCoral 225
习题 226
第10章 实时调度策略 227
10.1 任务调度策略基本概念 227
10.2 任务调度策略 228
10.2.1 典型实时调度策略 229
10.2.2 基于公平策略的时间片轮转调度 230
10.2.3 基于优先级的可抢占调度 230
10.2.4 RM调度算法 232
10.2.5 EDF调度算法 243
10.3 优先级反转及解决办法 245
10.3.1 优先级继承 246
10.3.2 优先级天花板 248
10.4 提高系统实时性的其他措施 251
10.4.1 评价RTOS的性能指标 251
10.4.2 提高实时任务响应性的措施 252
10.5 多核/处理器调度 261
10.5.1 多核/处理器技术 261
10.5.2 多核/处理器调度策略 263
习题 264
第11章 支持多核 266
11.1 ARM11 MPCore 266
11.2 多核运行机制 267
11.3 aCoral对多核机制的支持 269
11.3.1 多核启动 269
11.3.2 多核调度 276
习题 281
参考文献 282