编辑推荐
通过阅读本书,读者可以快速掌握嵌入式软硬件开发技术的要点,并能够探索BBB开源硬件的奥秘,了解BeagleBone Black的优势和特色。
● 掌握BeagleBone 所需要的知识和技能,包括Linux 特征详细回顾、电子和编程技能。
● 彻底检查BeagleBone 与任何类型电路或设备接口的连接。
● 演示高级的BeagleBone 应用,例如网络通信、丰富的用户界面、图像、视频、音频,以及使用BeagleBone 的
PRU-ICSS 实时接口。
● 通过讲授基本技能来帮助你使用电子、模块或BeagleBone 及其他外部设备来进行设计。
● 本书提供了一个有力的“做中学”的方法,适用于初学者和高级用户。
内容简介
BeagleBone是一款仅有*大小的低成本Linux计算机,它可以联网并运行高级操作系统(如Android和Ubuntu Linux)。BeagleBone包含大量I/O接口,具有广泛的开源软件支持选项,只需进行简单的设置即可利用它开发应用。
本书详细介绍了BeagleBone的软硬件及其应用开发技巧,全书共分3个部分,共计13章。本书以循序渐进的方式向读者介绍了BeagleBone的软硬件、嵌入式Linux系统开发、接口电路、BeagleBone编程、BeagleBone输入/输出接口、交叉编译和Eclipse IDE、BeagleBone总线接口、物理接口、物联网、丰富的用户界面、图像及音视频、BeagleBone实时接口等内容。
本书对于发明家、制造商、学生、创业者都具有广泛的参考价值,能够帮助读者深入探索BeagleBone,挖掘其强大的使用价值。
作者简介
Derek Molloy博士,现任爱尔兰都柏林大学工程与计算学院电子工程系的高级讲师。主要讲授课程为面向对象的嵌入式系统程序设计、数字与模拟电子技术、3D计算机图形学,授课对象为在校本科生和研究生。研究领域主要是计算机技术、计算机视觉、3D图形学及可视化技术及数字化教学。
目录
- 第1部分 BeagleBone基础知识
- 第1章 BeagleBone硬件 3
- 1.1 平台介绍 3
- 1.1.1 谁该使用BeagleBone 4
- 1.1.2 何时使用BeagleBone 5
- 1.1.3 何时你不该使用BeagleBone 5
- 1.2 BeagleBone文档 6
- 1.3 BeagleBone硬件 7
- 1.3.1 BeagleBone版本 7
- 1.3.2 BeagleBone Black硬件 8
- 1.4 BeagleBone 配件 12
- 1.4.1 重点推荐使用的配件 12
- 1.4.2 可选配件 14
- 1.5 capes 16
- 1.6 怎样做会损坏你的BeagleBone系统 17
- 1.7 小结 18
- 1.8 支持 18
- 第2章 BeagleBone Black软件 19
- 2.1 BeagleBone运行Linux 19
- 2.2 BeagleBone Black通信 20
- 2.2.1 安装驱动程序 21
- 2.2.2 网络连接 21
- 2.2.3 BeagleBone Black通信 26
- 2.3 控制BeagleBone 30
- 2.3.1 基本的Linux命令 30
- 2.3.2 基本的文件编辑 34
- 2.3.3 现在几点了 35
- 2.3.4 打包管理 37
- 2.3.5 与BeagleBone Black主板上的LED交互 39
- 2.3.6 关机 40
- 2.4 Node.js、Cloud9 和BoneScript 41
- 2.5 小结 45
- 2.6 延伸阅读 45
- 第3章 嵌入式Linux系统开发 47
- 3.1 嵌入式Linux基础 47
- 3.1.1 嵌入式Linux提供了什么 48
- 3.1.2 Linux是开源的、免费的 48
- 3.2 BeagleBone Black的启动 49
- 3.2.1 BeagleBone Black的BootLoaders 49
- 3.2.2 内核态和用户态 53
- 3.2.3 System V init(SysVinit) 54
- 3.3 管理Linux系统 56
- 3.3.1 超级用户 56
- 3.3.2 系统管理员 57
- 3.3.3 开发文件系统 64
- 3.3.4 Linux系统命令 70
- 3.3.5 Linux进程 77
- 3.3.6 其他Linux话题 80
- 3.4 Git 80
- 3.4.1 开始使用Git 81
- 3.4.2 高级Git 84
- 3.4.3 Git小结 87
- 3.5 桌面虚拟化 88
- 3.6 本书的实例代码 89
- 3.7 小结 89
- 3.8 延伸阅读 90
- 第4章 接口电路 91
- 4.1 推荐设备 91
- 4.1.1 数字万用表 91
- 4.1.2 示波器 92
- 4.2 基本电路原理 93
- 4.2.1 电压、电流、电阻、欧姆定律 93
- 4.2.2 分压电路 95
- 4.2.3 分流电路 96
- 4.2.4 面包板实现电路 97
- 4.2.5 数字万用表(DMM)和面包板 98
- 4.2.6 电路例子:电压稳压 98
- 4.3 分立元件 100
- 4.3.1 二极管 100
- 4.3.2 LED(LEDs) 101
- 4.3.3 滤波和去耦电容 103
- 4.3.4 晶体管 104
- 4.3.5 光耦合器/光电隔离器 109
- 4.3.6 开关和按钮 110
- 4.3.7 滞后 112
- 4.4 逻辑门 112
- 4.4.1 浮空输入 116
- 4.4.2 上拉和下拉电阻 116
- 4.4.3 集电极开路和漏极开路输出 117
- 4.4.4 门互连 118
- 4.5 模数转换 119
- 4.5.1 采样率 119
- 4.5.2 量化 119
- 4.5.3 运算放大器 120
- 4.6 结论与建议 123
- 4.7 小结 123
- 4.8 延伸阅读 123
- 注释 124
- 第5章 BeagleBone编程 125
- 5.1 介绍 125
- 5.1.1 各种语言的评估 126
- 5.1.2 设置BeagleBone Black的CPU频率 128
- 5.2 脚本语言 128
- 5.2.1 脚本语言的选择 128
- 5.2.2 Bash 129
- 5.2.3 Perl 132
- 5.2.4 Python 133
- 5.3 JavaScript和Java 135
- 5.3.1 BeagleBone Black上的JavaScript和Node.js 135
- 5.3.2 BeagleBone Black上的Java 138
- 5.4 BeagleBone Black上的C和C++ 141
- 5.4.1 C和C++语言概述 142
- 5.4.2 用C编写LED灯闪烁程序 154
- 5.4.3 C和C++ 156
- 5.4.4 编写自己的Multi-CallBinary 159
- 5.5 带有类的C++ 160
- 5.5.1 面向对象编程的概述 160
- 5.5.2 面向对象LED闪烁的代码 163
- 5.5.3 /Proc——proc文件系统 167
- 5.5.4 GLIBC和系统调用 167
- 5.6 小结 169
- 5.7 延伸阅读 170
- 注释 170
- 第2部分 接口、控制和通信
- 第6章 BeagleBone输入/输出接口 173
- 6.1 通用输入/输出口 173
- 6.1.1 GPIO接口介绍 173
- 6.1.2 GPIO数字输出 175
- 6.1.3 GPIO数字输入 178
- 6.1.4 GPIO配置 179
- 6.1.5 C++控制GPIO口 185
- 6.2 Linux设备树 189
- 6.2.1 扁平设备树 190
- 6.2.2 设备树覆盖层 191
- 6.2.3 BeagleBone Black外设管理器 193
- 6.3 模拟输入和输出 197
- 6.3.1 模拟输入 197
- 6.3.2 模拟输出 201
- 6.4 高级GPIO主题 204
- 6.4.1 更多C++编程 205
- 6.4.2 增强型GPIO类 208
- 6.4.3 GPIO-KEYS 212
- 6.4.4 不通过sudo命令使用GPIO 216
- 6.5 小结 218
- 6.6 延伸阅读 218
- 注释 218
- 第7章 交叉编译和EclipseIDE 219
- 7.1 搭建交叉编译链 219
- 7.2 交叉编译第三方库(Multiarch) 223
- 7.3 安装change root 224
- 7.3.1 安装armhf change root 224
- 7.3.2 模拟armhf体系结构 225
- 7.4 使用Eclipse进行交叉编译 226
- 7.4.1 在桌面Linux上安装Eclipse 227
- 7.4.2 配置Eclipse支持交叉编译 227
- 7.4.3 Remote System Explorer 229
- 7.4.4 Eclipse中集成GitHub 231
- 7.4.5 远程调试 232
- 7.4.6 自动生成文档(Doxygen) 234
- 7.5 构建BeagleBone Black上的Debian 237
- 7.6 小结 238
- 7.7 延伸阅读 238
- 第8章 BeagleBone总线接口 239
- 8.1 总线通信介绍 239
- 8.2 I2C 240
- 8.2.1 I2C硬件 240
- 8.2.2 ADXL345加速度计 242
- 8.2.3 使用Linux I2C工具 243
- 8.2.4 C语言中的I2C通信 248
- 8.2.5 C++类封装I2C设备 250
- 8.3 SPI 253
- 8.3.1 SPI硬件 253
- 8.3.2 BeagleBone Black上的SPI 255
- 8.3.3 第1个SPI应用(74HC595) 257
- 8.3.4 C++的双向SPI通信 262
- 8.3.5 BeagleBone Black上多个SPI从设备 270
- 8.4 UART 271
- 8.4.1 BeagleBone Black上的UART 272
- 8.4.2 Arduino UART实例 273
- 8.4.3 BeagleBone Arduino串行通信 275
- 8.4.4 一个Arduino的UART命令控制 278
- 8.5 逻辑电平传输 282
- 8.6 小结 284
- 8.7 延伸阅读 284
- 注释 284
- 第9章 物理接口 285
- 9.1 执行器接口 285
- 9.1.1 直流电机 286
- 9.1.2 步进电机 292
- 9.1.3 继电器 297
- 9.2 模拟传感器接口 298
- 9.2.1 BeagleBone Black ADC输入引脚的保护 299
- 9.2.2 模拟传感器的信号调节 302
- 9.2.3 模拟接口实例 305
- 9.3 显示模块接口 309
- 9.3.1 七段数码管显示 309
- 9.3.2 字符LCD模块 313
- 9.4 远程控制BeagleBone Black 317
- 9.4.1 使用Systemd管理服务 317
- 9.4.2 BeagleBone Black通过串口连接到桌面计算机 319
- 9.4.3 开机启动自定义服务 322
- 9.4.4 蓝牙 324
- 9.5 构建动态链接库 328
- 9.6 小结 329
- 9.7 延伸阅读 329
- 注释 329
- 第3部分 高级BeagleBone系统
- 第10章 物联网 333
- 10.1 物联网简介 333
- 10.2 传感器详细介绍 335
- 10.2.1 室内温度传感器 335
- 10.2.2 德州仪器的SensorTag 336
- 10.3 BeagleBone Black作为Web服务器 339
- 10.3.1 安装Web服务器 339
- 10.3.2 配置Apache Web服务器 340
- 10.3.3 创建Web页面和Web脚本 341
- 10.3.4 BeagleBone中运行PHP 343
- 10.3.5 用自定义的Web服务替换Bone101 344
- 10.4 C/C++开发的Web客户端 345
- 10.4.1 网络通信基础 345
- 10.4.2 C/C++开发的Web客户端 346
- 10.4.3 基于OpenSSL的安全通信 349
- 10.5 BeagleBone Black作为网络传感器 350
- 10.5.1 ThingSpeak 350
- 10.5.2 Linux Cron调度程序 353
- 10.5.3 Xively 356
- 10.5.4 在BeagleBone Black上发送E-mail 360
- 10.5.5 IFTTT(If This TheThat) 362
- 10.6 C++开发的客户端/服务器 363
- 10.7 远程管理IoT设备 366
- 10.7.1 BeagleBone Black的远程监控 366
- 10.7.2 Linux的看门狗定时器 367
- 10.8 IoT的物理网络 369
- 10.8.1 BeagleBone Black和Wi-Fi 369
- 10.8.2 静态IP地址 373
- 10.8.3 有源以太网供电(PoE) 373
- 10.9 小结 375
- 10.10 延伸阅读 376
- 注释 376
- 第11章 丰富的用户界面 377
- 11.1 丰富的BeagleBone Black UI架构 377
- 11.1.1 BeagleBone Black作为通用计算机 378
- 11.1.2 配备LCD触摸屏cape的BeagleBone Black 380
- 11.1.3 虚拟网络连接(VNC) 381
- 11.1.4 胖客户端应用程序 383
- 11.2 丰富的UI应用程序开发 384
- 11.2.1 BeagleBone Black上的GTK+开发介绍 384
- 11.2.2 BeagleBone Black上的Qt开发介绍 390
- 11.3 Qt入门 392
- 11.3.1 Qt概念 392
- 11.3.2 Qt开发工具 394
- 11.3.3 Qt温度传感器的GUI应用程序 395
- 11.3.4 简单的Qt跨平台开发 400
- 11.4 远程UI应用程序开发 402
- 11.4.1 Qt胖客户端GUI应用程序 403
- 11.4.2 多线程服务器应用程序 406
- 11.4.3 多线程温度服务 409
- 11.4.4 胖客户端作为服务器 410
- 11.5 交叉编译Qt应用程序 416
- 11.5.1 从源代码构建Qt库 417
- 11.5.2 远程部署测试应用程序 417
- 11.6 小结 418
- 11.7 延伸阅读 418
- 第12章 图像、视频和音频 419
- 12.1 图像和视频采集 419
- 12.1.1 USB网络摄像头 420
- 12.1.2 Video4Linux2(V4L2) 421
- 12.2 视频流 427
- 12.3 图像处理和计算机视觉 428
- 12.3.1 OpenCV图像处理 428
- 12.3.2 OpenCV计算机视觉 431
- 12.3.3 Boost库 434
- 12.4 BeagleBone音频 434
- 12.4.1 核心音频软件工具 435
- 12.4.2 BeagleBone Black音频设备 435
- 12.4.3 文本转语音 443
- 12.5 小结 446
- 12.6 延伸阅读 446
- 第13章 BeagleBone实时接口 447
- 13.1 实时BeagleBone 447
- 13.1.1 实时内核 447
- 13.1.2 实时硬件解决方案 448
- 13.2 PRU-ICSS架构 449
- 13.3 开始使用PRU-ICSS 450
- 13.3.1 PRU-ICSS增强型GPIO模块 451
- 13.3.2 PRU-ICSS设备树覆盖层 452
- 13.3.3 PRU-ICSS包 454
- 13.3.4 第1个PRU程序 455
- 13.4 PRU-ICSS详细介绍 458
- 13.4.1 寄存器 458
- 13.4.2 本地和全局存储 460
- 13.4.3 PRU汇编指令集 461
- 13.5 PRU-ICSS应用程序 463
- 13.5.1 PRU-ICSS性能测试 463
- 13.5.2 通用Linux GPIO的使用 464
- 13.5.3 PRU PWM生成器 467
- 13.5.4 PRU正弦波发生器 470
- 13.5.5 超声波传感器的应用 472
- 13.6 其他PRU-ICSS工具 478
- 13.6.1 PRU调试器 478
- 13.6.2 TI的PRU C编译器 479
- 13.7 小结 481
- 13.8 延伸阅读 481