书籍详情
基于ARM的嵌入式系统开发与应用
作者:吴明晖主编;徐睿等编著
出版社:人民邮电出版社
出版时间:2004-01-01
ISBN:9787115107527
定价:¥35.00
购买这本书可以去
内容简介
ARM公司的32位微控制器IP核因其卓越的性能和良好的扩充性为广大设计者所喜爱。目前,大多数半导体公司都推出了自己的ARMSoC芯片,使用ARM芯片构造32位的嵌入式系统成为嵌入式系统中的一个重要分支。本书全面、深入地介绍了基于ARMSoC的嵌入式系统开发技术,包括ARM系统结构与汇编程序设计、基于ARM的嵌入式系统启动代码bootloader设计、实时嵌入式操作系统及其移植方法、嵌入式系统中TCP/IP协议栈的开发、基于ARMSoC的音频应用开发、图形用户界面设计、嵌入式文件系统的移植方法等,并且给出了相应的设计实例。本书在全面介绍嵌入式系统基本原理的基础上,以目前较为流行的ATMEL、三星等公司的ARM芯片为例,结合μC/OS-II与Linux介绍了底层驱动程序与应用软件的设计方法。本书取材新颖、内容丰富、实用性强,涵盖了嵌入式系统开发的基本领域,适合从事嵌入式开发的技术人员阅读,也可作为高等院校相关专业高年级学生和研究生学习基于ARM的嵌入式系统开发的参考书。
作者简介
暂缺《基于ARM的嵌入式系统开发与应用》作者简介
目录
第1章 ARM体系结构 1
1.1 ARM处理器概述 1
1.1.1 ARM产品背景 1
1.1.2 ARM处理器系列介绍 1
1.1.3 ARM处理器体系结构扩展 2
1.2 ARM体系结构概述 3
1.2.1 ARM体系结构版本 3
1.2.2 数据类型 4
1.2.3 处理器模式 4
1.2.4 寄存器 5
1.2.5 通用寄存器 5
1.2.6 程序状态寄存器 7
1.2.7 异常 10
1.2.8 ARM过程调用标准(APCS)简介 14
1.3 ARM指令集 16
1.3.1 条件执行 16
1.3.2 ARM指令集列表 18
1.3.3 32位代码基本规则 42
1.3.4 ARM指令应用举例 42
1.4 Thumb指令集 44
1.5 IEEE浮点指令集简介 54
1.6 ARM指令时序 59
1.7 32位ARM处理器调试技术 60
1.7.1 边界扫描技术(JTAG) 60
1.7.2 ARM芯片的实时调试方案(E-TRACE) 61
1.7.3 Nexus标准 61
第2章 汇编语言程序设计 63
2.1 汇编语言程序结构 63
2.1.1 基于GCC编译器的汇编语言程序框架 63
2.1.2 基于CodeWarrior的汇编程序框架 65
2.2 符号数据定义与数据结构 67
2.2.1 符号命名规则 67
2.2.2 数值常量的使用与EQU指令 67
2.3 变量 67
2.3.1 数值变量和数值表达式 68
2.3.2 逻辑变量和逻辑表达式 69
2.3.3 字符串变量和字符串表达式 69
2.3.4 变量内存空间分配 69
2.3.5 变量初始化 70
2.4 数据区分配和管理 70
2.4.1 使用SPACE分配内存区域 70
2.4.2 使用DCB分配一个或多个字节的内存区域 70
2.4.3 使用ALIGN对齐内存数据 71
2.4.4 分配一个或多个字的内存区域 72
2.5 数据结构的描述 72
2.5.1 使用MAP和FIELD描述数据结构 72
2.5.2 相对地址 74
2.5.3 综合实例 74
2.6 分支与转移汇编程序设计 76
2.6.1 简单分支结构 76
2.6.2 复杂的分支结构 77
2.7 使用跳转表解决分支转移 79
2.7.1 程序实例 79
2.7.2 什么是跳转表 81
2.7.3 如何使用跳转表 82
2.8 使用跳转实现循环 82
2.8.1 通过条件跳转实现do...while循环 82
2.8.2 通过条件跳转实现while循环 83
2.8.3 多重循环程序设计 84
2.9 模块化程序设计 85
2.9.1 简单函数调用例子 86
2.9.2 寄存器保护 87
2.9.3 参数传递 87
2.9.4 函数跳转表 89
2.9.5 使用宏定义实现函数功能 90
2.9.6 和函数相关的伪指令 91
2.10 高级语言和汇编语言的混合编程 92
2.10.1 嵌入式汇编语句 92
2.10.2 高级语言和汇编语言函数间的相互调用 94
2.11 其他常见的伪指令 95
第3章 ARM系统启动代码分析和开发 97
3.1 ARM的异常与RESET 97
3.2 了解与启动相关的硬件信息与开发手段 98
3.3 C/C++语言开发和运行环境 99
3.3.1 工具链准备 99
3.3.2 GNU环境简介 101
3.3.3 C语言运行环境 102
3.3.4 一个简单boot代码例子 105
3.4 BOOT代码分析 109
3.4.1 U-BOOT简介 109
3.4.2 代码分析和移植相关 112
3.5 固件开发调试方法 120
第4章 实时操作系统在ARM上的移植 122
4.1 实时操作系统简介 122
4.2 μC/OS-II操作系统 123
4.2.1 μC/OS-II介绍 123
4.2.2 μC/OS-II应用程序开发 123
4.2.3 μC/OS-II移植 126
4.3 eCos简介及移植介绍分析 140
4.3.1 eCos简介 140
4.3.2 eCos的移植介绍 141
第5章 基于ARM的网络协议栈实现 143
5.1 协议栈实现框架 143
5.1.1 系统硬件驱动程序 144
5.1.2 znet协议初始化 146
5.1.3 znet协议主任务 147
5.2 协议实现模块代码分析 150
5.2.1 全局数据结构和μC/OS-II中的接口 150
5.2.2 全局缓冲管理模块 154
5.2.3 协议主任务和驱动交互的模块 158
5.2.4 ARP实现模块及主任务的IP数据分发 161
5.2.5 ICMP实现模块 170
5.2.6 API实现模块 172
5.2.7 UDP实现模块 181
5.2.8 TCP实现模块 187
5.3 协议栈实现回顾 198
第6章 外部总线与音频系统设计 199
6.1 IIC(I2C)总线基本原理 199
6.1.1 起始和停止条件 199
6.1.2 数据传输 200
6.1.3 读写操作 200
6.2 I2S音频设备总线的原理和应用 201
6.2.1 I2S总线简介 201
6.2.2 I2S总线协议 202
6.2.3 基于I2S接口的音频系统硬件设计 203
6.2.4 基于Cirrus Logic公司多媒体ARM芯片的音频系统设计 204
6.3 音频设备驱动 206
6.3.1 音频设备基础知识 206
6.3.2 Linux驱动程序框架 206
6.3.3 音频设备文件 208
6.3.4 程序和音频设备间的通信过程 210
6.3.5 设备的初始化和卸载 211
6.3.6 设备打开例程open() 213
6.3.7 内存映射和mmap例程 214
6.3.8 缓存区的设计 218
6.3.9 ioctl系统调用 221
6.3.10 音频数据的播放和录制例程 224
6.4 音频应用程序的编写 226
6.4.1 音频应用程序基本框架 226
6.4.2 音频参数设置 228
6.4.3 混频器(Mixer)基础 232
6.4.4 综合应用实例 235
6.4.5 音频应用程序编写注意事项 242
第7章 闪存芯片与嵌入式文件系统 244
7.1 闪存的物理特性 244
7.2 嵌入式文件系统概述 245
7.3 NAND设备驱动程序 246
7.3.1 NAND芯片 246
7.3.2 NAND控制器 249
7.3.3 NAND设备MTD程序制作 251
7.4 NOR设备驱动 255
7.4.1 NOR芯片 255
7.4.2 通用闪存接口(CFI) 256
7.5 针对闪存芯片的文件系统 259
7.5.1 用于中间层TrueFFS 260
7.5.2 让TrueFFS和引导扇区共享闪存 262
7.5.3 TrueFFS的配置与使用 262
7.5.4 在使用TrueFFS的闪存上面安装Linux 264
7.6 JFFS/JFFS2文件系统 266
7.6.1 日志文件系统存储结构 268
7.6.2 JFFS2 270
7.6.3 在Linux中使用JFFS/JFFS2 275
7.6.4 MTD的其他用法:使用RAMDISK制作启动内核 278
7.7 YAFFS文件系统 279
7.7.1 YAFFS的下载与安装 280
7.7.2 YAFFS与JFFS/JFFS2的不同点 280
7.7.3 YAFFS实现机制 281
第8章 嵌入式图形用户界面基础 288
8.1 LCD显示器基本原理 288
8.2 嵌入式GUI 289
8.2.1 MiniGUI 289
8.2.2 Microwindows 290
8.2.3 Microwindows_0.90_release的安装 291
8.3 Microwindows的系统框架 296
8.3.1 设备驱动 297
8.3.2 MicroGUI -设备无关图形引擎 302
8.3.3 Microwindows的应用程序接口API 303
8.4 图形引擎层 304
8.5 编译环境的选项(Makefile文件设置) 309
8.6 基于Microwindows类型的API的程序设计 310
8.6.1 窗口的基本元素 310
8.6.2 “Hello world”,你的第一个Microwindows程序 311
8.6.3 图形绘制函数小节 320
8.6.4 Microwindows API的优缺点 321
第9章 基于Nano-X的嵌入式GUI设计 322
9.1 Client/Server模式 322
9.2 Nano-X风格的“Hello World" 323
9.3 Nano-X窗口管理器 328
9.4 程序中使用位图资源 328
9.4.1 将位图变成C语言源程序 328
9.4.2 图像尺寸 329
9.4.3 图像显示 329
9.4.4 编译运行 331
9.5 从文件中加载图片 332
9.6 文字输出与字体 333
9.6.1 文字输出函数 333
9.6.2 字体的基础知识 334
9.6.3 字体标识符 334
9.7 高级用户界面设计 337
9.7.1 事件响应 338
9.7.2 窗口间通信 339
9.7.3 多窗口应用程序 340
9.7.4 窗口控件 344
9.7.5 游戏制作 352
1.1 ARM处理器概述 1
1.1.1 ARM产品背景 1
1.1.2 ARM处理器系列介绍 1
1.1.3 ARM处理器体系结构扩展 2
1.2 ARM体系结构概述 3
1.2.1 ARM体系结构版本 3
1.2.2 数据类型 4
1.2.3 处理器模式 4
1.2.4 寄存器 5
1.2.5 通用寄存器 5
1.2.6 程序状态寄存器 7
1.2.7 异常 10
1.2.8 ARM过程调用标准(APCS)简介 14
1.3 ARM指令集 16
1.3.1 条件执行 16
1.3.2 ARM指令集列表 18
1.3.3 32位代码基本规则 42
1.3.4 ARM指令应用举例 42
1.4 Thumb指令集 44
1.5 IEEE浮点指令集简介 54
1.6 ARM指令时序 59
1.7 32位ARM处理器调试技术 60
1.7.1 边界扫描技术(JTAG) 60
1.7.2 ARM芯片的实时调试方案(E-TRACE) 61
1.7.3 Nexus标准 61
第2章 汇编语言程序设计 63
2.1 汇编语言程序结构 63
2.1.1 基于GCC编译器的汇编语言程序框架 63
2.1.2 基于CodeWarrior的汇编程序框架 65
2.2 符号数据定义与数据结构 67
2.2.1 符号命名规则 67
2.2.2 数值常量的使用与EQU指令 67
2.3 变量 67
2.3.1 数值变量和数值表达式 68
2.3.2 逻辑变量和逻辑表达式 69
2.3.3 字符串变量和字符串表达式 69
2.3.4 变量内存空间分配 69
2.3.5 变量初始化 70
2.4 数据区分配和管理 70
2.4.1 使用SPACE分配内存区域 70
2.4.2 使用DCB分配一个或多个字节的内存区域 70
2.4.3 使用ALIGN对齐内存数据 71
2.4.4 分配一个或多个字的内存区域 72
2.5 数据结构的描述 72
2.5.1 使用MAP和FIELD描述数据结构 72
2.5.2 相对地址 74
2.5.3 综合实例 74
2.6 分支与转移汇编程序设计 76
2.6.1 简单分支结构 76
2.6.2 复杂的分支结构 77
2.7 使用跳转表解决分支转移 79
2.7.1 程序实例 79
2.7.2 什么是跳转表 81
2.7.3 如何使用跳转表 82
2.8 使用跳转实现循环 82
2.8.1 通过条件跳转实现do...while循环 82
2.8.2 通过条件跳转实现while循环 83
2.8.3 多重循环程序设计 84
2.9 模块化程序设计 85
2.9.1 简单函数调用例子 86
2.9.2 寄存器保护 87
2.9.3 参数传递 87
2.9.4 函数跳转表 89
2.9.5 使用宏定义实现函数功能 90
2.9.6 和函数相关的伪指令 91
2.10 高级语言和汇编语言的混合编程 92
2.10.1 嵌入式汇编语句 92
2.10.2 高级语言和汇编语言函数间的相互调用 94
2.11 其他常见的伪指令 95
第3章 ARM系统启动代码分析和开发 97
3.1 ARM的异常与RESET 97
3.2 了解与启动相关的硬件信息与开发手段 98
3.3 C/C++语言开发和运行环境 99
3.3.1 工具链准备 99
3.3.2 GNU环境简介 101
3.3.3 C语言运行环境 102
3.3.4 一个简单boot代码例子 105
3.4 BOOT代码分析 109
3.4.1 U-BOOT简介 109
3.4.2 代码分析和移植相关 112
3.5 固件开发调试方法 120
第4章 实时操作系统在ARM上的移植 122
4.1 实时操作系统简介 122
4.2 μC/OS-II操作系统 123
4.2.1 μC/OS-II介绍 123
4.2.2 μC/OS-II应用程序开发 123
4.2.3 μC/OS-II移植 126
4.3 eCos简介及移植介绍分析 140
4.3.1 eCos简介 140
4.3.2 eCos的移植介绍 141
第5章 基于ARM的网络协议栈实现 143
5.1 协议栈实现框架 143
5.1.1 系统硬件驱动程序 144
5.1.2 znet协议初始化 146
5.1.3 znet协议主任务 147
5.2 协议实现模块代码分析 150
5.2.1 全局数据结构和μC/OS-II中的接口 150
5.2.2 全局缓冲管理模块 154
5.2.3 协议主任务和驱动交互的模块 158
5.2.4 ARP实现模块及主任务的IP数据分发 161
5.2.5 ICMP实现模块 170
5.2.6 API实现模块 172
5.2.7 UDP实现模块 181
5.2.8 TCP实现模块 187
5.3 协议栈实现回顾 198
第6章 外部总线与音频系统设计 199
6.1 IIC(I2C)总线基本原理 199
6.1.1 起始和停止条件 199
6.1.2 数据传输 200
6.1.3 读写操作 200
6.2 I2S音频设备总线的原理和应用 201
6.2.1 I2S总线简介 201
6.2.2 I2S总线协议 202
6.2.3 基于I2S接口的音频系统硬件设计 203
6.2.4 基于Cirrus Logic公司多媒体ARM芯片的音频系统设计 204
6.3 音频设备驱动 206
6.3.1 音频设备基础知识 206
6.3.2 Linux驱动程序框架 206
6.3.3 音频设备文件 208
6.3.4 程序和音频设备间的通信过程 210
6.3.5 设备的初始化和卸载 211
6.3.6 设备打开例程open() 213
6.3.7 内存映射和mmap例程 214
6.3.8 缓存区的设计 218
6.3.9 ioctl系统调用 221
6.3.10 音频数据的播放和录制例程 224
6.4 音频应用程序的编写 226
6.4.1 音频应用程序基本框架 226
6.4.2 音频参数设置 228
6.4.3 混频器(Mixer)基础 232
6.4.4 综合应用实例 235
6.4.5 音频应用程序编写注意事项 242
第7章 闪存芯片与嵌入式文件系统 244
7.1 闪存的物理特性 244
7.2 嵌入式文件系统概述 245
7.3 NAND设备驱动程序 246
7.3.1 NAND芯片 246
7.3.2 NAND控制器 249
7.3.3 NAND设备MTD程序制作 251
7.4 NOR设备驱动 255
7.4.1 NOR芯片 255
7.4.2 通用闪存接口(CFI) 256
7.5 针对闪存芯片的文件系统 259
7.5.1 用于中间层TrueFFS 260
7.5.2 让TrueFFS和引导扇区共享闪存 262
7.5.3 TrueFFS的配置与使用 262
7.5.4 在使用TrueFFS的闪存上面安装Linux 264
7.6 JFFS/JFFS2文件系统 266
7.6.1 日志文件系统存储结构 268
7.6.2 JFFS2 270
7.6.3 在Linux中使用JFFS/JFFS2 275
7.6.4 MTD的其他用法:使用RAMDISK制作启动内核 278
7.7 YAFFS文件系统 279
7.7.1 YAFFS的下载与安装 280
7.7.2 YAFFS与JFFS/JFFS2的不同点 280
7.7.3 YAFFS实现机制 281
第8章 嵌入式图形用户界面基础 288
8.1 LCD显示器基本原理 288
8.2 嵌入式GUI 289
8.2.1 MiniGUI 289
8.2.2 Microwindows 290
8.2.3 Microwindows_0.90_release的安装 291
8.3 Microwindows的系统框架 296
8.3.1 设备驱动 297
8.3.2 MicroGUI -设备无关图形引擎 302
8.3.3 Microwindows的应用程序接口API 303
8.4 图形引擎层 304
8.5 编译环境的选项(Makefile文件设置) 309
8.6 基于Microwindows类型的API的程序设计 310
8.6.1 窗口的基本元素 310
8.6.2 “Hello world”,你的第一个Microwindows程序 311
8.6.3 图形绘制函数小节 320
8.6.4 Microwindows API的优缺点 321
第9章 基于Nano-X的嵌入式GUI设计 322
9.1 Client/Server模式 322
9.2 Nano-X风格的“Hello World" 323
9.3 Nano-X窗口管理器 328
9.4 程序中使用位图资源 328
9.4.1 将位图变成C语言源程序 328
9.4.2 图像尺寸 329
9.4.3 图像显示 329
9.4.4 编译运行 331
9.5 从文件中加载图片 332
9.6 文字输出与字体 333
9.6.1 文字输出函数 333
9.6.2 字体的基础知识 334
9.6.3 字体标识符 334
9.7 高级用户界面设计 337
9.7.1 事件响应 338
9.7.2 窗口间通信 339
9.7.3 多窗口应用程序 340
9.7.4 窗口控件 344
9.7.5 游戏制作 352
猜您喜欢