第1章 引言 1
1.1 互联网的故事 1
1.2 云 2
1.3 物联网 3
1.4 物联网相关术语 4
第一部分 基本体系 8
第2章 如何选择操作系统 8
2.1 无操作系统和严格的轮询 9
2.2 协程 12
2.3 中断 12
2.4 小型实时内核 14
2.5 非抢占式操作系统 16
2.6 完整的操作系统 18
2.7 开源、GNU许可和Linux 20
2.8 操作系统结构 22
2.9 扩展阅读 22
第3章 使用哪个CPU 24
3.1 概述 24
3.2 CPU核心 26
3.3 CPU架构 27
3.4 字长 29
3.5 内存管理单元 30
3.6 RAM 30
3.7 缓存 30
3.8 EEPROM和闪存 31
3.9 浮点运算器 31
3.10 DSP 32
3.11 加密引擎 32
3.12 升级路径 32
3.13 第二来源 33
3.14 价格 33
3.15 出口控制 33
3.16 RoHS合规性 34
3.17 评估板 34
3.18 工具链 35
3.19 基准测试 35
3.20 功耗 36
3.21 JTAG调试器 36
3.22 外设 36
3.23 自制或外购 40
3.24 扩展阅读 42
第二部分 最佳实践 44
第4章 软件架构 44
4.1 性能设计 44
4.2 从零开始的恐惧 46
4.3 分层 47
4.4 不仅仅是API——还有更多的文件 48
4.5 对象模型(包含层次结构) 49
4.6 案例:CANOpen 49
4.7 消息传递 51
4.8 中间件 52
4.9 案例:LAN-XI的架构重用 52
4.10 理解C语言 54
4.11 扩展阅读 56
第5章 调试工具 58
5.1 模拟器 58
5.2 在线仿真器 59
5.3 后台或JTAG调试器 59
5.4 目标的替代品 60
5.5 调试器 60
5.6 strace 62
5.7 调试时不使用特殊工具 63
5.8 监控消息 64
5.9 测试流量 64
5.10 扩展阅读 68
第6章 代码维护 70
6.1 穷人备份 70
6.2 版本控制及git 71
6.3 构建和虚拟化 75
6.4 静态代码分析 77
6.5 检查 78
6.6 跟踪缺陷和特性 79
6.7 白板 82
6.8 文档 82
6.9 Yocto 82
6.10 OpenWRT 84
6.11 扩展阅读 85
第三部分 物联网技术 88
第7章 网络 88
7.1 互联网协议简介 88
7.2 瑟夫和卡恩:互联网是网中网 88
7.3 数据包的生命周期 89
7.4 数据包之前的生命周期 95
7.5 获取IP地址 98
7.6 DHCP 99
7.7 网络掩码、CIDR和特殊范围 101
7.8 保留的IP范围 102
7.9 NAT 102
7.10 DNS 103
7.11 引入HTTP 105
7.12 REST 107
7.13 Windows下IPv4的TCP套接字 109
7.14 IP分片 116
7.15 引入IPv6地址 118
7.16 Linux下IPv6的TCP套接字 120
7.17 数据传输 125
7.18 UDP套接字 128
7.19 案例:IPv6上的UDP 130
7.20 应用层协议 133
7.21 套接字API的替代品 136
7.22 以太网电缆 137
7.23 物理层的问题 139
7.24 扩展阅读 140
第8章 网络工具 141
8.1 查找IP地址 141
8.2 交换机作为一种工具 143
8.2.1 镜像 143
8.2.2 统计 144
8.2.3 模拟丢帧 145
8.2.4 暂停帧 145
8.3 tap 146
8.4 SNMP 147
8.5 Wireshark 148
8.6 网络命令 149
8.7 扩展阅读 149
第9章 无线网络 151
9.1 引言 151
9.2 Wi-Fi基础 154
9.3 接入点作为中继器 155
9.4 如何计算速度 157
9.5 案例:Wi-Fi数据传输 159
9.6 案例:信标 161
9.7 案例:奇怪的滞后 163
9.8 聚合帧 164
9.9 信道评估 166
9.10 低功耗蓝牙 167
9.11 认证 169
9.12 扩展阅读 170
第10章 安全 171
10.1 引言 171
10.2 黑客的目标 173
10.3 网络安全概念 174
10.4 散列函数 176
10.5 对称密钥加密 177
10.6 案例:Enigma 178
10.7 非对称密钥加密 179
10.8 数字签名 181
10.9 证书 182
10.10 消息认证码 183
10.11 nonce 184
10.12 安全的套接字通信 185
10.13 OpenSSL 187
10.14 案例:心血漏洞 188
10.15 案例:Wi-Fi安全 189
10.16 软件加密库 191
10.17 可信平台模块 192
10.18 嵌入式系统 193
10.19 嵌入式系统中的漏洞 194
10.20 出口管制 197
10.21 扩展阅读 199
第11章 数字滤波器 201
11.1 数字化的原因 201
11.2 为何需要滤波器 202
11.3 采样频率 203
11.4 时域和频域 203
11.5 模拟和数字定义 205
11.6 更多的二元性 206
11.7 表现良好的系统 212
11.8 IIR滤波器基础知识 213
11.9 IIR的实现 214
11.10 FIR滤波器基础知识 217
11.11 FIR的实现 220
11.12 动态范围与精度 222
11.13 整数 222
11.14 定点运算 224
11.15 Q记号和乘法 225
11.16 除法 226
11.17 BCD 226
11.18 扩展阅读 227
第12章 统计过程控制 228
12.1 简介 228
12.2 重要术语 231
12.3 控制图 231
12.4 查找控制限制 233
12.5 子组 236
12.6 案例:绝缘板 236
12.7 EWMA控制图 240
12.8 过程能力指数 240
12.9 扩展阅读 241
后记 242