微处理器调试简史:1980–2016
自电子设计诞生以来,Bug不可避免,调试成为与故障、错误角力的必修课——看谁能胜出、胜得多彻底。
调试技术的演进与其支撑的设计一样引人入胜。从简单的激励-响应-观察法,到今天精密的工具、设备、方法论,领域与日益复杂的系统同步成长。2017年,基于功能I/O的调试登场,开启新纪元,承诺更高效率和能力。
历经数十年全球创新,我从1984年起参与调试。要理解我们正经历的范式转移,回顾塑造行业的里程碑很有必要。
1970s–1980s
当时系统设计与今大异。典型板卡包含CPU、(EP)ROM、RAM、以及PIC、UART、DMA控制器、定时器、I/O设备等外设IC,每个实现于独立芯片。

1980年代单板计算机(SBC)
(来源:https://oldcomputers.net/ampro-little-board.html)
开发者用汇编或C编码,编译、链接,产出HEX文件烧录ROM。流程涉及用紫外擦除器手动擦除EPROM,通过串/并行接口编程,再装回板卡。若程序表现不如预期,有几种调试技术可用。
代码审查: 最基础方法,至今仍被许多使用,通过在脑中或文本编辑器中单步走查代码,这项技能在工具不可用或太贵时依然宝贵。
LED指示: 经典方法用板载LED或其他指示器标示程序状态。在关键点插入LED翻转,开发者可视化追踪执行流。若有额外I/O引脚和逻辑分析仪,实时状态追踪成为可能。
目标板监控程序: 带串口和足够内存的板卡可驻留小监控程序。跳转进入监控程序,开发者可单步汇编、通过RS-232命令如s(单步)或m 83C4,16(显示内存)检查寄存器和内存。
在线仿真器(ICE): 负担得起者的终极调试器。它用仿真电路替换CPU,可观察和控制内部信号。虽庞大昂贵——常达数千美元——ICE提供高级断点、追踪,并能用仿真RAM替换EPROM,免除开发中反复擦写。

Motorola Exorciser ICE
(来源:https://www.exorciser.net/personal/exorciser/Original%20Files/exorciser.jpg) 
Intel MDS ICE
(来源:https://www.computinghistory.org.uk/userdata/images/large/PRODPIC-731.jpg)
1982–1990
嵌入式开发者迎来三大变化:
- 集成IC: CPU开始集成外设——如Intel 80186/80188(8086/8088演进)、Zilog Z180(源自Z80)、Motorola CPU32家族(如68302,源自68000)。
- 平价ICE: 厂商生产无需键合芯片的低成本ICE,80186 ICE价格降至1万美元以下。
- 时钟速度挑战: CPU主频上升应力ICE钻线和控制逻辑。解决方案是片上调试电路(OCD),提供全速单步、寄存器访问、断点,但早期实现缺完整追踪能力。
OCD访问典型用专有接口如后台调试模式(BDM)或更常见的JTAG(传统用于生产测试)。部分工具能在CPU运行时访存,部分不能,导致实现差异。
1990–2000
高主频和内部缓存使外部追踪不切实际。厂商转为压缩核心追踪数据——仅捕获非顺序PC变化并压缩离片传输。调试器利用运行程序知识重构执行路径。关键架构包括IBM PowerPC、Motorola ColdFire、ARM 7TDMI核心。
2000–2010
压缩追踪数据集启用片上追踪缓冲如ARM嵌入式追踪缓冲(ETB),通过JTAG访问。缓冲大小可配置,平衡硅面积与追踪性能。多核SoC带来新挑战:核心掉电时JTAG扫描链消失。ARM CoreSight架构通过单一基于JTAG的调试访问端口解决此问题,可到达所有内存映射CoreSight组件,包括可独立掉电的多核心。
2010–至今
64位核心兴起和Linux/Android普及,设备上调试获关注。内核驱动现暴露CoreSight组件,通过perf子系统实现目标板上追踪捕获。ARM嵌入式逻辑分析仪(ELA)带回早期ICE丰富性,提供复杂断点、触发、内部SoC信号访问——全在硅内。
40年不懈创新后,领域站在新章节边缘:基于现有功能I/O的调试与追踪。此转变承诺更精简方案,减少开发时间成本同时增强能力,延续与Bug的长期战争。
嵌入式
- 条码扫描器:技术原理、设计演进与未来趋势
- SPICE 发展史:从 CANCER 到现代电路仿真
- 微处理器编程基础
- 牧野机床:从日本首台NC铣床到全球加工中心领军者
- Gene Haas:从车间老板到CNC帝国与赛车王朝的缔造者
- 马扎克百年进化史:从锅碗瓢盆到全球机床巨头
- CNC 编程基础: 循序渐进教程与示例代码
- Cadence推出Cloud Passport合作伙伴计划 加速芯片设计云迁移
- 钨丝发展史:从爱迪生碳丝到现代AKS合金
- C++ 注释最佳实践:编写可读、可维护代码的注释艺术
- C 程序结构详解:Hello World 实例与编译运行全流程
- C# 程序结构解析:从 Hello World 看命名空间、类、Main 入口与编译运行