| 作者 |
| [美]凯文·M. 林奇(Kevin M. Lynch) 尼古拉斯·马丘克(Nicholas Marchuk) 马修·L. 艾尔文(Matthew L. Elwin)徐凯 崔红鹏 |
| 丛书名 |
| 电子电气工程师技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9781911041651 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------嵌入式计算与机电一体化技术:基于PIC32微控制器--------------------------- 本书是美国西北大学机电一体化系列课程的教材,选择PIC32MX795F512H微控制器 + NU32开发板,基础知识部分重点讲解PIC32的硬件、C语言编程以及与传感器和执行机构的接口,应用部分关注机电一体化技术,包括传感器、传动装置和电机的选择等。各章节全面融合PIC32参考手册、数据表、XC32 C编译器用户指南、Harmony帮助文档等内容,并配有丰富的教辅资源,适合PIC32初学者、Arduino爱好者以及对传感器和嵌入式控制感兴趣的技术人员阅读。 ---------------------------密码技术与物联网安全:mbedtls开发实战--------------------------- 本书是国内一本理论结合实践的物联网安全书籍,包括数论基础知识、密码学算法、TLS/DTLS协议、物联网安全协议CoAPs等部分。本书试图打破物联网工程师、嵌入式工程师与Web开发工程师之间的知识鸿沟,通过图文并茂的方式说明密码技术与物联网安全。 本书具有以下特点: ? 密码学算法部分除了理论知识之外,还包括mbedtls示例代码,可以帮助读者更快地理解晦涩难懂的密码技术。本书基于嵌入式硬件平台描述密码学算法性能,通过示例代码分析密码学算法资源消耗情况,并给出实战建议。 ? 紧扣物联网安全发展趋势。认证加密算法部分,本书详细描述了认证加密算法CCM模式和GCM模式;椭圆曲线算法部分,本书详细描述了椭圆曲线密码算法的数学基础以及安全原理; ? TLS/DTLS协议部分。本书以物联网终端的角度详细描述TLS/DTLS协议的实现过程,按照密钥交换、密钥计算、对称加密等部分展开,并总结了物联网设备使用TLS/DTLS协议的建议; ? 物联网安全协议CoAPs部分。本书详细描述了物联网安全协议CoAPs,CoAPs依赖DTLS协议,它可在占用较少资源的情况下为终端设备提供安全连接能力。 |
| 目录 |
---------------------------嵌入式计算与机电一体化技术:基于PIC32微控制器--------------------------- 前 言 第一部分 快速入门 第1章 快速入门 2 1.1 编程资源 2 1.2 编译bootloader程序 5 1.3 编译第一个程序 6 1.4 加载第一个程序 7 1.5 使用make命令 8 1.6 小结 12 延伸阅读 12 第二部分 基础知识 第2章 硬件 14 2.1 PIC32微控制器 14 2.2 NU32开发板 23 2.3 小结 26 2.4 练习题 26 延伸阅读 28 第3章 软件 29 3.1 虚拟内存映射 29 3.2 示例:simplePIC.c 30 3.3 编译过程 31 3.4 PIC32复位过程 33 3.5 理解simplePIC.c 34 3.6 引导加载程序与独立程序 43 3.7 编译小结 44 3.8 实用命令行工具 46 3.9 小结 47 3.10 练习题 47 延伸阅读 48 第4章 函数库 49 4.1 创建talkingPIC 50 4.2 NU32函数库 51 4.3 引导加载程序 52 4.4 LCD函数库 53 4.5 Microchip函数库 55 4.6 自定义函数库 56 4.7 小结 56 4.8 练习题 57 延伸阅读 57 第5章 执行时间和存储空间 58 5.1 编译器优化 58 5.2 执行时间和反汇编文件 59 5.3 存储空间和映射文件 66 5.4 小结 70 5.5 练习题 71 延伸阅读 75 第6章 中断 76 6.1 概述 76 6.2 详述 77 6.3 配置和使用中断的步骤 84 6.4 示例代码 85 6.5 小结 92 6.6 练习题 93 延伸阅读 95 第三部分 外设参考 第7章 数字输入和输出 98 7.1 概述 98 7.2 详述 100 7.3 示例代码 102 7.4 小结 103 7.5 练习题 104 延伸阅读 104 第8章 计数器/定时器 105 8.1 概述 105 8.2 详述 107 8.3 示例代码 110 8.4 小结 113 8.5 练习题 113 延伸阅读 113 第9章 输出比较 114 9.1 概述 114 9.2 详述 115 9.3 示例代码 118 9.4 小结 121 9.5 练习题 121 延伸阅读 123 第10章 模拟输入 124 10.1 概述 124 10.2 详述 127 10.3 示例代码 130 10.4 小结 135 10.5 练习题 136 延伸阅读 136 第11章 UART 137 11.1 概述 137 11.2 详述 139 11.3 示例代码 141 11.4 使用XBee模块进行无线通信 152 11.5 小结 152 11.6 练习题 153 延伸阅读 153 第12章 SPI通信 154 12.1 概述 154 12.2 详述 155 12.3 示例代码 158 12.4 小结 165 12.5 练习题 166 延伸阅读 166 第13章 I2C通信 167 13.1 概述 167 13.2 详述 169 13.3 示例代码 171 13.4 小结 186 13.5 练习题 186 延伸阅读 186 第14章 并行主端口 187 14.1 概述 187 14.2 详述 188 14.3 示例代码 189 14.4 小结 194 14.5 练习题 194 延伸阅读 194 第15章 输入捕获 195 15.1 概述 195 15.2 详述 196 15.3 示例代码 197 15.4 小结 199 15.5 练习题 199 延伸阅读 199 第16章 比较器 200 16.1 概述 200 16.2 详述 200 16.3 示例代码 202 16.4 小结 204 16.5 练习题 204 延伸阅读 204 第17章 休眠、空闲和看门狗定时器 205 17.1 概述 205 17.2 详述 206 17.3 示例代码 207 17.4 小结 209 17.5 练习题 209 延伸阅读 209 第18章 闪速存储器 210 18.1 概述 210 18.2 详述 211 18.3 示例代码 212 18.4 小结 217 18.5 练习题 217 延伸阅读 217 第19章 控制器局域网络 218 19.1 概述 218 19.2 详述 220 19.3 示例代码 228 19.4 小结 232 19.5 练习题 233 延伸阅读 233 第20章 Harmony模块及其USB接口应用 234 20.1 概述 234 20.2 框架 235 20.3 PLIB函数库 237 20.4 Harmony概念 239 20.5 驱动程序 240 20.6 系统服务程序 251 20.7 程序结构 255 20.8 USB 260 20.9 小结 277 20.10 练习题 277 延伸阅读 277 第四部分 机电一体化应用 第21章 传感器 280 21.1 接触传感器:按钮和开关 280 21.2 光敏传感器 281 21.3 转动关节的角度 284 21.4 移动关节的位置 288 21.5 加速度和角速度:陀螺仪、加速度计和惯性测量装置 289 21.6 磁场感应:霍尔效应传感器 291 21.7 距离 292 21.8 压力 293 21.9 温度 294 21.10 电流 295 21.11 GPS 296 21.12 练习题 296 延伸阅读 297 第22章 数字信号处理 298 22.1 采样信号和混叠 298 22.2 离散傅里叶变换 300 22.3 有限脉冲响应数字滤波器 306 22.4 无限脉冲响应数字滤波器 319 22.5 基于FFT的滤波器 320 22.6 PIC32的DSP函数库 322 22.7 练习题 330 延伸阅读 331 第23章 PID反馈控制 332 23.1 PID控制器 333 23.2 PID控制器的变体 335 23.3 增益调节的经验方法 336 23.4 基于模型的控制 337 23.5 小结 338 23.6 练习题 339 延伸阅读 340 第24章 LED亮度的反馈控制 341 24.1 电路的接线和测试 342 24.2 通过OC1为LED供电 343 24.3 生成开环PWM波形 343 24.4 与MATLAB建立通信 344 24.5 在MATLAB中利用数据绘图 344 24.6 写入LCD屏幕 348 24.7 读取ADC 348 24.8 PI控制 348 24.9 其他特性 349 24.10 小结 349 24.11 练习题 349 第25章 有刷永磁直流电机 350 25.1 电机的物理知识 350 25.2 控制方程 354 25.3 速度-转矩曲线 355 25.4 摩擦力和电机效率 358 25.5 电机绕组和电机常数 360 25.6 其他电机特性 361 25.7 电机数据表 362 25.8 小结 365 25.9 练习题 366 延伸阅读 370 第26章 传动装置和电机选择 371 26.1 传动装置 371 26.2 电机和减速器的选择 375 26.3 小结 377 26.4 练习题 377 延伸阅读 378 第27章 直流电机控制 379 27.1 H桥和脉宽调制 379 27.2 直流电机的运动控制 387 27.3 小结 391 27.4 练习题 391 延伸阅读 393 第28章 电机控制项目 394 28.1 硬件 394 28.2 软件概述 395 28.3 软件开发技巧 400 28.4 基本步骤 403 28.5 扩展设计 419 28.6 小结 420 28.7 练习题 420 第29章 其他执行机构 421 29.1 螺线管 421 29.2 扬声器和音圈执行机构 422 29.3 RC伺服电机 423 29.4 步进电机 424 29.5 无刷直流电机 428 29.6 线性无刷电机 439 29.7 小结 439 29.8 练习题 439 延伸阅读 440 ---------------------------密码技术与物联网安全:mbedtls开发实战--------------------------- 推荐序一 推荐序二 前言 第1章 物联网安全概述 1 1.1 本章主要内容 1 1.2 物联网安全基础 1 1.2.1 物联网安全与互联网安全 1 1.2.2 物联网安全与密码学 2 1.3 密码学安全常识 3 1.3.1 柯克霍夫原则 3 1.3.2 Alice和Bob 4 1.3.3 Eve和Mallory 4 1.4 mbedtls简介 5 1.4.1 密码学工具箱 5 1.4.2 TLS/DTLS协议 6 1.4.3 X.509证书 6 1.5 OpenSSL简介 7 1.5.1 源代码安装 7 1.5.2 命令行工具简介 8 1.5.3 摘要命令 dgst 8 1.5.4 对称加密命令 enc 8 1.5.5 SSL命令 s_server 9 1.6 本章小结 11 第2章 mbedtls入门 12 2.1 本章主要内容 12 2.2 mbedtls 体系结构 12 2.3 Linux mbedtls 安装 13 2.3.1 安装 CMake 13 2.3.2 使用 CMake 安装 mbedtls 14 2.4 Linux mbedtls 示例 17 2.4.1 Base64示例 17 2.4.2 遍历 mbedtls 安全套件 20 2.5 Zephyr OS 简介 24 2.6 Zephyr 开发环境搭建 25 2.7 Zephyr 硬件平台选择 26 2.7.1 资源介绍 27 2.7.2 Ubuntu中安装STLink工具 28 2.8 Zephyr 应用示例开发 28 2.8.1 编写 CMakeLists.txt 29 2.8.2 编写 prj.conf 29 2.8.3 编写 main.c 29 2.8.4 编译与运行 30 2.9 Zephyr mbedtls 示例 31 2.9.1 Base64示例 31 2.9.2 大数运算示例 35 2.10 本章小结 39 第3章 数论基础知识 41 3.1 本章主要内容 41 3.2 素数 42 3.3 模运算 43 3.3.1 模数 43 3.3.2 同余 43 3.3.3 模算术运算 44 3.3.4 模逆运算 44 3.3.5 模重复平方 46 3.4 群 47 3.4.1 群的基本概念 47 3.4.2 循环群 48 3.4.3 子群 49 3.5 域 50 3.5.1 域的基本概念 50 3.5.2 有限域和素域 50 3.5.3 扩展域GF(2m) 52 3.5.4 GF(2m)加法和减法 53 3.5.5 GF(2m)乘法 53 3.5.6 GF(2m)逆操作 55 3.6 欧拉函数 56 3.7 欧拉定理 56 3.8 费马小定理 57 3.9 离散对数 57 3.9.1 模算术–指数 57 3.9.2 模算术–对数 58 3.9.3 离散对数问题 59 3.10 本章小结 59 第4章 单向散列函数 60 4.1 本章主要内容 60 4.2 单向散列函数原理 60 4.2.1 单向散列函数性质 61 4.2.2 单向散列函数应用 62 4.3 单向散列函数的实现方法 63 4.3.1 MD算法家族 63 4.3.2 SHA算法家族 63 4.4 SHA256 详细描述 64 4.4.1 预处理 64 4.4.2 哈希计算 66 4.4.3 具体示例 68 4.5 mbedtls 单向散列应用工具 69 4.5.1 hello 69 4.5.2 generic_sum 69 4.6 mbedtls SHA256示例 70 4.6.1 示例描述 70 4.6.2 示例代码 70 4.6.3 代码说明 72 4.6.4 编译与运行 74 4.7 本章小结 74 第5章 对称加密算法 76 5.1 本章主要内容 76 5.2 对称加密算法原理 76 5.3 分组密码模式 77 5.3.1 ECB(电子密码本)模式 77 5.3.2 CBC(密码分组链接)模式 78 5.3.3 CTR(计数器)模式 79 5.4 PKCS7填充方案 81 5.5 AES算法概述 82 5.6 AES 算法详细说明 84 5.6.1 字节替换 84 5.6.2 行移位 86 5.6.3 列混合 87 5.6.4 轮密钥加法 87 5.6.5 轮密钥生成 88 5.7 AES算法动手实践 90 5.8 mbedtls 对称加密应用工具 91 5.8.1 aescrypto2 91 5.8.2 crypt_and_hash 92 5.9 mbedtls AES示例 93 5.9.1 示例描述 93 5.9.2 示例代码 94 5.9.3 代码说明 96 5.9.4 编译与运行 97 5.10 本章小结 99 第6章 消息认证码 100 6.1 本章主要内容 100 6.2 消息认证码原理 100 6.3 消息认证码实现方法 102 6.3.1 单向散列算法实现 102 6.3.2 分组密码实现 102 6.3.3 认证加密算法实现 102 6.4 HMAC算法 102 6.5 CBC-MAC和CMAC 104 6.5.1 CBC-MAC 104 6.5.2 CMAC 104 6.6 认证加密CCM 106 6.6.1 输入数据格式化 106 6.6.2 认证和加密 108 6.7 认证加密GCM 109 6.7.1 GHASH 110 6.7.2 GCTR 110 6.7.3 认证和加密 111 6.8 mbedtls HMAC示例 112 6.8.1 示例代码 113 6.8.2 代码说明 114 6.8.3 编译与运行 116 6.9 mbedtls GCM 示例 117 6.9.1 示例代码 117 6.9.2 代码说明 119 6.9.3 编译与运行 120 6.10 本章小结 121 第7章 伪随机数生成器 122 7.1 本章主要内容 122 7.2 随机数概述 122 7.3 随机数生成器 123 7.3.1 真随机数生成器 123 7.3.2 伪随机数生成器 124 7.4 CTR_DRBG算法 125 7.4.1 参数情况 125 7.4.2 生成过程 125 7.5 mbedtls 随机数应用工具 126 7.5.1 gen_entropy 126 7.5.2 gen_random_ctr_drbg 127 7.5.3 gen_random_havege 127 7.6 mbedtls CTR_DRBG示例 128 7.6.1 示例代码 128 7.6.2 代码说明 130 7.6.3 编译与执行 131 7.7 mbedtls 大素数生成示例 132 7.7.1 示例代码 133 7.7.2 代码说明 135 7.7.3 编译与执行 135 7.8 mbedtls 自定义熵源接口 136 7.9 本章小结 137 第8章 RSA算法 138 8.1 本章主要内容 138 8.2 RSA算法原理 138 8.3 RSA 算法详细说明 140 8.4 RSA加速技术 141 8.4.1 中国剩余数定理 142 8.4.2 动手实践 142 8.4.3 性能对比 143 8.5 RSA 填充方法 144 8.5.1 PKCS1-V1_5 144 8.5.2 OAEP 145 8.6 mbedtls RSA应用工具 146 8.6.1 rsa_genkey 146 8.6.2 rsa_encrypt 147 8.6.3 rsa_decrypt 148 8.7 mbedtls RSA加解密示例 148 8.7.1 示例代码 149 8.7.2 代码说明 151 8.7.3 编译与执行 153 8.8 本章小结 155 第9章 DH密钥协商 156 9.1 本章主要内容 156 9.2 DH密钥协商数学基础 156 9.3 DH密钥协商详细说明 157 9.3.1 DH共享参数 157 9.3.2 DH密钥协商 158 9.3.3 DH具体实践 158 9.3.4 DH密钥协商安全性分析 159 9.4 常用共享参数 161 9.5 mbedtls DH应用工具 162 9.5.1 dh_genprime 163 9.5.2 dh_server 164 9.5.3 dh_client 165 9.6 mbedtls DH示例 165 9.6.1 示例代码 166 9.6.2 代码说明 168 9.6.3 编译与执行 170 9.7 本章小结 172 第10章 ECDH密钥协商 173 10.1 本章主要内容 173 10.2 椭圆曲线定义 173 10.2.1 实数域上的椭圆曲线 174 10.2.2 有限域上的椭圆曲线 175 10.3 椭圆曲线上群操作 176 10.3.1 群操作几何描述 176 10.3.2 群操作代数描述 177 10.3.3 群操作动手实践 178 10.4 椭圆曲线离散对数问题 180 10.5 常用有限域上的椭圆曲线 181 10.6 ECDH密钥协商 183 10.6.1 ECDH共享参数 184 10.6.2 密钥协商过程 184 10.6.3 动手实践 184 10.7 mbedtls椭圆曲线模块 185 10.8 mbedtls ECDH示例 187 10.8.1 示例代码 188 10.8.2 代码说明 190 10.8.3 编译与执行 192 10.9 本章小结 193 第11章 数字签名RSA、DSA和ECDSA 194 11.1 本章主要内容 194 11.2 数字签名原理 194 11.3 RSA 数字签名 196 11.3.1 RSA数字签名详细说明 196 11.3.2 RSA数字签名动手实践 197 11.3.3 RSA签名填充方法 197 11.4 DSA数字签名 199 11.4.1 DSA数字签名详细说明 199 11.4.2 DSA签名动手实践 200 11.5 ECDSA数字签名 201 11.5.1 ECDSA数字签名详细说明 201 11.5.2 ECDSA动手实践 203 11.6 mbedtls 数字签名应用工具 204 11.6.1 rsa_genkey 204 11.6.2 rsa_sign 204 11.6.3 rsa_verify 205 11.7 mbedtls RSA签名示例 205 11.7.1 示例代码 206 11.7.2 代码说明 208 11.7.3 编译与执行 209 11.8 mbedtls ECDSA示例 211 11.8.1 示例代码 211 11.8.2 代码说明 214 11.8.3 编译与执行 215 11.9 本章小结 216 第12章 数字证书X.509 217 12.1 本章主要内容 217 12.2 数字证书原理 217 12.3 X.509证书标准 219 12.3.1 证书结构 219 12.3.2 证书名称 219 12.3.3 证书实例 220 12.4 mbedtls X.509应用工具 224 12.4.1 cert_req 225 12.4.2 req_app 226 12.4.3 cert_write 227 12.4.4 cert_app 229 12.5 mbedtls X.509示例 231 12.5.1 示例代码 232 12.5.2 代码说明 234 12.5.3 编译与执行 236 12.6 本章小结 237 第13章 mbedtls 移植与性能分析 238 13.1 本章主要内容 238 13.2 mbedtls移植 238 13.2.1 时间相关 239 13.2.2 网络相关 240 13.2.3 内存分配相关 241 13.3 mbedtls算法性能说明 243 13.3.1 单向散列函数 243 13.3.2 AES算法 244 13.3.3 AES-GCM和AES-CCM 245 13.3.4 伪随机数生成器 246 13.3.5 RSA 247 13.3.6 DHE和ECDHE 248 13.3.7 ECDSA 248 13.3.8 ECC内存优化 250 13.4 本章小结 253 第14章 TLS 254 14.1 本章主要内容 254 14.2 TLS原理 254 14.2.1 TLS设计目标 256 14.2.2 TLS框架说明 256 14.3 TLS密码套件 257 14.4 TLS记录层协议 258 14.5 密码规格变更协议 260 14.6 警报协议 260 14.7 握手协议 261 14.7.1 握手协议概述 261 14.7.2 完整握手过程 263 14.7.3 会话恢复 270 14.8 TLS密钥交换 271 14.8.1 密钥交换算法对比 271 14.8.2 ECDHE密钥交换 272 14.8.3 ECDH与ECDHE的区别 275 14.9 TLS密钥计算 276 14.9.1 伪随机数生成函数 276 14.9.2 主密钥计算 278 14.9.3 KeyBlock计算 278 14.9.4 密钥计算示例 279 14.10 对称加密 281 14.10.1 分组加密 281 14.10.2 认证加密 284 14.10.3 对称加密示例 285 14.10.4 对称加密结果长度对比 287 14.11 mbedtls TLS应用工具 287 14.11.1 基础示例说明 289 14.11.2 启动 ssl_server2 290 14.11.3 抓取网络数据 290 14.11.4 启动 ssl_client2 291 14.11.5 分析网络数据 291 14.12 构建TLS服务器 293 14.12.1 生成证书 293 14.12.2 编写HTML页面 295 14.12.3 启动s_server 295 14.12.4 验证服务器 295 14.13 构建TLS客户端 296 14.13.1 配置文件 297 14.13.2 示例代码 298 14.13.3 代码说明 301 14.13.4 编译与执行 304 14.14 本章小结 306 第15章 DTLS 307 15.1 本章主要内容 307 15.2 DTLS概述 307 15.3 DTLS与TLS区别 308 15.3.1 记录层协议变化 308 15.3.2 握手协议变化 309 15.4 PSK密钥交换 313 15.4.1 PSK Identity 313 15.4.2 密钥交换详细过程 314 15.4.3 PSK与X.509证书传输开销比较 317 15.5 DTLS对称加密变化 317 15.6 mbedtls DTLS应用工具 318 15.6.1 基础示例说明 319 15.6.2 启动 ssl_server2 319 15.6.3 抓取网络数据 320 15.6.4 启动 ssl_client2 320 15.6.5 分析网络数据 321 15.7 构建DTLS服务器 322 15.8 构建DTLS客户端 322 15.8.1 配置文件 323 15.8.2 示例代码 324 15.8.3 代码说明 327 15.8.4 编译与执行 329 15.9 本章小结 331 第16章 CoAPs 332 16.1 本章主要内容 332 16.2 CoAPs原理 332 16.3 CoAPs安全说明 333 16.4 构建CoAPs服务器 333 16.4.1 服务器代码 334 16.4.2 代码说明 335 16.4.3 pom.xml文件 336 16.4.4 构建与执行 337 16.5 构建CoAPs客户端 338 16.5.1 示例代码 338 16.5.2 代码说明 339 16.5.3 编译与执行 340 16.6 本章小结 341 参考文献 342 |