内容简介
第1章 为什么学习本书?
1.1 本书读者对象
1.2 本书主要内容
1.3 学习方法
1.4 本书的组织结构
1.5 本书中的软件
1.6 结束语
第2章 Raspberry Pi
2.1 型号
2.2 共有的硬件
2.3 选择哪一种型号?
第3章 准备
3.1 静态IP地址
3.2 使用SSH
3.3 虚拟网络计算机
3.3.1 显示器编号
3.3.2 几何尺寸
3.3.3 深度
3.3.4 像素格式
3.3.5 密码设置
3.3.6 服务器的启动
3.3.7 VNC查看器
3.3.8 停止VNC服务器
3.4 原型站
3.5 Adafruit Pi Cobbler
3.6 Gertboard
3.7 裸机
第4章 电源
4.1 计算功率
4.2 电流需求
4.3 外围设备电源
4.4 B型输入电源
4.5 A型输入电源
4.6 3.3 V电源
4.7 供电的USB集线器
4.8 电源适配器
4.8.1 一款不合适的电源
4.8.2 电子书适配器
4.8.3 最好的电源
4.8.4 电压测试
4.9 蓄电池电源
4.9.1 要求
4.9.2 余量
4.9.3 LM7805调节
4.9.4 DC-DC降压变换器
4.10 供电不足的征兆
4.11 断电
第5章 头带、LED和复位
5.1 状态指示LED灯
5.1.1 OK或ACT LED
5.1.2 PWR LED
5.1.3 FDX LED
5.1.4 LNK LED
5.1.5 10M或10/100 LED
5.2 P1头
5.2.1 安全模式
5.2.2 逻辑电平
5.2.3 复位时GPIo的配置
5.2.4 单总线驱动器
5.3 P5头
5.4 复位
第6章 SDRAM
6.1 /proc/meminfo
6.1.1 MemTotal(总存储器)
6.1.2 MemFree(空闲存储器)
6.1.3 Buffers(缓冲区)
6.1.4 Cached(高速缓存的)
6.1.5 SwapCached(交换的缓冲区)
6.1.6 Active(活跃的存储器空间)
6.1.7 Inactive(不活跃的存储器空间)
6.1.8 Active(anon)
6.1.9 Inactive(anon)
6.1.10 Active(file)
6.1.11 Inactive(file)
6.1.12 Unevictable(不可回收的)
6.1.13 Mlocked(被锁定的)
6.1.14 SwapTotal(交换的总数)
6.1.15 SwapFree(自由交换的数量)
6.1.16 Dirty
6.1.17 Writeback
6.1.18 AnonPages
6.1.19 Mapped
6.1.20 Shmem
6.1.21 Slab
6.1.22 SReclaimable
6.1.23 SUnreclaim
6.1.24 KernelStack
6.1.25 PageTables
6.1.26 NFS_Unstable
6.1.27 Bounce
6.1.28 WritebackTmp
6.1.29 CommitLimit
6.1.30 Committed_AS
6.1.31 VmallocTotal
6.1.32 VmallocUsed
6.1.33 VmallocChunk
6.2 物理存储器
6.3 存储器映射
6.3.1 地址
6.3.2 长度
6.3.3 保护
6.3.4 标志
6.3.5 文件描述符
6.3.6 偏移
6.3.7 返回值
6.3.8 volatile关键字
6.4 虚拟存储器
6.5 关于SDRAM的最后一点看法
第7章 CPU
7.1 鉴别
7.2 超频
7.3 执行
7.4 线程
7.4.1 pthread头文件
7.4.2 pthread错误处理
7.4.3 pthread_create(3)
7.4.4 pthread_attr_t
7.4.5 pthread_join(3)
7.4.6 pthread_detach(3)
7.4.7 pthread_self(3)
7.4.8 pthread_kill(3)
7.5 mutex
7.5.1 pthread_mutex_create(3)
7.5.2 pthread_mutex_destroy(3)
7.5.3 pthread_mutex_lock(3)
7.5.4 pthread_mutex_unlock(3)
7.6 条件变量
7.6.1 pthread_cond_init(3)
7.6.2 pthread_cond_destroy(3)
7.6.3 pthread_cond_wait(3)
7.6.4 pthread_cond_signal(3)
7.6.5 pthread_cond_broadcast(3)
第8章 USB
8.1 电源
8.2 供电集线器
8.3 USB API支持
8.3.1 libusb
8.3.2 Include文件
第9章 以太网
9.1 有线以太网
9.1.1 /etc/network/interfaces
9.1.2 改变到静态IP
9.1.3 测试静态IP地址
9.1.4 USB适配器
9.1.5 /etc/hosts文件
9.2 无线以太网
第10章 SD卡存储
10.1 SD卡媒介
10.2 SD卡接口
10.3 SD卡基础
10.4 Raspbian区块尺寸
10.5 容量和性能
10.6 传送模式
10.6.1 SPI总线模式
10.6.2 1位SD模式
10.6.3 4位SD模式
10.7 耗损均衡
第11章 UART
11.1 RS-232转换器
11.2 RS-232
11.2.1 起始位
11.2.2 数据位
11.2.3 奇偶位
11.2.4 停止位
11.2.5 波特率
11.2.6 中断
11.2.7 流控制
11.3 Raspberry Pi UART
11.4 ARM PL011 UART
11.4.1 RTS/CTS访问
11.4.2 PL011 UART特性
11.5 独占串行线路的使用
11.5.1 步骤
11.5.2 验证
11.6 串行API
11.6.1 头文件
11.6.2 open(2)
11.6.3 结构体termios
11.6.4 tcgetattr(3)
11.6.5 tcsetattr(3)
11.6.6 tcsendbreak(3)
11.6.7 tcdrain(3)
11.6.8 tcflush(3)
11.6.9 tcflow(3)
11.6.10 cfmakeraw(3)
11.6.11 cfgetispeed(3)
11.6.12 cfgetospeed(3)
11.6.13 cfsetispeed(3)
11.6.14 cfsetospeed(3)
11.6.15 cfsetspeed(3)
11.6.16 read(2)
11.6.17 write(2)
11.6.18 readv(2)和writev(2)
11.6.19 EINTR错误
第12章 GPIO
12.1 引脚和名称
12.2 复位后的配置
12.3 上拉电阻
12.3.1 配置上拉电阻
12.3.2 测试上拉状态
12.4 逻辑电平
12.5 驱动能力
12.5.1 输入引脚
12.5.2 输出引脚
12.5.3 驱动LED
12.5.4 测试驱动能力
12.6 GPIO电流预算
12.7 配置
12.7.1 交替功能选择
12.7.2 输出引脚
12.7.3 输入引脚
12.7.4 交替功能
12.8 Sysfs GPIO访问
12.8.1 export
12.8.2 unexport
12.8.3 gpioX
12.8.4 芯片级
12.9 GPIO测试器
12.10 GPIO输入测试
12.11 可能的波动
12.12 读取事件
12.13 直接寄存器访问
12.13.1 gpio_init()
12.13.2 gpio_config()
12.13.3 gpio_write()
12.13.4 gpio_read()
12.13.5 gpio_io.c
12.14 GPIO晶体管驱动器
12.14.1 驱动器设计
12.14.2 替代品
12.14.3 电感负载
12.14.4 驱动器小结
12.15 GPIO实用程序
12.15.1 显示GPIO设置
12.15.2 读GPIO
12.15.3 写GPIO
12.15.4 修改驱动层
第13章 单总线驱动器
13.1 单总线与供电
13.2 线上供电
13.3 主机和从机
13.4 协议
13.4.1 复位
13.4.2 数据输入/输出
13.5 从机支持
13.6 读取温度
13.6.1 总线主机
13.6.2 从机设备
13.6.3 读取温度
13.7 单总线GPIO引脚
第14章 I2C总线
14.1 I2C概述
14.2 SDA和SCL
14.3 多主机和仲裁
14.4 总线信号传输
14.5 数据位
14.6 消息格式
14.7 哪些I2C总线?
14.8 I2C总线速度
14.9 工具
14.10 I2C API
14.10.1 内核模块支持
14.10.2 头文件
14.10.3 open(2)
14.10.4 ioctl(2,I2C_FUNC)
14.10.5 ioctl(2,I2C_RDWR)
第15章 SPI总线
15.1 SPI基础
15.2 SPI模式
15.3 信号传输
15.4 从机选择
15.5 驱动支持
15.6 SPI API
15.6.1 头文件
15.6.2 打开设备
15.6.3 SPI模式宏
15.6.4 字的每一位
15.6.5 时钟频率
15.6.6 数据输入/输出
15.6.7 关闭
15.6.8 写
15.6.9 读
15.7 SPI测试
第16章 引导
16.1 引导ARM LinuX
16.2 启动顺序
16.3 引导文件
16.4 config.txt
16.4.1 复合视频设置
16.4.2 高精度视频
16.4.3 过扫描视频
16.4.4 帧缓冲器设置
16.4.5 通用视频选项
16.4.6 授权的多媒体数字编解码器
16.4.7 测试
16.4.8 存储器
16.4.9 启动引导选项
16.4.10 超频
16.4.11 保单与超频
16.4.12 电压设置
16.5 cmdline.txt
16.5.1 Serial console=
16.5.2 Virtual console=
16.5.3 kgdboc=
16.5.4 root=
16.5.5 rootfstype=
16.5.6 elevator=
16.5.7 rootwait=
16.5.8 nfsroot=
16.5.9 ip=
16.6 应急内核
第17章 初始化
17.1 运行等级
17.2 /etc/inittab
17.2.1 inittab的行为initdefault
17.2.2 常规启动顺序
17.2.3 inittab的行为wait
17.2.4 inittab的行为once
17.2.5 inittab的行为respawn
17.3 改变运行等级
17.3.1 telinit
17.3.2 运行等级的修改
17.3.3 单用户模式
17.3.4 关机和重启
17.4 创建新的服务
第18章 vcgencmd
18.1 vcgencmd命令
18.2 选项measure_clock
18.3 选项measure_volts
18.4 选项measure_temp
18.5 选项codec_enabled
18.6 选项version
18.7 选项get_lcd_info
18.8 选项get_config
第19章 Linux控制台
19.1 可用的控制台
19.2 串行控制台
第20章 交叉编译
20.1 术语
20.2 操作系统
20.3 宿主、客户、本地和目标
20.3.1 平台的限制
20.3.2 没有VirtualBox(本机)
20.3.3 使用VirtualBox(Ubuntu/Linux)
20.4 规划你的交叉开发环境
20.5 构建交叉编译环境
20.5.1 下载crosstool-NG
20.5.2 暂存目录
20.5.3 解压源码文件(tarball)
20.5.4 创建/opt/x-tools目录
20.5.5 安装软件包依赖
20.5.6 配置crosstool-NG(源代码安装的第一步)
20.6 编译crosstool-ng
20.7 将程序安装至系统中
20.8 路径
20.9 交叉编译配置
20.9.1 路径和其他选项
20.9.2 目标选项
20.9.3 操作系统
20.9.4 二进制实用程序
20.9.5 C语言编译器
20.9.6 保存配置
20.10 构建交叉编译器
第21章 交叉编译内核
21.1 镜像工具
21.2 下载内核
21.3 编辑Makefile
21.4 make mrproper指令
21.5 内核配置
21.6 make menuconfig指令(图形化的内核配置)
21.7 make指令
21.8 准备内核镜像
21.9 安装内核镜像
21.10 模块
21.11 固件
21.12 SD卡VirtualBox(虚拟机)的安装
第22章 DHT11传感器
22.1 特征
22.2 电路
22.3 协议
22.3.1 通用协议
22.3.2 数据位数
22.3.3 数据格式
22.3.4 软件
22.3.5 选择的方法
22.4 运行示例
22.5 源代码
第23章 MCP23017 GPIO扩展器
23.1 DC特征
23.1.1 GPIO输出电流
23 1.2 GPIO输入
23.1.3 待机电流
23.1.4 输入逻辑电平
23.1.5 输出逻辑电平
23.2 复位时序
23.3 电路
23.4 I2C总线
23.5 接线和测试
23.6 软件配置
23.7 主程序
23.8 i2c_funcs.c模块
23.9 sysgpio.c模块
23.10 运行示例
23.11 响应时间
第24章 Nunchuk手柄
24.1 项目概况
24.2 Nunchuk手柄的特点
24.3 连接器引脚输出
24.4 测试连接
24.5 NunchukI2C协议
24.5.1 加密
24.5.2 读取传感器的数据
24.6 Linux uinput界面
24.6.1 使用头文件
24.6.2 打开设备节点
24.6.3 配置事件
24.6.4 创建节点
24.6.5 发布EV_KEY事件
24.6.6 发布EV_REL事件
24.6.7 发布EV_SYN事件
24.6.8 关闭uinput
24.7 X-Windows(图形用户界面)
24.8 输入实用程序
24.9 测试Nunchuk
24.9.1 测试./Nunchuk
24.9.2 Lsinput实用程序
24.9.3 input-events实用程序
24.10 程序
第25章 实时时钟
25.1 DS1307概述
25.1.1 X1和X2引脚
25.1.2 SQW/OUT引脚
25.2 电源
25.3 3伏特兼容性
25.4 微小的RTC修改
25.5 DS1307总线速度
25.6 RTC和RAM地址映射
25.7 阅读日期和时间
25.8 I2C通信
25.9 接线
25.10 运行示例
25.11 最终测试
25.12 启动脚本
第26章 VS1838B红外接收器
26.1 操作参数
26.2 VS1838B电路
26.3 软件
26.3.1 信号元件
26.3.2 组织机构代码
26.3.3 命令行选项
第27章 步进电机
27.1 软盘步进电机
27.2 驱动器电路
27.3 驱动驱动器
27.3.1 输入电平
27.3.2 复位/启动电源
27.4 操作模式
27.4.1 波驱动(0模式)
27.4.2 全步进驱动(1模式)
27.4.3 半步进驱动(2模式)
27.5 软件
第28章 H桥驱动器
28.1 L298驱动器
28.1.1 传感电阻
28.1.2 使能A和B
28.1.3 In1和In2输入
28.1.4 保护二极管
28.2 L298 PCB
28.3 从GPIO驱动
28.4 双极步进模式
28.4.1 单相波模式
28.4.2 双相波模式
28.4.3 半步模式
28.5 选择驱动GPIO
28.6 项目示意图
28.7 程序运行
第29章 远程控制面板
29.1 切换输入
29.2 CD4013
29.3 触发器测试
29.4 LED灯
29.5 ?MQ
29.5.1 执行安装
29.5.2 编译和链接
29.6 感测站的设计
29.7 感测站程序
29.8 控制台程序
29.9 传感器源代码
29.1 0控制台源代码
第30章 脉冲宽度调制
30.1 PWM介绍
30.2 PWM参数
30.3 PWM硬件外设
30.4 PWM软件
30.5 仪表电路
30.6 pwm程序
30.6.1 PWM硬件设置命令
30.6.2 基于硬件显示CPU使用百分比(率)
30.6.3 PWM程序软件
30.6.4 有多少PWM?
30.6.5 运行PWM软件命令
30.6.6 基于软件显示CPU使用百分比
附录A 术语表
附录B 电源标准
附录C 电子学参考
附录D Raspbjan apt命令
附录E ARM编译选项
附录F Mac OS X技巧
参考文献