MXT0106处理器调试环境的设计与实现
引言
随着软件开发规模的不断扩大,调试工具在软件开发中的作用显得越来越重要。针对嵌入式处理器的调试环境的搭建有很多的方法,包括在线仿真器、ROM(只读存储器)仿真器及类似于调试支持单元(Debug Support Unit,简称DSU)的硬件调试,而GDB(GNU的软件调试器)完全是通过软件方式实现调试。
本文针对国产SPARC v8处理器,设计实现了其基于处理器硬件调试机制的GDB调试环境。
调试环境的硬件基础
MXT0106是北京时代民芯公司设计的一款SPARC V8体系结构的嵌入式处理器,具有非常丰富的外设接口,只需加上存储器和应用相关的外围电路,就可以构成完整的单板计算机系统。
它具有片内硬件调试功能,可以辅助软件在目标硬件上进行调试。该部分功能包括两个模块:调试支持单元(DSU)和调试通讯连接模块(如图1所示)。对这两个模块的理解和使用,是开发调试环境的基础。
调试支持单元
调试支持单元(DSU)可以通过任何在内部总线上的主设备来调试处理器。通过DSU将处理器置于调试模式(进入调试模式时流水线冻结),允许从外部调试处理器。DSU主设备在内部总线上占有一个地址空间,通过这个地址空间,可以访问处理器的寄存器和跟踪缓冲区的内容,CPU内部的所有寄存器、cache(缓存)在总线上都有映射的空间,调试时直接由DSU按地址访问。用户也可以调试和/或从中断的位置重新执行。
DSU还有两个断点寄存器来匹配任何内部的总线地址或者执行的指令。
DSU通讯连接
DSU通讯连接包含一个串口,该串口在内部总线上作为一个主设备。该串口支持简单的通信协议传输访问参数和数据。连接命令由一个控制字节、32位地址和可选的写入数据组成。数据以8位为基础进行发送:包括一个起始位、8位数据位和一个停止位。
通过通讯链路,可以对内部总线上任何地址进行读/写操作。通过设置长度字段为n-1(其中n标明传输字的长度),可以进行块传输。其协议格式如图2。
评论