书籍详情
嵌入式实时操作系统MQX应用开发技术:ARM Cortex-M微处理器
作者:王宜怀,朱仕浪,姚望舒 著
出版社:电子工业出版社
出版时间:2014-08-01
ISBN:9787121240379
定价:¥59.00
购买这本书可以去
内容简介
MQX是一款免费、开源、有技术支持,面向工业控制、医疗电子、家用电器等领域的嵌入式实时操作系统(RTOS)。本书以飞思卡尔(Freescale)的MQX4.1.0为蓝本,以ARM Cortex-M微处理器为实例,详细阐述RTOS的基本概念、原理与应用方法。全书共分11章,从实际应用角度阐述MQX应用程序的设计方法。第1~7章囊括了MQX工程框架、任务基本设计方法与规则、启动流程、中断执行过程、延时函数、任务的创建、调度方法、事件、信号量、内存管理、日志等基本知识要素,同时也给出了MQX基本原理,主要包括内核数据区、MQX启动过程、中断、时间管理、任务管理、调度等机制剖析,第8章给出MQX基本知识要素的综合实例;第9章给出库文件、MQX移植、轻量级MQX、看门狗等MQX程序设计以及任务设计方法的讨论;第10~11章分别给出USB组件及RTCS组件的使用方法。
作者简介
王宜怀,男,博士,苏州大学教授、博士生导师,中国计算机学会高级会员,苏州市计算机学会嵌入式系统专业委员会副主任。
目录
第1章 1
概 述 1
1.1 关于RTOS的几个基本问题 1
1.1.1 什么是实时操作系统 1
1.1.2 使用RTOS的场合与RTOS的选择 3
1.1.3 RTOS的发展历程及几种流行的RTOS简介 4
1.2 RTOS的相关术语 5
1.2.1 内核类相关术语 5
1.2.2 任务类相关术语 7
1.3 MQX的主要特点及版本历史 9
1.3.1 MQX的主要特点 9
1.3.2 MQX的版本升级 9
1.4 MQX的资料简介 10
第2章 13
MQX系统的工程构架及 13
第一个样例工程 13
2.1 软硬件开发环境 13
2.1.1 软件开发平台――CW简介 14
2.1.2 SD-FSL-K60-C硬件系统 15
2.2 Freescale提供的MQX资源简介 15
2.3 初识MQX――内核、PSP及BSP 16
2.3.1 MQX的内核 16
2.3.2 处理器支持包PSP 17
2.3.3 板级支持包BSP 17
2.4 MQX工程框架――AMQXFW 18
2.4.1 MQX工程框架AMQXFW的目录结构 18
2.4.2 <MQX>的下级文件夹组成 20
2.4.3 <MQX>的下级文件夹解析 21
2.5 MQX第一个样例工程 26
2.5.1 样例工程的功能 26
2.5.2 样例工程任务设计 27
2.5.3 样例工程的运行测试 33
2.5.4 样例工程构建过程 34
2.5.5 上电复位到main函数之前的执行过程 37
2.6 MQX操作系统的启动流程剖析 40
2.6.1 内存的分配和部署 40
2.6.2 内核数据区剖析 41
2.6.3 MQX初始化结构体常数MQX_init_struct 42
2.6.4 MQX任务模板文件(task_templates.c)解析 45
2.6.5 MQX系统启动过程:_mqx函数剖析 46
第3章 53
MQX中断机制与时间管理 53
3.1 中断处理的通用基础知识概要 53
3.1.1 中断的基本概念 53
3.1.2 中断处理的基本过程 54
3.2 MQX中断处理过程及用户ISR安装方法 55
3.2.1 MQX中断处理函数简介 55
3.2.2 MQX中断处理过程 56
3.2.3 MQX中断编程的编译条件设定 56
3.2.4 MQX用户ISR安装方法 57
3.3 MQX中断管理与运行机制剖析 58
3.3.1 MQX中断系统涉及的数据结构 58
3.3.2 MQX中断系统初始化过程剖析 60
3.3.3 基于ARM Cortex-M4的MQX内核ISR源码剖析 67
3.3.4 理解MQX中断机制需要掌握的几个知识点 77
3.4 MQX时间管理函数及用法 79
3.4.1 _time_delay函数的使用方法及注意点 81
3.4.2 绝对时间的来源与用法举例 81
3.5 MQX时间管理实现方法及机制剖析 82
3.5.1 ARM Cortex-M的SysTick的硬件系统 82
3.5.2 hwtimer_systick_init()函数回调分析 83
3.5.3 SysTick嘀嗒定时器的初始化配置和启动 85
3.5.4 SysTick中断服务例程ISR 88
3.5.5 延时函数_time_delay及相关源代码剖析 91
第4章 93
MQX常用IO驱动 93
使用方法简介 93
4.1 MQX驱动分类及其简介 93
4.2 MQX工程常用I/O驱动的添加过程 94
4.3.1 设备标识符及命名方法 97
4.3.2 MQX标准设备驱动管理的三层模型 97
4.3.3 MQX I/O设备驱动管理队列 99
4.4 安装类IO设备驱动应用实例 100
4.4.1 K60-Flash模块概述 100
4.4.2 编写Flash任务以及工程的测试 101
4.5 非安装类I/O设备驱动应用实例 103
4.5.1 K60 RTC模块概述 103
4.5.2 RTC驱动文件及添加 103
4.5.3 编写RTC工程的测试 103
4.6 MQX设备三层管理下底层驱动设计方法 105
4.6.1 底层设备驱动三层体系结构管理模式分析 105
4.6.2 底层设备驱动初始化参数的组织和分解 107
4.6.3 MQX设备三层管理底层驱动设计的步骤 109
4.7 MQX设备四层管理的驱动设计、移植和复用 110
4.7.1 MQX设备驱动四层管理模型的提出 110
4.7.2 底层驱动构件的获取与设计 111
4.7.3 接口驱动构件的设计 112
4.8 底层设备程序移植和复用设计实例 112
第5章 117
任务管理与调度 117
5.1 任务管理的基础知识 117
5.1.1 任务的三要素 117
5.1.2 任务的四种状态:终止态、阻塞态、就绪态和激活态 118
5.1.3 任务的基本形式 120
5.2 MQX任务管理函数 122
5.3 MQX任务管理机制剖析 124
5.3.1 MQX任务队列剖析 124
5.3.2 MQX任务管理函数剖析 127
5.4 MQX的FIFO及RR调度策略 131
5.5 MQX调度机制剖析 133
5.5.1 ARM Cortex-M4的SVC及PendSV中断的调度作用 134
5.5.2 系统调用服务例程的执行流程 135
5.5.3 系统调用服务例程源码剖析 138
第6章 141
任务间的同步与通信 141
6.1 轻量级事件与事件 141
6.1.1 事件的含义及应用场合 141
6.1.2 轻量级事件的常用函数与编程步骤 141
3.常用轻量级事件函数的使用说明 142
6.1.3 事件的常用函数与编程步骤 146
6.1.4 事件的组织结构与函数代码剖析 151
6.2 轻量级信号量、信号量与互斥量 162
6.2.1 信号量的含义及应用场合 162
6.2.2 轻量级信号量的常用函数与编程步骤 163
6.2.3 信号量的常用函数与编程步骤 166
6.2.4 互斥量的常用函数与编程步骤 171
6.2.5 信号量的组织结构与函数代码剖析 176
6.3 轻量级信号量的常用函数与编程步骤 191
6.3.1 优先级反转问题的含义 191
6.3.2 优先级反转问题的解决方法 192
6.4 轻量级消息队列与消息 193
6.4.1 消息的含义及应用场合 193
6.4.2 轻量级消息队列的常用函数与编程步骤 194
6.4.3 消息的常用函数与编程步骤 197
6.4.4 消息的组织结构与函数代码剖析 203
第7章 211
内存管理与日志 211
7.1 内存管理及模式选择 211
7.1.1 内存管理的区域范围 211
7.1.2 内存管理的两种方式 212
7.1.3 内存管理的相关函数 212
7.2 可变大小内存管理 213
7.2.1 可变大小内存块管理方式 213
7.2.2 可变大小内存块管理的机制剖析 216
7.2.3 内存管理使用实例 226
7.3 固定大小内存管理 227
7.3.1 固定大小区块的管理机制 228
7.3.2 固定大小区块池的创建 228
7.3.3 固定大小区块的申请分配和释放 230
7.3.4 动态区块的删除 230
7.3.5 固定大小区块的使用和管理接口函数 230
7.4 日志的应用 230
7.4.1 轻量级日志 230
7.4.2 内核日志 236
7.4.3 日志 239
第8章 241
MQX基本要素综合实例 241
8.1 需求分析与硬件说明 241
8.1.1 需求分析 241
8.1.2 硬件说明 241
8.2 中断服务例程ISR与任务功能设计 242
8.2.1 中断服务例程ISR功能设计 242
8.2.2 任务功能设计 242
8.3 PC与MCU通信帧协议的设计 243
8.3.1 帧格式 243
8.3.2 帧命令 244
8.4 MCU主要代码实现 244
8.5 PC界面 259
第9章 259
MQX程序设计相关问题的讨论 259
9.1 库文件用法 259
9.1.1 库文件的基本概念 259
9.1.2 MQX库文件(.a)的生成 260
9.1.3 库文件的使用方法 263
9.2 BSP和PSP的移植方法简介 263
9.2.1 BSP的移植 263
9.2.2 PSP的移植 264
9.3 轻量级MQX 264
9.3.1 轻量级MQX特点 264
9.3.2 轻量级MQX工程 266
9.4 ISR设计、任务划分及优先级安排问题 273
9.4.1 ISR设计的基本问题 273
9.4.2 任务划分的简明方法 273
9.4.3 任务优先级安排问题 274
9.5 程序设计中其他若干问题的讨论 274
9.5.1 如何避免死锁 274
9.5.2 临界区的处理 275
9.5.3 看门狗的应用 275
9.5.4 ISR参数与任务参数的作用及用法 276
USB组件的应用 277
10.1 USB基础知识 277
10.1.1 USB发展历史 277
10.1.2 USB基本概念 278
10.2 USB设备协议栈 282
10.2.1 USB设备架构 282
10.2.2 USB设备初始化 283
10.2.3 USB设备协议栈常用函数 283
10.2.4 USB设备编程举例 284
10.2.5 USB设备虚拟串口编程举例 288
10.3 USB主机协议栈 299
10.3.1 USB主机协议栈框架介绍 299
10.3.2 USB主机应用层函数 300
10.3.3 USB主机应用程序示例 301
10.3.4 USB主机工作流程剖析 304
第11章 307
RTCS组件的应用 307
11.1 以太网基础知识 307
11.1.1 以太网物理设备 307
11.1.2 相关名词解释 308
11.2 RTCS文件组织结构 311
11.3 ICMP协议 312
11.3.1 使用ICMP设置步骤 312
11.3.2 ICMP测试方法 313
11.4 UDP协议 314
11.4.1 使用UDP设置步骤 315
11.4.2 UDP测试方法 316
11.5 TCP协议 318
11.5.1 使用TCP设置步骤 318
11.5.2 TCP测试方法 320
11.6 HTTP协议 321
11.6.1 使用HTTP的PC方软件设置步骤 321
11.6.2 使用HTTP的MCU方设置步骤 323
11.6.3 HTTP测试方法 325
附录A 327
硬件评估板SD-FSL-K60-C 327
附录B 331
问 与 答 331
参 考 文 献 335
概 述 1
1.1 关于RTOS的几个基本问题 1
1.1.1 什么是实时操作系统 1
1.1.2 使用RTOS的场合与RTOS的选择 3
1.1.3 RTOS的发展历程及几种流行的RTOS简介 4
1.2 RTOS的相关术语 5
1.2.1 内核类相关术语 5
1.2.2 任务类相关术语 7
1.3 MQX的主要特点及版本历史 9
1.3.1 MQX的主要特点 9
1.3.2 MQX的版本升级 9
1.4 MQX的资料简介 10
第2章 13
MQX系统的工程构架及 13
第一个样例工程 13
2.1 软硬件开发环境 13
2.1.1 软件开发平台――CW简介 14
2.1.2 SD-FSL-K60-C硬件系统 15
2.2 Freescale提供的MQX资源简介 15
2.3 初识MQX――内核、PSP及BSP 16
2.3.1 MQX的内核 16
2.3.2 处理器支持包PSP 17
2.3.3 板级支持包BSP 17
2.4 MQX工程框架――AMQXFW 18
2.4.1 MQX工程框架AMQXFW的目录结构 18
2.4.2 <MQX>的下级文件夹组成 20
2.4.3 <MQX>的下级文件夹解析 21
2.5 MQX第一个样例工程 26
2.5.1 样例工程的功能 26
2.5.2 样例工程任务设计 27
2.5.3 样例工程的运行测试 33
2.5.4 样例工程构建过程 34
2.5.5 上电复位到main函数之前的执行过程 37
2.6 MQX操作系统的启动流程剖析 40
2.6.1 内存的分配和部署 40
2.6.2 内核数据区剖析 41
2.6.3 MQX初始化结构体常数MQX_init_struct 42
2.6.4 MQX任务模板文件(task_templates.c)解析 45
2.6.5 MQX系统启动过程:_mqx函数剖析 46
第3章 53
MQX中断机制与时间管理 53
3.1 中断处理的通用基础知识概要 53
3.1.1 中断的基本概念 53
3.1.2 中断处理的基本过程 54
3.2 MQX中断处理过程及用户ISR安装方法 55
3.2.1 MQX中断处理函数简介 55
3.2.2 MQX中断处理过程 56
3.2.3 MQX中断编程的编译条件设定 56
3.2.4 MQX用户ISR安装方法 57
3.3 MQX中断管理与运行机制剖析 58
3.3.1 MQX中断系统涉及的数据结构 58
3.3.2 MQX中断系统初始化过程剖析 60
3.3.3 基于ARM Cortex-M4的MQX内核ISR源码剖析 67
3.3.4 理解MQX中断机制需要掌握的几个知识点 77
3.4 MQX时间管理函数及用法 79
3.4.1 _time_delay函数的使用方法及注意点 81
3.4.2 绝对时间的来源与用法举例 81
3.5 MQX时间管理实现方法及机制剖析 82
3.5.1 ARM Cortex-M的SysTick的硬件系统 82
3.5.2 hwtimer_systick_init()函数回调分析 83
3.5.3 SysTick嘀嗒定时器的初始化配置和启动 85
3.5.4 SysTick中断服务例程ISR 88
3.5.5 延时函数_time_delay及相关源代码剖析 91
第4章 93
MQX常用IO驱动 93
使用方法简介 93
4.1 MQX驱动分类及其简介 93
4.2 MQX工程常用I/O驱动的添加过程 94
4.3.1 设备标识符及命名方法 97
4.3.2 MQX标准设备驱动管理的三层模型 97
4.3.3 MQX I/O设备驱动管理队列 99
4.4 安装类IO设备驱动应用实例 100
4.4.1 K60-Flash模块概述 100
4.4.2 编写Flash任务以及工程的测试 101
4.5 非安装类I/O设备驱动应用实例 103
4.5.1 K60 RTC模块概述 103
4.5.2 RTC驱动文件及添加 103
4.5.3 编写RTC工程的测试 103
4.6 MQX设备三层管理下底层驱动设计方法 105
4.6.1 底层设备驱动三层体系结构管理模式分析 105
4.6.2 底层设备驱动初始化参数的组织和分解 107
4.6.3 MQX设备三层管理底层驱动设计的步骤 109
4.7 MQX设备四层管理的驱动设计、移植和复用 110
4.7.1 MQX设备驱动四层管理模型的提出 110
4.7.2 底层驱动构件的获取与设计 111
4.7.3 接口驱动构件的设计 112
4.8 底层设备程序移植和复用设计实例 112
第5章 117
任务管理与调度 117
5.1 任务管理的基础知识 117
5.1.1 任务的三要素 117
5.1.2 任务的四种状态:终止态、阻塞态、就绪态和激活态 118
5.1.3 任务的基本形式 120
5.2 MQX任务管理函数 122
5.3 MQX任务管理机制剖析 124
5.3.1 MQX任务队列剖析 124
5.3.2 MQX任务管理函数剖析 127
5.4 MQX的FIFO及RR调度策略 131
5.5 MQX调度机制剖析 133
5.5.1 ARM Cortex-M4的SVC及PendSV中断的调度作用 134
5.5.2 系统调用服务例程的执行流程 135
5.5.3 系统调用服务例程源码剖析 138
第6章 141
任务间的同步与通信 141
6.1 轻量级事件与事件 141
6.1.1 事件的含义及应用场合 141
6.1.2 轻量级事件的常用函数与编程步骤 141
3.常用轻量级事件函数的使用说明 142
6.1.3 事件的常用函数与编程步骤 146
6.1.4 事件的组织结构与函数代码剖析 151
6.2 轻量级信号量、信号量与互斥量 162
6.2.1 信号量的含义及应用场合 162
6.2.2 轻量级信号量的常用函数与编程步骤 163
6.2.3 信号量的常用函数与编程步骤 166
6.2.4 互斥量的常用函数与编程步骤 171
6.2.5 信号量的组织结构与函数代码剖析 176
6.3 轻量级信号量的常用函数与编程步骤 191
6.3.1 优先级反转问题的含义 191
6.3.2 优先级反转问题的解决方法 192
6.4 轻量级消息队列与消息 193
6.4.1 消息的含义及应用场合 193
6.4.2 轻量级消息队列的常用函数与编程步骤 194
6.4.3 消息的常用函数与编程步骤 197
6.4.4 消息的组织结构与函数代码剖析 203
第7章 211
内存管理与日志 211
7.1 内存管理及模式选择 211
7.1.1 内存管理的区域范围 211
7.1.2 内存管理的两种方式 212
7.1.3 内存管理的相关函数 212
7.2 可变大小内存管理 213
7.2.1 可变大小内存块管理方式 213
7.2.2 可变大小内存块管理的机制剖析 216
7.2.3 内存管理使用实例 226
7.3 固定大小内存管理 227
7.3.1 固定大小区块的管理机制 228
7.3.2 固定大小区块池的创建 228
7.3.3 固定大小区块的申请分配和释放 230
7.3.4 动态区块的删除 230
7.3.5 固定大小区块的使用和管理接口函数 230
7.4 日志的应用 230
7.4.1 轻量级日志 230
7.4.2 内核日志 236
7.4.3 日志 239
第8章 241
MQX基本要素综合实例 241
8.1 需求分析与硬件说明 241
8.1.1 需求分析 241
8.1.2 硬件说明 241
8.2 中断服务例程ISR与任务功能设计 242
8.2.1 中断服务例程ISR功能设计 242
8.2.2 任务功能设计 242
8.3 PC与MCU通信帧协议的设计 243
8.3.1 帧格式 243
8.3.2 帧命令 244
8.4 MCU主要代码实现 244
8.5 PC界面 259
第9章 259
MQX程序设计相关问题的讨论 259
9.1 库文件用法 259
9.1.1 库文件的基本概念 259
9.1.2 MQX库文件(.a)的生成 260
9.1.3 库文件的使用方法 263
9.2 BSP和PSP的移植方法简介 263
9.2.1 BSP的移植 263
9.2.2 PSP的移植 264
9.3 轻量级MQX 264
9.3.1 轻量级MQX特点 264
9.3.2 轻量级MQX工程 266
9.4 ISR设计、任务划分及优先级安排问题 273
9.4.1 ISR设计的基本问题 273
9.4.2 任务划分的简明方法 273
9.4.3 任务优先级安排问题 274
9.5 程序设计中其他若干问题的讨论 274
9.5.1 如何避免死锁 274
9.5.2 临界区的处理 275
9.5.3 看门狗的应用 275
9.5.4 ISR参数与任务参数的作用及用法 276
USB组件的应用 277
10.1 USB基础知识 277
10.1.1 USB发展历史 277
10.1.2 USB基本概念 278
10.2 USB设备协议栈 282
10.2.1 USB设备架构 282
10.2.2 USB设备初始化 283
10.2.3 USB设备协议栈常用函数 283
10.2.4 USB设备编程举例 284
10.2.5 USB设备虚拟串口编程举例 288
10.3 USB主机协议栈 299
10.3.1 USB主机协议栈框架介绍 299
10.3.2 USB主机应用层函数 300
10.3.3 USB主机应用程序示例 301
10.3.4 USB主机工作流程剖析 304
第11章 307
RTCS组件的应用 307
11.1 以太网基础知识 307
11.1.1 以太网物理设备 307
11.1.2 相关名词解释 308
11.2 RTCS文件组织结构 311
11.3 ICMP协议 312
11.3.1 使用ICMP设置步骤 312
11.3.2 ICMP测试方法 313
11.4 UDP协议 314
11.4.1 使用UDP设置步骤 315
11.4.2 UDP测试方法 316
11.5 TCP协议 318
11.5.1 使用TCP设置步骤 318
11.5.2 TCP测试方法 320
11.6 HTTP协议 321
11.6.1 使用HTTP的PC方软件设置步骤 321
11.6.2 使用HTTP的MCU方设置步骤 323
11.6.3 HTTP测试方法 325
附录A 327
硬件评估板SD-FSL-K60-C 327
附录B 331
问 与 答 331
参 考 文 献 335
猜您喜欢