《精通Raspberry Pi》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)盖伊著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302418870
  • 页数:459 页
图书介绍:全书分为4部分,第1部分是起步知识,介绍了Raspberry Pi的一些最基本话题,包括静态IP地址、SSH、VNC访问等;第2部分介绍硬件知识,包括电子系统、针脚、LED、重设按钮等,另外涵盖了SDRAM、CPU、USB、无线及有限广域网、SD卡、UART、GPIO、I2C总线、SPI总线等;第3部分介绍软件知识,包括boot引导、初始化、vcgencmd、Linux控制台、跨平台编译等;第4部分是实践案例。

第1章 为什么学习本书? 1

1.1 本书读者对象 1

1.2 本书主要内容 2

1.3 学习方法 2

1.4 本书的组织结构 3

1.5 本书中的软件 4

1.6 结束语 5

第2章 Raspberry Pi 7

2.1 型号 7

2.2 共有的硬件 9

2.3 选择哪一种型号? 9

第3章 准备 11

3.1 静态IP地址 11

3.2 使用SSH 12

3.3 虚拟网络计算机 13

3.3.1 显示器编号 13

3.3.2 几何尺寸 13

3.3.3 深度 14

3.3.4 像素格式 14

3.3.5 密码设置 14

3.3.6 服务器的启动 14

3.3.7 VNC查看器 14

3.3.8 停止VNC服务器 15

3.4 原型站 15

3.5 Adafruit Pi Cobbler 16

3.6 Gertboard 17

3.7 裸机 17

第4章 电源 19

4.1 计算功率 19

4.2 电流需求 20

4.3 外围设备电源 20

4.4 B型输入电源 21

4.5 A型输入电源 22

4.6 3.3 V电源 22

4.7 供电的USB集线器 22

4.8 电源适配器 22

4.8.1 一款不合适的电源 23

4.8.2 电子书适配器 23

4.8.3 最好的电源 23

4.8.4 电压测试 24

4.9 蓄电池电源 25

4.9.1 要求 25

4.9.2 余量 25

4.9.3 LM7805调节 25

4.9.4 DC-DC降压变换器 26

4.10 供电不足的征兆 28

4.11 断电 28

第5章 头带、LED和复位 29

5.1 状态指示LED灯 29

5.1.1 OK或ACT LED 29

5.1.2 PWR LED 29

5.1.3 FDX LED 30

5.1.4 LNK LED 30

5.1.5 10M或10/100 LED 30

5.2 P1头 30

5.2.1 安全模式 32

5.2.2 逻辑电平 33

5.2.3 复位时GPIo的配置 33

5.2.4 单总线驱动器 33

5.3 P5头 33

5.4 复位 34

第6章 SDRAM 37

6.1 /proc/meminfo 37

6.1.1 MemTotal(总存储器) 39

6.1.2 MemFree(空闲存储器) 39

6.1.3 Buffers(缓冲区) 40

6.1.4 Cached(高速缓存的) 40

6.1.5 SwapCached(交换的缓冲区) 40

6.1.6 Active(活跃的存储器空间) 40

6.1.7 Inactive(不活跃的存储器空间) 40

6.1.8 Active(anon) 41

6.1.9 Inactive(anon) 41

6.1.10 Active(file) 41

6.1.11 Inactive(file) 41

6.1.12 Unevictable(不可回收的) 42

6.1.13 Mlocked(被锁定的) 42

6.1.14 SwapTotal(交换的总数) 42

6.1.15 SwapFree(自由交换的数量) 42

6.1.16 Dirty 42

6.1.17 Writeback 43

6.1.18 AnonPages 43

6.1.19 Mapped 43

6.1.20 Shmem 43

6.1.21 Slab 43

6.1.22 SReclaimable 44

6.1.23 SUnreclaim 44

6.1.24 KernelStack 44

6.1.25 PageTables 44

6.1.26 NFS_Unstable 44

6.1.27 Bounce 45

6.1.28 WritebackTmp 45

6.1.29 CommitLimit 45

6.1.30 Committed_AS 46

6.1.31 VmallocTotal 47

6.1.32 VmallocUsed 47

6.1.33 VmallocChunk 47

6.2 物理存储器 47

6.3 存储器映射 48

6.3.1 地址 50

6.3.2 长度 50

6.3.3 保护 50

6.3.4 标志 50

6.3.5 文件描述符 50

6.3.6 偏移 51

6.3.7 返回值 51

6.3.8 volatile关键字 51

6.4 虚拟存储器 52

6.5 关于SDRAM的最后一点看法 52

第7章 CPU 53

7.1 鉴别 53

7.2 超频 54

7.3 执行 56

7.4 线程 57

7.4.1 pthread头文件 57

7.4.2 pthread错误处理 57

7.4.3 pthread_create(3) 58

7.4.4 pthread_attr_t 59

7.4.5 pthread_join(3) 60

7.4.6 pthread_detach(3) 61

7.4.7 pthread_self(3) 62

7.4.8 pthread_kill(3) 62

7.5 mutex 63

7.5.1 pthread_mutex_create(3) 63

7.5.2 pthread_mutex_destroy(3) 63

7.5.3 pthread_mutex_lock(3) 64

7.5.4 pthread_mutex_unlock(3) 64

7.6 条件变量 65

7.6.1 pthread_cond_init(3) 66

7.6.2 pthread_cond_destroy(3) 67

7.6.3 pthread_cond_wait(3) 67

7.6.4 pthread_cond_signal(3) 68

7.6.5 pthread_cond_broadcast(3) 68

第8章 USB 69

8.1 电源 70

8.2 供电集线器 70

8.3 USB API支持 71

8.3.1 libusb 71

8.3.2 Include文件 71

第9章 以太网 75

9.1 有线以太网 75

9.1.1 /etc/network/interfaces 76

9.1.2 改变到静态IP 76

9.1.3 测试静态IP地址 77

9.1.4 USB适配器 78

9.1.5 /etc/hosts文件 78

9.2 无线以太网 78

第10章 SD卡存储 83

10.1 SD卡媒介 83

10.2 SD卡接口 83

10.3 SD卡基础 84

10.4 Raspbian区块尺寸 84

10.5 容量和性能 86

10.6 传送模式 86

10.6.1 SPI总线模式 86

10.6.2 1位SD模式 87

10.6.3 4位SD模式 88

10.7 耗损均衡 88

第11章 UART 91

11.1 RS-232转换器 91

11.2 RS-232 93

11.2.1 起始位 93

11.2.2 数据位 94

11.2.3 奇偶位 94

11.2.4 停止位 94

11.2.5 波特率 95

11.2.6 中断 96

11.2.7 流控制 96

11.3 Raspberry Pi UART 98

11.4 ARM PL011 UART 98

11.4.1 RTS/CTS访问 98

11.4.2 PL011 UART特性 99

11.5 独占串行线路的使用 100

11.5.1 步骤 100

11.5.2 验证 101

11.6 串行API 101

11.6.1 头文件 101

11.6.2 open(2) 101

11.6.3 结构体termios 102

11.6.4 tcgetattr(3) 104

11.6.5 tcsetattr(3) 105

11.6.6 tcsendbreak(3) 105

11.6.7 tcdrain(3) 106

11.6.8 tcflush(3) 106

11.6.9 tcflow(3) 107

11.6.10 cfmakeraw(3) 107

11.6.11 cfgetispeed(3) 110

11.6.12 cfgetospeed(3) 110

11.6.13 cfsetispeed(3) 111

11.6.14 cfsetospeed(3) 111

11.6.15 cfsetspeed(3) 111

11.6.16 read(2) 112

11.6.17 write(2) 113

11.6.18 readv(2)和writev(2) 114

11.6.19 EINTR错误 115

第12章 GPIO 117

12.1 引脚和名称 117

12.2 复位后的配置 118

12.3 上拉电阻 120

12.3.1 配置上拉电阻 120

12.3.2 测试上拉状态 124

12.4 逻辑电平 125

12.5 驱动能力 125

12.5.1 输入引脚 126

12.5.2 输出引脚 126

12.5.3 驱动LED 128

12.5.4 测试驱动能力 130

12.6 GPIO电流预算 132

12.7 配置 132

12.7.1 交替功能选择 132

12.7.2 输出引脚 133

12.7.3 输入引脚 133

12.7.4 交替功能 133

12.8 Sysfs GPIO访问 134

12.8.1 export 134

12.8.2 unexport 135

12.8.3 gpioX 135

12.8.4 芯片级 137

12.9 GPIO测试器 137

12.10 GPIO输入测试 138

12.11 可能的波动 140

12.12 读取事件 140

12.13 直接寄存器访问 145

12.13.1 gpio_init() 146

12.13.2 gpio_config() 146

12.13.3 gpio_write() 146

12.13.4 gpio_read() 147

12.13.5 gpio_io.c 147

12.14 GPIO晶体管驱动器 149

12.14.1 驱动器设计 149

12.14.2 替代品 151

12.14.3 电感负载 151

12.14.4 驱动器小结 152

12.15 GPIO实用程序 152

12.15.1 显示GPIO设置 153

12.15.2 读GPIO 154

12.15.3 写GPIO 154

12.15.4 修改驱动层 154

第13章 单总线驱动器 155

13.1 单总线与供电 155

13.2 线上供电 155

13.3 主机和从机 156

13.4 协议 156

13.4.1 复位 157

13.4.2 数据输入/输出 157

13.5 从机支持 158

13.6 读取温度 158

13.6.1 总线主机 160

13.6.2 从机设备 160

13.6.3 读取温度 162

13.7 单总线GPIO引脚 162

第14章 I2C总线 165

14.1 I2C概述 165

14.2 SDA和SCL 166

14.3 多主机和仲裁 166

14.4 总线信号传输 167

14.5 数据位 167

14.6 消息格式 168

14.7 哪些I2C总线? 169

14.8 I2C总线速度 169

14.9 工具 170

14.10 I2C API 170

14.10.1 内核模块支持 170

14.10.2 头文件 171

14.10.3 open(2) 171

14.10.4 ioctl(2,I2C_FUNC) 172

14.10.5 ioctl(2,I2C_RDWR) 172

第15章 SPI总线 175

15.1 SPI基础 175

15.2 SPI模式 176

15.3 信号传输 176

15.4 从机选择 177

15.5 驱动支持 178

15.6 SPI API 179

15.6.1 头文件 179

15.6.2 打开设备 180

15.6.3 SPI模式宏 180

15.6.4 字的每一位 181

15.6.5 时钟频率 182

15.6.6 数据输入/输出 182

15.6.7 关闭 185

15.6.8 写 185

15.6.9 读 185

15.7 SPI测试 185

第16章 引导 189

16.1 引导ARM LinuX 189

16.2 启动顺序 190

16.3 引导文件 190

16.4 config.txt 191

16.4.1 复合视频设置 191

16.4.2 高精度视频 192

16.4.3 过扫描视频 198

16.4.4 帧缓冲器设置 198

16.4.5 通用视频选项 199

16.4.6 授权的多媒体数字编解码器 200

16.4.7 测试 200

16.4.8 存储器 200

16.4.9 启动引导选项 201

16.4.10 超频 205

16.4.11 保单与超频 206

16.4.12 电压设置 210

16.5 cmdline.txt 212

16.5.1 Serial console= 213

16.5.2 Virtual console= 214

16.5.3 kgdboc= 214

16.5.4 root= 214

16.5.5 rootfstype= 215

16.5.6 elevator= 215

16.5.7 rootwait= 215

16.5.8 nfsroot= 216

16.5.9 ip= 217

16.6 应急内核 217

第17章 初始化 219

17.1 运行等级 219

17.2 /etc/inittab 220

17.2.1 inittab的行为initdefault 220

17.2.2 常规启动顺序 221

17.2.3 inittab的行为wait 223

17.2.4 inittab的行为once 223

17.2.5 inittab的行为respawn 224

17.3 改变运行等级 224

17.3.1 telinit 224

17.3.2 运行等级的修改 225

17.3.3 单用户模式 225

17.3.4 关机和重启 225

17.4 创建新的服务 225

第18章 vcgencmd 227

18.1 vcgencmd命令 227

18.2 选项measure_clock 228

18.3 选项measure_volts 229

18.4 选项measure_temp 230

18.5 选项codec_enabled 230

18.6 选项version 231

18.7 选项get_lcd_info 231

18.8 选项get_config 231

第19章 Linux控制台 233

19.1 可用的控制台 233

19.2 串行控制台 234

第20章 交叉编译 235

20.1 术语 235

20.2 操作系统 236

20.3 宿主、客户、本地和目标 236

20.3.1 平台的限制 237

20.3.2 没有VirtualBox(本机) 237

20.3.3 使用VirtualBox(Ubuntu/Linux) 237

20.4 规划你的交叉开发环境 237

20.5 构建交叉编译环境 238

20.5.1 下载crosstool-NG 238

20.5.2 暂存目录 239

20.5.3 解压源码文件(tarball) 239

20.5.4 创建/opt/x-tools目录 239

20.5.5 安装软件包依赖 239

20.5.6 配置crosstool-NG(源代码安装的第一步) 240

20.6 编译crosstool-ng 240

20.7 将程序安装至系统中 240

20.8 路径 240

20.9 交叉编译配置 241

20.9.1 路径和其他选项 241

20.9.2 目标选项 243

20.9.3 操作系统 243

20.9.4 二进制实用程序 244

20.9.5 C语言编译器 244

20.9.6 保存配置 245

20.10 构建交叉编译器 246

第21章 交叉编译内核 249

21.1 镜像工具 249

21.2 下载内核 250

21.3 编辑Makefile 251

21.4 make mrproper指令 252

21.5 内核配置 252

21.6 make menuconfig指令(图形化的内核配置) 253

21.7 make指令 253

21.8 准备内核镜像 253

21.9 安装内核镜像 254

21.10 模块 255

21.11 固件 256

21.12 SD卡VirtualBox(虚拟机)的安装 257

第22章 DHT11传感器 259

22.1 特征 259

22.2 电路 260

22.3 协议 260

22.3.1 通用协议 260

22.3.2 数据位数 261

22.3.3 数据格式 261

22.3.4 软件 262

22.3.5 选择的方法 263

22.4 运行示例 264

22.5 源代码 265

第23章 MCP23017 GPIO扩展器 271

23.1 DC特征 271

23.1.1 GPIO输出电流 272

23 1.2 GPIO输入 272

23.1.3 待机电流 273

23.1.4 输入逻辑电平 273

23.1.5 输出逻辑电平 273

23.2 复位时序 274

23.3 电路 274

23.4 I2C总线 275

23.5 接线和测试 275

23.6 软件配置 277

23.7 主程序 283

23.8 i2c_funcs.c模块 288

23.9 sysgpio.c模块 291

23.10 运行示例 294

23.11 响应时间 296

第24章 Nunchuk手柄 299

24.1 项目概况 299

24.2 Nunchuk手柄的特点 299

24.3 连接器引脚输出 300

24.4 测试连接 301

24.5 NunchukI2C协议 302

24.5.1 加密 302

24.5.2 读取传感器的数据 302

24.6 Linux uinput界面 303

24.6.1 使用头文件 304

24.6.2 打开设备节点 304

24.6.3 配置事件 304

24.6.4 创建节点 308

24.6.5 发布EV_KEY事件 309

24.6.6 发布EV_REL事件 310

24.6.7 发布EV_SYN事件 310

24.6.8 关闭uinput 311

24.7 X-Windows(图形用户界面) 311

24.8 输入实用程序 312

24.9 测试Nunchuk 312

24.9.1 测试./Nunchuk 313

24.9.2 Lsinput实用程序 314

24.9.3 input-events实用程序 314

24.10 程序 315

第25章 实时时钟 325

25.1 DS1307概述 325

25.1.1 X1和X2引脚 326

25.1.2 SQW/OUT引脚 326

25.2 电源 327

25.3 3伏特兼容性 328

25.4 微小的RTC修改 328

25.5 DS1307总线速度 331

25.6 RTC和RAM地址映射 331

25.7 阅读日期和时间 332

25.8 I2C通信 333

25.9 接线 334

25.10 运行示例 334

25.11 最终测试 335

25.12 启动脚本 335

第26章 VS1838B红外接收器 345

26.1 操作参数 345

26.2 VS1838B电路 346

26.3 软件 347

26.3.1 信号元件 348

26.3.2 组织机构代码 349

26.3.3 命令行选项 349

第27章 步进电机 363

27.1 软盘步进电机 363

27.2 驱动器电路 365

27.3 驱动驱动器 368

27.3.1 输入电平 368

27.3.2 复位/启动电源 369

27.4 操作模式 370

27.4.1 波驱动(0模式) 370

27.4.2 全步进驱动(1模式) 370

27.4.3 半步进驱动(2模式) 370

27.5 软件 371

第28章 H桥驱动器 381

28.1 L298驱动器 381

28.1.1 传感电阻 382

28.1.2 使能A和B 382

28.1.3 In1和In2输入 382

28.1.4 保护二极管 382

28.2 L298 PCB 383

28.3 从GPIO驱动 384

28.4 双极步进模式 386

28.4.1 单相波模式 386

28.4.2 双相波模式 386

28.4.3 半步模式 387

28.5 选择驱动GPIO 388

28.6 项目示意图 388

28.7 程序运行 389

第29章 远程控制面板 399

29.1 切换输入 399

29.2 CD4013 400

29.3 触发器测试 401

29.4 LED灯 402

29.5 ?MQ 402

29.5.1 执行安装 402

29.5.2 编译和链接 403

29.6 感测站的设计 403

29.7 感测站程序 404

29.8 控制台程序 404

29.9 传感器源代码 405

29.1 0控制台源代码 413

第30章 脉冲宽度调制 419

30.1 PWM介绍 419

30.2 PWM参数 420

30.3 PWM硬件外设 420

30.4 PWM软件 420

30.5 仪表电路 420

30.6 pwm程序 421

30.6.1 PWM硬件设置命令 423

30.6.2 基于硬件显示CPU使用百分比(率) 424

30.6.3 PWM程序软件 430

30.6.4 有多少PWM? 432

30.6.5 运行PWM软件命令 433

30.6.6 基于软件显示CPU使用百分比 433

附录A 术语表 437

附录B 电源标准 443

附录C 电子学参考 445

附录D Raspbjan apt命令 447

附录E ARM编译选项 451

附录F Mac OS X技巧 453

参考文献 455