CISC处理器调试系统的设计实现,详细软硬件架构、流程、代码
降到最低,保证了CPU内部数据通路的独立性。
由于在处理器内部寄存器的值的更新都有严格的时序控制,所以将扫描寄存器加在寄存器的输入线和输出线上是有区别的。这些寄存器输入线上的数据要存入到寄存器中在下一个时钟周期输出才会生效,例如IR中指令输出到微控制部件去译码才会起作用。所以为了要了解当前正在起作用的这些寄存器的值,另外输入线上的值随时都可能变化,由于这两个原因在输入线上引入边界扫描寄存器才可以真实的反映处理器当前的状态和寄存器的值。
- 系统软件设计
调试系统不仅需要底层硬件的良好支持,还需要有一个便于用户使用的PC机上层的控制台。该控制台主要功能是发送数据到串并转换芯片FT245R,数据经过FT245R转换以后变为并行的8bit数据送入到USB-JTAG协议转换器,协议转换器将数据进行解析来相应的产生TAP信号。
PC机通过USB电缆与FT245R相连,所以PC机只要将数据发送到FT245R任务就完成了,其他的都由下面的硬件来实现。采用C++builer6.0为PC机控制台的开发平台,添加FT245R厂商提供的动态链接库,使用FT245R的厂商提供的API函数进行编程实现。
- 系统调试和测试
- 各调试功能的验证
- 测试程序
当OCD、USB-JTAG协议转换器和PC机控制台这三个片上调试系统的组成部分都设计好以后,下一步的工作就是来编写一段汇编程序作为目标测试程序,因为目标处理器是一款CSIC处理器,所以还必须设计好一段可用的微程序存放到处理器内部控制存储器中来完成整个处理器控制信号的产生。
由于处理器内存地址0000~002F作为堆栈使用,所以内存中存放的机器指令必须从地址0030开始存放,本文在xilinx的SPARTAN-3E开发板上实现处理器以及片上调试器,所以同时也将编写好的测试程序生成存储器初始化文件,然后采用xilinx的RAM核将编辑好的存储器文件初始化到该RAM核中。在处理器上电时的程序入口地址设置为测试程序的入口即可。
现在编写一段测试程序如下:
0030:0761 0100; MOV #100H,R1
0032:043A 0002; MOV R1,0002H
0034:2b68 0001; TEST #0001H, R0
0036:019a 000B; JZ 000BH
左边是在机器指令以及其在内存中的位置,右边是其对应的汇编程序。其中共有四条指令,包括对通用寄存器、内存等资源的访问,跳转指令是程序的跳跃执行,由于在此处关注的是处理器的内部状态,所采用的测试程序只要能够覆盖整个处理器的数据通路即可。
- 复位功能验证
复位功能是指当系统出现异常或者处于的状态用户不能确定时,可以使用该功能使处理器回到初始状态。由于处理器内部与处理器初始运行有关的寄存器初始值都是确定的值,所以要验证复位调试功能,只需将复位调试指令发送到OCD,然后读出处理器内部寄存器的值与寄存器的初始值是否相同来确定复位调试功能是否正确执行。
首先来看一下处理器内部一些寄存器的初始值,在处理器内部堆栈指针SP、程序计数器PC和中断允许寄存器MASK有特别的初始值,其他寄存器都为0值,SP初始值为0030H,PC值也为0030H,因为在处理器运行时SP从0030H往小地址减而PC值则是往大地址执行。而MASK初始值为5AA5,设置这样的初始值主要是为了容易检测数据在读出时是否出现错位的现象。
执行处理器复位调试功能,然后读出内部寄存器的值,看是否回到初始状态,PC机控制台显示出读出的寄存器值如图1,可以看出所有的寄存器都回到了初始状态,表示复位调试功能实现正确。
图 1 复位功能验证
- 微指令单步
微指令单步主要是在执行一条机器指令过程中,为了能更清楚详细的处理器内部具体操作涉及到具体的控制信号起作用以及某些寄存器的操作。本文的测试程序的第一条机器指0761 0100(MOV #100H,R1),是将立即数十六进制的100移动到通用寄存器R0中。根据第三章介绍的微程序的设计和微指令的转移方式,写出该机器指令所对应的微指令地址和微指令。
000:20080001;
001:00069002;
002:CC000003;
003:00000404;
004:00000A08;
00B:2008000F;
00F:00069C10;
014:C0080015;
015:00061016;
016:D0000006;
在单步调试过程中将数据读回与以上的分析相比较,将指令0761 0100的单步调试过程每一个单步的数据都读回,其中将微指令单步中的主要界面截图如图2、图3、图4和图5。
图2第一条微指令
图3 第二条微指令
图4 读数据微指令
图5 结果写入R1
通过观察UAR、DR、IR、R1、PC和AR六个寄存器值的变化,可知系统正常按照预期运行,并且单步调试功能正确实现。
- 微指令断点
微指令断点调试时,首先通过断点设置将微指令断点值写入到断点寄存器。其中断点寄存器BPR中为显示正是通过PC机控制台写入到BPR寄存器中值,说明断
CISC处理器 调试系统 片上调试器 Spartan-3E 协议转换器 相关文章:
- TD-LTE多模基带平台ARM子系统的运行流程控制和异常定位分析(08-24)
- 基于GAL的BDM调试系统设计(06-05)
- 应用调试-----自制系统调用、编写进程查看器(11-21)
- 嵌入式软件跟踪信息嵌套缓存机制和解析机制的设计(10-18)
- GDB RSP协议与USB通信在嵌入式调试系统中的应用(11-14)
- ARM体系中调试系统概述(11-22)