《嵌入式Linux开发教程 下》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:周立功主编;ZLGLINUX开发团队编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2016
  • ISBN:9787512422537
  • 页数:334 页
图书介绍:本书是面向嵌入式Linux学习和产品开发的入门教程,分上下两侧。本书是下册,主要介绍了LED子系统和驱动、GPIO驱动、输入子系统和按键驱动、I2C总线和外设驱动、SPI总线和外设驱动、UART和SC16IS752驱动、SGTL5000声卡驱动移植、AP6181无线网卡驱动移植等内容。本书非常适合嵌入式Linux开发初级工程师及准备往嵌入式Linux方向发展的电子工程师和单片机工程师使用,也可作为高校非计算机专业高年级学生学习嵌入式Linux的参考教材。

第1篇 嵌入式Linux内核驱动开发 3

第1章 Linux内核裁剪和定制 3

1.1 Linux内核开发简介 3

1.2 Linux源码阅读工具 3

1.2.1 Source Insight 4

1.2.2 Eclipse 6

1.2.3 Vim+ctags+cscope 8

1.2.4 LXR 8

1.3 Linux内核源码 10

1.3.1 目录树概览 10

1.3.2 快速确定主板关联代码 12

1.4 Linux内核中的Makefile文件 14

1.4.1 顶层Makefile 15

1.4.2 子目录的Makefile 16

1.5 Linux内核中的Kconfig文件 17

1.5.1 Kconfig基本语法 17

1.5.2 配置项和配置开关 20

1.6 配置和编译Linux内核 21

1.6.1 快速配置内核 21

1.6.2 内核配置详情 23

1.6.3 编译内核 32

1.6.4 运行内核 37

1.7 Linux内核裁剪实例 38

1.7.1 GPIO子系统配置 38

1.7.2 LED子系统配置 39

1.7.3 串口配置 40

1.7.4 USB Host驱动配置 40

1.7.5 USB Gadget驱动配置 42

1.7.6 SD/MMC驱动配置 43

1.7.7 网卡驱动配置 44

1.7.8 NFS Client配置 45

1.7.9 PPP拨号配置 45

1.7.10 MTD配置 46

1.7.11 UBIFS文件系统配置 47

1.7.12 CAN驱动配置 47

1.8 EPC-28x平台内核快速编译 48

第2章 Linux设备驱动基础 49

2.1 Linux内核模块 49

2.1.1 Linux和模块 49

2.1.2 编写内核模块 49

2.1.3 最简单的内核模块 53

2.1.4 带参数的内核模块 54

2.2 Linux设备 56

2.2.1 Linux设备和分类 56

2.2.2 设备节点和设备号 56

2.2.3 设备的注册和注销 60

2.3 Linux设备和驱动 62

2.3.1 驱动在Linux中的地位 62

2.3.2 驱动的基本要素 62

2.3.3 驱动和应用程序的差别 63

2.3.4 驱动的入口和出口 63

2.3.5 支持udev设备管理方法 65

2.3.6 设备驱动的操作方法 70

2.4 字符驱动框架 74

2.4.1 字符驱动框架 74

2.4.2 测试程序 78

2.5 第一个完整意义上的驱动 80

2.5.1 ioctl命令 80

2.5.2 内核空间的ioctl 82

2.5.3 用户空间的ioctl 82

2.5.4 LED驱动范例 82

2.6 内核/用户空间的数据交换 88

2.6.1 检查地址的合法性 88

2.6.2 往用户空间传递数据 88

2.6.3 从用户空间获取数据 90

2.6.4 支持读/写的驱动范例 91

2.7 在驱动中使用中断 96

2.7.1 申请和释放中断 96

2.7.2 中断处理程序编写 98

2.7.3 按键驱动 99

2.8 混杂设备驱动编程 103

2.8.1 混杂设备和驱动 103

2.8.2 混杂设备驱动框架 104

2.9 I/O内存访问 107

2.9.1 静态I/O映射 107

2.9.2 动态I/O映射 110

2.9.3 I/O内存访问函数 110

2.10 Linux设备驱动模型 111

2.10.1 设备 111

2.10.2 驱动 113

2.10.3 总线 114

2.10.4 类 115

2.11 平台设备和驱动 117

2.11.1 资源 117

2.11.2 平台设备 119

2.11.3 平台驱动 122

2.11.4 平台驱动与普通驱动的差异 123

2.11.5 平台驱动范例 124

第3章 LED子系统和驱动 131

3.1 LED子系统驱动简介 131

3.2 LED子系统的分层结构 131

3.3 LED设备的实现 132

3.4 i.MX28平台的LED设备 135

第4章 GPIO驱动 138

4.1 GPIOLIB简介 138

4.2 GPIOLIB的内核接口 138

4.3 GPIOLIB的实现方法 139

4.4 驱动示例 141

第5章 输入子系统和按键驱动 149

5.1 输入子系统 149

5.1.1 输入子系统构成 149

5.1.2 各事件管理器详解 152

5.1.3 设备驱动 154

5.2 驱动实现 158

5.2.1 电路和原理 158

5.2.2 按键驱动实现 159

第6章 I2C总线和外设驱动 165

6.1 I2C子系统 165

6.1.1 I2C子系统的设计思路 165

6.1.2 I2C子系统的实现 169

6.1.3 I2C子系统在/sys文件系统的信息 176

6.2 I2C驱动实现示例 177

6.2.1 FM24C02A驱动的设计思路 177

6.2.2 添加FM24C02A设备 178

6.2.3 实现FM24C02A驱动 178

6.2.4 实现I2C驱动 178

第7章 SPI总线和外设驱动 185

7.1 硬件连接 185

7.2 SPI驱动架构简析 185

7.2.1 SPI核心层 186

7.2.2 SPI主控制器驱动层 186

7.2.3 SPI设备驱动层 187

7.2.4 SPI数据传输 191

7.3 SPI NOR Flash驱动 193

7.3.1 驱动实现 194

7.3.2 配置和编译 195

7.3.3 测试块设备 196

7.4 SPI数码管显示驱动 197

7.4.1 电路原理 197

7.4.2 驱动实现 198

7.4.3 驱动编译和测试 202

第8章 UART和SC16IS752驱动 204

8.1 UART驱动简析 204

8.1.1 重要数据结构 204

8.1.2 UART驱动API 208

8.2 SC16IS752芯片和电路原理 210

8.2.1 SC16IS752芯片介绍 210

8.2.2 电路原理 212

8.2.3 驱动移植思路 212

8.3 I2C接口驱动实现 212

8.3.1 定义i2c_device_id 212

8.3.2 添加注册I2C设备 213

8.3.3 I2C驱动实现 214

8.4 UART相关驱动 214

8.4.1 信息描述和数据结构 214

8.4.2 底层操作函数和实现 215

8.4.3 probe函数和实现 219

8.4.4 uart_ops函数和实现 221

8.4.5 中断处理 230

8.5 串口测试 234

第9章 SGTL5000声卡驱动移植 235

9.1 背景交代 235

9.2 电路原理图 235

9.3 驱动移植 237

9.3.1 引脚设置 237

9.3.2 添加SGTI5000 I2C设备 238

9.3.3 配置和编译 239

9.3.4 修正播放音频的问题 239

9.4 音频接口操作 242

第10章 AP6181无线网卡驱动移植 247

10.1 硬件原理图 247

10.2 驱动移植 248

10.2.1 修改引脚功能 248

10.2.2 添加mmc设备 250

10.2.3 添加驱动源码 252

10.2.4 添加唤醒中断 252

10.2.5 添加上下电控制 253

10.2.6 修改内核配置文件 254

10.2.7 配置内核 255

10.2.8 编译内核、模块驱动 256

10.3 使用网卡 256

10.3.1 加载驱动模块 256

10.3.2 连接到AP 257

第11章 SIM6320-PCIE 3G模块驱动移植 260

11.1 驱动移植 260

11.1.1 添加驱动源码 260

11.1.2 配置内核 260

11.2 PPP拨号上网 262

第2篇 嵌入式Linux系统整合 267

第12章 嵌入式Linux和Bootloader 267

12.1 概述 267

12.1.1 系统硬件和映像布局 267

12.1.2 嵌入式Linux Bootloader 268

12.1.3 U-Boot介绍 269

12.2 U-Boot使用 270

12.2.1 U-Boot常用命令 270

12.2.2 环境变量 273

12.2.3 使用网络 275

12.2.4 NAND Flash操作 276

12.2.5 组合命令 279

12.3 U-Boot源码介绍 279

12.3.1 U-Boot目录简介 279

12.3.2 U-Boot的启动简介 280

12.3.3 U-Boot的驱动 282

12.3.4 U-Boot的命令 282

12.3.5 U-Boot的平台相关代码 283

12.3.6 U-Boot的配置文件 285

12.3.7 U-BootTools 286

12.4 U-Boot编译实例 287

12.4.1 编译说明 287

12.4.2 i.MX28U-Boot的实用工具 288

第13章 嵌入式Linux文件系统 290

13.1 根文件系统 290

13.1.1 根文件系统布局 290

13.1.2 根文件系统类型 291

13.2 使用BusyBox制作根文件系统 293

13.2.1 BusyBox介绍 293

13.2.2 交叉编译BusyBox 293

13.2.3 构建根文件系统 295

13.3 制作根文件系统镜像 299

第14章 Buildroot 301

14.1 Buildroot简介 301

14.2 安装Buildroot 301

14.3 使用Buildroot构建根文件系统 302

14.3.1 配置Buildroot 302

14.3.2 编译Builcroot 305

14.4 使用新的文件系统 307

14.4.1 完善文件系统 307

14.4.2 测试文件系统 308

14.5 发布文件系统 309

第15章 OpenWRT 313

15.1 OpenWRT简介 313

15.2 OpenWRT下载 313

15.2.1 SVN下载 313

15.2.2 Git下载 314

15.3 安装OpenWRT 314

15.4 使用OpenWRT定制文件系统 314

15.4.1 检查编译环境 314

15.4.2 配置系统 315

15.4.3 编译 316

第3篇 产品化和创意 319

第16章 产品化和创意 319

16.1 做最适合的系统 319

16.2 做可靠的系统 320

16.2.1 分区域保护 320

16.2.2 双备份 322

16.3 做用户满意的系统 322

16.4 快速启动 323

16.4.1 精简Bootloader 323

16.4.2 精简内核 324

16.4.3 精简根文件系统 332

参考文献 334