《GNU Linux嵌入式快速编程》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)鲁道夫·焦梅蒂著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2018
  • ISBN:9787111598299
  • 页数:488 页
图书介绍:本书可以分为两大部分:其中第一部分是第二部分的基础。第一部分介绍如何安装一个宿主机和开发系统以及如何通过串口控制台访问嵌入式平台。首先将看到一些引导加载程序的命令以及C的编译器和交叉编译器,之后会介绍内核模块、设备驱动程序以及一些基于网络文件系统的文件系统。读者会在主机上使用模拟器来运行一个完整的目标机Debian系统,包括在Bash、PHP和Python下面的系统守护进程和脚本程序,以及闪存和Linux的MTD。接着会引入JFFS2和UBIFS系统,以及两个非常著名的嵌入式系统Yocto和OpenWrt。第二部分开始深入介绍所有外围设备,包括其所支持的嵌入式工具包以及如何访问和使用它们,并通过实例展示如何管理它们。

第一部分 基础知识 2

第1章 开发系统的安装 2

1.1 嵌入式术语 2

1.2 系统概述 4

1.2.1 BeagleBone Black开发平台 4

1.2.2 SAMA5D3 Xplained开发平台 6

1.2.3 Wandboard开发平台 8

1.3 安装开发系统 11

1.3.1 设置宿主机 12

1.3.2 设置BeagleBone Black开发平台 14

1.3.3 设置SAMA5D3 Xplained开发平台 24

1.3.4 设置Wandboard开发平台 30

1.4 设置开发系统 35

1.4.1 通过USB、网络、overlay系统设置BeagleBone Black 36

1.4.2 通过USB、网络设置SAMA5D3 Xplained 39

1.4.3 通过USB、有线网络和无线网络设置Wandboard 42

1.4.4 通用设置 45

1.5 总结 46

第2章 管理系统控制台 47

2.1 基本操作系统管理 47

2.1.1 文件操作和命令 47

2.1.2 软件包管理 55

2.1.3 管理内核消息 60

2.2 快速浏览bootloader 62

2.2.1 环境 63

2.2.2 管理存储设备 65

2.2.3 GPIO管理 69

2.2.4 访问一个12C设备 70

2.2.5 从网络加载文件 71

2.2.6 内核命令行 75

2.3 总结 76

第3章 C编译器、设备驱动及其开发技术 77

3.1 C编译器 77

3.1.1 宿主机和目标板不同的体系结构 78

3.1.2 编译一个C程序 80

3.1.3 编译一个内核模块 85

3.2 内核和DTS文件 87

3.2.1 重新编译内核 87

3.2.2 设备树 91

3.3 什么是设备驱动? 93

3.3.1 字符设备、块设备和网络设备 94

3.3.2 模块与内置设备 95

3.3.3 modutils(管理内核模块的一个软件包) 95

3.3.4 编写一个设备驱动 97

3.4 根文件系统 106

3.4.1 /dev目录 107

3.4.2 tmpfs文件系统 109

3.4.3 procfs文件系统 110

3.4.4 sysfs文件系统 113

3.5 网络文件系统 115

3.5.1 本机输出一个NFS 116

3.5.2 设置内核以挂载NFS 117

3.5.3 通过U-Boot和内核命令行使用NFS 119

3.5.4 NFS开发 122

3.6 模拟器的使用 122

3.6.1 执行一个程序 123

3.6.2 进入一个ARM的根文件系统树 124

3.7 总结 128

第4章 使用脚本和系统守护进程的快速编程 129

4.1 设置系统 129

4.2 系统守护进程 130

4.2.1 有用的和即用的守护进程 131

4.2.2 系统守护进程管理 132

4.3 脚本编程语言 149

4.3.1 基于PHP管理LED 150

4.3.2 基于Python管理LED 153

4.3.3 基于Bash管理LED 155

4.4 编写自定义守护进程 159

4.4.1 基于C的守护进程 160

4.4.2 基于PHP的守护进程 161

4.4.3 基于Python的守护进程 162

4.4.4 基于Bash的守护进程 162

4.5 总结 163

第5章 配置一个嵌入式操作系统 164

5.1 MTD与块设备 164

5.1.1 什么是MTD设备 165

5.1.2 管理MTD设备 167

5.1.3 Flash存储系统 170

5.2 OpenWrt系统 179

5.2.1 使用缺省配置 180

5.2.2 添加(准)LAMP系统 188

5.2.3 添加自定义配置 197

5.3 Yocto系统 200

5.3.1 使用缺省配置 201

5.3.2 添加图形支持 210

5.3.3 添加自定义程序 212

5.4 总结 215

第二部分 外围设备 218

第6章 通用输入输出信号——GPIO 218

6.1 GPIO 218

6.1.1 BeagleBone Black系统下的GPIO 221

6.1.2 SAMA5D3 Xplained系统下的GPIO 221

6.1.3 Wandboard系统下的GPIO 222

6.2 Linux下的GPIO 223

6.3 访问GPIO 225

6.3.1 基于Bash的使用 225

6.3.2 基于C的使用 227

6.4 基于脚本语言使用GPIO 234

6.4.1 基于PHP的使用 235

6.4.2 基于Python的使用 236

6.5 内核管理GPIO 237

6.5.1 使用GPIO的输入设备 238

6.5.2 LED和触发器 244

6.6 总结 248

第7章 串行端口和TTY设备——TYY 249

7.1 TTY、串行和串口线 249

7.1.1 电气线路 250

7.1.2 BeagleBone Black系统下的TTY 251

7.1.3 SAMA5D3 Xplained系统下的TTY 253

7.1.4 Wandboard系统下的TTY 254

7.2 串行端口的实现 254

7.3 Linux系统下的串行端口 255

7.4 通信参数 256

7.5 访问TTY 256

7.5.1 距离传感器 257

7.5.2 LF低频RFID读写器 261

7.6 使用SLIP管理内核中的TTY 263

7.7 总结 268

第8章 通用串行总线——USB 269

8.1 通用串行总线 269

8.1.1 电气线路 270

8.1.2 BeagleBone Black系统下的USB端口 270

8.1.3 SAMA5D3 Xplained系统下的USB端口 270

8.1.4 Wandboard系统下的USB端口 271

8.2 Linux下的USB总线 271

8.2.1 USB主机介绍 272

8.2.2 USB设备介绍 275

8.3 USB工具 284

8.4 raw USB总线 286

8.5 总结 290

第9章 内部集成电路—I2C 291

9.1 内部集成电路总线 291

9.1.1 电子线路 292

9.1.2 SAMA5D3 Xplained系统下的I2C端口 293

9.1.3 Wandboard系统下的I2C端口 294

9.2 Linux系统下的I2C总线 294

9.3 I2C工具 295

9.4 访问I2C设备 296

9.4.1 EEPROM、ADC和IO扩展板 296

9.4.2 温湿度和压力传感器 303

9.4.3 串行端口 307

9.5 raw I2C总线 310

9.5.1 基于C写入数据 310

9.5.2 基于Python读取数据 313

9.6 总结 315

第10章 串行外设接口——SPI 316

10.1 串行外设接口总线 316

10.1.1 电气线路 317

10.1.2 BeagleBone Black系统下的SPI端口 318

10.1.3 SAMA5D3 Xplained系统下的SPI端口 320

10.1.4 Wandboard系统下的SPI端口 322

10.2 Linux下的SPI总线 323

10.3 SPI工具 323

10.4 访问SPI设备 324

10.4.1 LCD 325

10.4.2 串行端口 327

10.5 raw SPI总线 330

10.5.1 基于C的数据交换 330

10.5.2 基于Python的数据交换 332

10.6 总结 337

第11章 1-Wire——W1 338

11.1 1-Wire总线 338

11.1.1 电气线路 339

11.1.2 BeagleBone Black系统下的1-Wire端口 340

11.1.3 SAMA5D3 Xplained系统下的1-W端口 341

11.1.4 Wandboard系统下的1-Wire端口 341

11.2 Linux下的1-Wire总线 341

11.3 访问1-Wire设备 343

11.3.1 使用GPIO接口 343

11.3.2 使用外部控制器 345

11.4 总结 347

第12章 以太网网络设备——ETH 348

12.1 以太网网络设备 348

12.1.1 电气线路 349

12.1.2 BeagleBone Black系统下的以太网端口 349

12.1.3 SAMA5D3 Xplained系统下的以太网端口 349

12.1.4 Wandboard系统下的以太网端口 350

12.2 Linux系统下的以太网设备 350

12.3 网络工具 351

12.4 远程设备通信 352

12.4.1 一个简单的TCP客户机服务器应用程序 352

12.4.2 使用即用型网络工具 354

12.5 raw以太网总线 355

12.6 简单以太网桥接 355

12.7 总结 357

第13章 无线网络设备——WLAN 358

13.1 无线网络设备 358

13.1.1 电器线路 359

13.1.2 BeagleBone Black系统下的WLAN设备 359

13.1.3 SAMA5D3 Xplained系统下的WLAN设备 359

13.1.4 Wandboard系统下的WLAN设备 359

13.2 Linux系统中的WLAN设备 360

13.2.1 可插拔外部WLAN设备 360

13.2.2 Wi-Fi操作模式 361

13.3 无线工具 361

13.4 WPAsupplicant 365

13.5 hostapd守护进程 367

13.6 总结 371

第14章 控制器局域网——CAN 372

14.1 CAN总线 372

14.1.1 电气线路 373

14.1.2 BeagleBone Black系统下的CAN端口 374

14.1.3 SAMA5D3 Xplained系统下的CAN端口 375

14.1.4 Wandboard系统下的CAN端口 376

14.2 Linux系统中的CAN总线 376

14.3 can-utils包 377

14.4 raw CAN总线 379

14.5 通过CAN总线交换数据 380

14.5.1 使用板级控制器 381

14.5.2 使用外部控制器 383

14.6 总结 386

第15章 声音设备——SND 387

15.1 声音设备 387

15.1.1 电气线路 390

15.1.2 BeagleBone Black系统下的声音设备 390

15.1.3 SAMA5D3 Xplained系统下的声音设备 391

15.1.4 Wandboard系统下的声音设备 391

15.2 Linux系统中的声音 392

15.3 音频工具 395

15.3.1 ALSA工具 395

15.3.2 Madplay 400

15.3.3 MPlayer 401

15.3.4 Sox 402

15.4 USB音频设备组 407

15.5 管理声音设备 408

15.5.1 添加一个音频编解码器 408

15.5.2 一个简单的声音示波器 413

15.6 总结 417

第16章 视频设备—V4L 418

16.1 视频设备 418

16.1.1 电气线路 421

16.1.2 BeagleBone Black系统下的视频设备 422

16.1.3 SAMA5D3 Xplaioned系统下的视频设备 422

16.1.4 Wandboard系统下的视频设备 422

16.2 Linux中的视频设备 423

16.3 视频工具 423

16.4 USB视频类设备 426

16.5 管理视频设备 430

16.5.1 在网络上流式传输视频 430

16.5.2 捕获运动 434

16.6 总结 441

第17章 模数转换器——ADC 442

17.1 模数转换器 442

17.1.1 电气线路 443

17.1.2 BeagleBone Black系统下的ADC 443

17.1.3 SAMA5D3 Xplained系统下的ADC 444

17.1.4 Wandboard系统下的ADC 445

17.2 Linux下的ADC 445

17.3 气体检测 450

17.4 总结 455

第18章 脉宽调制——PWM 456

18.1 PWM设备 456

18.1.1 电气线路 457

18.1.2 BeagleBone Black系统下的PWM 457

18.1.3 SAMA5D3 Xplained系统下的PWM 458

18.1.4 Wandboard系统下的PWM 458

18.2 Linux下的PWM设备 458

18.3 管理伺服电动机 459

18.4 总结 460

第19章 其他杂类设备 461

19.1 数字传感器 461

19.1.1 水传感器 461

19.1.2 红外传感器 462

19.2 模拟传感器 465

19.2.1 湿度传感器 465

19.2.2 压力传感器 466

19.2.3 光传感器 467

19.3 GSM/GPRS调制解调器 468

19.4 智能卡读卡器 473

19.5 RFID读取器 476

19.6 Z-Wave设备 481

19.6.1 Z-Wave控制器 481

19.6.2 Z-Wave墙塞式传感器 484

19.6.3 Z-Wave多传感器 486

19.7 总结 487