内容简介
本书可以分为两大部分:其中部分是第二部分的基础。部分介绍如何安装一个宿主机和开发系统以及如何通过串口控制台访问嵌入式平台。首先将看到一些引导加载程序的命令以及C的编译器和交叉编译器,之后会介绍内核模块、设备驱动程序以及一些基于网络文件系统的文件系统。读者会在主机上使用模拟器来运行一个完整的目标机Debian系统,包括在Bash、PHP和Python下面的系统守护进程和脚本程序,以及闪存和Linux的MTD。接着会引入JFFS2和UBIFS系统,以及两个非常的嵌入式系统Yocto和OpenWrt。第二部分开始深入介绍所有外围设备,包括其所支持的嵌入式工具包以及如何访问和使用它们,并通过实例展示如何管理它们。
目录
目 录?Contents
译者序
前言
第一部分 基础知识
第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 访问一个I2C设备 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
第二部分 外围设备
第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
前言/序言
Preface?前 言嵌入式计算机在最近几年变得非常复杂,而开发者专注的问题应该是如何解决当下的问题,而不用在寻找更好的外设(简称为外设)或者学习如何管理它们这些方面浪费时间。 对于有经验的嵌入式程序员和工程师来说,最大的挑战是把一个想法变成现实到底需要多长时间,本书将展示如何做到这一点。
本书展示了行业中外部环境是如何通过特定的外设进行交互的。这里将使用最新的Linux内核版本4.x,软件系统基于Debian/Ubuntu系统,而嵌入式系统则使用OpenWrt和Yocto。
本书涉及的开发板平台基于目前元件市场和专业开发板制造商中最流行的CPU。在简要介绍完每个平台之后,本书将展示如何设置这些平台,使之能运行一个完整的发行版GNU/Linux并且获得对其系统控制台的访问权。之后将介绍如何针对每个平台安装一个完整的开发系统,使开发者能够运行自己开发的程序。
第一步将在嵌入式套件下进行编程,使用C、Bash脚本或者Python/PHP等语言来编程以访问外设。之后将会介绍更多的设备驱动程序和访问外设的内容以奠定坚实的基础。读者将学习通过C程序或者脚本语言(Bash/Python)和外设进行交互,以及如何为特定的硬件配置相应的设备驱动程序。
本书使用的硬件设备几乎涵盖我们所能见过的所有连接各种开发板的方式,包括I2C、SPI、USB、1-wire总线、串行总线以及各类数字和模拟设备等。
本书中使用的编程语言依据的原则是,以最快速最简单的解决方案来解决当前的问题。特别是可以找到Bash、C、PHP、Python的示例代码。
在这些章节中将会需要使用一个守护进程、一个内核模块或者可能需要重新编译整个内核。这种情况下添加了一个简短的描述,包括读者应该做什么、可以从哪里得到更多的信息和使用工具。但要说明的是,管理一个GNU/Linux系统或者内核模块等一些基本的技能是必需的。
本书涵盖内容本书可以分为两大部分:其中第一部分是第二部分的基础。第一部分介绍如何安装一个宿主机和开发系统以及如何通过串口控制台访问嵌入式套件。首先将看到一些引导加载程序的命令以及C的编译器和交叉编译器,之后会介绍内核模块、设备驱动程序以及一些基于网络文件系统的文件系统。读者也会在主机上使用模拟器来运行一个完整的目标机Debian系统,读者也会在Bash、PHP和Python下面看到系统的守护进程和脚本程序,读者还会看到闪存和Linux的MTD(Memory Technology Device,内存技术设备)。其中会介绍JFFS2和UBIFS文件系统,以及两个非常著名的嵌入式系统Yocto和OpenWrt。
下面是第一部分中每章的简短介绍:
第1章介绍目前工业应用中的最常用的三个开发环境:BeagleBone Black系统、SAMA5 D3 Xplained系统和WandBoard系统。在简要介绍了每个开发板之后,我们将看到如何设置它们以便运行一个完整的GNU/Linux系统。我们也将看到如何在每个平台(和虚拟机中)上安装一个完整的开发系统。
第2章首先将展示如何安装开发包,然后将进一步探索串口控制台和运行在其上的shell。最后将介绍引导系统bootLoader的命令。
第3章将讲述C编译器以及交叉编译器,之后我们将看到内核模块、设备驱动程序以及一些基于NFS的文件系统,最后会看到一个开发者在主机上如何使用模拟器来运行一个完整的目标机Debian系统。
第4章将介绍系统守护进程(描述它们是什么以及如何使用它们),之后将使用Bash、PHP和Python语言来进行脚本编程。
第5章首先介绍闪存和管理闪存的软件,之后将展示Linux的内存技术设备(MTD)和两个主要的文件系统JFFS2和UBIFS,并运行它们。最后将展示如今两个最著名的嵌入式系统——Yocto和OpenWrt,学习如何在这些嵌入式系统上编写应用程序,并且把该程序添加到嵌入式系统中。
第二部分开始深入介绍所有外设。如果你是一位嵌入式开发人员,在你的职业生涯所遇到的各种外设都会涉及。在本书中,对于每一个外设,都会介绍其所支持的嵌入式套件以及如何访问和使用它。对于每种设备类型,都会结合实例展示如何管理它。
下面是第二部分中每章的简短介绍:
第6章首先简短描述GPIO线路,之后将会看到它们在嵌入式套件上是如何布局的,接着再详细了解如何以非常简单(但效率低)的方式访问这些线路,然后再以更智能(但更复杂)的方式重新再次访问。最后会在内核中通过IRQ管理和LED设备支持再快速地介绍一下GPIO管理机制。
第7章将介绍串行端口(简称串口),串口是计算机中最重要的一个外设接口(至少可以让计算机用于控制自动化行业等)。简要描述串行端口和串行设备之后,我们将通过使用一个实际的串口设备来看如何在一个GNU/Linux系统中对其进行管理。最后我们将在内核中学会如何通过一条串行线来实现网线连接的两个嵌入式系统(二者通过一条以太网电缆连接)之间的通信。
第8章将介绍USB总线,这是一种通用的总线,广泛应用于现代计算机。人们可以将各种电子设备连接到计算机,例如硬盘、键盘或其他使用相同USB端口的串行设备。
第9章将介绍I2C总线,它通常用于连接板上设备,即主计算机会将所有设备都放在同一块板上。一些
GNU/Linux嵌入式快速编程 下载 mobi epub pdf txt 电子书 格式