微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > S698系列处理器软件调试工具V8MON的设计与应用

S698系列处理器软件调试工具V8MON的设计与应用

时间:11-20 来源:电子产品世界 点击:

1 引言

在嵌入式软件开发中,调试是一个重要的环节,调试工具是衡量软件开发环境优劣的重要因素。可以说嵌入式交叉调试器是嵌入式系统开发者使用最多的工具,也是整个开发周期中使用时间最长的工具。

目前基于SPARC核的嵌入式处理器已经成为欧美市场的主流,2003年珠海欧比特控制工程股份有限公司成功研制出国内第一款SPARC V8架构32位嵌入式处理器S698,经过几年发展,S698已成为系列化产品,有军品级、商业级、多处理器类型等,并广泛应用于国防、航空、通信等领域。

V8MON是欧比特公司自主研发的基于S698系列处理器的软件调试器,可以运行于Windows以及Linux平台,具有使用简捷、接口丰富等特点,同时也可运用于其它SPARC V8架构的处理器平台。V8MON的调试功能主要包括:程序下载、运行、内存读写、反汇编、断点设置、数据跟踪等。

2 调试原理

2.1 交叉调试

嵌入式系统中的软件调试与桌面软件的调试有很大的不同。调试嵌入式系统时,调试器和被调试程序往往是物理上分离的。调试器运行在宿主机上,而被调试程序运行在目标机上,宿主机与目标机之间通过某种媒介进行通信。通常情况下,还要在目标机上运行一个称为调试代理(Debug Agent)的监控程序,由它来负责与运行在宿主机上的调试器进行通信,控制被调试程序的执行,并将被调试程序的执行情况及时反馈给调试器。

使用调试代理软件的最大的缺点是占用目标系统的资源,消耗处理器时间,造成应用程序的最终运行环境和调试环境有差异,且影响被调试程序的运行。目前一些高端处理器都内置有硬件调试逻辑单元,可以通过硬件方式完成调试过程中的通讯、控制工作,且不占用系统资源,不影响程序的运行,不需要调试代理程序的参与。

S698系列处理器的内部就集成有调试单元DSU(Debug Support Unit),DSU可以独立于IU处理单元在内部AHB总线上产生读写时序,所以可以直接到访问处理器上的各种资源(如内存空间、片内寄存器、ROM地址等)。

V8MON调试器运行在主机端,通过串口、以太网等方式与目标硬件系统相连,通过收送指令的方式与DSU调试单元进行交互,从而完成对目标系统的调试。可以看到这种调试模式无需在硬件系统上烧写监控调试软件,也不需要借助硬件仿真器,甚至不需要硬件处理单元的参与。V8MON除了与DSU通讯之外,还要完成对人机接口,以及文件解析、GDB协议分析等功能,其完整的模块结构如图1所示。

图1 V8MON连接结构图

V8MON不仅可以设置软件断点(指令级中断),还可以设置硬件断点。通过写DSU调试单元中断点寄存器的值可以进行硬件断点设置,V8MON不仅对地址还可以对数据以及总线的信号进行复杂的触发控制设定,从而满足对特定事件的中断响应,增加了灵活性,同时可以在ROM中设置断点和观察点,极大地方便调试。

V8MON还提供追踪功能,可以不停止CPU的运行而实时监视芯片总线的信息,这些信息存储在处理器内部的trace buffer中, V8MON可以随时读取这些信息,从而根据这些数据信息重现处理器的历史状态、数据以及程序流程等。合理使用此功能,用户可以得到细致、准确的运行分析数据,而又不必借助任何硬件设备,可以大大降低分析的成本。

2.2 gdb连接

V8MON有两种操作模式:命令行模式和GDB模式。在命令行模式下,V8MON命令通过窗口终端控制台手工输入,V8MON通过DSU协议把指令传输给目标系统DSU调试单元;在GDB模式下,V8MON作为一个网关,V8MON首先把客户端通过远程GDB协议发过来的GDB命令翻译为调试指令,再通过DSU协议把调试指令传输给目标系统DSU调试单元。

Gdb是GNU软件序列中的调试工具,Gdb可以调试各种程序,包括C、C++、JAVA、PASCAL、FORAN和一些其它的语言,支持现有的大部分处理器平台,即可用于上位机软件调试,也可用于嵌入式软件交叉调试。

V8MON通过标准socket接口与gdb连接,V8MON为socket服务器端,gdb为客户端。V8MON和gdb可以在同一个PC机上运行,也可以在两台不同的PC上运行,这两台机器之间通过以太网相连;连接后用户可以在主机上用gdb对目标系统进行调试,V8MON在目标系统与gdb之间进行命令转换,起到桥梁纽带作用。

图2 V8MON GDB模式调试原理框图

采用gdb调试更关注于软件本身,较适合对大型应用软件的调试,用户可以在高级语言层面调试应用程序,如查看变量,源代码级单步执行等。同时可以进一步将gdb调试内嵌到到集成开发环境中,从而获得更直观、更友好的人机界面,此时用户的操作全部是在图形界面下完成,无需了解V8MON的任何操作细节。

3 设计实现

V8MON大部分由C语言编写

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top