第1章 嵌入式系统概述 1
1.1 嵌入式系统的基本概念 1
1.2 嵌入式系统的发展 3
1.2.1 嵌入式系统的发展历史 3
1.2.2 嵌入式系统的发展趋势 5
1.3 嵌入式系统的应用 7
1.4 嵌入式系统的组成 8
1.4.1 硬件层 9
1.4.2 中间层 10
1.4.3 软件层 11
1.5 嵌入式系统的分类 11
1.6 物联网与嵌入式系统 12
思考与习题 13
第2章 嵌入式处理器 15
2.1 嵌入式处理器概述 15
2.2 嵌入式处理器的分类 15
2.3 嵌入式处理器指令集 18
2.3.1 CISC与RISC 18
2.3.2 指令流水线 21
2.3.3 影响流水线性能的因素 21
2.4 嵌入式处理器的体系结构 22
2.4.1 冯·诺依曼结构 22
2.4.2 哈佛结构 23
2.5 嵌入式处理器的存储器系统 24
2.6 嵌入式处理器I/O端口的编址方式 26
2.7 典型的嵌入式处理器 27
思考与习题 29
第3章 ARM嵌入式微处理器 30
3.1 ARM微处理器概述 30
3.1.1 ARM简介 30
3.1.2 ARM微处理器的特点 31
3.1.3 ARM微处理器的应用领域 31
3.2 ARM微处理器系列 32
3.2.1 ARM体系架构版本 32
3.2.2 ARM微处理器系列 34
3.2.3 常见的ARM系列微处理器 35
3.3 ARM微处理器的工作模式和寄存器组 40
3.3.1 ARM的工作状态 40
3.3.2 ARM的运行模式 41
3.3.3 ARM的寄存器组 42
3.4 ARM微处理器的数据类型 45
3.4.1 基本数据类型 45
3.4.2 浮点数据类型 46
3.4.3 存储器格式 47
3.5 ARM微处理器的寻址方式 48
3.5.1 立即寻址 48
3.5.2 寄存器寻址 48
3.5.3 寄存器间接寻址 48
3.5.4 寄存器偏移寻址 49
3.5.5 基址变址寻址 50
3.5.6 多寄存器寻址 50
3.5.7 相对寻址 51
3.5.8 堆栈寻址 51
3.6 ARM微处理器指令集 52
3.6.1 ARM指令格式 52
3.6.2 ARM指令集 53
3.6.3 Thumb指令集 58
3.6.4 Thumb-2指令集 59
3.6.5 ThumbEE指令集 59
3.7 ARM微处理器的存储管理 60
3.7.1 ARM存储管理概述 60
3.7.2 高速缓冲存储器 61
3.7.3 存储器管理单元 62
3.7.4 存储器保护单元 65
3.8 ARM微处理器的异常处理 65
3.8.1 ARM处理器支持的异常类型 65
3.8.2 ARM处理器的异常向量表和优先级 66
3.8.3 ARM处理器对异常的处理和返回 66
思考与习题 69
第4章 总线和外设接口 70
4.1 总线和外设接口概述 70
4.1.1 总线的简介 70
4.1.2 接口的简介 70
4.2 现场总线 71
4.2.1 现场总线概述 71
4.2.2 主流的现场总线 71
4.3 GPIO接口 73
4.4 UART接口 73
4.4.1 UART接口的通信协议 74
4.4.2 UART接口的硬件模块 75
4.4.3 嵌入式处理器中的UART 76
4.5 I2C接口 76
4.5.1 I2C总线的基础 76
4.5.2 I2C总线的信号 77
4.5.3 I2C总线的地址 79
4.5.4 嵌入式处理器中的I2C总线接口 79
4.6 SPI总线接口 80
4.6.1 SPI总线的信号 80
4.6.2 嵌入式处理器中的SPI总线接口 81
4.7 CAN总线接口 81
4.7.1 CAN总线的组成 81
4.7.2 CAN总线的特点 82
4.7.3 CAN总线的数据报文 83
4.8 以太网接口 84
4.8.1 以太网接口的基础 84
4.8.2 以太网接口在嵌入式系统中的应用 85
4.9 无线通信接口 85
4.9.1 红外和蓝牙 86
4.9.2 无线数传模块 87
4.9.3 Wi-Fi模块 87
4.10 A/D接口 89
4.10.1 A/D转换器的类型 89
4.10.2 A/D转换的重要指标 90
4.11 D/A接口 91
4.11.1 D/A转换器的种类 91
4.11.2 D/A转换器的主要技术指标 91
4.12 JTAG接口 92
思考与习题 94
第5章 嵌入式系统的软件体系结构 95
5.1 嵌入式系统的软件层次 95
5.2 嵌入式系统的中间驱动层 96
5.2.1 中间驱动层的基础 96
5.2.2 BSP的功能 98
5.2.3 BSP的设计 99
5.3 嵌入式系统的引导加载程序 99
5.3.1 Bootloader的基础 99
5.3.2 Bootloader的工作模式 100
5.3.3 Bootloader的启动方法 100
5.3.4 Bootloader的启动流程 102
思考与习题 103
第6章 嵌入式操作系统 104
6.1 嵌入式操作系统概述 104
6.2 嵌入式操作系统的特点 105
6.3 嵌入式操作系统的分类 105
6.4 嵌入式操作系统的功能 106
6.4.1 内核 106
6.4.2 任务管理 108
6.4.3 同步与通信 111
6.4.4 时钟和中断 115
6.5 常见的嵌入式操作系统 117
思考与习题 119
第7章 物联网操作系统 121
7.1 物联网“碎片化”难题 121
7.2 物联网操作系统概述 122
7.3 物联网操作系统的发展 124
7.4 物联网操作系统的分类 126
7.5 典型的物联网操作系统 127
思考与习题 132
第8章 AliOS Things操作系统 133
8.1 AliOS Things概述 133
8.2 AliOS Things的架构 134
8.3 AliOS Things的内核 135
8.3.1 Rhino内核 135
8.3.2 工作队列 136
8.3.3 异步事件框架 138
8.4 AliOS Things的组件 140
8.4.1 自组织网络 140
8.4.2 空中固件升级 149
8.4.3 网络适配框架 151
8.4.4 消息传输协议 154
8.4.5 感知设备软件框架 156
8.4.6 JavaScript引擎Bone Engine@Lite 162
8.4.7 智能语音服务 164
8.4.8 安全支持 167
思考与习题 169
第9章 嵌入式系统的物联网应用 170
9.1 开发编译环境的搭建 170
9.1.1 获取AliOS Things源代码 170
9.1.2 系统环境配置 170
9.1.3 IDE的安装和配置 175
9.2 AliOS Things应用的开发步骤 178
9.2.1 使用命令行工具进行开发 178
9.2.2 通过IDE工具进行开发 179
9.3 MXCHIP MK3080的简介 182
9.3.1 EMW3080模组的简介 182
9.3.2 EMW3080(B)模组的硬件架构 182
9.3.3 EMW3080(B)模组的特性 183
9.3.4 MK3080开发板 184
9.4 物联网应用开发实例 184
9.4.1 物联网平台产品的定义 185
9.4.2 设备端产品的开发 189
思考与习题 194
参考文献 195