本书主要介绍基于Cortex-M微控制器的μC/OS-Ⅱ嵌入式系统设计,内容包括:实时操作系统内核基础、任务管理、任务调度、系统启动与初始化、中断和时间管理、事件管理、消息管理、内存管理、移植方式及其在Cortex-M微控制器上的移植方法。最后对轻量级TCP/IP-μC/TCP-IP协议栈设计进行概要介绍。
封面图
目录
- 前言
- 第1章绪论1
- 1.1嵌入式实时操作系统概要1
- 1.2嵌入式实时操作系统2
- 1.2.1体系结构3
- 1.2.2功能及特点5
- 1.2.3分类介绍7
- 1.3嵌入式系统实时性的概念9
- 1.4约束条件11
- 1.4.1时间约束11
- 1.4.2优先约束12
- 1.4.3资源约束13
- 1.5搭建开发环境14
- 1.5.1CCS 6.0的安装14
- 1.5.2利用CCS 6.0新建工程18
- 本章小结21
- 练习与思考题21
- 第2章嵌入式硬件系统22
- 2.1嵌入式系统的硬件构成22
- 2.2嵌入式微处理器概述23
- 2.2.1嵌入式微处理器的存储体系结构23
- 2.2.2嵌入式微处理器的指令集24
- 2.2.3主流的嵌入式微处理器25
- 2.3总线26
- 2.4存储器28
- 2.5输入/输出接口和设备28
- 2.6ARM系列28
- 2.6.1ARM 指令集体系结构的演变 29
- 2.6.2ARM产品系列33
- 2.7ARM Cortex-M4系列处理器41
- 2.7.1ARM Cortex-M4处理器的特点41
- 2.7.2Cortex-M4处理器的结构42
- 2.7.3Cortex-M4的操作模式和特权级别46
- 2.7.4Cortex-M4的寄存器组47
- 2.7.5Cortex-M4的异常处理51
- 2.7.6Cortex-M4的存储器映射55
- 2.8TM4C123GH6PM微控制器57
- 2.8.1TM4C123GH6PM微控制器的电气特性与封装57
- 2.8.2TM4C123GH6PM微控制器的特性58
- 2.8.3TM4C123GH6PM微控制器的结构59
- 2.9TM4C123GH6PM实验板卡61
- 2.10RGB LED点亮实验65
- 2.10.1建立新的CCS工程65
- 2.10.2源代码解析70
- 本章小结72
- 练习与思考题72
- 第3章嵌入式实时内核73
- 3.1内核概要73
- 3.1.1μC/OS-Ⅱ的内核73
- 3.1.2调度算法74
- 3.1.3不可剥夺型内核74
- 3.1.4可剥夺型内核75
- 3.1.5数据类型的重定义与宏定义76
- 3.2内核功能77
- 3.2.1任务管理77
- 3.2.2同步与通信管理78
- 3.2.3中断管理81
- 3.2.4时间管理82
- 3.2.5对共享资源的互斥管理83
- 3.2.6内存管理84
- 3.2.7I/O管理85
- 3.2.8出错管理86
- 3.2.9用户扩展管理86
- 3.2.10电源管理87
- 3.3内核性能测试实例87
- 3.3.1概述87
- 3.3.2中断时序图88
- 3.3.3中断延迟时间89
- 3.3.4内核最大关中断时间90
- 3.3.5中断响应时间92
- 3.3.6中断恢复时间95
- 3.3.7非屏蔽中断97
- 3.3.8中断处理时间98
- 3.3.9任务切换时间98
- 3.3.10任务响应时间103
- 3.3.11系统调用的执行时间103
- 3.3.12有关时间确定性的测试104
- 3.3.13嵌入式实时内核的存储开销105
- 本章小结105
- 练习与思考题106
- 第4章任务管理的数据结构107
- 4.1任务及其存储结构107
- 4.2任务状态108
- 4.3任务生成代码实例109
- 4.4任务的优先级111
- 4.5系统任务111
- 4.6任务堆栈115
- 4.6.1任务堆栈的创建115
- 4.6.2任务堆栈的增长方向115
- 4.6.3任务堆栈的初始化116
- 4.7任务控制块116
- 4.7.1任务控制块的结构117
- 4.7.2任务控制块链表119
- 4.7.3任务控制块的初始化121
- 4.8任务就绪表123
- 4.8.1任务就绪表的结构123
- 4.8.2任务就绪表的操作126
- 4.9临界段131
- 本章小结132
- 练习与思考题132
- 第5章任务管理133
- 5.1创建任务133
- 5.1.1用OSTaskCreate创建任务133
- 5.1.2用OSTaskCreateExt创建任务135
- 5.2删除任务137
- 5.3请求删除任务143
- 5.4挂起和恢复任务144
- 5.4.1任务挂起145
- 5.4.2任务恢复146
- 5.5任务优先级别的修改148
- 5.6任务TCB信息的获取151
- 5.7任务堆栈检查152
- 5.8任务调度154
- 5.8.1μC/OS-Ⅱ的调度算法154
- 5.8.2μC/OS-Ⅱ的任务级调度154
- 5.8.3任务级任务切换函数OS_TASK_SW( )157
- 5.9μC/OS-Ⅱ的初始化和多任务的启动161
- 5.9.1μC/OS-Ⅱ的初始化161
- 5.9.2μC/OS-Ⅱ的多任务启动167
- 5.10任务级调度实例168
- 5.10.1程序功能说明168
- 5.10.2程序实现及源代码解析169
- 5.10.3CCS工程导入172
- 本章小结173
- 练习与思考题173
- 第6章中断与时钟174
- 6.1μC/OS-Ⅱ的中断管理174
- 6.1.1μC/OS-Ⅱ的中断管理过程174
- 6.1.2进入中断处理函数175
- 6.1.3退出中断处理函数176
- 6.1.4中断级任务切换函数177
- 6.2μC/OS-Ⅱ的时钟178
- 6.2.1系统时钟中断服务程序178
- 6.2.2时钟节拍服务函数179
- 6.3μC/OS-Ⅱ的时间管理181
- 6.3.1任务延时函数182
- 6.3.2按时分秒延时函数182
- 6.3.3取消任务的延时函数184
- 6.3.4获取系统时间函数185
- 6.3.5设置系统时间函数185
- 6.4中断管理实例186
- 6.4.1程序功能说明186
- 6.4.2程序实现及源代码解析186
- 本章小结188
- 练习与思考题188
- 第7章任务同步机制与通信方式189
- 7.1任务同步与事件管理189
- 7.1.1任务之间的关系189
- 7.1.2同步与通信190
- 7.1.3临界区191
- 7.1.4信息传递191
- 7.2事件管理的数据结构192
- 7.2.1事件192
- 7.2.2事件控制块ECB193
- 7.2.3事件等待组和事件等待表194
- 7.2.4事件控制块空闲链表196
- 7.2.5事件管理程序196
- 7.3信号量199
- 7.3.1信号量概述199
- 7.3.2数据结构200
- 7.3.3信号量的操作201
- 7.3.4应用举例209
- 7.4互斥信号量214
- 7.4.1任务优先级的反转现象215
- 7.4.2互斥型信号量概述216
- 7.4.3数据结构217
- 7.4.4互斥信号量的操作217
- 7.4.5应用举例228
- 7.5事件标志组232
- 7.5.1事件标志组概述232
- 7.5.2事件标志组的数据结构233
- 7.5.3事件标志组的操作236
- 7.5.4事件标志组管理实例249
- 本章小结255
- 练习与思考题255
- 第8章消息管理256
- 8.1消息邮箱256
- 8.1.1消息邮箱概述256
- 8.1.2消息邮箱的数据结构257
- 8.1.3消息邮箱的操作257
- 8.1.4消息邮箱实例265
- 8.2消息队列267
- 8.2.1消息队列概述267
- 8.2.2消息队列的数据结构268
- 8.2.3消息队列的操作270
- 8.2.4消息队列实例278
- 本章小结281
- 练习与思考题281
- 第9章内存管理282
- 9.1μC/OS-Ⅱ的内存管理机制282
- 9.2内存控制块282
- 9.2.1内存分区283
- 9.2.2内存控制块的结构283
- 9.2.3内存控制块的初始化283
- 9.3创建内存分区285
- 9.4申请一个内存块287
- 9.5释放一个内存块288
- 9.6查询内存分区的状态289
- 9.7读取内存分区名称的有效长度290
- 9.8设置内存分区名称291
- 9.9内存管理应用实例292
- 9.9.1程序功能说明292
- 9.9.2程序实现及源代码分析292
- 本章小结296
- 练习与思考题296
- 第10章μC/OS-Ⅱ的移植297
- 10.1移植说明297
- 10.2移植详解298
- 10.2.1工程的建立和目录结构298
- 10.2.2板级支持包298
- 10.2.3文件os_cpu.h的编写298
- 10.2.4文件os_cpu_c.c的编写300
- 10.2.5文件os_cpu_a.asm的编写303
- 10.3测试μC/OS-Ⅱ309
- 本章小结310
- 练习与思考题310
- 第11章CAN总线应用设计311
- 11.1CAN协议概述311
- 11.1.1CAN总线的特点311
- 11.1.2CAN协议报文的帧类型312
- 11.2Tiva微控制器的CAN接口314
- 11.2.1CAN模块内部结构314
- 11.2.2信号描述315
- 11.3功能说明316
- 11.3.1初始化和配置316
- 11.3.2数据收发317
- 11.3.3位速率的控制323
- 11.3.4中断处理324
- 11.3.5测试模式325
- 11.4应用举例326
- 本章小结331
- 练习与思考题332