基本信息·出版社:清华大学出版社 ·页码:411 页 ·出版日期:2009年04月 ·ISBN:7302186936/9787302186939 ·条形码:9787302186939 ·版本:第1版 · ...
商家名称 |
信用等级 |
购买信息 |
订购本书 |
|
|
基于ARM嵌入式μCLinux系统原理及应用 |
|
|
|
基于ARM嵌入式μCLinux系统原理及应用 |
|
基本信息·出版社:清华大学出版社
·页码:411 页
·出版日期:2009年04月
·ISBN:7302186936/9787302186939
·条形码:9787302186939
·版本:第1版
·装帧:平装
·开本:16
·正文语种:中文
·丛书名:高等学校计算机专业教材精选·计算机硬件
内容简介 《基于ARM嵌入式μCLinux系统原理及应用》不但着重介绍了目前流行的ARM微处理器及应用较为广泛的μCLinux嵌入式操作系统,而且结合作者多年的研究和教学经验介绍了基于ARM芯片的嵌入式系统的原理、程序设计方法以及应用程序的开发。《基于ARM嵌入式μCLinux系统原理及应用》共分为12章。第1章~第3章介绍了嵌入式系统的基本概念,常用的ARM/Thumb指令系统及编译工具GNU GCC的使用方法;第4章和第5章介绍了ARM芯片的体系结构和各个外部设备接口(如Flash存储器、SDRAM、中断接口、DMA接口、定时及时钟接口、音频接口、串行接口、键盘显示器接口、触摸屏LCD接口和模拟接口等)的结构、原理、接口电路及时序,并且介绍了接口的驱动程序的编制方法;第6章~第10章介绍了主流的μCLinux操作系统的进程管理、文件系统管理、设备管理以及用户接口的设计过程,其中包括开发工具Hitool for μCLinux的使用方法介绍及简单驱动程序的编写。第11章和第12章介绍了应用程序开发实例和μCLinux在UP-NETARM 3000平台上的移植过程。
《基于ARM嵌入式μCLinux系统原理及应用》主要从嵌入式理论、方法和应用实践的角度出发,以ARM处理器为基础,展现了嵌入式系统的基本理论的主要内容和实际应用开发方法。《基于ARM嵌入式μCLinux系统原理及应用》是精品课程配套教材,有教学支持网站(http://www1.hrbust.edu.cn/xueyuan/com/embedded/),取得了良好的教学效果,具有较好的推广价值。
《基于ARM嵌入式μCLinux系统原理及应用》可供嵌入式爱好者、从业者和高等学校师生专业进修和教学参考之用,也可作为有关嵌入式系统教学的本科生或研究生的教材使用。
编辑推荐 《基于ARM嵌入式μCLinux系统原理及应用》为高等学校计算机专业教材精选·计算机硬件之一。
目录 第1章 嵌入式系统导论1
1.1 概述1
1.1.1 什么是嵌入式系统1
1.1.2 嵌入式系统的特点及分类2
1.2 嵌入式微处理器和嵌入式操作系统4
1.2.1 嵌入式微处理器4
1.2.2 嵌入式操作系统5
1.3 嵌入式系统设计过程9
1.3.1 需求分析10
1.3.2 规格说明13
1.3.3 体系结构设计13
1.3.4 设计硬件构件和软件构件15
1.3.5 系统集成15
1.3.6 系统测试15
小结16
习题16
第2章 ARM/Thumb微处理器结构及指令系统17
2.1 ARM微处理器概述17
2.1.1 ARM系列微处理器17
2.1.2 RISC体系结构20
2.1.3 ARM和Thumb状态21
2.1.4 寄存器21
2.1.5 ARM指令集概述21
2.1.6 Thumb指令集概述21
2.2 ARM微处理器体系结构22
2.2.1 数据类型22
2.2.2 ARM微处理器的工作状态22
2.2.3 ARM体系结构的存储器格式23
2.2.4 处理器模式23
2.2.5 寄存器组织24
2.2.6 异常28
2.3 ARM/Thumb指令系统34
2.3.1 ARM处理器寻址方式34
2.3.2 ARM指令集介绍36
2.3.3 Thumb指令集介绍54
小结55
习题55
第3章 程序设计基础56
3.1 GCC简介56
3.1.1 GCC组成56
3.1.2 GCC编译程序的基本过程57
3.2 C/C++交叉编译器arm-elf-gcc58
3.2.1 概述58
3.2.2 命令使用60
3.3 交叉连接器arm-elf-ld62
3.3.1 概述62
3.3.2 命令使用63
3.3.3 linkcmds链接命令文件64
3.4 工程管理器make70
3.4.1 概述70
3.4.2 命令使用71
3.4.3 编写一个makefile72
3.5 交叉汇编器 arm-elf-as76
3.5.1 概述76
3.5.2 命令使用77
3.6 汇编语言编程78
3.6.1 汇编语言78
3.6.2 宏语句与条件汇编83
3.6.3 模块化程序设计86
3.6.4 内存模式86
3.6.5 StrongARM和ARM786
3.7 简单程序设计88
3.7.1 顺序程序设计88
3.7.2 分支程序设计89
3.7.3 循环程序设计90
3.7.4 子程序设计91
3.8 混合语言编程92
3.8.1 如何在C语言内嵌汇编语言93
3.8.2 C与汇编相互调用96
小结99
习题99
第4章 S3C44B0X CPU管理及附加电路101
4.1 S3C44B0X简介101
4.2 时钟和功耗管理109
4.2.1 概述109
4.2.2 寄存器定义111
4.2.3 时钟与电源管理编程113
4.3 CPU Wrapper和总线特性114
4.3.1 概述114
4.3.2 内部SRAM115
4.3.3 总线优先级115
4.3.4 写缓冲区操作116
4.3.5 特殊寄存器116
4.4 存储器管理118
4.5 存储时序图123
4.6 MICETEK EV44B0II开发板简介126
4.6.1 存储地址空间分配126
4.6.2 I/O口配置128
4.6.3 电源、时钟及复位电路130
4.6.4 MBL(Micetek Boot Loader)介绍130
小结131
习题131
第5章 S3C44B0X接口电路设计与编程132
5.1 存储器电路设计及编程132
5.1.1 SDRAM KM416S4020B芯片132
5.1.2 Flash 存储器132
5.1.3 存储器与CPU的连接137
5.1.4 SDRAM存储器接口电路与编程138
5.1.5 Flash 存储器接口电路与编程139
5.2 中断系统电路设计及编程141
5.2.1 S3C44B0X中断概述141
5.2.2 中断源及中断模式142
5.2.3 中断请求及允许143
5.2.4 中断判优143
5.2.5 IRQ中断响应模式145
5.2.6 中断及异常响应处理过程150
5.2.7 中断特殊寄存器154
5.2.8 中断程序应用编程159
5.3 通用I/O接口电路设计及编程161
5.3.1 概述161
5.3.2 端口控制寄存器165
5.3.3 LED接口电路设计及编程166
5.3.4 键盘接口电路设计及编程167
5.4 DMA接口电路原理及编程169
5.4.1 S3C44B0X DMA控制器结构170
5.4.2 外部DMA请求/应答协议171
5.4.3 DMA传输模式172
5.4.4 DMA请求源的选择173
5.4.5 DMA自动重装模式173
5.4.6 S3C44B0X芯片的DMA寄存器174
5.4.7 S3C44B0X DMA编程177
5.5 PWM计时器接口电路原理及编程180
5.5.1 概述180
5.5.2 PWM计时器操作181
5.5.3 PWM计时器控制寄存器186
5.5.4 PWM计时器编程188
5.6 看门狗计时器接口电路原理及编程190
5.6.1 概述190
5.6.2 WDT计时器控制寄存器190
5.6.3 WDT计时器编程191
5.7 日历时钟接口电路设计及编程192
5.7.1 概述192
5.7.2 日历时钟192
5.7.3 日历时钟寄存器定义194
5.7.4 日历时钟接口电路设计及编程197
5.8 LCD控制器198
5.8.1 LCD工作原理199
5.8.2 S3C44B0X的内部LCD控制器199
5.8.3 LCD控制器的操作201
5.8.4 LCD控制器专用寄存器203
5.8.5 LCD接口电路设计及编程209
5.9 触摸屏电路设计及编程213
5.9.1 触摸屏概述213
5.9.2 电阻触摸屏原理213
5.9.3 触摸屏电路控制213
5.9.4 编程217
5.9.5 触摸屏与显示器的配合218
5.10 异步串行通信接口219
5.10.1 简述219
5.10.2 中断/DMA请求产生器220
5.10.3 UART错误状态FIFO220
5.10.4 UART寄存器221
5.10.5 编程225
5.11 A/D转换器227
5.11.1 A/D转换器概述227
5.11.2 ADC的相关寄存器228
5.11.3 A/D转换器电路设计及编程229
5.12 D/A转换器230
5.12.1 D/A转换器工作原理230
5.12.2 DAC0832芯片231
5.13 IIS总线接口234
5.13.1 音频系统简介234
5.13.2 IIS总线概述234
5.13.3 传输方式235
5.13.4 声音串口格式236
5.13.5 采样频率和主时钟237
5.13.6 IIS操作238
5.13.7 IIS总线接口寄存器238
5.13.8 UDA1341TS概述240
5.13.9 IIS接口及编程246
小结252
习题252
第6章 嵌入式Linux开发254
6.1 嵌入式Linux概况254
6.1.1 嵌入式Linux254
6.1.2 嵌入式Linux的组成257
6.1.3 嵌入式Linux的版本257
6.2 μCLinux 开发介绍258
6.2.1 启动模块258
6.2.2 内核初始化259
6.2.3 系统调用处理/异常处理259
6.2.4 驱动程序259
6.2.5 文件系统260
6.2.6 内存管理260
6.2.7 进程管理261
6.2.8 运行时间库及应用程序261
6.3 μCLinux启动过程263
6.4 开发工具介绍266
6.4.1 安装267
6.4.2 开发环境的建立267
6.4.3 调试方法268
6.5 内核的配置和编译272
6.5.1 配置内核272
6.5.2 编译内核274
6.6 内核的调试274
6.6.1 下载μCLinux内核274
6.6.2 几个调试窗口274
小结278
习题278
第7章 进程/线程管理279
7.1 进程概念及组成279
7.1.1 进程概念279
7.1.2 进程的组成279
7.2 进程调度280
7.2.1 信号280
7.2.2 进程状态283
7.2.3 进程调度284
7.3 进程运行和控制285
7.4 进程通信与同步286
7.4.1 进程通信286
7.4.2 进程同步288
7.5 线程概念及分类288
7.5.1 线程特点288
7.5.2 线程的基本概念289
7.5.3 线程的分类289
7.6 线程基础290
7.6.1 线程的基本操作函数290
7.6.2 简单的多线程编程291
7.7 线程应用中的同步问题292
7.7.1 特定线程数据292
7.7.2 互斥锁292
7.7.3 读写锁294
7.7.4 记录上锁294
7.7.5 条件变量295
7.7.6 信号量295
小结295
习题295
第8章 存储管理296
8.1 FLAT模式内存管理296
8.1.1 3种内存管理模型296
8.1.2 标准Linux的内存管理297
8.1.3 μCLinux的内存管理298
8.1.4 μCLinux内存管理的局限性298
8.2 内存管理模块的启动初始化299
8.2.1 setup_arch()299
8.2.2 paging_init()300
8.2.3 free_area_init()301
8.2.4 mem_init()301
8.3 可执行程序的加载301
8.3.1 用户程序的内存分布301
8.3.2 reloc段机制302
8.3.3 FLAT可执行文件格式303
8.3.4 执行文件加载流程304
小结307
习题307
第9章 文件系统308
9.1 文件系统结构308
9.2 文件系统类型310
9.2.1 ROMFS文件系统310
9.2.2 RAMFS文件系统312
9.2.3 JFFS与JFFS2文件系统312
9.2.4 EXT2文件系统314
9.3 文件系统目录结构315
9.3.1 ROMFS文件系统目录结构315
9.3.2 μCLinux源程序结构318
9.4 简单编程实例321
小结324
习题324
第10章 设备管理325
10.1 设备管理结构325
10.1.1 概述325
10.1.2 字符设备与块设备325
10.1.3 主设备号和次设备号326
10.1.4 Linux设备命名习惯326
10.2 驱动程序326
10.2.1 驱动程序基本功能326
10.2.2 驱动程序的运作过程327
10.2.3 常用接口函数介绍327
10.2.4 常用函数原型328
10.3 驱动程序编写实例329
10.3.1 设备功能介绍329
10.3.2 具体实现329
小结333
习题334
第11章 应用程序开发335
11.1 串口应用程序335
11.1.1 串口主要函数介绍336
11.1.2 串口举例338
11.2 网络应用340
11.2.1 TCP/IP网络应用340
11.2.2 Web服务器应用350
11.3 音频设备应用354
11.3.1 常用音频文件格式354
11.3.2 播放WAV文件举例360
11.4键盘及LCD显示应用364
11.4.1 LCD介绍364
11.4.2 键盘实现368
11.5 汉字音乐点播应用368
小结377
习题378
第12章 μCLinux在UP-NETARM3000平台上的移植379
12.1 UP-NETARM3000嵌入式开发平台介绍379
12.2 μCLinux在UP-NETARM3000上的移植379
12.2.1 Linux移植准备379
12.2.2 关于交叉编译环境380
12.2.3 修改μCLinux内核源码382
12.2.4 Linux内核裁减384
12.2.5 内核的编译392
12.3 内核及根文件系统的烧写392
12.3.1 配置minicom392
12.3.2 烧写内核393
12.3.3 烧写根文件系统393
小结394
习题394
附录 A S3C44B0X特殊功能寄存器地址对应表395
附录B 部分Linux命令403
附录C LinuxView简介406
参考文献411
……
序言 随着半导体技术和信息技术的发展以及数字化产品的普及,Internet得到了广泛深入的应用。目前,嵌入式系统被应用到网络、手持通信设备、国防军事以及自动化控制等领域中。面对巨大的机遇和挑战,嵌入式系统异军突起,作为信息时代的产业技术,肩负重大的历史使命,成为当今信息产业发展的主流技术。
嵌入式系统是一个涉及多门知识的研究领域,包括操作系统(Linux)、微型计算机原理(ARM处理器)、C/汇编语言程序设计、计算机网络及各种应用领域。目前,国内外同类教材主要从嵌入式系统理论、Linux(或其他)操作系统、Linux环境的C编程、各种处理器结构和原理等方面分别进行描述,主要侧重于技术开发,对原理、背景知识介绍较少,多数没有和教学实验装置配套,没有习题,不利于自学、预习和复习,不能充分满足教学和系统学习的需要。本书以当前最廉价、接口最丰富、采用占有率最高(80%以上)的ARM处理器芯片为基础,将嵌入式系统理论和当前最流行、最适于嵌入式应用的Linux操作系统整合到一起,在阐述理论知识的同时,给出了简单明了的实验程序和综合实例。
本书主要从嵌入式理论和应用实践的角度展现嵌入式系统的基本理论、主要内容和实际开发应用方法,特别注重理论和实践相结合,既具有面向教学,又具有面向开发与应用的特点。可供嵌入式爱好者、从业者和高等学校师生专业进修和教学参考之用。另外,本书特别对GCC使用方法、ARM体系结构和接口结构原理、接口电路设计及编程进行了详细讲解。
本书编写过程中,特别增加了低功耗管理和存储时序的内容,以及各个接口的介绍更加详细,接口驱动程序更加丰富,程序注释齐全、通俗易懂,内容安排也更为合理。
本书通过对一些相关芯片工作原理的介绍,增加了本书的可读性。例如在对IIS总线接口的介绍时,添加了对音频编解码芯片1341的工作原理的介绍,使读者更容易理解录音和播放工作过程。
本书配套资源丰富。课题组完成了“嵌入式系统设计与实现”课程教学大纲、教学CAI课件、教学录像和电子教案等;建立了“嵌入式微机接口技术精品课程”网站(http://www1.hrbust.edu.cn/xueyuan/com/embedded/),网站包括嵌入式微机接口技术论坛、在线答疑及作业提交功能、在线考试系统、习题库、试题库及答案;课题组还编写了该教材的配套实验指导书。
文摘 插图:
第1章嵌入式系统导论
随着社会信息化的日益加强,计算机和网络已经全面渗透到日常生活的每一个角落。人们需要的已经不仅仅是那种放在桌上处理文档、进行工作管理和生产控制的计算“机器”。任何一个普通人都可能拥有大小不一、形状各异、包含了嵌入式技术的电子产品。小到MP3、PDA(个人数字助理)等微型数字产品,大到网络家电、智能家电和车载电子设备等都已广泛应用于人们的日常生活之中。
目前,各种各样的新型嵌入式系统设备在应用数量上已经远远超过了通用计算机。在工业和服务领域中,使用嵌入式技术的数字机床、智能工具、工业机器人和服务机器人正在逐渐改变着传统的工业生产和服务方式。
本章主要内容如下:
(1)嵌入式系统的概念;
(2)嵌入式系统的特点、分类及应用领域;
(3)主流嵌入式微处理器和嵌入式操作系统;
(4)嵌入式系统设计方法。
1.1 概述
1.1.1 什么是嵌入式系统
1.嵌入式系统的定义
借用芙国的电气工程师学会(IEE)的一个定义(http://www.iee.org/policy/areas/y2k/w一43.cfm):嵌入式系统是“控制、监视或者辅助设备、机器和车间运行的装置”。
2.嵌入式系统的特性
嵌入式系统具备下列特性。
(1)通常只执行特定功能,这一点与一般桌上型办公设备或数据库系统有很大区别。
(2)以微型计算机与周边器件构成核心,其规模可在大范围内变化,如从8051芯片到X86芯片。
(3)要求严格的时序和稳定性,这是因为在计算机控制的大型系统中,程序运行稍有差错则可能使得整个系统失去控制,甚至酿成灾害。