译者序
前言
第1章 问题在何处
参考文献
第2章 系统化的调试方法
2.1 调试的六个阶段
2.1.1 谁有故障
2.1.2 我遇到过的一个缺陷
2.2 参考文献
第3章 嵌入式软件调试的最佳实践
3.1 引言
3.2 造成嵌入式系统与众不同的原因
3.2.1 嵌入式系统专门用于特定的任务,而PC是通用的计算平台
3.2.2 软件失效在嵌入式系统中造成的影响要比在桌面系统中严重得多
3.2.3 嵌入式系统具有实时性约束
3.2.4 嵌入式系统可被各式各样的处理器以及处理器架构支持
3.2.5 嵌入式系统通常对成本非常敏感
3.2.6 嵌入式系统具有功耗限制
3.2.7 嵌入式系统必须能在极端环境下工作
3.2.8 嵌入式系统的资源要比桌面系统少得多
3.2.9 嵌入式微处理器通常具有专用调试电路
3.2.10 如果嵌入式系统用到了操作系统,那么它所用的很可能是实时操作系统
3.3 嵌入式系统调试的最佳实践
3.4 通用软件调试最佳实践
3.5 嵌入式软件调试最佳实践
3.6 内存泄漏
3.7 时钟抖动
3.8 优先级反转
3.9 栈溢出
3.10 本章小结
3.11 拓展读物
3.12 参考文献
第4章 调试嵌入式硬件的最佳实践
4.1 概述
4.2 硬件调试过程
4.3 设计评审
4.4 测试计划
4.5 可测试性设计
4.6 构建流程
4.7 了解你的工具
4.8 微处理器设计最佳实践
4.8.1 引言
4.8.2 可测试性设计
4.8.3 考虑PCB问题
4.9 本章小结
4.10 拓展读物
4.11 参考文献
第5章 嵌入式设计与调试工具概览
5.1 概述
5.2 调试器
5.3 软硬件协同验证
5.4 ROM仿真器
5.5 逻辑分析仪
5.6 逻辑分析仪的优势
5.7 逻辑分析仪的问题
5.8 在线仿真器
5.9 拓展读物
5.10 参考文献
第6章 硬件/软件集成阶段
6.1 概述
6.2 硬件/软件集成图
6.3 非标准硬盘驱动器接口的案例
6.4 向量显示器的最后关头
6.5 性能差劲的仿真器卡笼
6.6 功能蠕变和大客户
6.7 参考文献
第7章 片上调试资源
7.1 概述
7.2 后台调试模式
7.3 JTAG
7.4 MIPSEJTAG
7.5 本章小结
7.6 参考文献
第8章 片上系统
8.1 概述
8.2 现场可编程门阵列
8.3 虚拟化
8.4 本章小结
8.5 拓展读物
8.6 参考文献
第9章 隔离缺陷的测试方法
9.1 概述
9.2 查找问题的障碍
9.3 临时应急
9.4 寻求帮助
9.5 故障隔离
9.5.1 了解你的工具
9.5.2 理解你的设计
9.6 与性能相关的故障
9.7 可复现故障
9.8 间歇性故障
9.9 合规故障
9.10 扩频振荡器
9.11 热故障
9.12 机械问题
9.13 与供电相关的故障
9.14 本章小结
9.15 参考文献
第10章 调试实时操作系统
10.1 概述
10.2 RTOS中的缺陷
10.3 同步问题
10.4 内存崩溃
10.5 与中断相关的问题
10.6 意想不到的编译器优化
10.7 异常
10.8 RTOS感知工具:一个示例
10.9 参考文献
第11章 串行通信系统
11.1 引言
11.2 RS
11.3 错误的COM端口分配
11.4 不正确的电缆引脚
11.5 错误的波特率(时钟频率)
11.6 不正确的流控
11.7 I2C和SMBus协议
11.8 SPI协议
11.9 工具
11.10 控制器局域网络(CAN总线)
11.11 本章小结
11.12 拓展读物
11.13 参考文献
第12章 存储器系统
12.1 概述
12.2 通用测试策略
12.3 静态RAM
12.4 动态RAM
12.5 软错误
12.6 抖动
12.7 基于软件的存储器错误
12.8 本章小结
12.9 参考文献
缩略语
展开