嵌入式系统设计与开发实例详解:基于ARM的应用

嵌入式系统设计与开发实例详解:基于ARM的应用
作 者: 胥静
出版社: 北京航空航天大学出版社
丛编项:
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 嵌入式计算机
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《嵌入式系统设计与开发实例详解:基于ARM的应用》作者简介

内容简介

内容简介目录本书是一本讲述如何基于ARM7内核处理器进行嵌入式系统设计和开发的实用书籍。本书提供的实例全面涉及各种底层硬件驱动(如Flash ROM、SDRAM、Nandflash存储器、通用I/O、UART、定时器、LCD、I2C接口、A/D转换器、触摸屏及USB等)、μC/OSⅡ嵌入式操作系统、图形用户界面系统、文件系统和TCP/IP协议栈等嵌入式系统体系结构中的组成部件。书中通过28个实例对相关知识进行了有针对性的深入分析和详细解说,并为读者提供了可遵循的实践步骤,使读者能够在实际应用中深入掌握和实现这些技术和技巧。本书内容丰富,深入浅出,实用性强,不仅适合作为高等学校嵌入式系统相关专业的实验、培训教材或教师参考用书,也适合从事嵌入式系统设计和开发工作的专业技术人士使用。随着计算机技术逐渐渗透到各类电子产品当中,一种实用、高效的计算机系统:嵌入式系统不断展现出它独特的魅力。与桌面计算机不同,嵌入式计算机系统专门服务于特定需求,一般要求低成本、低耗费、轻型、高性能、高可靠性及可配置性。嵌入式系统日益广泛的应用也让人们看到了这项技术所蕴涵的巨大的市场潜力。市场的需求带动了对技术人才的需求,今天,大批的技术人员和学者的目光都被吸引到嵌入式系统的设计与开发这门技术上。但是,嵌入式系统的设计与开发作为一项实践性很强的专业技术,光有理论知识是无法真正深刻理解和掌握的。而今,市场上一些有关嵌入式系统的书籍,多是理论的堆积和外文资料的翻译,这对于希望获得快速而有效的知识技能的嵌入式系统技术人员来说,无法通过对这些书籍的阅读,获得更有效的资讯,从而难以尽快地进入角色、建立起设计思路。本书则试图打破这种状况,为读者提供直观、易懂且深入浅出的形式和内容。书中采用了列举实例的方式,深入浅出地揭示嵌入式系统技术在一些具体项目中的应用。这些实例都是可供实践和快速掌握的。每个实例相当于一个小型项目。"实例内容和目标"类似于实际应用开发中的"功能需求"或"技术指标",它首先为实例明确了一个具体的实现目标;之后,依据应用开发中的步骤,面对设计要求进行"实例分析":采用什么样的设计思路,主要的知识有哪些,要进行哪几项工作等等;最后在"实现方法和步骤"中,则进行具体的工作:电路设计和编程。本书是由在嵌入式系统领域中工作多年的工程师依据自身经验编写而成,因此,在跟随本书实践的过程中,读者将感到有如亲身参与了实际的设计与开发。书中不仅详细说...

图书目录

实例1嵌入式系统开发实例——模拟PDA的实现

1.1 概述1

1.2 实例内容和目标1

1.3 实例分析2

1.3.1 系统构成的元素2

1.3.2 硬件部分3

1.3.3 软件部分5

1.4 实现方法与步骤10

1.4.1 连接硬件电路11

1.4.2 程序目录和内容说明11

1.4.3 下载并运行程序12

实例2ARMSys平台开发环境及工具详解

2.1 概述13

2.2 实例内容和目标13

2.3 实例分析14

2.3.1 ARMSys的组成结构14

2.3.2 ARMSys的启动程序和地址空间分配16

2.3.3 ARMSys提供的开发环境18

2.3.4 应用开发步骤19

2.3.5 SDT2.5的介绍19

2.4 实现方法与步骤20

2.4.1 编写或修改源程序代码21

2.4.2 使用APM对工程进行编译22

2.4.3 使用ADW进行仿真调试30

2.4.4 在Windows 2000/ XP下使用JTAG.exe37

2.4.5USB口下载工具39

2.4.6代码固化40

实例3Flash ROM器件应用

3.1 概述42

3.2 实例内容和目标42

3.3 实例分析43

3.3.1 读操作44

3.3.2 字写入操作45

3.3.3 扇区/ 块/ 整片擦除操作47

3.3.4 内部操作状态检测49

3.4 实现方法与步骤49

3.4.1 接口电路49

3.4.2 硬件上的设置50

3.4.3 寄存器的说明51

3.4.4 SST39VF160的擦除53

3.4.5 SST39VF160的写入53

3.5 运行结果54

实例4SDRAM器件应用

4.1 概述55

4.2 实例内容和目标55

4.3 实例分析55

4.3.1 SRAM器件的结构特点55

4.3.2 DRAM器件的结构特点56

4.3.3 SDRAM器件的构成原理和应用特点57

4.3.4 SDRAM器件IS42S16400简介57

4.4 实现方法与步骤59

4.4.1 地址分配59

4.4.2 电路连接61

4.4.3 寄存器设置61

4.4.4 对IS42S16400的编程65

4.5 运行结果65

实例5Nandflash存储器器件应用

5.1 概述66

5.2 实例内容和目标66

5.3 实例分析66

5.3.1 Nandflash存储器的应用特点66

5.3.2 Nandflash存储器器件K9F5608U0B简介67

5.4 实现方法与步骤78

5.4.1 K9F5608U0B与S3C44B0X的接口设计78

5.4.2 写入指令、地址和读/ 写数据的条件79

5.4.3 读器件的ID码子程序80

5.4.4 块擦除子程序80

5.4.5 页写入子程序81

5.4.6 页读出子程序82

5.5 运行结果83

实例6通用I/O口的应用——矩阵式键盘

6.1 概述84

6.2 实例内容和目标84

6.3 实例分析84

6.3.1 S3C44B0X的多功能I/ O口84

6.3.2 端口选择88

6.3.3 端口控制寄存器88

6.3.4 键盘的循环扫描检测法90

6.4 实现方法与步骤90

6.4.1 寄存器设置91

6.4.2 编写键盘扫描程序91

6.5 运行结果93

实例7外部中断处理程序设计

7.1 概述94

7.2 实例内容和目标94

7.3 实例分析94

7.3.1 概述94

7.3.2 中断控制器94

7.3.3 中断源95

7.3.4 中断优先级产生模块96

7.3.5 中断优先级97

7.3.6 中断矢量地址表97

7.3.7 控制中断的寄存器98

7.4 实现方法与步骤106

7.4.1 I/ O口设置106

7.4.2 外部中断触发模式设置107

7.4.3 中断寄存器设置107

7.4.4 主程序编写107

7.4.5 中断处理程序编写109

7.5 运行结果109

实例8UART异步串行接口应用

8.1 概述110

8.2 实例内容和目标110

8.3 实例分析110

8.3.1 UART操作111

8.3.2 UART寄存器114

8.4 实现方法与步骤120

8.4.1 电路接口和I/ O口设置120

8.4.2 UART初始化121

8.4.3 myUart_Send函数主体121

8.4.4 字符发送程序myUart_SendByte122

8.5 运行结果123

实例9定时器应用

9.1 概述124

9.2 实例内容和目标124

9.3 实例分析124

9.3.1 PWM定时器操作124

9.3.2 PWM定时器寄存器130

9.4 实现方法与步骤133

9.4.1 I/ O口设置133

9.4.2 定时器时钟源频率设置133

9.4.3 设置输出波形频率133

9.4.4 设置占空比133

9.4.5 设置定时器控制寄存器并启动定时器133

9.4.6 定时器中断主程序134

9.4.7 定时中断服务程序134

9.5 运行结果134

实例10实时日历时钟(RTC)应用

10.1 概述136

10.2 实例内容和目标136

10.3 实例分析136

10.3.1 实时时钟特性136

10.3.2 实时时钟寄存器137

10.4 实现方法与步骤139

10.4.1 实时时钟初始化139

10.4.2 显示当前时间140

10.5 运行结果140

实例11LCD接口应用

11.1 概述142

11.2 实例内容和目标142

11.3 实例分析142

11.3.1 STN型彩色LCD模块介绍142

11.3.2 S3C44B0X的内部LCD控制器介绍144

11.4 实现方法与步骤150

11.4.1 I/ O口LCD功能设置150

11.4.2 LCD初始化程序151

11.4.3 图像数据153

11.4.4 全屏显示参考程序153

11.4.5 正方形的绘制154

11.5 运行结果154

实例12I2C接口应用

12.1 概述156

12.2 实例内容和目标156

12.3 实例分析156

12.3.1 I2C总线的基本知识156

12.3.2 I2C总线通用传输格式156

12.3.3 I2C串行EEPROM的相关知识158

12.3.4 S3C44B0X的I2C接口160

12.4 实现方法与步骤165

12.4.1 I/ O端口I2C功能设置165

12.4.2 I2C中断使能165

12.4.3 初始化I2C接口165

12.4.4 向24LC04B中写入数据子程序165

124.5从24LC04B中读出数据子程序166

124.6I2C中断处理子程序166

125运行结果168

实例13A/D转换器应用

13.1 概述169

13.2 实例内容和目标169

13.3 实例分析169

13.3.1 关于A/ D转换的基础知识169

13.3.2 S3C44B0X具备的ADC169

13.4 实现方法与步骤172

13.4.1 模拟信号的产生172

13.4.2 ADC控制寄存器的初始化172

13.4.3 读取A/ D转换数值子程序173

13.5 运行结果173

实例14触摸屏应用

14.1 概述174

14.2 实例内容和目标174

14.3 实例分析174

14.3.1 触摸屏的基本原理174

14.3.2 触摸屏的控制实现175

14.3.3 ADS7843引脚配置175

14.3.4 ADS7843的典型电路176

14.3.5 ADS7843的控制字177

14.3.6 ADS7843的工作过程178

14.4 实现方法与步骤179

14.4.1 接口电路的连接和I/ O口设置179

14.4.2 读取触摸点坐标程序设计179

14.5 运行结果180

实例15USB设备接口应用

15.1 概述182

15.2 实例内容和目标182

15.3 实例分析183

15.3.1 USB接口工作原理概述183

15.3.2 USB设备开发过程184

15.3.3 USB接口控制器USBN9603184

15.3.4 USB接口电路185

15.3.5 固件程序的开发185

15.4 实现方法与步骤187

15.4.1 安装USB驱动程序及进行文件下载187

15.4.2 修改固件程序187

15.5 运行结果189

实例16以太网控制器接口应用

16.1 概述191

16.2 实例内容和目标191

16.3 实例分析191

16.3.1 以太网基础知识191

16.3.2 关于以太网控制器RTL8019194

16.4 实现方法与步骤199

16.4.1 连接以太网模块与处理器的接口199

16.4.2 寄存器地址映射199

16.4.3 热复位函数200

16.4.4 初始化函数201

16.4.5 接收/ 发送函数202

16.5 运行结果205

实例17μC/OSⅡ的移植与应用

17.1 概述206

17.2 实例内容和目标207

17.3 实例分析207

17.3.1 μC/OSⅡ操作系统的移植条件207

17.3.2 移植工作的内容208

17.4 实现方法与步骤214

17.4.1 实验准备214

17.4.2 多任务应用程序的编写214

17.5 运行结果217

实例18μC/OSⅡ的多任务管理和任务间通讯

18.1 概述218

18.2 实例内容和目标218

18.3 实例分析219

18.3.1 任务管理函数219

18.3.2 任务间的通讯与同步224

18.4 实现方法与步骤230

18.4.1 连接电路230

18.4.2 主任务处理程序230

18.4.3 键盘检测任务处理程序232

18.4.4 电压检测任务处理程序233

18.5 运行结果233

实例19μC/OSⅡ中断处理程序设计

19.1 概述235

19.2 实例内容和目标236

19.3 实例分析236

19.3.1 中断服务子程序236

19.3.2 中断延迟237

19.3.3 中断响应237

19.3.4 中断恢复时间237

19.3.5 中断延迟、响应和恢复238

19.4 实现方法与步骤238

19.4.1 中断处理汇编程序的编写238

19.4.2 中断处理C程序的编写240

19.4.3 中断处理任务程序的编写240

19.5 运行结果241

实例20GUI系统的移植与应用

20.1 概述242

20.2 实例内容和目标242

20.3 实例分析243

20.3.1 emWin的介绍243

20.3.2 emWin对目标系统的要求244

20.3.3 屏幕和坐标244

20.3.4 应用emWin的步骤245

20.3.5 emWin的移植245

20.4 实现方法与步骤247

20.4.1 实例准备247

20.4.2 定义宏247

20.4.3 编写Hello World程序247

20.5 运行结果248

实例21图形文字显示的基本应用

21.1 概述249

21.2 实例内容和目标249

21.3 实例分析249

21.3.1 文字显示249

21.3.2 图形显示253

21.4 实现方法与步骤256

21.4.1 实例准备256

21.4.2 绘制表盘的示例代码256

21.5 运行结果257

实例22汉字显示的应用

22.1 概述258

22.2 实例内容和目标258

22.3 实例分析258

22.3.1 emWin字体库的应用258

22.3.2 字体库API259

22.3.3 emWin已经提供的字符集260

22.3.4 字体转换器261

22.3.5 字体库文件结构262

22.4 实现方法与步骤264

22.4.1 得到符合emWin要求的汉字库264

22.4.2 实例准备268

22.4.3 显示汉字的示例代码268

22.5 运行结果268

实例23GUI视窗和控件的应用

23.1 概述269

23.2 实例内容和目标269

23.3 实例分析269

23.3.1 视窗管理器(WM)269

23.3.2 视窗控件(Widgets)275

23.3.3 对话框(Dialog)287

23.4 实现方法与步骤294

23.4.1 实例准备294

23.4.2 编写主程序294

23.5 运行结果294

实例24GUI中的动画显示应用

24.1 概述296

24.2 实例内容和目标296

24.3 实例分析296

24.3.1 使用存储器设备驱动的说明296

24.3.2 存储器设备驱动的绘图步骤297

24.3.3 起用存储器设备驱动297

24.3.4 与存储器设备驱动相关的API函数298

24.4 实现方法与步骤304

24.4.1 回调函数的参数305

24.4.2 回调函数的编写305

24.4.3 主程序编写306

24.5 运行结果307

实例25基于Nandflash的文件系统

25.1 概述308

25.2 实例内容和目标308

25.3 实例分析309

25.3.1 FAT16文件系统的结构309

25.3.2 关于Nandflash 314

25.4 实现方法与步骤315

25.4.1 FAT16的移植315

25.4.2 格式化文件系统316

25.4.3 文件系统初始化318

25.4.4 文件系统验证程序319

25.5 运行结果320

实例26ARP网络寻址

26.1 概述321

26.2 实例内容和目标321

26.3 实例分析323

26.3.1 IP地址323

26.3.2 IP地址解析323

26.3.3 ARP数据包324

26.3.4 ARP扫描器325

26.4 实现方法与步骤326

26.4.1 主程序处理326

26.4.2 ARP数据包的检测和创建329

26.4.3 连接电路并调试运行330

26.5 运行结果330

实例27IP与ICMP应用

27.1 概述332

27.2 实例内容和目标332

27.3 实例分析334

27.3.1 IP数据报334

27.3.2 ICMP消息336

27.3.3 PING工具的工作步骤337

27.4 实现方法与步骤338

27.4.1 主程序处理338

27.4.2 报文发送340

27.4.3 报文接收341

27.4.4 ICMP消息函数343

27.4.5 IP数据报函数344

27.4.6 连接电路并调试运行346

27.5 运行结果346

实例28UDP数据报传输应用

28.1 概述348

28.2 实例内容和目标348

28.3 实例分析349

28.3.1 UDP数据报349

28.3.2 端口和套接字350

28.3.3 UDP数据包格式351

28.4 实现方法与步骤351

28.4.1 主程序处理352

28.4.2 接收处理353

28.4.3 创建和发送UDP数据报356

28.4.4 连接电路并调试运行357

28.5 运行结果357

附录AS3C44B0X概述

A.1简介359

A.2特性360

A.3内部结构图362

A.4芯片引脚定义363

附录BARM处理器工作模式

B.1处理器工作状态368

B.2状态切换368

B21进入THUMB状态368

B22进入ARM状态368

B.3存储空间格式368

B.3.1大端格式368

B.3.2小端格式369

B.4指令长度369

B.4.1数据类型369

B.4.2操作模式369

B.5寄存器369

B.5.1ARM状态寄存器集369

B.5.2THUMB状态寄存器集370

B.5.3ARM状态寄存器与THUMB状态寄存器之间

的关系371

B.5.4在THUMB状态下操作寄存器高位372

B.6程序状态寄存器PSR372

B.6.1条件码标志372

B.6.2控制位373

B.6.3保留位374

B.7异常374

B.7.1进入异常处理时的行为374

B.7.2离开异常处理时的行为375

B.7.3异常进入/ 退出概要375

B.7.4FIQ(快速中断请求)375

B.7.5IRQ(中断请求)376

B.7.6Abort(异常中断)376

B.7.7SWI(软件中断)376

B.7.8未定义指令377

B.7.9异常中断向量377

B.7.10异常中断优先级377

B.7.11复位378

附录C44binit.s初始化程序研究

C.1定义入口地址379

C.2建立异常中断处理向量379

C.2.1向量中断模式(只针对IRQ)380

C.2.2非向量中断模式382

C.3初始化外部存储器385

C.4初始化堆栈指针386

C.5初始化I/ O设备387

C.6初始化中断系统所需要的RAM变量

…387

C.7初始化C程序所要求的存储空间388

C.7.1关于映像文件及区域388

C.7.2与区域相关的符号388

C.7.3加载时的映像文件389

C.7.4执行时的映像文件389

C.7.5初始化范例程序390

C.8进入C语言程序的运行391

参考文献392