目 录
第一章 硬件概述 1
1.1 树莓派的输入和输出接口 2
1.1.1 USB端口 2
1.1.2 局域网(LAN)端口 3
1.1.3 摄像头串行接口(CSI) 3
1.1.4 高清晰度多媒体端口(HDMI) 4
1.1.5 给树莓派加电! 5
1.1.6 显示器串行端口(DSI) 5
1.1.7 SD卡插槽 5
1.1.8 GPIO接口 6
1.1.9 模拟视频输出端口 8
1.1.10 JTAG接口 9
1.1.11 音频输出 9
1.1.12 发光二极管(LED) 10
1.2 树莓派的大脑 10
1.2.1 处理器流水线 11
1.2.2 缓存 13
1.2.3 内存芯片 14
1.2.4 电源状态 14
1.2.5 效能功耗比 15
1.3 树莓派的眼睛 15
1.4 启功时发生了什么事情? 16
1.5 你面前的树莓派 16
1.6 总结 17
第2章 安装Fedora 18
2.1 镜像文件分析 19
2.1.1 使用图形界面安装程序 19
2.1.2 使用命令行 20
2.1.3 在Windows上安装镜像 21
2.2 启动你的树莓派 22
2.2.0 哦不,是崩溃 22
2.3 配置和系统浏览 23
2.4 更新固件和操作系统 27
2.5 优化系统 29
2.5.1 优化SD卡 29
2.5.2 考虑内存交换 31
2.5.3 优化CPU周期 31
2.6 I/O调优 32
2.6.1 理解完全公平队列(CFQ)调度器 32
2.6.2 理解等待(Noop)调度器 34
2.6.3 改变调度器 34
2.7 轻量级应用程序和工具 35
2.8 总结 36
第3章 一个简单的温度传感器 37
3.1 面包板GPIO和引脚 38
3.1.1 传感器 40
3.1.2 神奇的一线总线 42
3.2 构建传感器 44
3.2.1 使用小的黑色的DS18B20 45
3.2.2 从Linux上读取DS18B20 48
3.2.3 使用大的蓝色的DHT11 50
3.2.4 从Linux上读取DHT11 51
3.3 为传感器撰写脚本 55
3.4 总结 58
第4章 驱动一个简单的字符型液晶显示器(LCD) 59
4.1 拆开HD44780和它的翻版 60
4.2 准备硬件 63
4.2.1 液晶显示器的准备工作 63
4.2.2 移位寄存器 65
4.2.3 I2C总线 66
4.2.4 全部组装在一起 68
4.2.5 查找你的I2C设备 72
4.3 软件和液晶显示器客户端 74
4.4 服务器配置 75
4.4.1 测试服务器 76
4.4.2 运行客户端 77
4.4.3 显示文本 78
4.5 总结 81
第5章 安全监控设备 82
5.1 被动红外(PIR)介绍 83
5.2 压力垫介绍 84
5.3 组装设备 86
5.3.1 压力垫 86
5.3.2 使用GPIO引脚 88
5.3.3 关于压力垫的状态的脚本 89
5.3.4 连接被动红外 90
5.4 引出WEBrick 93
5.4.1 欢迎WEBrick 93
5.4.2 安全应用程序代码 94
5.4.3 运行安全应用程序 97
5.5 总结 98
第6章 交叉编译环境 99
6.1 交叉编译简介 99
6.2 宿主机 101
6.2.1 crosstool-NG 101
6.2.2 配置crosstool-NG 105
6.2.3 你的第一个交叉编译 111
6.3 交叉编译依赖关系 113
6.4 优化 117
6.5 总结 118
第7章 迷你媒体中心 120
7.1 为什么使用OpenELEC 121
7.1.1 使用-Ofast优化选项 121
7.1.2 使用链接时优化(LTO) 122
7.1.3 按需使用符号 122
7.1.4 最后两个优势 123
7.2 安装OpenELEC 123
7.3 解码许可证 126
7.4 第一次启动 129
7.4.1 设置日期和时间 130
7.4.2 内存分配 133
7.4.3 屏幕分辨率和显示设置 133
7.5 浏览器访问 135
7.6 手机远程控制 136
7.7 总结 138
第8章 增加实时时钟 140
8.1 计算机上最初的实时时钟 141
8.2 DS1338实时时钟 142
8.3 晶体 143
8.4 零件清单和装配 144
8.4.1 焊接适配器板 145
8.4.2 制作电池的印制电路板(PCB) 147
8.4.3 建立电路 150
8.5 软件部分 153
8.6 总结 158
第9章 串口服务器 160
9.1 到底什么是串口控制台呢? 160
9.2 串行端口?什么串行端口? 161
9.2.1 串行端口中的一点小失望 162
9.2.2 查找树莓派上的串行端口 163
9.3 UART和逻辑位移器 164
9.3.1 逻辑电平位移器可以做什么? 164
9.3.2 需要的硬件 165
9.3.3 建立电路 166
9.3.4 加电启动 168
9.4 串口的非控制台功能 172
9.5 Ser2net 172
9.6 总结 176
第10章 控制电源设备 177
10.1 交流电 178
10.1.1 隔离设备 179
10.1.2 交流电源远程控制 181
10.2 将电路组合在一起 183
10.2.1 剖析远程控制器 183
10.2.2 添加继电器 186
10.3 软件方面 188
10.3.1 使用GPIO引脚作为输出 188
10.3.2 编写一个模拟按下按钮的程序 189
10.3.3 回到WEBrick 191
10.4 总结 197
第11章 其他操作系统 198
11.1 安卓 199
11.1.1 安卓的历史 199
11.1.2 安卓系统的考虑 200
11.1.3 安装安卓系统 200
11.1.4 使用安卓系统 201
11.2 RISC OS 202
11.2.1 RISC OS的历史 202
11.2.2 RISC OS的考虑 202
11.2.3 安装RISC OS 205
11.2.4 使用RISC OS 210
11.3 Plan 9 213
11.3.1 Plan 9的历史 213
11.3.2 Plan 9的考虑 213
11.3.3 安装Plan 9 215
11.3.4 使用Plan 9 218
11.4 Gentoo 220
11.4.1 Gentto的历史 220
11.4.2 Gentoo的考虑 220
11.4.3 安装Gentoo 222
11.4.4 使用Gentoo 230
11.5 总结 230