《构建嵌入式Linux核心软件系统实战 工程师经验手记》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:杨铸,李奎编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2013
  • ISBN:9787512410848
  • 页数:357 页
图书介绍:本书内容包括:嵌入式Linux系统开发总述、嵌入式Linux开发环境的搭建、体验嵌入式Linux系统移植、制作交叉编译工具链、构建BootLoader、构建嵌入式linux内核、构建嵌入式Linux文件系统、构建Qt图形系统等。读者对象:工科本科学生、IT职业培训人员、工程硕士、对嵌入式软件开发有浓厚兴趣的自学者。

第1章 嵌入式Linux系统开发综述 1

1.1 嵌入式Linux系统的发展现状 1

1.2 基于ARM处理器的Linux系统开发过程综述 3

1.3 选择mini2440与tq2440开发平台的理由 5

第2章 嵌入式Linux开发环境的搭建 7

2.1 嵌入式系统环境搭建 7

2.1.1 为什么选择Windows+vm虚拟机+ubuntu的开发方式 7

2.1.2 主机环境安装 8

2.2 开发工具使用说明 21

2.2.1 超级终端——minicom的使用 21

2.2.2 超级终端——SecureCRT的使用 22

2.2.3 设置虚拟机与主机通信 24

2.2.4 NFS远程文件系统 25

2.2.5 FTP服务器软件配置 26

2.3 光盘目录结构说明 27

第3章 体验嵌入式Linux系统之旅 29

3.1 烧写引导程序到开发板 29

3.1.1 使用JTAG接口烧写引导程序到开发板 29

3.1.2 使用JLINK接口烧写引导程序到开发板 34

3.1.3 测试引导程序是否正常 38

3.2 安装USB驱动与dnw软件 38

3.2.1 USB驱动安装 38

3.2.2 开发板USB Slave驱动安装 39

3.3 使用dnw软件下载内核镜像到开发板 39

3.4 使用dnw软件下载根文件系统到开发板 40

3.5 运行测试 40

3.5.1 系统执行流程分析 41

3.5.2 测试图形界面程序 43

3.6 小结 43

第4章 制作交叉编译工具链 44

4.1 交叉编译器的组成结构 44

4.1.1 arm-linux-gcc 44

4.1.2 glibc 45

4.1.3 binutils 45

4.2 基于crosstool制作交叉编译工具链 46

4.2.1 获取crosstool源码和补丁文件 46

4.2.2 获取crosstool脚本需要的源代码文件 47

4.2.3 crosstool脚本代码修改 47

4.2.4 编译安装及测试 48

4.3 源代码编译的制作方式 49

4.3.1 获取源码及工具 49

4.3.2 配置工作环境 50

4.3.3 配置编译安装binutils 51

4.3.4 配置编译安装无abi支持的GCC 51

4.3.5 编译glibc所需要的内核头文件 55

4.3.6 配置编译安装glibc 55

4.3.7 配置编译安装完整的GCC 57

4.3.8 测试编译成功的交叉编译工具链 59

4.3.9 使用新选项sysroot对交叉编译工具链进行完美化 60

4.4 基于crosstool-ng工具制作交叉编译工具链 61

4.4.1 获取crosstool-ng的源代码 62

4.4.2 获取crosstool-ng脚本需要的源代码文件 62

4.4.3 准备crosstool-ng的安装环境 62

4.4.4 安装crosstool-ng 63

4.4.5 配置编译的交叉编译工具链参数 63

4.4.6 编译交叉工具链 70

4.4.7 测试编译成功的交叉编译工具链 71

4.5 小结 72

第5章 构建BootLoader 73

5.1 BootLoader介绍 73

5.1.1 BootLoader概述 73

5.1.2 BootLoader的分类 77

5.2 多平台引导程序——U-Boot 78

5.2.1 U-Boot简述 78

5.2.2 U-Boot的功能特性 79

5.2.3 U-Boot目录结构 79

5.3 U-Boot的移植过程 80

5.3.1 安装和使用源代码阅读工具Source Insight 80

5.3.2 U-Boot的编译初步 82

5.3.3 分析U-Boot的第一阶段代码(cpu/arm920t/start.S) 83

5.3.4 分析U-Boot的第二阶段代码 88

5.3.5 继续移植、编译U-Boot 90

5.3.6 U-Boot常用命令使用简介 94

5.3.7 U-Boot命令实现框架的分析 98

5.3.8 U-Boot引导Linux操作系统的过程分析 104

5.3.9 让U-Boot支持从USB slave接口获得数据 110

5.3.10 让U-Boot支持读写Yaffs文件系统 110

5.3.11 增加mtd设备层支持 112

5.3.12 光盘中的补丁使用 113

5.4 实战:制作小型的能够快速引导内核的iBoot 113

5.4.1 iBoot简介 113

5.4.2 iBoot源码目录结构及说明 114

5.4.3 iBoot代码解释 114

5.5 小结 138

第6章 构建嵌入式Linux内核 139

6.1 Linux内核简介 139

6.2 Linux内核版本历史 140

6.3 Linux内核源代码目录结构 141

6.4 Linux编译运行体验 142

6.5 Kbuild——Linux内核构造框架 144

6.5.1 内核make流程 144

6.5.2 Kbuild简介 145

6.5.3 make%config的实现过程 145

6.5.4 make menuconfig配置解析 147

6.5.5 Kbuild机制实现原理 148

6.5.6 Kconfig语法 149

6.5.7 实战:添加DM9000网卡驱动 153

6.5.8 zImage文件组成结构 154

6.5.9 uImage和zImage的关系 156

6.5.10 zImage在内存中的布局 157

6.5.11 内核的真实执行过程 161

6.5.12 在移植中需要为开发板做哪些改动 161

6.6 创建目标平台——my2440 162

6.6.1 基于三星SMDK2440创建目标平台 162

6.6.2 时钟源频率的更改 165

6.6.3 机器码的修改 165

6.6.4 运行测试 166

6.7 Nand Flash驱动的移植与分区更改 169

6.7.1 内核如何管理Nand Flash 169

6.7.2 更改Nand Flash的分区结构 171

6.7.3 配置内核支持Nand Flash 172

6.7.4 测试Nand Flash分区信息 172

6.8 yaffs2文件系统移植 173

6.8.1 yaffs2文件系统说明 173

6.8.2 获得yaffs2文件系统的内核补丁 177

6.8.3 配置内核支持yaffs2文件系统 177

6.8.4 测试yaffs2文件系统 180

6.9 网卡设备的移植——DM9000 181

6.9.1 内核中网卡的移植方法 181

6.9.2 DM9000网卡芯片特性 182

6.9.3 DM9000网卡移植过程 182

6.9.4 配置内核支持DM9000网卡驱动 190

6.9.5 测试DM9000网卡设备工作状态 191

6.10 显示设备LCD的移植 192

6.10.1 显示屏简介 192

6.10.2 2440LCD控制器 192

6.10.3 内核中的frame buffer显示框架 197

6.10.4 设置LCD在内核中的硬件资源 200

6.10.5 增加各种LCD设备类型的支持 205

6.10.6 配置内核支持LCD平台设备驱动 208

6.10.7 测试LCD在开发板上的运行情况 209

6.11 修改Linux内核的Logo信息 209

6.11.1 Linux Logo显示流程 209

6.11.2 使用工具制作Logo 210

6.11.3 去除屏幕上显示的光标 211

6.12 UDA1341音频设备移植 212

6.12.1 数字音频处理简介 212

6.12.2 Linux音频驱动框架 212

6.12.3 UDA1341与S3C2440硬件接口说明 213

6.12.4 S3C2410-UDA1341驱动主要结构 215

6.12.5 移植UDA1341驱动 217

6.12.6 UDA1341音频测试 219

6.13 SD卡设备移植 220

6.13.1 SD卡简介 220

6.13.2 MMC/SD卡SDIO接口与S3C2440硬件接口 220

6.13.3 Linux内核MMC/SD驱动程序框架 222

6.13.4 移植MMC/SD卡驱动 222

6.13.5 测试SD卡 224

6.14 触摸屏设备驱动移植 225

6.14.1 触摸屏硬件接口说明 225

6.14.2 内核input子系统 226

6.14.3 配置内核支持触摸屏设备 227

6.14.4 测试触摸屏 232

6.15 LED设备移植 233

6.15.1 LED硬件接口 233

6.15.2 Linux的杂项(misc)设备 233

6.15.3 移植LED设备驱动 238

6.15.4 配置内核支持LED设备 242

6.15.5 测试LED设备 242

6.16 用户按键设备移植 242

6.16.1 按键的硬件接口 242

6.16.2 移植按键设备驱动 244

6.16.3 配置内核支持my2440按键 248

6.16.4 测试按键 249

6.17 看门狗设备移植 249

6.17.1 看门狗工作原理 249

6.17.2 配置内核支持看门狗设备 250

6.17.3 测试看门狗 251

6.18 内核中其余部分的移植步骤 252

6.18.1 PWM蜂鸣器移植 252

6.18.2 RTC实时时钟移植 253

6.18.3 USB设备移植 254

6.18.4 其他必选项 256

6.19 利用光盘补丁制作内核镜像 257

6.20 小结 257

第7章 构建嵌入式Linux文件系统 259

7.1 嵌入式Linux文件系统简介 259

7.1.1 嵌入式文件系统概述 259

7.1.2 MTD设备与Flash文件系统简介 259

7.2 嵌入式Linux常用的文件系统 261

7.2.1 ramfs文件系统 261

7.2.2 tmpfs文件系统 261

7.2.3 romfs文件系统 263

7.2.4 cramfs文件系统 264

7.2.5 jffs2文件系统 264

7.2.6 yaffs文件系统 265

7.2.7 ubi文件系统 265

7.3 详解制作根文件系统 266

7.3.1 FHS标准介绍 266

7.3.2 编译安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录 267

7.3.3 利用交叉编译工具链构建/lib目录 268

7.3.4 手工构建/etc目录 271

7.3.5 手工构建最简化的/dev目录 272

7.3.6 使用启动脚本完成/proc、/sys、/dev、/tmp、/var等目录的完整构建 274

7.3.7 制作根文件系统的jffs2镜像文件 279

7.3.8 制作根文件系统的yaffs2镜像文件 279

7.3.9 使用U-Boot的nfs命令挂载远程文件系统 290

7.3.10 使用dnw工具烧写到开发板测试 290

7.4 构建嵌入式Linux应用程序系统 291

7.4.1 辅助处理工具的移植 291

7.4.2 mp3播放器madplay的移植 295

7.4.3 主要网络服务器的移植与使用 298

7.4.4 数据库程序的移植与使用 304

7.5 小结 307

第8章 构建Qt图形系统 309

8.1 Qt系统简介 309

8.1.1 Qt的分类和发展 310

8.1.2 Qt的应用领域 311

8.1.3 Qt的资源获取 312

8.1.4 Qt的环境搭建 312

8.1.5 Qt Creator IDE开发环境 313

8.1.6 Qt Designer工具开发GUI图形应用 315

8.2 配置目标机环境 316

8.2.1 编译tslib库 316

8.2.2 编译Qt源码 317

8.2.3 配置目标机的Qt运行环境 320

8.2.4 制作Qt根文件系统 322

8.2.5 测试运行触摸屏和Qt程序 326

8.2.6 Qt运行时的段错误问题解决 326

8.2.7 解决黑屏问题 332

8.3 Qt应用程序开发指南 333

8.3.1 建立工程 333

8.3.2 如何使用信号与槽 337

8.3.3 移植Qt程序到开发板中运行 338

8.4 gdb/gdbserver远程代码调试 340

8.4.1 gdb/gdbserver远程调试介绍 340

8.4.2 gdb源代码的下载和编译 340

8.4.3 gdb远程调试命令 341

8.4.4 gdb/gdbserver远程调试应用程序实例 342

8.5 Qt的快速有效开发 345

8.5.1 Qt最新特性说明 345

8.5.2 Qt Quick(QML)使用 348

8.5.3 Qt移动开发 353

8.5.4 让Android系统支持Qt应用程序 353

8.6 小结 354

参考文献 355

后记 356