目录 第1章概述1 1.1背景延伸: 现代信息与计算概念的缘起1 1.1.1麦克斯韦妖、信息与智慧1 1.1.2计算理论与技术的出现3 1.1.3现代计算机技术的诞生与演化5 1.1.4电子通信与网络技术发展8 1.2理解嵌入式系统9 1.2.1计算装置的可嵌入发展9 1.2.2嵌入式系统内涵的演化11 1.2.3相关术语辨析15 1.3嵌入式系统的组成与特点17 1.3.1组成结构17 1.3.2技术特点与发展趋势18 1.4知识体系23 1.5小结26 习题26 第2章嵌入式硬件基础27 2.1器件和电路术语及基本元件27 2.1.1器件术语27 2.1.2电路术语30 2.1.3基本元件32 2.2嵌入式系统硬件组成38 2.2.1硬件基本架构模型38 2.2.2处理器子系统39 2.2.3存储子系统41 2.2.4时钟子系统42 2.2.5I/O子系统44 2.3嵌入式系统硬件典型形式44 2.3.1基于通用计算机扩展的嵌入式硬件44 2.3.2基于领域标准模块集成的嵌入式硬件45 2.3.3面向具体产品的专用嵌入式硬件47 2.4硬件设计基本方法48 2.4.1Protel EDA软件48 2.4.2电路设计基本流程51 2.4.3电磁兼容性问题53 2.4.4低功耗问题57 2.4.5嵌入式硬件设计示例58 2.5小结67 习题67 第3章嵌入式处理器68 3.1处理器模型与逻辑体系68 3.1.1处理器基本组成模型 68 3.1.2典型处理器架构72 3.2嵌入式处理器的类型及特点76 3.2.1嵌入式微控制器76 3.2.2嵌入式微处理器78 3.2.3数字信号处理器80 3.2.4可编程逻辑器件83 3.2.5片上系统91 3.2.6多核、众核处理器94 3.3典型嵌入式处理器体系102 3.3.1ARM架构102 3.3.2MIPS架构117 3.3.3PowerPC架构122 3.4性能评价指标131 3.5小结133 习题133 第4章嵌入式存储技术134 4.1基本存储体系与模型134 4.1.1嵌入式系统存储体系134 4.1.2存储器结构模型135 4.1.3存储器基本操作流程136 4.1.4存储器指标137 4.2存储器分类及特性139 4.2.1只读存储器139 4.2.2随机存储器144 4.2.3混合存储器155 4.3存储器测试与验证173 4.3.1可读写存储器的测试173 4.3.2只读存储器测试174 4.4小结176 习题176 第5章最小系统与外围电路设计178 5.1理解最小系统178 5.2电源电路179 5.2.1电源电路设计方法179 5.2.2延伸: 电源管理与低功耗设计183 5.3复位电路187 5.3.1上电复位188 5.3.2手动复位193 5.3.3看门狗复位195 5.3.4软件复位196 5.4时钟电路200 5.4.1信号源: 振荡电路原理200 5.4.2多时钟管理205 5.4.3延伸: 时钟管理与低功耗设计211 5.5电路抖动与消抖211 5.5.1抖动现象与危害211 5.5.2硬件消抖213 5.5.3软件消抖215 5.6小结217 习题217 第6章接口、总线与网络扩展218 6.1通用I/O与串行总线218 6.1.1GPIO218 6.1.2SPI222 6.1.3SDIO231 6.1.4I2S236 6.1.5I2C242 6.1.6UART与USART246 6.2典型工业总线、背板总线及网络258 6.2.1CAN总线258 6.2.2实时工业以太网268 6.2.3VPX总线274 6.3无线接口与网络281 6.3.1ZigBee281 6.3.2蓝牙287 6.3.3WiFi299 6.3.4NFC301 6.4小结306 习题306 第7章嵌入式软件结构与基础软件组件308 7.1计算系统的启动与运行过程308 7.1.1通用计算机启动过程分析308 7.1.2嵌入式系统启动过程分析309 7.2嵌入式软件结构312 7.2.1基于裸机的嵌入式软件结构312 7.2.2基于嵌入式操作系统的嵌入式软件结构313 7.3基础软件组件315 7.3.1ROM Monitor315 7.3.2BootLoader318 7.3.3BSP326 7.3.4虚拟机监控程序336 7.3.5容器、微服务与云原生 344 7.4小结346 习题347 第8章嵌入式操作系统及其服务机制348 8.1架构与模型348 8.1.1宏内核、微内核与超微内核348 8.1.2功能模型350 8.2服务机制353 8.2.1基本概念353 8.2.2关于实时364 8.2.3内核服务机制369 8.3典型嵌入式操作系统387 8.3.1RTX51387 8.3.2μC/OS388 8.3.3嵌入式Linux系列390 8.3.4VxWorks395 8.3.5SylixOS397 8.3.6鸿蒙操作系统400 8.3.7其他嵌入式操作系统402 8.4小结407 习题407 第9章嵌入式软件组件409 9.1嵌入式图形库与图形组件409 9.1.1μC/GUI与emWin409 9.1.2NanoX Window412 9.1.3MiniGUI413 9.1.4Qt419 9.1.5可编程图形界面屏423 9.2嵌入式文件系统424 9.2.1JFFS/JFFS2425 9.2.2YAFFS/YAFFS2428 9.2.3UBIFS432 9.2.4只读文件系统434 9.2.5RAM文件系统435 9.3嵌入式数据库437 9.3.1SQLite438 9.3.2Berkeley DB439 9.3.3eXtremeDB441 9.4嵌入式网络协议栈443 9.5小结444 习题444 第10章嵌入式应用软件设计方法445 10.1嵌入式应用软件典型结构445 10.1.1轮转结构445 10.1.2前后台软件结构447 10.1.3函数队列调度结构450 10.1.4基于嵌入式操作系统的软件结构451 10.2中断与数据共享问题453 10.2.1中断服务程序设计453 10.2.2避免/消除数据共享457 10.3嵌入式软件设计机制464 10.3.1可重入代码设计464 10.3.2软件看门狗方法468 10.3.3避免频繁地创建、销毁任务471 10.3.4基于状态机方法设计软件逻辑472 10.3.5FPGA IP核开发流程473 10.3.6生成可执行的嵌入式软件474 10.4软件工程方法484 10.4.1模型驱动的开发方法: 从V模型到Y模型484 10.4.2软硬件协同设计486 10.4.3DevOps方法487 10.4.4制定编码规范489 10.5小结491 习题491 第11章调试、测试与仿真方法492 11.1嵌入式软件调试492 11.1.1基于宿主机的调试493 11.1.2ROM Monitor软件调试495 11.1.3ROM仿真器496 11.1.4在线仿真器497 11.1.5JTAG调试499 11.2嵌入式软件测试501 11.2.1基本测试方法与指标502 11.2.2测试工具的使用507 11.3系统仿真验证技术511 11.3.1计算机仿真方法及其原理512 11.3.2可视化技术514 11.4小结516 习题516 后记517 参考文献518