嵌入式LINUX系统的静/动态集成调试模式
现有的嵌入式LINUX系统开发过程中,所有的工程师都疲惫于使用两种不同的调试模式分别调试系统的内核和应用程序。首先通过一个JTAG调试工具来配置和启动LINUX系统;嵌入式LINUX系统正常运行起来后,就要通过GDB来继续调试工作。
LAUTERBACH公司综合了上述两种传统调试技术特长提供了一种新的LINUX调试技术。
本文以ARM架构上的LINUX系统开发为例,详细介绍和对比这三种不同的调试模式的实现和应用。
静态调试模式
通过JTAG调试接口进行软件调试的工具一般都只能工作在静态调试模式下,处理器和整个系统都必须被同时挂起。然后调试工具通过JTAG接口把处理器和目标系统的当前状态获取并显示出来(如图1所示)。
静态调试模式具有如下的优点:
静态调试模式唯一的环境需求就是目标系统必须支持JTAG调试标准,该调试模式最大的优点就是可以支持从复位向量表开始调试;
只要调试工具支持LINUX和MMU调试,就可以实现对LINUX内核及进程越界等问题的调试;
如果软件异常,随时可以挂起处理器,查看当前错误代码及系统状态;
因为处理器处于挂起状态,内核和其它进程都不会再对系统造成任何的干扰。
然而静态调试模式也有其不足之处,一旦处理器被挂起,所有的通信接口进程同时被终止。造成的结果就是所有通过Ethernet、Bluetooth或者CAN等接口和处理器进行通信的外部设备, 都会因为等待响应超时而中断连接。因此通过静态模式进行调试时,即使你只调试其中的一个进程或函数,也有可能改变整个系统的状态和配置;接下来再继续运行和调试程序,就无法保证系统的完整性和连续性,所以后续的调试可能就没有任何意义。
动态调试模式
GDB 调试模式是嵌入式LINUX系统的通用的动态调试模式。 在该模式下,可以实现只对当前进程挂起,系统的内核和其它的所有进程都继续处于运行状态。
然而GDB是一个纯粹的软件调试工具,同时需要下面的软件环境才可以实现:
目标系统上要有活动的GDB Server LINUX进程
主机端要有相应的调试软件,例如TRACE32(如图2所示)
TRACE32与GDB Server通过RS232或者Ethernet接口进行通信,收集当前被挂起的进程的状态信息。但是要实现动态调试模式,还必须建立在如下两个条件都成立的基础之上:
目标系统已经被完全正确的初始化并正确启动
GDB Server 永远处于活动状态——即通信接口已经正确运行,处理器或GDB Server不会被其它程序错误的挂起
相关文章
- 2023-02-13用米氏散射理论对光阻法微粒检测原理的诠释
- 2022-06-21组态王在溴化锂制冷中的应用
- 2021-12-18基于Pro/E软件的积水盘注射模设计
- 2023-05-25浅谈衡器秤体
- 2023-02-22射线、超声波探伤报告填写规范化探讨
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。