ARM嵌入式系统软件开发实例(二) - 中国高校教材图书网
|
书名: |
ARM嵌入式系统软件开发实例(二)
|
ISBN: | 7-81077-879-X |
条码: | |
作者: |
周立功 等
相关图书
|
装订: | 平装 |
印次: | 1-1 |
开本: | 16开 |
定价: |
¥53.00
折扣价:¥50.35
折扣:0.95
节省了2.65元
|
字数: |
840千字
|
出版社: |
北京航空航天大学出版社 |
页数: |
|
发行编号: | |
每包册数: |
|
出版日期: |
2006-08-01 |
|
内容简介: |
本书继承《ARM嵌入式系统软件开发实例(一)》的风格,详细介绍当前几大热点嵌入式系统软件模块的原理与实现。全书分为7章,每章介绍一种模块。第1章基于ISP1160A1 USB主机控制器,介绍ZLG/Host Stack主机协议栈的原理;第2章基于ZLG/Host Stack主机协议栈,开发USB大容量类设备主机端驱动应用实例;第3章详细分析SD/MMC大容量卡读/写软件包ZLG/SD的设计思想;第4章剖析Modbus RTU/ASCII协议,并详细介绍ZLG/Modbus协议栈的原理及应用;第5章介绍嵌入式系统的引导程序核心模块ZLG/BOOT软件包的设计思想及应用实例;第6章介绍支持多芯片的K9F2808驱动程序原理及应用;第7章介绍具有写平衡算法的NAND Flash驱动程序ZLG/FFS软件包原理及应用。 本书可作为《ARM嵌入式系统基础教程》的配套参考用书,也可作为嵌入式系统开发工程师的参考资料。
|
作者简介: |
|
章节目录: |
第1章 ZLG/Host Stack主机栈设计思想
1.1 USB主机概述1
1.1.1 什么是USB1
1.1.2 USB系统构成2
1.1.3 USB主机是怎样工作的4
1.1.4 USB分组标识5
1.1.5 USB标准设备请求5
1.1.6 USB设备描述符8
1.1.7 USB设备枚举的数据传输过程11
1.2 ISP1160/ISP1161A1 USB主机控制器概述17
1.3 结构图及引脚描述18
1.3.1 ISP1160内部结构图18
1.3.2 引脚分配及描述20
1.4 功能描述24
1.5 微处理器总线接口25
1.5.1 可编程I/O(PIO)寻址模式25
1.5.2 DMA模式25
1.5.3 PIO模式下访问控制寄存器26
1.5.4 PIO模式下访问FIFO缓冲区RAM27
1.5.5 DMA模式下访问FIFO缓冲区RAM28
1.5.6 中断29
1.6 主机控制器(HC)31
1.6.1 HC的四种USB状态31
1.6.2 USB通路的产生32
1.6.3 PTD数据结构33
1.6.4 HC内部FIFO缓冲区RAM结构36
1.6.5 HC操作模式42
1.6.6 微处理器的装载44
1.6.7 下行口的内部下拉电阻44
1.6.8 过流检测及电源开关控制45
1.6.9 挂起与唤醒48
1.7 HC寄存器49
1.7.1 HcRevision寄存器51
1.7.2 HcControl寄存器51
1.7.3 HcCommandStatus寄存器53
1.7.4 HcInterruptStatus寄存器54
1.7.5 HcInterruptEnalbe寄存器56
1.7.6 HcInterruptDisalbe寄存器57
1.7.7 HcFmInterval寄存器58
1.7.8 HcFmRemaining寄存器59
1.7.9 HcFmNumber寄存器60
1.7.10 HcLSThreshold寄存器61
1.7.11 HcRhDescriptorA寄存器63
1.7.12 HcRhDescriptorB寄存器64
1.7.13 HcRhStatus寄存器66
1.7.14HcRhPortStatus\[1∶2\]寄存器67
1.7.15 HcHardwareConfiguration寄存器71
1.7.16 HcDMAConfiguration寄存器72
1.7.17 HcTransferCounter寄存器72
1.7.18 HcμPInterrupt寄存器73
1.7.19 HcμPInterruptEnable寄存器74
1.7.20 HcChipID寄存器75
1.7.21 HcScratch寄存器76
1.7.22 HcSoftwareReset寄存器77
1.7.23 HcITLBufferLength寄存器77
1.7.24 HcATLBufferLength寄存器78
1.7.25 HcBufferStatus寄存器79
1.7.26 HcReadBackITL0Length寄存器79
1.7.27 HcReadBackITL1Length寄存器80
1.7.28 HcITLBufferPort寄存器81
1.7.29 HcATLBufferPort寄存器82
1.8 HCD主机驱动设计概述83
1.8.1 ISP1160软件模型83
1.8.2 ISP1160硬件模型84
1.9 USB主机端软件结构84
1.10 操作ISP1160的主机控制器86
1.10.1 软件访问硬件组件86
1.10.2 HC控制和状态寄存器86
1.10.3 典型硬件初始化次序92
1.11 主机控制驱动程序操作流程103
1.11.1 访问ATL缓冲区103
1.11.2 访问ITL缓冲区106
1.11.3 设置PTD以供传输106
1.12 数据结构总览108
1.12.1 设备描述信息结构体109
1.12.2 端点描述信息结构体110
1.12.3 传输描述符结构体111
1.13 主机控制器驱动程序115
1.13.1 前台操作115
1.13.2 后台操作124
1.13.3 中断服务程序140
1.14 USB驱动程序144
1.14.1 设备枚举144
1.14.2 设备移除157
1.14.3 数据传输160
1.14.4 类设备管理166
1.15 USB主机任务173
1.16 用户使用API函数181
1.16.1 USB Host Stack初始化181
1.16.2 查找函数182
1.16.3 数据传输函数186
1.16.4 扩展函数192
第2章 大容量设备类驱动设计实例
2.1 大容量存储类概述195
2.2 驱动模型概述197
2.2.1 使用数据结构197
2.2.2 大容量设备初始化199
2.2.3 删除大容量设备208
2.2.4 大容量类命令块处理210
2.2.5 命令API函数211
2.3 BulkOnly传输220
2.3.1 单批量BulkOnly传输协议220
2.3.2 标准描述符222
2.3.3 命令/数据/状态协议226
2.3.4 主机/设备数据传输229
2.4 单批量传输的软件实现231
2.4.1 软件操作流程231
2.4.2 大容量协议类请求232
2.4.3 单批量命令块处理234
2.4.4 复位恢复240
2.5 CBIOnly传输241
2.5.1 CBI协议概述241
2.5.2 CBI功能特性242
2.5.3 标准请求247
2.5.4 设备类请求252
2.6 CBI传输的软件实现254
2.7 UFI指令介绍与软件实现256
2.7.1 UFI子类命令257
2.7.2 UFI子类命令块的结构258
2.7.3 查询命令258
2.7.4 读命令261
2.7.5 读容量命令263
2.7.6 写命令265
2.7.7 请求判别命令267
2.7.8 判别数据269
2.8 大容量驱动用户手册272
2.8.1 初始化配置272
2.8.2 API函数272
第3章 ZLG/SD软件包原理分析
3.1 SD/MMC卡的外部物理接口275
3.1.1 SD模式276
3.1.2 SPI模式277
3.1.3 卡信号时序279
3.2 SD/MMC卡的内部结构279
3.2.1 SD/MMC卡存储器阵列的划分280
3.2.2 SD/MMC卡相关寄存器281
3.3 访问SD/MMC卡的硬件电路设计294
3.3.1 SPI总线296
3.3.2 卡供电控制296
3.3.3 卡检测电路296
3.4 ZLG/SD软件包总体设计思想296
3.4.1 设计目标297
3.4.2 软件包整体设计思想297
3.5 SD/MMC卡读/写软件包配置头文件298
3.6 SD/MMC读/写软件包硬件抽象层的实现300
3.6.1 SD/MMC卡电源控制300
3.6.2 初始化访问卡的硬件条件301
3.6.3 设置SPI接口的时钟频率303
3.6.4 用SPI接口发送1字节303
3.6.5 从SPI接口接收1字节304
3.6.6 CS信号304
3.6.7 卡完全插入卡座与卡写保护检测305
3.7 SPI总线协议及SD/MMC卡命令层的实现305
3.7.1 SPI总线协议305
3.7.2 SPI总线协议命令集309
3.7.3 SPI总线命令与应答的实现313
3.8 SD/MMC卡读/写软件包应用层的实现318
3.8.1 卡初始化318
3.8.2 获取SD/MMC卡的相关信息322
3.8.3 SD/MMC卡的读操作328
3.8.4 SD/MMC卡的写操作335
3.8.5 等待忙函数343
3.8.6 SD/MMC卡的其他操作344
3.9 SD/MMC卡读/写软件包的结构说明347
3.9.1 SD/MMC卡读/写软件包的硬件配置347
3.9.2 SD/MMC卡读/写软件包提供的API函数347
第4章 ZLG/Modbus协议栈设计思想
4.1 Modbus协议概述351
4.1.1 协议描述352
4.1.2 数据编码354
4.1.3 Modbus数据模式354
4.1.4 Modbus寻址模式355
4.1.5 Modbus事务处理的定义356
4.2 数据链路层357
4.2.1 Modbus主/从原则357
4.2.2 Modbus编址规则358
4.2.3 Modbus帧描述358
4.2.4 主站/从站状态图358
4.2.5 主/从通信时序图360
4.3 ZLG/Modbus协议栈设计思想361
4.3.1 Modbus数据链路层361
4.3.2 主站协议栈363
4.3.3 从站协议栈373
4.4 两种串行传输模式377
4.4.1 RTU传输模式378
4.4.2 RTU模式数据链路软件实现383
4.4.3 ASCII传输模式387
4.4.4 ASCII模式数据链路软件实现391
4.5 指令系统395
4.5.1 功能码分类395
4.5.2 Modbus协议栈功能代码处理397
4.5.3 0x01读取线圈状态399
4.5.4 0x02读取输入状态404
4.5.5 0x03读保持寄存器409
4.5.6 0x04读取输入寄存器413
4.5.7 0x05写单个线圈417
4.5.8 0x06写单个寄存器421
4.5.9 0x15写多个线圈425
4.5.10 0x16写多寄存器430
4.5.11 0x16屏蔽写寄存器434
4.5.12 0x17读/写多寄存器438
4.5.13 其他功能代码443
第5章 ZLG/BOOT原理及应用
5.1 概述444
5.1.1 什么是ZLG/BOOT444
5.1.2 ZLG/BOOT的特点444
5.2 启动配置文件的编写445
5.3 命令445
5.3.1 格式及注意点445
5.3.2 load命令446
5.3.3 set命令446
5.3.4 sfr命令448
5.3.5 run命令449
5.4 ZLG/BOOT调用的外部函数与配置选项449
5.5 使用范例——BootLoader for SmartARM2200的使用450
5.5.1 简介450
5.5.2 特点450
5.5.3 目录结构451
5.5.4 默认IP设置451
5.5.5 修改用户IP设置451
5.5.6 使用此BootLoader引导μClinux452
5.6 使用范例——BootLoader for SmartARM2200的实现458
5.6.1 main()函数458
5.6.2 用户主任务459
5.6.3 人机界面461
5.7 ZLG/BOOT原理466
5.7.1 函数列表466
5.7.2 总流程图466
5.7.3 数据结构468
5.7.4 Boot()472
5.7.5 Readline()475
5.7.6 Cmdload()476
5.7.7 CmdSfr(),CmdSfrh()和CmdSfrb()478
5.7.8 CmdRun()479
5.7.9 CmdSet()480
5.7.10 Start_Boot481
第6章 K9F2808U0C驱动程序
6.1 K9F2808芯片介绍483
6.1.1 引脚描述483
6.1.2 功能框图和阵列结构图485
6.1.3 操作486
6.1.4 K9F2808U0C指针操作487
6.1.5 页面读操作488
6.1.6 页面编程489
6.1.7 块擦除490
6.1.8 读状态490
6.1.9 读ID491
6.1.10 复位492
6.1.11 NAND Flash技术注意事项492
6.2 硬件连接494
6.3 驱动程序的编写495
6.3.1 编写规划495
6.3.2 数据结构495
6.3.3 函数列表496
6.3.4 使用范例499
6.3.5 K9fxx08ReadID()500
6.3.6 K9fxx08ReadStatus()501
6.3.7 K9fxx08SectorRead()502
6.3.8 K9fxx08SectCRead()504
6.3.9 K9fxx08SectorProgram()505
6.3.10 K9fxx08SectorCProgram()507
6.3.11 K9fxx08BlockErase()509
6.3.12 K9fxx08SecCopy()510
6.3.13 K9fxx08BlockCheck()510
6.3.14 K9fxx08SectorCheck()511
6.3.15 K9fxx08SectCCheck()513
第7章 ZLG/FFS原理与应用
7.1 ZLG/FS概述515
7.1.1 ZLG/FS的特点515
7.1.2 已实现的特性516
7.1.3 暂时未实现的特性516
7.2 ZLG/FFS概述516
7.3 ZLG/FS v1.10驱动程序编写规范517
7.3.1 驱动程序模板517
7.3.2 关于config.h521
7.3.3 参数521
7.3.4 逻辑盘初始化523
7.3.5 卸载逻辑盘523
7.3.6 读扇区523
7.3.7 写扇区524
7.3.8 获取驱动程序接口版本号524
7.3.9 检测命令是否存在524
7.3.10 低级格式化524
7.3.11 释放扇区524
7.3.12 获得设备总扇区数525
7.3.13 获得每扇区字节数525
7.3.14 查看介质是否改变525
7.3.15 获取每块扇区数525
7.3.16 读数据块525
7.3.17 写数据块526
7.4Z LG/FFS的外部接口526
7.4.1 保存ZLG/FFS硬件信息的结构体变量526
7.4.2 ZLG/FFS v1.00驱动程序编程规范527
7.4.3 硬件驱动之K9F2808U0C530
7.4.4 在ZLG/FS v1.10中使用ZLG/FFS531
7.5 ZLG/FFS物理盘存储结构532
7.5.1 物理盘数据结构图532
7.5.2 系统标志域数据结构533
7.5.3 物理盘坏块表534
7.5.4 物理扇区备用数据存储区数据结构535
7.6 ZLG/FFS原理与源码分析536
7.6.1 坏块管理536
7.6.2 把逻辑扇区映射到物理扇区537
7.6.3 写平衡的实现538
7.6.4 擦除物理块541
7.6.5 ZLG/FFS主函数544
7.6.6 DISK_INIT请求547
7.6.7 卸载逻辑盘555
7.6.8 读扇区555
7.6.9 写扇区557
7.6.10 低级格式化571
7.6.11 释放扇区577
7.6.12 获得设备总扇区数580
7.6.13 其他请求580
参考文献582
|
精彩片段: |
|
书 评: |
|
其 它: |
|
|
|