第1章 ZLG/FS原理与应用 1
1.1 概述 1
1.1.1 ZLG/FS简介 1
1.1.2 ZLG/FS的特点 1
目录 1
1.1.3 已实现的特性 2
1.1.4 暂时未实现的特性 2
1.2 使用 2
1.2.1 使用示例 2
1.2.2 Config.h和fat.h 4
1.2.3 与编译器无关的数据类型 4
1.2.4 初始化ZLG/FS 5
1.2.5 目录相关操作 5
1.2.6 文件相关操作 5
1.2.8 在多任务环境下使用ZLG/FS 6
1.2.7 关闭ZLG/FS 6
1.3 ZLG/FS的结构视图 10
1.3.1 概述 10
1.3.2 应用程序 11
1.3.3 文件管理与目录管理 11
1.3.4 文件分配表管理与文件目录表管理 11
1.3.5 逻辑盘管理模块 11
1.3.6 高速缓存管理模块 11
1.3.7 底层驱动程序 11
1.3.8 实用程序 12
1.3.9 源代码文件说明 12
1.4 驱动程序设计指南 12
1.4.1 一个驱动程序的例子 12
1.4.3 逻辑盘初始化 14
1.4.2 参数 14
1.4.4 卸载逻辑盘 15
1.4.5 读/写扇区 15
1.5 FAT文件系统基础知识 16
1.5.1 简介 16
1.5.2 本节的约定 16
1.5.3 概述(适用于各类型的FAT文件系统) 16
1.5.4 引导扇区和BPB 17
1.5.5 FAT数据结构 23
1.5.6 FAT类型的确定 24
1.5.7 FAT卷的初始化 30
1.5.8 FAT32 FSInfo扇区结构和备份引导扇区 33
1.5.9 FAT的目录结构(FDT表) 34
1.5.10 FAT的长目录项 38
1.5.11 命名限制和字符集 42
1.5.12 短文件名和长文件名的名字映射 43
1.5.13 命名惯例和长文件名 44
1.5.14 长目录项对旧版FAT的影响 45
1.5.15 验证目录的内容 46
1.5.16 与FAT目录项相关的其他注意事项 47
1.6 逻辑盘信息管理 48
1.6.1 用户接口函数 48
1.6.2 内部使用函数 48
1.6.3 逻辑盘和卷的区别 48
1.6.4 逻辑盘信息登录项 48
1.6.5 初始化 49
1.6.6 加载底层驱动程序 50
1.6.7 卸载底层驱动程序 54
1.6.9 获取空闲登录项 55
1.6.8 获取逻辑盘信息 55
1.7 Cache管理 56
1.7.1 用户接口函数 56
1.7.2 内部使用函数 56
1.7.3 原理 57
1.7.4 初始化 59
1.7.5 通过Cache读/写逻辑扇区 59
1.7.6 把Cache数据写回逻辑盘 66
1.8 文件分配表管理 68
1.8.1 FAT简介 68
1.8.2 接口函数 69
1.8.3 获取簇的下一个簇号 69
1.8.4 设置下一个簇号 74
1.8.5 为簇链增加一个簇 78
1.8.6 删除一个簇链 82
1.9 文件目录表管理 83
1.9.1 FDT简介 83
1.9.2 用户接口函数 83
1.9.3 内部接口函数 83
1.9.4 数据结构 84
1.9.5 读取FDT信息 84
1.9.6 保存FDT信息 86
1.9.7 获取指定目录指定FDT信息 88
1.9.8 设置指定目录指定FDT信息 91
1.9.9 在指定目录查找指定FDT 94
1.9.10 指定目录查增加FDT 96
1.9.11 在指定目录删除指定FDT 100
1.9.12 改变指定目录指定FDT属性 102
1.9.13 察看指定目录是否为空 103
1.9.14 在指定目录查看指定FDT是否存在 105
1.10 目录操作 107
1.10.1 用户接口函数 107
1.10.2 内部接口函数 107
1.10.3 获取指定目录的逻辑盘号 108
1.10.4 改变当前逻辑盘 108
1.10.5 建立目录 109
1.10.6 删除目录 112
1.10.7 改变当前目录 114
1.10.8 用户文件/目录名转换为系统名 115
1.10.9 获取指定文件/目录所在的目录的开始簇号及系统内名称 117
1.10.10 获取指定目录开始簇号 120
1.11 文件操作 124
1.11.1 用户接口函数 124
1.11.2 数据结构 125
1.11.3 初始化 126
1.11.4 删除文件 126
1.11.5 打开文件 128
1.11.6 查看指定的文件是否处于打开状态 136
1.11.7 关闭文件 139
1.11.8 从文件中读数据 141
1.11.9 把数据写入文件 145
1.11.10 判断文件是否读/写到文件尾 148
1.11.11 移动文件读/写位置 149
1.12 实用程序 152
第2章 USB驱动程序开发 160
2.1 USB1.1协议简介 160
2.1.1 USB系统构成 160
2.1.3 USB的分组标识 162
2.1.2 USB设备的枚举过程 162
2.1.4 USB标准设备请求 163
2.1.5 USB设备描述符 167
2.2 PDIUSBD12器件简介 173
2.3 硬件电路设计 176
2.4 软件设计总体思想 177
2.5 USB设备控制层 178
2.6 USB接口控制驱动 184
2.7 应用层 197
2.7.1 初始化PDIUSBD12 199
2.7.2 控制传输处理 201
2.7.3 端点1和端点2数据接收与发送设计思想 202
2.7.4 从端点接收数据 207
2.7.5 往端点发送数据 214
2.8 协议层 222
2.9 USB 动程序软件包的使用方法 238
第3章 CF卡及IDE接口实现与编程 242
3.1 CF简介 242
3.1.1 CF背景 242
3.1.2 CFA目标与宗旨 242
3.1.3 CF存储卡总览 243
3.1.4 CF存储特点与应用 243
3.2 CF存储卡物理层结构 244
3.2.1 CF存储卡 244
3.2.2 CF+卡 244
3.3 CF存储卡电气接口 244
3.3.1 物理描述 244
3.3.2 电气描述 245
3.3.4 电气规范 247
3.3.3 电气接口 247
3.3.5 接口/总线时序 252
3.3.6 True IDE模式I/O传输功能 255
3.4 CF+/CF卡True IDE模式软件接口 256
3.4.1 数据寄存器 257
3.4.2 错误寄存器 257
3.4.3 特征寄存器 258
3.4.4 扇区计数寄存器 259
3.4.5 扇区号寄存器 259
3.4.6 柱面低寄存器 260
3.4.7 柱面高寄存器 260
3.4.8 设备/磁头寄存器 261
3.4.9 状态和辅助状态寄存器 262
3.4.10 设备控制寄存器 263
3.4.13 ATA设备插入及移出检测 264
3.4.11 命令寄存器 264
3.4.12 ATA设备硬件复位 264
3.4.14 主/从设备的配置与操作 265
3.5 ATA指令描述 267
3.5.1 CF-ATA指令集 268
3.5.2 设置特征——EFH 270
3.5.3 设备识别——ECH 275
3.5.4 读扇区——20H或21H 289
3.5.5 写扇区——30H或31H 294
3.5.6 立即空闲——95H或E1H 298
3.5.7 立即待机——94H或E0H 302
3.6 ATA指令流程规范 306
3.6.1 选择设备 306
3.6.2 PIO data in设备有数据输出 309
3.6.3 PIO data out设备有数据输入 313
3.6.4 Non-data设备没有数据传输 316
3.7 ZLG/CF 驱动中间件 317
3.7.1 ZLG/CF驱动的结构视图 317
3.7.2 中间件原理 318
第4章 ZLG/IP的原理及应用 331
4.1 概述 331
4.1.1 ZLG/IP简介 331
4.1.2 ZLG/IP特点 331
4.2 ZLG/IP支持的硬件举例以太网接口 332
4.2.1 EasyARM2200以太网接口电路图 332
4.2.2 以太网控制芯片RTL8019AS 332
4.2.3 RTL8019AS引脚分类 332
4.2.4 RTL8019AS寄存器的说明 337
4.3 ZLG/IP的应用指南 354
4.3.1 SOCKET API的使用指南 354
4.3.2 ZLG/IP设置指南 359
4.3.3 ZLG/IP的驱动编写规则 361
4.4 TCP/IP协议栈的分析 365
4.4.1 TCP/IP简介 365
4.4.2 TCP/IP的分层 365
4.4.3 TCP/IP协议栈中最底层的链路层 370
4.4.4 网络层协议 380
4.4.5 传输层协议 394
4.5 嵌入式TCP/IP协议栈的实现 432
4.5.1 ZLG/IP与操作系统的联系 432
4.5.2 ZLG/IP的设置文件 436
4.5.3 以太网驱动程序的编写 437
4.5.4 以太网层程序的编写 450
4.5.5 ARP协议处理程序的编写 458
4.5.6 IP协议处理程序的编写 465
4.5.7 ICMP协议处理程序的编写 473
4.5.8 UDP协议处理程序的编写 477
4.5.9 TCP协议处理程序的编写 483
4.5.10 SOCKET API程序的编写 498
第5章 GUI图形用户界面基础 527
5.1 概述 527
5.2 基本画图原理 527
5.3 基本画图函数 529
5.3.1 点 538
5.3.2 线 540
5.3.3 圆形 553
5.3.4 圆弧及扇形 557
5.3.5 椭圆形 576
5.3.6 矩形 582
5.3.7 正方形 582
5.3.8 填充 583
5.4 简易窗口管理 601
5.5 字符及图形 605
5.6 菜单的操作 613
5.7 彩色图形处理 623
5.8 ZLG/GUI应用实例 625
5.8.1 驱动程序的编写 626
5.8.2 基本作图 632
5.8.3 画窗口 635
5.8.4 图形、汉字显示 638
5.8.5 菜单操作 640