《深度实践嵌入式Linux系统移植》PDF下载

  • 购买积分:22 如何计算积分?
  • 作  者:范展源,刘韬著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2015
  • ISBN:9787111497912
  • 页数:806 页
图书介绍:第一篇为绪论篇(第1章)。本篇只有一章内容,该章从整体上简单地介绍了嵌入式系统架构,并探讨了系统移植环境的搭建方法。第二篇为u-boot移植篇(第2~5章)。从绪论篇中得知,嵌入式系统的移植第一个需要完成的是启动加载程序的移植,由于本书是以实践为目的,所以选择了嵌入式系统最为常用的u-boot作为移植的依据。 读者在掌握好这些基础知识后,可以参照使用ARM9/S3C2440芯片的开发板和使用ARM11/S3C6410芯片的开发板这两个实例进行系统的u-boot移植实战。第三篇为Linux内核移植篇(第6~18章)。本篇是本书的核心部分,首先介绍Linux内核工程及其编译系统,Linux内核相关的调试技术,以及Linux内核的启动流程,为内核移植打下基础。然后,将以使用ARM9/S3C2440芯片的开发板和使用ARM11/S3C6410芯片的开发板为例,进行彻底的系统移植。第四篇为应用程序移植篇(第19~23章)。本篇将从嵌入式图形界面移植、嵌入式多媒体移植、嵌入式数据库移植、嵌入式WEB服务器移植和嵌入式JVM移植等方面介绍嵌入式应用程序的实践过程。

绪论篇 2

第1章 嵌入式系统架构与移植环境搭建 2

1.1 嵌入式系统硬件架构 2

1.1.1 微处理器 3

1.1.2 总线 4

1.1.3 存储器 5

1.2 嵌入式系统软件架构 6

1.3 嵌入式Linux移植环境搭建 7

1.3.1 Ubuntu开发平台 7

1.3.2 搭建交叉编译环境 8

1.3.3 获取内核 9

1.3.4 获取启动加载器 9

1.3.5 配置必要服务 9

1.3.6 PuTTY的安装和配置 12

1.4 本章小结 12

u-boot移植篇 14

第2章 u-boot工程与编译系统 14

2.1 u-boot介绍 14

2.1.1 u-boot工程简介 15

2.1.2 u-boot源码结构 15

2.1.3 u-boot的配置编译 16

2.2 u-boot常用命令与测试 18

2.2.1 获取帮助 18

2.2.2 环境变量相关命令 19

2.2.3 网络命令 20

2.2.4 Nand Flash操作命令 21

2.2.5 内存/寄存器相关命令 22

2.2.6 系统引导命令 24

2.3 u-boot编译过程分析 25

2.3.1 主机构建环境配置过程 25

2.3.2 目标机相关配置过程 27

2.3.3 make命令执行过程 31

2.4 本章小结 40

第3章 u-boot启动流程分析 41

3.1 u-boot启动第一阶段流程 41

3.1.1 设置异常向量 42

3.1.2 CPU进入SVC模式 43

3.1.3 设置控制寄存器地址 43

3.1.4 关闭看门狗 43

3.1.5 屏蔽中断 43

3.1.6 设置MPLLCON、UPLLCON和CLKDIVN 44

3.1.7 关闭MMU和cache 45

3.1.8 初始化存储控制器 46

3.1.9 复制u-boot第二阶段代码到RAM 47

3.1.10 设置栈 48

3.1.11 清除BSS段 48

3.1.12 跳转到第二阶段代码入口 48

3.2 u-boot启动第二阶段代码分析 49

3.2.1 gd_t结构体 49

3.2.2 bd_t结构体 50

3.2.3 init_sequence数组 50

3.2.4 start_armboot()顺序分析 51

3.2.5 main_loop函数分析 52

3.3 本章小结 56

第4章 ARM9/S3C2440 u-boot移植实战 57

4.1 移植准备工作 57

4.1.1 开发环境介绍 57

4.1.2 删减u-boot文件 58

4.1.3 建立My2440配置 59

4.1.4 配置和编译u-boot 60

4.2 u-boot芯片级移植 61

4.2.1 启动代码结构优化 61

4.2.2 系统时钟移植 65

4.2.3 存储器控制器设置 68

4.2.4 在u-boot工程中全面支持CONFIG_S3C2440宏配置 69

4.3 u-boot调试方法探索 70

4.3.1 通过LED指示运行状态 70

4.3.2 在第一阶段的代码中添加打印调试方法 72

4.3.3 在内存中加载和运行u-boot 78

4.4 Nor Flash驱动移植 78

4.4.1 Nor Flash的工作模式 78

4.4.2 Nor Flash的存储结构 79

4.4.3 Nor Flash的硬件连接 79

4.4.4 Nor Flash的操作方法 80

4.4.5 Nor Flash驱动分析 83

4.4.6 Nor Flash驱动移植 86

4.4.7 Nor Flash命令测试 87

4.4.8 完善u-boot的命令行功能 88

4.5 DM9000驱动移植 89

4.5.1 DM9000网卡端口访问 90

4.5.2 DM9000网卡时序分析 90

4.5.3 DM9000网卡驱动分析 93

4.5.4 DM9000网卡驱动移植 100

4.5.5 网卡驱动测试 103

4.5.6 通过TFTP下载程序到内存运行 103

4.6 u-boot启动内核 105

4.6.1 ARM架构的Linux内核启动 105

4.6.2 内核标记列表 106

4.6.3 u-boot启动命令分析1——go命令 109

4.6.4 u-boot启动命令分析2——bootm命令 110

4.6.5 u-boot启动命令的配置与移植 115

4.7 Nand Flash与驱动移植 118

4.7.1 Nand Flash启动原理 118

4.7.2 Nand Flash硬件特性 119

4.7.3 Linux MTD子系统 121

4.7.4 Nand Flash初始化流程分析 123

4.7.5 Nand Flash命令实现分析 125

4.7.6 页读取操作详解 127

4.7.7 Nor Flash和Nand Flash启动自动判断 132

4.7.8 Nand Flash拷贝代码实现 132

4.7.9 Nand Flash板级驱动移植 136

4.7.10 Nand Flash命令测试 140

4.8 YAFFS文件系统移植 142

4.8.1 YAFFS文件系统 142

4.8.2 YAFFS在Nand Flash上的存储结构 142

4.8.3 YAFFS在内存中的组织结构 143

4.8.4 在u-boot中添加对烧写YAFFS镜像的支持 144

4.8.5 YAFFS文件系统镜像制作 150

4.8.6 YAFFS的烧写与测试 152

4.9 UBIFS文件系统移植 153

4.9.1 UBI层 153

4.9.2 UBIFS介绍 155

4.9.3 在u-boot中添加对UBIFS的支持 156

4.9.4 制作UBIFS文件系统镜像 157

4.9.5 UBIFS的烧写与测试 158

4.10 SD卡驱动移植 162

4.10.1 MMC/SD/SDIO介绍 162

4.10.2 SD/MMC协议 162

4.10.3 S3C2440 SDI控制器操作 166

4.10.4 SD卡驱动分析 168

4.10.5 SD卡驱动移植 173

4.11 USB驱动移植 176

4.11.1 USB概述 176

4.11.2 USB系统架构 177

4.11.3 USB的通信方法 180

4.11.4 USB的描述符 184

4.11.5 USB设备请求 188

4.11.6 USB设备枚举 191

4.11.7 S3C2440 USB设备控制器 195

4.11.8 u-boot USB设备控制器驱动分析 196

4.11.9 USB设备驱动移植 206

4.11.10 USB驱动移植 210

4.11.11 USB功能测试 214

4.12 u-boot一键式菜单实现 215

4.12.1 一键式菜单需求分析 215

4.12.2 一键式菜单测试步骤 216

4.12.3 一键式菜单源码分析 220

4.13 本章小结 224

第5章 ARM11/S3C6410 u-boot移植实战 225

5.1 移植准备工作 225

5.1.1 开发环境 225

5.1.2 删减u-boot文件 226

5.1.3 建立My6410配置 227

5.1.4 配置和编译u-boot 228

5.2 u-boot芯片级移植 229

5.2.1 修改第一阶段启动代码start.S 229

5.2.2 板级底层初始化文件lowlevel_init.S移植 233

5.2.3 时钟初始化函数移植 239

5.2.4 内存初始化函数实现 243

5.2.5 Nand Flash复制代码实现 246

5.2.6 SD卡复制代码实现 250

5.2.7 底层调试方法探索 254

5.2.8 完善My6410的板级配置 258

5.2.9 烧写与测试 265

5.3 DM9000驱动移植 267

5.3.1 DM9000网卡端口访问 267

5.3.2 DM9000网卡时序分析 268

5.3.3 DM9000网卡驱动移植 270

5.3.4 网卡驱动测试 274

5.4 u-boot启动内核 274

5.4.1 u-boot启动命令的配置与移植 275

5.4.2 修改go命令以支持zImage格式镜像的启动 277

5.5 Nand Flash驱动移植 278

5.5.1 将u-boot下载到内存中运行 278

5.5.2 Nand Flash驱动移植 279

5.5.3 Nand Flash命令测试 289

5.6 YAFFS文件系统移植 291

5.6.1 在u-boot中添加对烧写YAFFS镜像的支持 291

5.6.2 YAFFS文件系统镜像制作 298

5.6.3 YAFFS的烧写与测试 299

5.7 UBIFS文件系统移植 300

5.7.1 在u-boot中添加对UBIFS的支持 300

5.7.2 UBIFS文件系统镜像制作 302

5.7.3 UBIFS的烧写与测试 303

5.8 SD卡驱动移植 307

5.8.1 S3C6410主机控制器操作 307

5.8.2 S3C6410主机控制器操作序列 308

5.8.3 SD卡驱动分析 310

5.8.4 SD卡驱动移植 317

5.8.5 通过SD卡更新系统 319

5.9 USB驱动移植 321

5.9.1 S3C6410 USB2.0高速OTG 321

5.9.2 u-boot USB设备控制器驱动分析 323

5.9.3 USB设备驱动移植 332

5.9.4 USB功能测试 335

5.10 本章小结 336

Linux内核移植篇 338

第6章 Linux内核工程与编译系统 338

6.1 Linux内核架构 338

6.1.1 内核体系结构 338

6.1.2 内核组件 339

6.1.3 内核目录结构 340

6.2 Linux内核的配置与编译 341

6.2.1 配置内核 341

6.2.2 编译内核 344

6.3 Linux内核构建系统 345

6.3.1 内核配置过程 345

6.3.2 扩展内核代码 347

6.3.3 内核中的Makefile 348

6.3.4 内核中的Kconfig 349

6.4 内核调试技术 352

6.4.1 调试准备 352

6.4.2 内核调试配置选项 352

6.4.3 源码级别的调试接口 353

6.4.4 使用printk()打印调试信息 355

6.4.5 使用strace跟踪系统调用 357

6.4.6 使用OOPS调试系统故障 358

6.5 本章小结 360

第7章 Linux内核启动流程分析 361

7.1 内核镜像生成 361

7.2 内核启动流程1——汇编部分 362

7.2.1 内核启动代码入口 362

7.2.2 深入源码分析 363

7.2.3 汇编启动代码分析总结 378

7.3 内核启动流程2——C语言部分 378

7.3.1 start_kernel()函数 379

7.3.2 rest_init()函数 388

7.3.3 kernel_init()函数 390

7.3.4 init_post()函数 391

7.4 内核启动流程3——Busybox的init进程 393

7.4.1 init进程启动流程 393

7.4.2 添加初始化活动 394

7.4.3 执行初始化活动 395

7.5 本章小结 396

第8章 Linux移植准备及最小系统构建 397

8.1 移植准备工作 397

8.1.1 开发环境 397

8.1.2 删减Linux文件 398

8.1.3 建立My2440配置 400

8.1.4 建立My6410配置 403

8.1.5 编译测试 406

8.2 最小系统搭建 409

8.2.1 嵌入式根文件系统制作 409

8.2.2 安装initramfs根文件系统 412

8.3 本章小结 414

第9章 Linux网卡驱动移植 415

9.1 Linux网络子系统 415

9.2 核心数据结构 416

9.2.1 net_device结构 416

9.2.2 sk_buff结构 419

9.3 DM9000网卡驱动分析 421

9.3.1 board_info结构 422

9.3.2 dm9000_probe()函数 423

9.3.3 dm9000_open()函数 427

9.3.4 dm9000_start_xmit()函数 427

9.3.5 数据包接收函数 428

9.3.6 数据包发送函数 429

9.3.7 中断处理函数 431

9.4 My2440网卡驱动移植 432

9.4.1 添加DM9000的平台设备 432

9.4.2 在内核配置添加对DM9000的支持 434

9.5 My6410网卡驱动移植 434

9.5.1 添加DM9000的平台设备 434

9.5.2 在内核配置中添加对网络子系统的支持 435

9.5.3 在内核配置添加对DM9000的支持 436

9.6 安装NFS根文件系统 436

9.6.1 在内核配置添加对NFS的支持 436

9.6.2 挂载NFS根文件系统 437

9.7 制作基于共享库的根文件系统 437

9.8 本章小结 439

第10章 Linux混杂设备驱动 440

10.1 My2440 RTC驱动移植 440

10.2 My6410 RTC驱动移植 441

10.2.1 修改RTC驱动rtc-s3c.c 441

10.2.2 完善对6410 RTC驱动的平台支持 445

10.2.3 在机器配置文件中添加RTC设备 448

10.2.4 在内核中配置RTC 448

10.3 RTC驱动测试 449

10.4 为My2440添加ADC和按键驱动 451

10.4.1 按键驱动分析 451

10.4.2 在内核中添加ADC和按键驱动 454

10.5 为My6410添加ADC驱动 457

10.6 本章小结 458

第11章 Linux I2C驱动移植 459

11.1 I2C协议概述 459

11.1.1 I2C总线物理拓扑结构 459

11.1.2 I2C通信协议 460

11.2 Linux I2C子系统框架 461

11.3 I2C驱动中的数据结构及操作 462

11.3.1 i2c_adapter结构 462

11.3.2 i2c_algorithm结构 464

11.3.3 i2c_msg结构 464

11.3.4 i2c_driver结构 465

11.3.5 i2c_client结构 467

11.4 I2C适配器的设备接口 468

11.4.1 i2cdev_open()函数 471

11.4.2 i2cdev_read()函数 471

11.4.3 i2cdev_ioctl()函数 472

11.5 S3C2440(6410)I2C适配器驱动的实现 473

11.5.1 S3C2440 I2C platform总线匹配 474

11.5.2 S3C2440 I2C总线驱动描述结构 474

11.5.3 probe方法的实现 476

11.5.4 S3C2440 I2C总线通信方法 477

11.6 S3C2440(6410)I2C适配器驱动移植 480

11.6.1 添加I2C平台设备 480

11.6.2 在内核配置中支持I2C驱动 481

11.6.3 编写I2C总线驱动测试程序 482

11.7 S3C2440(6410)I2C设备驱动的实现 484

11.7.1 At24系列I2C EEPROM设备驱动的实现 484

11.7.2 传统只读EEPROM设备驱动的实现 486

11.8 I2C EEPROM设备驱动移植 489

11.9 本章小结 490

第12章 Linux SPI驱动移植 491

12.1 SPI协议概述 491

12.1.1 SPI总线物理拓扑结构 491

12.1.2 时钟极性和时钟相位 492

12.1.3 SPI的优缺点 493

12.2 Linux SPI子系统 493

12.3 SPI驱动中的数据结构及操作 494

12.3.1 spi_master结构 494

12.3.2 spi_driver结构 495

12.3.3 spi_device结构 496

12.3.4 spi_message结构 497

12.3.5 spi_bitbang结构 498

12.4 SPI控制器的设备接口 500

12.5 S3C2440 SPI控制器驱动的实现 503

12.5.1 S3C2440 SPI platform总线匹配 503

12.5.2 S3C2440 SPI控制器驱动描述结构 504

12.5.3 probe方法的实现 504

12.5.4 S3C2440 SPI总线通信方法 505

12.6 S3C6410 SPI控制器驱动的实现 507

12.6.1 S3C6410 SPI控制器驱动描述结构 507

12.6.2 probe方法的实现 507

12.6.3 S3C6410 SPI总线通信方法 509

12.7 S3C2440 SPI控制器驱动移植 510

12.7.1 在机器配置文件中添加对SPI的支持 510

12.7.2 扩展Kconfig 512

12.7.3 在内核配置中支持SPI驱动 513

12.7.4 SPI驱动测试 513

12.8 S3C6410 SPI控制器驱动移植 513

12.8.1 添加6410的SPI驱动 514

12.8.2 添加SPI平台设备 514

12.8.3 添加6410 DMA平台代码 516

12.8.4 添加SPI、DMA相关的时钟资源 518

12.8.5 在机器配置文件中添加对SPI的支持 519

12.8.6 SPI驱动测试 521

12.9 S3C2440(S3C6410)SPI协议驱动移植 521

12.9.1 AT25系列SPI EEPROM协议驱动的实现 521

12.9.2 SPI EEPROM设备驱动移植 523

12.10 本章小结 524

第13章 Nand Flash驱动移植 525

13.1 Linux MTD子系统 525

13.2 MTD子系统中的数据结构及操作 526

13.2.1 mtd_info结构 526

13.2.2 mtd_notifier结构 528

13.2.3 mtd_part/mtd_partitions结构 528

13.3 MTD块设备实现分析 530

13.4 Nand Flash驱动的实现 534

13.4.1 Nand Flash platform总线匹配 534

13.4.2 S3C2440 Nand Flash控制器驱动描述结构 534

13.4.3 probe方法的实现 536

13.4.4 S3C2440 Nand Flash读写方法分析 537

13.5 S3C2440 Nand Flash控制器驱动移植 538

13.5.1 在机器配置文件中添加对Nand Flash的支持 538

13.5.2 完善S3C2440的Nand Flash驱动 540

13.5.3 在内核配置中支持Nand Flash驱动 541

13.6 S3C6410 Nand Flash控制器驱动移植 541

13.6.1 添加6410 Nand Flash驱动 541

13.6.2 添加Nand Flash平台设备 542

13.6.3 在机器配置文件中添加对Nand Flash的支持 544

13.6.4 其他修改 545

13.7 YAFFS2文件系统移植 547

13.7.1 将YAFFS2文件系统移植到Linux内核 548

13.7.2 利用mtd-utils烧写YAFFS2文件系统镜像 548

13.8 在内核中配置对UBIFS的支持 550

13.9 本章小结 550

第14章 SD/MMC卡驱动移植 551

14.1 Linux MMC子系统 551

14.2 MMC子系统中的数据结构及操作 552

14.2.1 mmc_host结构 552

14.2.2 mmc_card结构 554

14.2.3 mmc_driver结构 555

14.2.4 mmc_request结构 556

14.3 卡探测过程分析 558

14.4 S3C2440 SD/MMC主控制器驱动的实现 561

14.4.1 SD/MMC主控制器驱动platform总线匹配 561

14.4.2 S3C2440 SD/MMC主控制器驱动描述结构 561

14.4.3 probe方法的实现 563

14.4.4 S3C2440 SD/MMC主控制器请求处理分析 565

14.5 S3C6410高速MMC控制器驱动的实现 568

14.5.1 SDHCI驱动框架 569

14.5.2 SDHCI主机卡探测过程 569

14.5.3 S3C6410 HSMMC控制器驱动 570

14.5.4 S3C6410 HSMMC控制器请求处理 572

14.6 S3C2440 SD/MMC主机控制器驱动移植 572

14.6.1 在机器配置文件中添加对SD/MMC主控制器的支持 572

14.6.2 在内核配置中添加对SD/MMC主控制器驱动的支持 573

14.6.3 在内核配置中添加对中文字符集和FAT文件系统的支持 574

14.6.4 在文件系统中添加对热插拔事件处理的支持 574

14.6.5 SD/MMC主控制器驱动测试 575

14.7 S3C6410 HSMMC控制器驱动移植 576

14.7.1 添加6410 Nand Flash驱动 576

14.7.2 在机器配置文件中添加对HSMMC的支持 577

14.7.3 修改内核SDHCI驱动 578

14.8 本章小结 579

第15章 LCD驱动移植 580

15.1 LCD硬件原理 580

15.1.1 LCD的硬件构成 580

15.1.2 TFT屏显示时序 581

15.2 Linux帧缓冲子系统 582

15.3 帧缓冲子系统中的数据结构及操作 583

15.3.1 fb_info结构 583

15.3.2 fb_var_screeninfo结构和fb_fix_screeninfo结构 587

15.3.3 fb_cmap结构 589

15.4 帧缓冲字符设备接口 590

15.5 Linux显示启动Logo 594

15.6 S3C2440帧缓冲驱动的实现 596

15.6.1 S3C2440 LCD控制器硬件描述 596

15.6.2 驱动platform总线匹配 597

15.6.3 S3C2440帧缓冲驱动描述结构 598

15.6.4 probe方法实现 599

15.7 S3C6410帧缓冲驱动的实现 601

15.8 S3C2440帧缓冲驱动移植 601

15.8.1 在板级初始化文件中添加对帧缓冲的支持 601

15.8.2 修改Makefile和Kconfig 605

15.8.3 在内核配置中添加对帧缓冲驱动的支持 607

15.8.4 帧缓冲驱动测试 608

15.9 S3C6410帧缓冲驱动移植 608

15.9.1 添加6410帧缓冲驱动 608

15.9.2 在机器配置文件中添加对帧缓冲的支持 609

15.9.3 帧缓冲驱动测试 611

15.10 本章小结 611

第16章 触摸屏驱动移植 612

16.1 Linux输入子系统 612

16.2 输入子系统中的数据结构及操作 613

16.2.1 input_dev结构 613

16.2.2 input_handler结构 616

16.2.3 input_handle结构 617

16.3 输入子系统核心层的实现 618

16.4 通用事件处理驱动 622

16.5 输入事件报告流程 626

16.6 S3C2440(6410)触摸屏驱动的分析 629

16.6.1 模块初始化函数的实现 629

16.6.2 中断处理与事件上报 630

16.7 S3C2440触摸屏驱动移植与测试 632

16.7.1 S3C2440触屏驱动移植 632

16.7.2 S3C2440触屏驱动测试 633

16.8 S3C6410触摸屏驱动移植与测试 634

16.8.1 添加6410的触摸屏驱动 634

16.8.2 添加触屏平台设备 635

16.8.3 在机器配置文件中添加对触屏的支持 636

16.9 本章小结 637

第17章 声卡驱动移植 638

17.1 ALSA体系架构 638

17.1.1 ALSA设备文件 639

17.1.2 驱动代码的文件结构 640

17.2 声卡描述结构snd_card 640

17.3 PCM功能子层 644

17.3.1 PCM的概念 644

17.3.2 PCM设备描述结构snd_pcm 645

17.3.3 PCM流与PCM子流 646

17.3.4 PCM功能子层逻辑关系小结 651

17.3.5 PCM设备文件的建立 652

17.3.6 PCM设备文件的访问 654

17.4 声卡控制项 655

17.4.1 控制项创建 655

17.4.2 控制项回调函数 657

17.4.3 Control设备建立 658

17.5 ASoC声卡驱动架构 659

17.6 ASoC架构中的Machine驱动 662

17.6.1 创建ASoC声卡平台设备 662

17.6.2 ASoC声卡的平台驱动 665

17.7 ASoC架构中的Codec驱动 666

17.7.1 Codec的DAI和PCM的配置 666

17.7.2 Codec的控制IO 669

17.7.3 混音器和其他音频控制项 671

17.7.4 Codec设备与ASoC声卡注册 673

17.8 ASoC架构中的Platform驱动 676

17.8.1 CPU DAI驱动 676

17.8.2 音频DMA驱动 677

17.8.3 创建音频DMA缓冲区 678

17.8.4 音频DMA的PCM操作 681

17.9 S3C2440+UDA1341声卡驱动配置与测试 683

17.9.1 在机器配置文件中添加对声卡的支持 683

17.9.2 在内核配置中支持声卡驱动 684

17.9.3 应用层alsa-1ib移植 685

17.9.4 编写ALSA应用程序 686

17.9.5 播放和录音测试 690

17.10 S3C6410+WM9714声卡驱动移植 691

17.10.1 添加6410声卡驱动 691

17.10.2 在内核配置中支持声卡驱动 692

17.10.3 alsa-utils工具集移植 692

17.11 本章小结 693

第18章 USB驱动移植 694

18.1 USB子系统架构 694

18.2 USB驱动中的描述符结构 695

18.3 USB主机驱动 695

18.3.1 主机控制器驱动 695

18.3.2 OHCI主机控制器驱动 698

18.4 S3C2440/S3C6410 USB主机驱动的实现 700

18.5 USB设备驱动 701

18.5.1 USB设备驱动描述结构 702

18.5.2 USB请求块URB 703

18.5.3 URB的处理流程 705

18.5.4 usb_bulk_msg()和usb_control_msg() 708

18.5.5 探测和断开函数 709

18.6 USB骨架程序 710

18.7 USB设备驱动实例 718

18.7.1 DNW驱动的实现 718

18.7.2 USB键盘驱动的实现 720

18.8 本章小结 728

应用程序移植篇 730

第19章 嵌入式Qt移植 730

19.1 Qt开发环境搭建与使用 730

19.1.1 Qt SDK的下载与安装 730

19.1.2 第一个Qt程序 732

19.1.3 利用QtCreator建立一个工程 733

19.2 Qt的功能模块与裁剪 735

19.2.1 Qt模块的构成 735

19.2.2 图形用户界面 736

19.2.3 信号与槽 736

19.2.4 布局管理 737

19.2.5 主视窗 737

19.3 嵌入式Qt移植与测试 737

19.3.1 触屏库tslib移植 737

19.3.2 Qt库移植 739

19.3.3 嵌入式Qt程序测试 741

19.3.4 嵌入式Qt工程配置与测试 743

19.4 本章小结 751

第20章 嵌入式多媒体程序移植 752

20.1 音频播放程序madplay的移植 752

20.1.1 在Ubuntu中安装madplay 752

20.1.2 在Ubuntu中测试madplay 753

20.1.3 将madplay移植到开发板 753

20.1.4 在开发板中测试madplay 755

20.2 视频播放程序MPlayer的移植 755

20.2.1 在Ubuntu中安装MPlayer 755

20.2.2 在Ubuntu中测试MPlayer 756

20.2.3 将MPlayer移植到开发板 756

20.2.4 在开发板中测试MPlayer 758

20.3 利用Qt开发视频播放器 758

20.3.1 MPlayer的SLAVE模式 759

20.3.2 示例播放器MyPlayer的实现 759

20.4 本章小结 760

第21章 嵌入式数据库移植 761

21.1 SQLite数据库的使用 761

21.1.1 使用命令行操作SQLite 761

21.1.2 使用C语言操作SQLite 763

21.1.3 在Qt中操作SQLite 765

21.1.4 在QTableView中显示数据库内容 767

21.2 SQLite数据库的移植 770

21.2.1 将SQLite移植到开发板 770

21.2.2 在开发板中测试SQLite 771

21.3 本章小结 773

第22章 嵌入式Web服务器移植 774

22.1 Boa的使用与HTML页面测试 774

22.2 CGI程序测试 779

22.2.1 CGI的概念和原理 779

22.2.2 编写CGI脚本测试 779

22.2.3 CGIC库的基本使用 780

22.3 通过网页控制设备 782

22.4 通过网页监控设备 785

22.5 网页视频监控 788

22.6 将Web服务器移植到开发板 791

22.6.1 将Boa移植到开发板 791

22.6.2 将CGIC移植到开发板 792

22.6.3 将mjpg-streamer移植到开发板 792

22.6.4 在开发板上搭建Web服务站点 793

22.7 本章小结 793

第23章 嵌入式JVM移植 794

23.1 phoneME虚拟机移植 794

23.1.1 获取源代码 795

23.1.2 编译和安装 795

23.1.3 测试步骤 796

23.2 JamVM虚拟机移植 798

23.2.1 GNU Classpath移植 798

23.2.2 JamVM移植 799

23.2.3 JamVM测试 799

23.3 在JamVM上运行Jetty服务器 800

23.3.1 Jetry服务器启动 800

23.3.2 在Jetty服务器中部署Web应用 801

23.3.3 Servlet和JSP页面测试 803

23.4 本章小结 805