嵌入式实时系统调试
链接:https://pan.baidu.com/s/1yHdotCU23vB78LDS6ZQ0xw?pwd=mf5b
提取码:mf5b

通过对真实案例的学习和对专业工具(例如逻辑分析仪、JTAG调试器和性能分析仪)的广泛研究,本书提出了调试实时系统的实践方法。它遵循嵌入式系统的传统设计生命周期原理,指出了哪里会导致错误,进一步阐述如何在将来的设计中发现和避免错误。它还研究了应用程序性能监控、单个程序运行跟踪记录以及多任务OS中单独运行应用的其它的调试和控制方法。
目录
译者序
前言
第1章 问题在何处 / 1
参考文献 / 8
第2章 系统化的调试方法 / 9
2.1 调试的六个阶段 / 9
2.1.1 谁有故障 / 12
2.1.2 我遇到过的一个缺陷 / 12
2.2 参考文献 / 22
第3章 嵌入式软件调试的最佳实践 / 23
3.1 引言 / 23
3.2 造成嵌入式系统与众
不同的原因 / 24
3.2.1 嵌入式系统专门用于特定
的任务,而PC是通用的
计算平台 / 24
3.2.2 软件失效在嵌入式系统中
造成的影响要比在桌面系
统中严重得多 / 24
3.2.3 嵌入式系统具有实时性约束 / 25
3.2.4 嵌入式系统可被各式各样
的处理器以及处理器架构
支持 / 26
3.2.5 嵌入式系统通常对成本
非常敏感 / 26
3.2.6 嵌入式系统具有功耗限制 / 27
3.2.7 嵌入式系统必须能在极端
环境下工作 / 27
3.2.8 嵌入式系统的资源要比桌面
系统少得多 / 27
3.2.9 嵌入式微处理器通常具有
专用调试电路 / 27
3.2.10 如果嵌入式系统用到了操作
系统,那么它所用的很可能
是实时操作系统 / 28
3.3 嵌入式系统调试的最佳实践 / 28
3.4 通用软件调试最佳实践 / 32
3.5 嵌入式软件调试最佳实践 / 36
3.6 内存泄漏 / 37
3.7 时钟抖动 / 39
3.8 优先级反转 / 40
3.9 栈溢出 / 40
3.10 本章小结 / 41
3.11 拓展读物 / 42
3.12 参考文献 / 43
第4章 调试嵌入式硬件的最佳实践 / 44
4.1 概述 / 44
4.2 硬件调试过程 / 44
4.3 设计评审 / 45
4.4 测试计划 / 47
4.5 可测试性设计 / 49
4.6 构建流程 / 50
4.7 了解你的工具 / 53
4.8 微处理器设计最佳实践 / 57
4.8.1 引言 / 57
4.8.2 可测试性设计 / 57
4.8.3 考虑PCB问题 / 58
4.9 本章小结 / 63
4.10 拓展读物 / 64
4.11 参考文献 / 64
第5章 嵌入式设计与调试工具概览 / 66
5.1 概述 / 66
5.2 调试器 / 66
5.3 软硬件协同验证 / 69
5.4 ROM仿真器 / 73
5.5 逻辑分析仪 / 77
5.6 逻辑分析仪的优势 / 84
5.7 逻辑分析仪的问题 / 84
5.8 在线仿真器 / 85
5.9 拓展读物 / 89
5.10 参考文献 / 89
第6章 硬件/软件集成阶段 / 90
6.1 概述 / 90
6.2 硬件/软件集成图 / 90
6.3 非标准硬盘驱动器接口的案例 / 91
6.4 向量显示器的最后关头 / 92
6.5 性能差劲的仿真器卡笼 / 92
6.6 功能蠕变和大客户 / 93
6.7 参考文献 / 108
第7章 片上调试资源 / 110
7.1 概述 / 110
7.2 后台调试模式 / 111
7.3 JTAG / 112
7.4 MIPS EJTAG / 115
7.5 本章小结 / 116
7.6 参考文献 / 118
第8章 片上系统 / 119
8.1 概述 / 119
8.2 现场可编程门阵列 / 120
8.3 虚拟化 / 126
8.4 本章小结 / 129
8.5 拓展读物 / 130
8.6 参考文献 / 130
第9章 隔离缺陷的测试方法 / 131
9.1 概述 / 131
9.2 查找问题的障碍 / 131
9.3 临时应急 / 132
9.4 寻求帮助 / 132
9.5 故障隔离 / 133
9.5.1 了解你的工具 / 134
9.5.2 理解你的设计 / 136
9.6 与性能相关的故障 / 137
9.7 可复现故障 / 137
9.8 间歇性故障 / 138
9.9 合规故障 / 141
9.10 扩频振荡器 / 142
9.11 热故障 / 144
9.12 机械问题 / 146
9.13 与供电相关的故障 / 147
9.14 本章小结 / 149
9.15 参考文献 / 151
第10章 调试实时操作系统 / 152
10.1 概述 / 152
10.2 RTOS中的缺陷 / 152
10.3 同步问题 / 153
10.4 内存崩溃 / 154
10.5 与中断相关的问题 / 155
10.6 意想不到的编译器优化 / 157
10.7 异常 / 157
10.8 RTOS感知工具:一个示例 / 159
10.9 参考文献 / 163
第11章 串行通信系统 / 164
11.1 引言 / 164
11.2 RS-232 / 165
11.3 错误的COM端口分配 / 165
11.4 不正确的电缆引脚 / 166
11.5 错误的波特率(时钟频率) / 166
11.6 不正确的流控 / 167
11.7 I2C和SMBus协议 / 168
11.8 SPI协议 / 171
11.9 工具 / 174
11.10 控制器局域网络(CAN总线) / 174
11.11 本章小结 / 175
11.12 拓展读物 / 175
11.13 参考文献 / 175
第12章 存储器
查看全部↓
前言/序言
为什么要写一本有关实时系统调试的书?我很高兴你能如此发问。有关实时系统或嵌入式系统调试已经有不少文章,但是据我所知,这些文章中的内容并没有被集结成册。
经过多年的嵌入式系统设计教学,我得出了这样的结论:我们作为教师是失败的。因为尽管我们的学生能够用汇编语言、C、C++、C#、某种特定Arduino语言或者Verilog编写程序并能编译编写好的程序,但是在面对突发问题时—这是不可避免的,学生们仍然无法分析问题、按照系统化方式锁定问题原因以及查找和修正错误之处。我希望在本书中解决这些问题。
我注意到了学生们使用所谓“霰弹测试”方式,这令我非常沮丧。该方式指一次性进行大量修改,然后指望好事降临。甚至更令人不安的是,学生们会放弃他们的代码或者原型系统,全部从头再来,祈祷这样能解决问题,而不是试着发现和修复问题。
你可能会假设,当今天的学生变身为明天的工程师并且全身心投入产品设计时,他们就已经具备以高效的方式进行相关工作所必需的调试技术。我已经认识到这个假设难以成真。
在成为大学教师之前,我在公司工作,为嵌入式系统设计师构建设计和调试工具。我主要负责设计,并带领团队设计逻辑分析仪、在线仿真器和性能分析工具。在许多情况下,我还要设计复杂的设备以解决复杂的问题。仅仅学习并熟练掌握这些设备中的一种就已经很累了,许多工程师并不想为此花费大量时间。
也许你也是这么想的。你是否分析过这种投入产出比:是先花时间浏览一大堆手册再上手,还