资料介绍
嵌入式系统除错的工作量,可望占了嵌入式软体专案工作量的一半以上。了解硬体除错功能以及它们所能解决的问题,是选择正确的晶片、建立除错系统以及提高生产效率的关键。
很多人都相信“臭虫(bug)”此一用词起源于海军少将 Grace Murray Hopper。但事实上,没人知道这种用法的真正来源,它可能可以回溯到 Thomas A Edison,或甚至更早。美国海军后备役军官 Hopper 在 1945 年 9 月 9 日于哈佛大学对 Mark II Aiken 继电计算器( Relay Calculator)进行测试时,于短路的 Panel F #70 号继电器处发现了一双臭虫。她把这只臭虫拿掉后(就是对电脑进行除臭虫(debugging)),就解决了这台机器不定时关机的故障(参考文献 1)。虽然这个早期的例子指的是从系统硬体中去除臭虫,但今天“debugging”这个词是指发现一个程式的问题,并去掉缺陷代码(defective code)的过程。这些问题包括任何与原始意向的差异,而去掉缺陷代码的做法则远优于增加纠正代码(correction code)。理想情况下,在任何时间都可以获得所有的特性(如系统的匯流排与暂存器值),供监控与修改。但随着 IC 转向 SoC,可存取性(accessibility)就变得更加困难了。
对硬体除错,是要尽可能地可以存取到嵌入式系统内部资源,这可以透过观察系统的特性,如 CPU 状态和 PC 值,或修改系统的参数。在嵌入式系统设计的早期可以用简单技术进行除错,如记录(logging)与监控,或者对多核心 SoC而言,可以采用最新开发的方法,如跟踪、缓衡记忆体除错(cache debugging)和交叉触发(cross-triggering)等。本文的重点不是在如何编写代码或为代码除错,而是描述现在可用的嵌入式硬体硅智财权(intellectual property ,IP),以及该 IP 能解决哪方面的除错问题。
记录与监控
最古老也是最常用的除错方法就是在代码中增加一些列印叙述(print statement),它可以显示软体某个部分的执行资讯,并提供暂存器和变数的实际值。这可能是一年级学生练习“hello world”的一种延续,该程式会在荧幕上显示这两个词,用于表示程式能够运行,以及执行到了某个点。列印叙述(或 printf 语句)只是记录的一种变型,它是用处理器将重要资讯写入一个“管道(pipe)”,作为外部跟踪的过程。所使用的管道将视系统而订,在 printf 情况下,管道是标准的输出(荧幕),但它也可以是 UART、USB,甚至是通用 I/O。
当你需要用一种对程式设计工程师有意义的方式,组织各个部分资讯时(例如提供感测器资讯或状态机的转换),采用记录的方法是很有价值的。可以用记录工具来分析记录的资讯,并产生一个后处理资料库。必须小心使用记录功能才能获得高效率。例如,记录资讯应使用关键字开头,如“警告”、“错误”或“除错”等,并应能识别出资讯的建立者。应将记录功能划分为一小组档案,以便于维护,并提供时间戳资讯。不幸的是,记录是一种侵入性的方法,它会修改软体的即时状态,因而不同于最终应用。
除错监控器是另一种常见的除错工具,它与运行在 CPU 记忆体中的目标代码一起工作(参考文献 2 和参考文献 3)。除错器运行在一台主机上,它透过一个专用的埠发送指令和接收响应,从而达到与监控器通信的目的。可以将 Linux 上的 gdbserver 程式当作一个除错监控器,不过它比早期的 ROM 监控器更复杂
(图 1)。
当使用者希望在某条指令处设置一个中断点时,gdbserver 会保存该指令,而用一个系统呼叫(system call)来替代它。Gdbserver 然后用 Linux 的 ptrace 程式获得所有进行系统呼叫的应用程式资讯。接着,当发生系统呼叫而啟动中断点时,gdbserver 可以取得对被除错应用的控制。除错器运行在一台主控机上,透过串列埠或乙太网路连接到目标物件(参考文献 4)。监控器的方法既便宜又实用,但也有一些缺点,例如需要在进行任何除错前载入代码,并可能与应用软体相互影响。如果代码位于快闪记忆体中就不能使用监控器软体,因为要插入软体中断点就需要修补应用软体。
很多人都相信“臭虫(bug)”此一用词起源于海军少将 Grace Murray Hopper。但事实上,没人知道这种用法的真正来源,它可能可以回溯到 Thomas A Edison,或甚至更早。美国海军后备役军官 Hopper 在 1945 年 9 月 9 日于哈佛大学对 Mark II Aiken 继电计算器( Relay Calculator)进行测试时,于短路的 Panel F #70 号继电器处发现了一双臭虫。她把这只臭虫拿掉后(就是对电脑进行除臭虫(debugging)),就解决了这台机器不定时关机的故障(参考文献 1)。虽然这个早期的例子指的是从系统硬体中去除臭虫,但今天“debugging”这个词是指发现一个程式的问题,并去掉缺陷代码(defective code)的过程。这些问题包括任何与原始意向的差异,而去掉缺陷代码的做法则远优于增加纠正代码(correction code)。理想情况下,在任何时间都可以获得所有的特性(如系统的匯流排与暂存器值),供监控与修改。但随着 IC 转向 SoC,可存取性(accessibility)就变得更加困难了。
对硬体除错,是要尽可能地可以存取到嵌入式系统内部资源,这可以透过观察系统的特性,如 CPU 状态和 PC 值,或修改系统的参数。在嵌入式系统设计的早期可以用简单技术进行除错,如记录(logging)与监控,或者对多核心 SoC而言,可以采用最新开发的方法,如跟踪、缓衡记忆体除错(cache debugging)和交叉触发(cross-triggering)等。本文的重点不是在如何编写代码或为代码除错,而是描述现在可用的嵌入式硬体硅智财权(intellectual property ,IP),以及该 IP 能解决哪方面的除错问题。
记录与监控
最古老也是最常用的除错方法就是在代码中增加一些列印叙述(print statement),它可以显示软体某个部分的执行资讯,并提供暂存器和变数的实际值。这可能是一年级学生练习“hello world”的一种延续,该程式会在荧幕上显示这两个词,用于表示程式能够运行,以及执行到了某个点。列印叙述(或 printf 语句)只是记录的一种变型,它是用处理器将重要资讯写入一个“管道(pipe)”,作为外部跟踪的过程。所使用的管道将视系统而订,在 printf 情况下,管道是标准的输出(荧幕),但它也可以是 UART、USB,甚至是通用 I/O。
当你需要用一种对程式设计工程师有意义的方式,组织各个部分资讯时(例如提供感测器资讯或状态机的转换),采用记录的方法是很有价值的。可以用记录工具来分析记录的资讯,并产生一个后处理资料库。必须小心使用记录功能才能获得高效率。例如,记录资讯应使用关键字开头,如“警告”、“错误”或“除错”等,并应能识别出资讯的建立者。应将记录功能划分为一小组档案,以便于维护,并提供时间戳资讯。不幸的是,记录是一种侵入性的方法,它会修改软体的即时状态,因而不同于最终应用。
除错监控器是另一种常见的除错工具,它与运行在 CPU 记忆体中的目标代码一起工作(参考文献 2 和参考文献 3)。除错器运行在一台主机上,它透过一个专用的埠发送指令和接收响应,从而达到与监控器通信的目的。可以将 Linux 上的 gdbserver 程式当作一个除错监控器,不过它比早期的 ROM 监控器更复杂
(图 1)。
当使用者希望在某条指令处设置一个中断点时,gdbserver 会保存该指令,而用一个系统呼叫(system call)来替代它。Gdbserver 然后用 Linux 的 ptrace 程式获得所有进行系统呼叫的应用程式资讯。接着,当发生系统呼叫而啟动中断点时,gdbserver 可以取得对被除错应用的控制。除错器运行在一台主控机上,透过串列埠或乙太网路连接到目标物件(参考文献 4)。监控器的方法既便宜又实用,但也有一些缺点,例如需要在进行任何除错前载入代码,并可能与应用软体相互影响。如果代码位于快闪记忆体中就不能使用监控器软体,因为要插入软体中断点就需要修补应用软体。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 嵌入式系统系列丛书-时间触发嵌入式系统设计模式 0次下载
- 嵌入式软件接口怎么测试,嵌入式系统接口测试策略.doc 13次下载
- 嵌入式系统定义 11次下载
- 一种实时嵌入式多任务微内核的分析与改进 10次下载
- 嵌入式系统与嵌入式PLC 27次下载
- 嵌入式系统接口与案例的分析与设计资料说明 3次下载
- 嵌入式操作系统的介绍和嵌入式操作系统的发展状况和应用前景说明 7次下载
- 学习嵌入式系统有哪些方向? 4次下载
- 嵌入式Linux系统开发教程及案例分析 7次下载
- TI的嵌入式分析技术使设备更加智能 9次下载
- 嵌入式系统设计师考试大纲及试题 89次下载
- 嵌入式系统设计师备考策略 72次下载
- 嵌入式数字视频监控系统的数据存储策略 23次下载
- 嵌入式系统中采样限幅电路分析 17次下载
- 嵌入式Linux 实时性分析与实时性改进 16次下载
- 什么是嵌入式系统?嵌入式系统的具体应用 502次阅读
- 嵌入式系统的这11个特点你知道吗 5729次阅读
- 嵌入式系统的全面解析 2918次阅读
- 嵌入式系统是怎么样组成的 1529次阅读
- 从嵌入式系统到嵌入式操作系统 631次阅读
- 关于嵌入式软件系统测试策略和方案设计详解 8922次阅读
- 嵌入式系统的特点大汇总 5453次阅读
- 嵌入式行业发展状况_嵌入式行业人才需求_嵌入式系统就业前景分析 2.3w次阅读
- 什么是嵌入式操作系统 常见的嵌入式系统有哪些 3.9w次阅读
- 嵌入式操作系统是什么_嵌入式操作系统有哪些 1.9w次阅读
- Reset对嵌入式系统稳定性的重要性分析 1834次阅读
- 什么是嵌入式系统_嵌入式系统基础知识介绍 1.4w次阅读
- 典型的嵌入式系统设计 2553次阅读
- 一种嵌入式系统的内存分配方案 2005次阅读
- 嵌入式系统结构与协同性探讨 1283次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21548次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183278次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多