第1章 初识Edison 1
1.1 Edison介绍 1
1.1.1 第一版Edison 1
1.1.2 第二版Edison 2
1.2 Edison的硬件参数 2
1.2.1 Edison的性能 2
1.2.2 Edison的硬件布局 4
1.2.3 70PIN接口引脚定义 4
1.2.4 Edison的软件架构 7
1.2.5 Yocto Project 7
1.3 接口扩展板 8
1.3.1 两种官方扩展板 8
1.3.2 Arduino扩展板接口说明 9
1.3.3 Breakout Board 12
1.3.4 第三方扩展板 14
第2章 快速上手 17
2.1 Edison kit for Arduino的用法 17
2.1.1 下载软件及驱动 17
2.1.2 安装硬件驱动 18
2.2 Arduino IDE for Edison 20
2.2.1 Arduino开发环境 20
2.2.2 下载开发环境 21
2.2.3 配置开发环境 21
2.3 简单的I/O口控制 23
2.3.1 Blink例程 23
2.3.2 PWM输出 24
2.4 Wi-Fi连接 26
2.4.1 无线通信 26
2.4.2 无线网络 27
2.4.3 Wi-Fi 27
2.5 Wi-Fi库 28
2.5.1 Wi-Fi库概述 28
2.5.2 Wi-Fi类中的函数 28
2.5.3 Server类中的函数 29
2.5.4 Client类中的函数 30
2.6 Wi-Fi网络 31
2.6.1 扫描Wi-Fi网络 31
2.6.2 连接Wi-Fi网络 32
2.7 基于网络的交互 33
2.7.1 HTML语言 33
2.7.2 网页制作 34
2.7.3 在服务器上运行网页 36
2.7.4 通过网页控制LED 40
2.7.5 在网页中显示温度 42
2.8 实例:网络远程养花系统 44
2.8.1 功能描述 44
2.8.2 硬件准备 44
2.8.3 编程实现 46
2.8.4 虚拟服务器 48
2.8.5 扩展思考 50
2.9 通过串口登录Linux 51
2.9.1 驱动安装 51
2.9.2 设置Edison 52
2.9.3 蓝牙连接 54
2.9.4 Linux下的GPIO操作 56
第3章 Edison技术实现浅析 61
3.1 Edison的硬件架构 61
3.1.1 Edison核心 61
3.1.2 Edison核心与外部系统的连接 63
3.1.3 深入研究Edison的Arduino接口扩展板 64
3.1.4 信号电平转换的实现 67
3.1.5 I/O工作模式和上拉电阻的实现 70
3.1.6 I/O端口操作的性能问题 72
3.1.7 I/O端口模式复用的实现 72
3.1.8 ADC模拟信号采集 74
3.1.9 电源与电池充电 75
3.1.10 小结 76
3.2 Edison的软件架构 76
3.2.1 总体的软件架构 76
3.2.2 系统引导过程 78
3.2.3 系统分区和文件组织 83
3.2.4 Arduino Sketch程序的执行机制 85
第4章 进阶开发 95
4.1 开发Edison原生应用 95
4.1.1 在Edison中开发第一个Hello World程序 95
4.1.2 本机编译和交叉编译 97
4.1.3 使用配套的原生应用SDK进行开发 98
4.1.4 程序的部署与调试 101
4.2 使用第三方软件包进行开发 106
4.2.1 使用libjpeg库实现对jpeg图像进行操作 106
4.2.2 将OpenCV库编译成Edison版本 107
4.2.3 在编写的程序中调用OpenCV 113
第5章 系统定制与功能扩展 117
5.1 使用Yocto Project定制Edison系统 117
5.1.1 系统定制的方式与Yocto Project系统简介 117
5.1.2 在开发机中搭建Yocto Project开发环境 118
5.1.3 编译产生Edison完整系统镜像 120
5.1.4 将编译完成的系统镜像写入Edison 122
5.1.5 修改Linux内核配置 123
5.1.6 增加额外的软件包 125
5.2 修改启动引导配置 127
5.2.1 在U-boot中修改配置参数 127
5.2.2 在Linux系统中修改U-boot配置参数 129
5.2.3 制作运行在SD卡上的系统 130
第6章 给Edison添加图形人机交互界面 130
6.1 背景和原理 135
6.1.1 使用USB显示器 136
6.1.2 工作原理 136
6.2 在Yocto Project Linux中增加图形显示和交互支持 138
6.2.1 对Linux内核的配置 138
6.2.2 内核驱动编译和部署 139
6.2.3 配置USB屏内核驱动随系统自动加载 142
6.2.4 在显示屏中输出命令终端 143
6.2.5 使用用户态驱动库直接驱动USB显示器 144
6.3 运行PC版Ubuntu图形界面 146
6.3.1 制作安装Ubuntu系统的SD卡 147
6.3.2 配置Edison进行Ubuntu系统引导 148
6.3.3 系统的登录和使用 149
第7章 使用摄像头进行图像识别开发 149
7.1 从摄像头捕捉数据 151
7.1.1 USB摄像头的选取 151
7.1.2 增加Linux内核对USB摄像头的支持 153
7.1.3 使用OpenCV获取摄像头图像 154
7.2 制作一个摄像头取景器 154
7.3 使用Edison制作人脸跟踪器 156
7.3.1 基本原理 157
7.3.2 在本机应用中使用Arduino库直接操作硬件 158
7.3.3 在本机应用驱动OLED屏幕显示画面 161
7.3.4 舵机云台控制 163
7.3.5 实现人脸跟踪的facetrack程序 164
第8章 基于Edison的智能水杯 167
8.1 背景与原理 167
8.1.1 Edison 168
8.1.2 外部单片机 168
8.1.3 LED显示阵列 169
8.1.4 无线充电模块 169
8.1.5 板载充电方案 169
8.1.6 电池 170
8.1.7 音频 170
8.1.8 运动传感器 170
8.1.9 低电压保护电路 170
8.1.10 USB MUX切换线路 171
8.1.11 功耗管理和系统电源状态 171
8.1.12 系统上电时序和规范 172
8.2 系统构架与设计 173
8.2.1 硬件设计 173
8.2.2 软件系统 176
8.2.3 IDEAir无线编程环境 181
8.3 互联网和云计算 183
8.4 应用展望 185
附录A Edison相关的论坛、社区和开发者资源 187
附录B Edison的小伙伴们 190