图书介绍
ARM嵌入式Linux系统开发技术详解 珍藏版PDF|Epub|txt|kindle电子书版本网盘下载
![ARM嵌入式Linux系统开发技术详解 珍藏版](https://www.shukui.net/cover/40/30124430.jpg)
- 杨水清,张剑,施云飞等编著 著
- 出版社: 北京:电子工业出版社
- ISBN:9787121074691
- 出版时间:2008
- 标注页数:620页
- 文件大小:156MB
- 文件页数:639页
- 主题词:微处理器,ARM-系统设计;Linux操作系统-系统设计
PDF下载
下载说明
ARM嵌入式Linux系统开发技术详解 珍藏版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 嵌入式系统概述1
1.1 嵌入式系统简介1
1.1.1 嵌入式系统1
1.1.2 嵌入式系统的特点2
1.1.3 嵌入式系统的发展趋势2
1.2 嵌入式系统中的处理器4
1.2.1 微处理器4
1.2.2 微控制器4
1.2.3 数字信号处理器5
1.2.4 嵌入式片上系统5
1.3 嵌入式系统中的软件系统5
1.3.1 嵌入式系统中的软件系统5
1.3.2 嵌入式系统软件开发的一般过程6
1.3.3 嵌入式应用程序的开发6
1.4 本章小结6
第2章 快速体验——目标板7
2.1 目标板结构7
2.2 ARM初体验8
2.2.1 测试ARM处理器8
2.2.2 安装ADS 1.29
2.2.3 安装Multi-ICE和配置AXD10
2.2.4 ADS的简单使用12
2.2.5 使用Telnet和ftp15
2.3 本章小结16
第3章 ARM的内部资源17
3.1 S3C2440微处理器17
3.1.1 主要结构17
3.1.2 片内资源18
3.1.3 体系结构18
3.2 S3C2440存储器映射18
3.2.1 bank0总线宽度18
3.2.2 nWAIT引脚的作用19
3.2.3 nXBREQ/nXBACK引脚操作19
3.3 S3C2440内部资源详解20
3.3.1 Cache高速缓存20
3.3.2 时钟和电源管理20
3.3.3 中断控制器22
3.3.4 脉冲带宽调制定时器(PWM)23
3.3.5 实时时钟(RTC)23
3.3.6 通用I/O端口24
3.3.7 LCD控制器24
3.3.8 UART控制器25
3.3.9 A/D转换和触摸屏接口25
3.3.10 看门狗定时器26
3.3.11 IIC总线接口26
3.3.12 AC97音频解码器接口27
3.3.13 USB设备控制器27
3.3.14 SD接口27
3.3.15 SPI接口28
3.3.16 相机接口28
3.3.17 工作电压29
3.4 本章小结29
第4章 熟悉ARM处理器30
4.1 为什么用ARM30
4.2 ARM公司简介30
4.3 ARM微处理器系列30
4.3.1 ARM7微处理器30
4.3.2 ARM9微处理器31
4.3.3 ARM10微处理器31
4.3.4 ARM11微处理器32
4.4 ARM微处理器的结构32
4.4.1 体系结构32
4.4.2 寄存器结构33
4.4.3 指令结构33
4.5 ARM微处理器的选择33
4.5.1 内核的选择33
4.5.2 工作频率的选择33
4.5.3 芯片内存储器的选择33
4.5.4 片内外围电路的选择34
4.6 ARM的指令集概述34
4.6.1 ARM微处理器的指令分类和格式34
4.6.2 指令的条件域35
4.7 ARM指令的寻址方式36
4.7.1 立即寻址36
4.7.2 寄存器寻址36
4.7.3 寄存器间接寻址36
4.7.4 基址变址寻址36
4.7.5 多寄存器寻址37
4.7.6 相对寻址37
4.7.7 堆栈寻址37
4.8 ARM指令集详解37
4.8.1 跳转指令38
4.8.2 数据处理指令38
4.8.3 乘法指令与乘加指令42
4.8.4 程序状态寄存器访问指令44
4.8.5 加载/存储指令45
4.8.6 批量数据加载/存储指令47
4.8.7 数据交换指令47
4.8.8 移位指令48
4.8.9 协处理器指令49
4.8.10 异常产生指令51
4.9 本章小结51
第5章 熟悉ADS集成开发环境52
5.1 命令行开发工具52
5.1.1 armcc介绍52
5.1.2 armcc用法详解53
5.1.3 armlink介绍54
5.1.4 armlink用法详解54
5.1.5 ARM运行时库54
5.1.6 CodeWarrior集成开发环境55
5.1.7 ADS调试器56
5.1.8 实用程序57
5.1.9 支持的软件57
5.2 使用ADS创建工程57
5.2.1 建立一个工程58
5.2.2 编译和链接工程60
5.2.3 target设置选项60
5.2.4 Language Settings61
5.2.5 Linker设置62
5.2.6 ARM fromELF工具63
5.2.7 命令行下编译工程64
5.3 使用AXD调试代码65
5.3.1 打开调试文件65
5.3.2 查看存储器内容65
5.3.3 设置断点66
5.3.4 查看变量值67
5.4 本章小结67
第6章 ARM的外部电路68
6.1 核心板电路68
6.1.1 晶振电路68
6.1.2 复位电路69
6.1.3 启动配置电路69
6.1.4 FLASH接口69
6.1.5 SDRAM接口70
6.2 底板电路73
6.2.1 电源电路73
6.2.2 串口电路74
6.2.3 USB接口74
6.2.4 以太网接口76
6.2.5 JTAG调试接口76
6.2.6 音频接口76
6.2.7 LCD接口77
6.2.8 SD卡接口78
6.3 本章小结79
第7章 嵌入式操作系统概述80
7.1 操作系统的结构和功能80
7.2 进程管理81
7.2.1 进程的描述82
7.2.2 进程的调度82
7.3 存储管理83
7.3.1 存储器的体系结构83
7.3.2 内存管理的基本概念84
7.3.3 连续分配存储管理方式84
7.3.4 页式存储管理方式86
7.4 文件管理87
7.4.1 文件88
7.4.2 目录89
7.4.3 EXT2文件系统89
7.5 设备管理92
7.5.1 设备的分类92
7.5.2 数据传输控制方式93
7.5.3 中断处理93
7.5.4 设备驱动程序94
7.6 嵌入式操作系统的特点95
7.6.1 嵌入式操作系统的发展95
7.6.2 嵌入式操作系统的优势96
7.6.3 嵌入式操作系统的分类96
7.7 常见的嵌入式操作系统97
7.7.1 VxWorks97
7.7.2 pSOS97
7.7.3 Palm OS98
7.7.4 QNX98
7.7.5 Windows CE99
7.7.6 μC/OS-Ⅱ100
7.7.7 嵌入式Linux100
7.8 本章小结101
第8章 快速体验——构建开发环境102
8.1 交叉开发环境介绍102
8.2 主机与目标板的连接方式103
8.2.1 串口通信接口103
8.2.2 以太网接口104
8.2.3 USB接口104
8.2.4 JTAG接口105
8.3 建立主机开发环境105
8.3.1 Ubuntu 6.06的安装105
8.3.2 Minicom的安装配置107
8.3.3 Tftp服务的安装配置109
8.3.4 NFS的安装配置110
8.3.5 建立交叉工具链112
8.4 启动目标板系统116
8.4.1 Bootloader和Kernel117
8.4.2 根文件系统118
8.5 本章小结119
第9章 Linux使用基础120
9.1 Linux的基本概念120
9.1.1 文件120
9.1.2 目录120
9.1.3 分区121
9.1.4 挂载122
9.1.5 用户系统122
9.1.6 用户权限122
9.1.7 shell123
9.1.8 环境变量124
9.2 Linux的命令行124
9.2.1 执行命令124
9.2.2 参数125
9.2.3 重定向符号125
9.2.4 获取帮助125
9.3 Linux的常用命令127
9.3.1 文件管理127
9.3.2 内容管理130
9.3.3 权限管理131
9.3.4 备份压缩132
9.3.5 系统设置133
9.3.6 进程控制136
9.3.7 网络设置138
9.4 本章小结139
第10章 Boot Loader140
10.1 Boot Loader的概念140
10.1.1 Boot Loader所支持的嵌入式体系141
10.1.2 Boot Loader的安装位置141
10.1.3 Boot Loader的启动过程142
10.1.4 Boot Loader与主机的通信142
10.1.5 Boot Loader的操作模式142
10.2 Boot Loader的基本结构143
10.2.1 Boot Loader的stagel143
10.2.2 Boot Loader的stage2144
10.3 vivi简介149
10.3.1 vivi的体系架构149
10.3.2 vivi启动的第一阶段150
10.3.3 vivi启动的第二阶段154
10.4 vivi的基本命令158
10.4.1 mem命令158
10.4.2 load命令159
10.4.3 part命令159
10.4.4 param命令160
10.4.5 boot命令160
10.4.6 go命令161
10.4.7 bon命令161
10.4.8 reset命令161
10.4.9 help命令162
10.5 U-Boot简介162
10.5.1 U-Boot的特点162
10.5.2 U-Boot的目录结构163
10.5.3 U-Boot的启动过程163
10.5.4 U-Boot的移植165
10.6 U-Boot的基本命令167
10.6.1 设置环境变量167
10.6.2 数据通信167
10.6.3 存储器操作168
10.6.4 系统引导168
10.6.5 其他169
10.7 本章小结169
第11章 Linux内核移植170
11.1 Linux内核结构170
11.2 Linux源码结构171
11.2.1 arch目录172
11.2.2 drivers目录172
11.2.3 fs目录173
11.2.4 其他目录174
11.3 内核编译175
11.3.1 编译准备175
11.3.2 设置flash分区176
11.3.3 配置内核178
11.4 内核配置选项180
11.4.1 常规设置180
11.4.2 模块和块设备层182
11.4.3 CPU类型183
11.4.4 电源管理185
11.4.5 总线和网络187
11.4.6 驱动188
11.4.7 文件系统195
11.4.8 其他198
11.5 下载内核200
11.6 内核调试201
11.6.1 内核调试步骤201
11.6.2 常见内核问题202
11.7 本章小结203
第12章 嵌入式Linux文件系统204
12.1 嵌入式文件系统基础204
12.1.1 NOR型Flash存储器204
12.1.2 NAND型Flash存储器205
12.1.3 MTD简介206
12.1.4 日志型文件系统207
12.1.5 BusyBox208
12.2 CramFS文件系统210
12.2.1 CramFS文件系统的特性210
12.2.2 CramFS文件系统映像文件的结构211
12.2.3 CramFS文件系统的工作原理211
12.2.4 CramFS文件系统的初始化过程212
12.2.5 CramFS文件系统的制作213
12.2.6 CramFS文件系统的挂载流程216
12.3 YAFFS文件系统216
12.3.1 YAFFS文件系统的数据存储方式217
12.3.2 YAFFS文件系统的工作原理218
12.3.3 YAFFS文件系统对MTD的依赖性219
12.3.4 YAFFS文件系统驱动的安装流程221
12.3.5 YAFFS文件系统的制作222
12.4 JFFS文件系统223
12.4.1 JFFS1文件系统简介224
12.4.2 JFFS2文件系统简介225
12.4.3 JFFS3文件系统简介227
12.4.4 JFFS2文件系统的工作原理227
12.4.5 JFFS2文件系统的制作230
12.5 基于RAM的文件系统231
12.5.1 Ramdisk文件系统231
12.5.2 RamFS/TmpFS文件系统232
12.6 嵌入式文件系统的设计233
12.6.1 文件系统格式选择的基本策略233
12.6.2 混合型文件系统格式设计方法234
12.7 本章小结235
第13章 嵌入式Linux C语言开发工具236
13.1 编辑器VIM236
13.1.1 VIM的编辑模式236
13.1.2 VIM的进入与退出238
13.1.3 光标的移动239
13.1.4 删除和恢复239
13.1.5 复制和粘贴240
13.1.6 查找和替换240
13.1.7 网络资源241
13.2 编译器GCC242
13.2.1 GCC的编译流程242
13.2.2 GCC的常用编译选项245
13.2.3 实例分析248
13.3 调试器GDB250
13.3.1 GDB使用概述250
13.3.2 GDB的使用流程251
13.3.3 GdbServer远程调试253
13.4 工程管理Make255
13.4.1 Makefile文件介绍255
13.4.2 Makefile的规则256
13.4.3 Makefile的变量258
13.4.4 Make命令的使用260
13.4.5 使用自动工具生成Makefile261
13.5 集成开发环境Eclipse263
13.5.1 Eclipse的安装263
13.5.2 Eclipse的界面简介264
13.5.3 创建Hello项目265
13.5.4 调试Hello项目267
13.5.5 使用CVS进行版本管理267
13.6 本章小结271
第14章 快速体验——嵌入式C语言开发流程272
14.1 命令行下的开发流程272
14.1.1 编写代码272
14.1.2 编译程序274
14.1.3 运行程序275
14.1.4 交叉编译275
14.1.5 编写Makefile276
14.2 基于Eclipse的开发流程277
14.2.1 下载和安装Eclipse277
14.2.2 新建工程278
14.2.3 编写代码279
14.2.4 编译工程280
14.2.5 运行程序281
14.3 本章小结281
第15章 嵌入式Linux C语言基础282
15.1 C语言概述282
15.1.1 C语言的特点282
15.1.2 C语言程序的总体结构282
15.1.3 C语言的语句283
15.1.4 C语言的关键字284
15.1.5 C语言程序设计步骤284
15.2 数据类型284
15.2.1 基本数据类型284
15.2.2 常量与变量285
15.2.3 整型数据、实型数据285
15.2.4 字符型数据286
15.3 运算符287
15.3.1 算术运算符287
15.3.2 关系和逻辑运算符287
15.3.3 位操作符288
15.3.4 ?操作符288
15.3.5 表达式的优先级288
15.4 表达式289
15.4.1 类型转换289
15.4.2 构成符cast和可读性289
15.5 流程控制289
15.5.1 格式输入输出289
15.5.2 顺序程序设计292
15.5.3 选择结构设计293
15.5.4 循环结构设计294
15.6 函数296
15.6.1 概述296
15.6.2 函数定义的一般形式297
15.6.3 函数的参数和函数的值297
15.6.4 函数的调用298
15.6.5 局部变量和全局变量299
15.7 数组、指针300
15.7.1 数组300
15.7.2 指针的基本概念302
15.7.3 指针与数组304
15.7.4 指针与字符串306
15.7.5 指针与函数307
15.7.6 指针其他用法308
15.7.7 动态内存管理308
15.8 复杂数据结构309
15.8.1 结构体定义309
15.8.2 结构体使用310
15.8.3 链表312
15.8.4 枚举类型313
15.8.5 共用体类型313
15.9 本章小结313
第16章 嵌入式Linux C语言标准库314
16.1 Glibc简介314
16.2 字符测试和数据转换函数316
16.2.1 字符测试函数316
16.2.2 数据转换函数317
16.3 基本I/O函数318
16.3.1 open()函数319
16.3.2 close()函数320
16.3.3 read()函数和write()函数320
16.3.4 其他函数321
16.4 标准I/O函数322
16.4.1 fopen()函数322
16.4.2 fclose()函数323
16.4.3 fread()函数和fwrite()函数324
16.4.4 printf()函数和scanf()函数325
16.4.5 其他函数326
16.5 内存配置及字符串处理函数326
16.5.1 内存分配函数327
16.5.2 memXXX函数327
16.5.3 strXXX函数330
16.5.4 释放内存的函数331
16.5.5 动态内存分配的实例332
16.6 日期时间函数334
16.6.1 时间的定义334
16.6.2 日历时间334
16.6.3 时钟计时单元336
16.6.4 格式化日期和时间337
16.6.5 自定义时间格式337
16.7 其他函数339
16.7.1 错误处理函数339
16.7.2 系统日志函数342
16.7.3 环境管理函数344
16.8 本章小结345
第17章 嵌入式Linux的多任务编程346
17.1 什么是多任务346
17.1.1 对话级多任务346
17.1.2 进程级多任务347
17.1.3 线程级多任务347
17.1.4 多任务处理的特点348
17.2 进程349
17.2.1 进程的概念350
17.2.2 进程的数据结构351
17.2.3 进程的创建353
17.2.4 文件描述符共享355
17.2.5 vfork()函数357
17.2.6 exec()函数族357
17.2.7 执行新程序359
17.2.8 进程的终止361
17.2.9 进程的退出状态363
17.2.10 Zombie进程365
17.3 线程366
17.3.1 线程的概念366
17.3.2 线程的创建367
17.3.3 线程的终止368
17.3.4 线程的基本属性370
17.3.5 线程属性的修改371
17.3.6 线程的扩展属性374
17.4 线程池377
17.4.1 线程池的工作原理377
17.4.2 线程池的实现378
17.4.3 工作状态的记录383
17.4.4 线程池的测试386
17.5 本章小结387
第18章 多任务间通信和同步388
18.1 信号388
18.1.1 信号的概念388
18.1.2 信号的产生390
18.1.3 kill()函数和raise()函数390
18.1.4 alarm()函数和pause()函数391
18.1.5 about()函数392
18.1.6 信号的处理392
18.1.7 signal()函数392
18.1.8 sigaction()函数393
18.1.9 信号集395
18.1.10 sigprocmask()函数396
18.1.11 sigpending()函数396
18.1.12 sigsuspend()函数396
18.2 管道398
18.2.1 管道的相关概念398
18.2.2 管道的创建398
18.2.3 多进程中的管道通信400
18.2.4 管道的应用实例401
18.2.5 FIFO的相关概念402
18.2.6 FIFO的创建403
18.2.7 FIFO的读写规则404
18.2.8 FIFO的应用实例405
18.3 共享内存407
18.3.1 系统调用mmap()408
18.3.2 系统调用munmap()408
18.3.3 系统调用msync()409
18.3.4 mmap()的应用实例409
18.4 System V共享内存411
18.4.1 系统调用shmget()411
18.4.2 系统调用shmat()412
18.4.3 系统调用shmdt()412
18.4.4 System V共享内存的应用实例412
18.5 消息队列413
18.5.1 系统调用msgget()413
18.5.2 系统调用msgsnd()414
18.5.3 系统调用msgrcv()414
18.5.4 系统调用msgctl()415
18.5.5 消息队列的应用实例415
18.6 System V信号量417
18.6.1 系统调用semget()417
18.6.2 系统调用semop()418
18.6.3 系统调用semctl()419
18.6.4 System V信号量的应用实例419
18.7 POSIX信号量421
18.7.1 系统调用sem_init()422
18.7.2 系统调用sem_wait()422
18.7.3 系统调用sem_post()422
18.7.4 系统调用sem_destory()函数422
18.7.5 POSIX信号量的应用实例422
18.8 互斥锁424
18.8.1 系统调用pthread_mutex_init()424
18.8.2 系统调用pthread_mutex_lock()424
18.8.3 系统调用pthread_mutex_trylock()424
18.8.4 系统调用pthread_mutex_unlock()425
18.8.5 系统调用pthread_mutex_destory()425
18.8.6 互斥锁的应用实例425
18.9 条件变量427
18.9.1 系统调用pthread_cond_init()428
18.9.2 系统调用pthread_cond_wait()428
18.9.3 系统调用pthread_cond_timedwait()428
18.9.4 系统调用pthread_cond_signal()428
18.9.5 系统调用pthread_cond_broadsignal()428
18.9.6 系统调用pthread_cond_destroy()428
18.9.7 条件变量的应用实例429
18.10 本章小结430
第19章 设备驱动开发基础 431
19.1 Linux设备管理和驱动概述431
19.1.1 Linux设备的分类431
19.1.2 设备驱动程序的作用431
19.1.3 访问设备的实现432
19.1.4 Linux设备控制方式432
19.2 Linux设备驱动开发流程434
19.2.1 构造和运行模块434
19.2.2 字符设备驱动编写435
19.2.3 字符设备驱动示例437
19.2.4 并发控制440
19.2.5 阻塞与非阻塞445
19.2.6 select和poll449
19.2.7 中断处理451
19.2.8 内存与I/O操作452
19.3 块设备驱动编写457
19.3.1 块设备的I/O操作特点457
19.3.2 block_device_operations结构体457
19.3.3 gendisk结构体458
19.3.4 request结构体459
19.3.5 request操作函数462
19.3.6 bio结构体464
19.3.7 注册与注销466
19.3.8 加载与卸载466
19.3.9 打开与释放468
19.3.10 ioctl函数469
19.3.11 I/O请求处理469
19.4 本章小结472
第20章 嵌入式Linux的网络编程473
20.1 TCP/IP协议473
20.2 TCP协议474
20.2.1 TCP连接建立的过程474
20.2.2 TCP连接的标识474
20.2.3 关闭TCP连接475
20.3 UDP协议475
20.4 socket简介475
20.4.1 socket的定义476
20.4.2 socket的类型476
20.5 TCP Server程序设计476
20.5.1 TCP的通信过程476
20.5.2 TCP Server程序477
20.5.3 网络地址的表示478
20.5.4 建立socket479
20.5.5 绑定本地地址479
20.5.6 字节顺序转换480
20.5.7 IP地址转换481
20.5.8 Listen()函数481
20.5.9 等待连接482
20.5.10 数据通信483
20.5.11 关闭套接字484
20.6 TCP Client程序设计485
20.6.1 DNS操作486
20.6.2 连接服务器487
20.6.3 测试实例488
20.7 UDP通信的程序设计489
20.7.1 UDP的通信过程489
20.7.2 UDP通信服务器端490
20.7.3 UDP通信客户端491
20.8 多线程文件服务器493
20.8.1 文件服务器主程序493
20.8.2 动态分配监听端口495
20.8.3 多线程服务器的实现495
20.8.4 大数据量的读写函数496
20.8.5 客户端测试例程499
20.8.6 编译和测试501
20.9 PROXY源代码分析501
20.9.1 主函数main()502
20.9.2 参数处理函数parse_args()504
20.9.3 守护进程函数daemonize()505
20.9.4 代理服务函数do_proxy()507
20.9.5 错误信息函数errorout()510
20.10 本章小结510
第21章 MiniGUI图形界面设计511
21.1 MiniGUI概述511
21.1.1 MiniGUI的特点511
21.1.2 MiniGUI v1.3.3软件包512
21.1.3 MiniGUI运行模式512
21.2 MiniGUI的安装和使用514
21.2.1 安装MiniGUI库514
21.2.2 安装MiniGUI的资源515
21.2.3 配置MiniGUI515
21.2.4 编译应用程序例子516
21.2.5 交叉编译MiniGUI库516
21.2.6 交叉编译例程517
21.2.7 QVFB图形引擎518
21.2.8 FrameBuffer图形引擎519
21.3 利用Eclipse编写MiniGUI程序520
21.3.1 建立vacs工程520
21.3.2 配置编译选项521
21.3.3 配置外部工具QVFB522
21.3.4 运行vacs523
21.3.5 调试vacs523
21.4 MiniGUI的编程基础524
21.4.1 头文件525
21.4.2 程序入口525
21.4.3 创建和显示主窗口526
21.4.4 进入消息循环526
21.4.5 窗口过程函数528
21.4.6 屏幕输出528
21.4.7 程序的退出528
21.5 消息循环和窗口过程529
21.5.1 消息处理函数529
21.5.2 重要的消息530
21.5.3 窗口及窗口过程530
21.6 对话框和控件编程531
21.6.1 控件的概念531
21.6.2 预定义控件532
21.6.3 自定义控件534
21.6.4 控件子类化535
21.6.5 对话框和对话框模板536
21.6.6 模态和非模态对话框538
21.7 图形设备接口539
21.7.1 图形设备上下文539
21.7.2 矩形操作和区域操作540
21.7.3 像素值和调色板542
21.7.4 位图操作函数543
21.7.5 字体和文本输出544
21.7.6 绘制图形546
21.8 其他功能547
21.8.1 读写配置文件548
21.8.2 定点数运算548
21.9 MiniQQ界面设计549
21.9.1 登录窗口551
21.9.2 好友列表窗口554
21.9.3 聊天窗口558
21.9.4 其他559
21.10 本章小结560
第22章 CAN总线驱动设计561
22.1 CAN总线介绍561
22.2 SJA1000介绍561
22.2.1 SJA1000的特性561
22.2.2 SJA1000内部原理562
22.2.3 SJA1000管脚说明563
22.3 SJA1000寄存器介绍564
22.3.1 控制寄存器CR564
22.3.2 命令寄存器CMR565
22.3.3 状态寄存器SR566
22.3.4 中断寄存器IR567
22.3.5 发送缓冲器568
22.3.6 接收缓冲器568
22.3.7 验收滤波器569
22.4 SJA1000与S3C2440连接569
22.5 SJA1000的驱动程序571
22.5.1 驱动程序源代码571
22.5.2 测试的操作方法579
22.6 本章小结580
第23章 SD卡驱动设计581
23.1 SD卡概述及协议581
23.1.1 SD卡概述581
23.1.2 SD卡协议582
23.2 SD卡驱动设计583
23.2.1 块设备驱动设计583
23.2.2 SD卡驱动程序分析584
23.2.3 SD卡驱动程序设计585
23.3 本章小结588
第24章 网络驱动设计589
24.1 Linux网络设备概述589
24.2 DM9000芯片介绍590
24.3 重要数据结构591
24.3.1 通用部分591
24.3.2 硬件相关部分591
24.3.3 物理层相关数据592
24.3.4 网络层协议相关部分592
24.3.5 服务处理部分593
24.4 网络设备初始化593
24.5 激活和关闭网络设备595
24.6 中断控制的实现596
24.7 发送过程的实现598
24.8 接收过程的实现599
24.8.1 sk_buff结构599
24.8.2 接收函数的实现601
24.9 其他接口函数602
24.10 本章小结602
第25章 综合案例——嵌入式B超603
25.1 系统终端的结构设计603
25.1.1 总体结构603
25.1.2 显示控制芯片选型604
25.2 系统终端的软件设计604
25.2.1 U-Boot604
25.2.2 嵌入式Linux移植605
25.2.3 MiniGUI移植605
25.3 FPGA与ARM接口设计608
25.3.1 硬件连接608
25.3.2 FPGA驱动程序设计608
25.4 显示芯片的连接与控制610
25.4.1 选择SM501的原因610
25.4.2 SM501驱动程序设计610
25.5 超声动态图像的实时显示612
25.5.1 图像动态显示612
25.5.2 坐标转换和灰度插值612
25.6 图形界面的结构614
25.6.1 需求分析614
25.6.2 总体结构614
25.6.3 网络通信615
25.6.4 多线程编程615
25.7 操作界面设计616
25.7.1 区域分配616
25.7.2 键盘响应616
25.7.3 控件设计617
25.8 测量模块设计618
25.8.1 椭圆的画法619
25.8.2 椭圆测量周长和面积620
25.8.3 轨迹法测量面积620
25.9 本章小结620