新闻中心

EEPW首页>嵌入式系统>设计应用> 基于EmJTAG的ARM嵌入式系统调试工具

基于EmJTAG的ARM嵌入式系统调试工具

作者: 时间:2012-11-10 来源:网络 收藏

  DTC功能框图如图3所示。DTC是ST72651内部集成的数据传输协处理器,也是一个通用的串行/并行通信接口。通过改变其内运行的插件程序,DTC可以方便地完成不同的高速数据传输操作。插件程序(最大为256字节)开始时存放在ST72651的Flash中,芯片运行的程序会将插件程序加载到DTC SW RAM中,然后控制DTC运行这段插件程序。ST7核也可以读写DTC的数据传输缓冲区,因此需要有一个仲裁电路用于防止ST7核和DTC访问该缓冲区时发生冲突。DTC有一套简单的指令集。ST7核通过DTC控制寄存器DTCCR控制DTC的操作,通过DTC状态寄存器DTCSR查询DTC的状态,通过DTC指针寄存器DTCPR改变DTC的操作指针。
  DTC有4种操作状态:空闲状态(IDLE),加载插件程序状态(RAMLOAD),运行状态(RUNNING)和改变操作指针状态(POINTERCHANGE)。通过改变DTCCR寄存器的RUN、INIT和LOAD位可以实现4种状态间的转换。
  将插件程序加载到DTC SW RAM中的步骤如下:
  ◆ 清除DTCCR寄存器的RUN位,使DTC进入IDLE状态,停止DTC;
  ◆ 设置DTCCR寄存器的LOAD位,使DTC进入RAMLOAD状态,以允许写DTC RAM;
  ◆ 将插件程序复制到DTC SW RAM中;
  ◆ 清除DTCCR寄存器的LOAD位,使DTC返回到IDLE状态,恢复DTC RAM写保护。
  使DTC运行其RAM(即DTC SW RAM)中的插件程序的步骤如下:
  ◆ 清除DTCCR寄存器的RUN位,使DTC进入IDLE状态,停止DTC;
  ◆ 将插件程序的起始地址填入DTCPR寄存器中;
  ◆ 设置DTCCR寄存器的INIT位,使DTC进入POINTERCHANGE状态,将DTCPR寄存器中的值复制到DTC中;
  ◆ 清除DTCCR寄存器的INIT位,使DTC返回到IDLE状态;
  ◆ 设置DTCCR寄存器的RUN位,使DTC进入RUNNING状态,开始运行。
  DTC运行的插件程序实现的功能是:将数据传输缓冲区内的数据快速移出I/O口,或者从I/O快速移入数据到数据传输缓冲区中。DTC操作的I/O口作为4个JTAG信号: TCK、TMS、TDI和TDO。TCK作为移入/移出数据的触发时钟;TDI作为移出数据出口;TDO作为移入数据进口;TMS作为输入信号,与TCK一起决定TAP控制器状态的转移过程。插件程序用DTC汇编指令编写,然后通过ST公司提供的一个简单汇编器将汇编源代码转化成DTC机器指令,烧写到ST72651的Flash存储器中。
3.3.2 扫描链操作模块
  扫描链操作模块调用DTC软件插件程序,完成初始化TAP控制器、扫描链1操作和扫描链2操作。
(1) 初始化TAP控制器
  TAP控制器的基本功能是产生时钟信号和控制信号。它包括一个带有16个状态的有限状态机: Test-Logic-Reset状态、Run-Test/Idle状态、Select-DR-Scan状态、Select-IR-Scan状态、Capture-DR状态、Shift-DR状态、Exit1-DR状态、Pause-DR状态、Exit2-DR状态、Update-DR状态、Capture-IR状态、Shift-IR状态、Exit1-IR状态、Pause-IR状态、Exit2-IR状态和Update-IR状态。
  初始化TAP控制器的目的是使TAP控制器进入Select-DR-Scan状态。无论当前TAP控制器处于什么状态,只要在TMS为1时产生5个TCK信号,TAP控制器就进入Test-Logic-Reset状态。因此,使TAP控制器进入Select-DR-Scan状态的步骤为:首先使TMS为1,产生5个TCK信号,使TAP控制器进入Test-Logic-Reset状态;然后使TMS为0,产生1个TCK信号,使TAP控制器进入Run-Test/Idle状态;最后使TMS为1,产生1个TCK信号,使TAP控制器进入Select-DR-Scan状态。
(2) 扫描链1操作
  扫描链1是JTAG电路中的一种测试数据寄存器,主要用于内核测试和调试过程。
  扫描链1有33位,按扫描先后顺序依次为: BREAKPT位(输入),D31~D0(输入/输出)。扫描链1操作的目的是移入BREAKPT位,同时向/从数据总线移入/移出 32位数据。操作步骤如下:
  ◆ 初始化TAP控制器,使TAP控制器进入Select-D-RScan状态;
  ◆ 使TMS为1,产生1个TCK信号,使TAP控制器进入Select-IR-Scan状态;
  ◆ 使TMS为0,产生2个TCK信号,使TAP控制器进入Shift-IR状态;
  ◆ 往TAP控制器的指令寄存器移入JTAG指令SCAN_N(b0010);
  ◆ 使TAP控制器退出Shift-IR状态,进入ShiftDR状态;
  ◆ 往扫描链选择寄存器移入b0001,选择扫描链1;
  ◆ 使TAP控制器退出Shift-DR状态,进入Shift-IR状态;
  ◆ 往TAP控制器的指令寄存器移入JTAG指令INTEST(b1100);
  ◆ 使TAP控制器退出Shift-IR状态,进入Shift-DR状态;
  ◆ 移入BREAKPT位,移入数据D31~D0(或移出数据D31~D0);
  ◆ 使TAP控制器退出Shift-DR状态,进入Select-DR-Scan状态。
(3) 扫描链2操作
  扫描链2也是一种测试数据寄存器,用于访问EmbeddedICE宏单元的寄存器。
  扫描链2有38位,按扫描先后顺序依次为:EmbeddedICE寄存器的D0~D31,EmbeddedICE寄存器的A0~A4,读/写位。扫描链2操作的目的是读写EmbeddedICE宏单元的寄存器。操作步骤如下:
  ◆ 初始化TAP控制器,使TAP控制器进入Select-DR-Scan状态;
  ◆ 使TMS为1,产生1个TCK信号,使TAP控制器进入Select-IR-Scan状态;
  ◆ 使TMS为0,产生2个TCK信号,使TAP控制器进入Shift-IR状态;
  ◆ 往TAP控制器的指令寄存器移入JTAG指令SCAN_N(b0010);
  ◆ 使TAP控制器退出Shift-IR状态,进入Shift-DR状态;
  ◆ 往扫描链选择寄存器移入b0010,选择扫描链2;
  ◆ 使TAP控制器退出Shift-DR状态,进入Shift-IR状态;
  ◆ 往TAP控制器的指令寄存器移入JTAG指令INTEST(b1100);
  ◆ 使TAP控制器退出Shift-IR状态,进入Shift-DR状态;
  ◆ 移入欲写的数据D0~D31;
  ◆ 移入欲读写的EmbeddedICE寄存器的地址;
  ◆ 移入读/写位(读为0,写为1);
  ◆ 如果为读,则移出读到的EmbeddedICE寄存器的值D0~D31;
  ◆ 使TAP控制器退出Shift-DR状态,进入Select-DR-Scan状态。
3.3.3 EmbeddedICE寄存器操作模块
  EmbeddedICE寄存器的读写通过对扫描链2操作实现。读时,将欲读的EmbeddedICE寄存器地址作为参数调用扫描链2操作函数;写时,将欲写的值和EmbeddedICE寄存器地址作为参数调用扫描链2操作函数。
3.3.4 高层调试命令模块
  通过调用扫描链操作模块和EmbeddedICE寄存器操作模块,实现了读写核寄存器、读写存储器、断点及观察点操作、单步或全速运行程序等高级调试控制命令。这些命令供主程序状态机模块调用。
3.3.5 USB接口驱动模块
  USB接口驱动模块主要包含5个函数:函数InitUSB()用于初始化USB模块;函数USB_Polling()处理USB主机发来的USB标准设备请求,实现USB枚举阶段的传输过程,同时根据状态寄存器的标志位调用相应的端点处理函数;CTR(正确传输)中断服务程序用于处理端点上发生的各种中断;函数USB_RecvDataEP2(unsigned char *dp, uint8 len)和USB_SendDataEP2(unsigned char *dp, uint8 len)用于从端点2接收和发送USB包。
3.3.6 主程序状态机模块
  主程序状态机模块循环调用USB接口驱动模块的USB_RecvDataEP2()函数,接收调试器发来的命令报文,根据命令报文的主命令号和次命令号调用高层调试命令模块的相应命令函数,并将命令函数返回的数据通过调用USB_SendDataEP2()函数返回给调试器,最终根据命令函数返回的状态通过调用USB_SendDataEP2()函数发确认报文给调试器。
结语
  本文构造了一个支持核的嵌入式系统。它首先定义了一个轻量级的远程调试协议EmRDI,然后使用ST72651芯片实现了协议转换器。目前该已经应用于实际嵌入式系统开发中,PC机上的调试器软件可以通过下载程序到基于核的目标机上,并实现设置/清除断点、设置/清除观察点、全速/单步/停止运行程序等基本的调试功能。
参考文献
[1]. The ARM7TDMI Debug Architechture,ARM DAI 0028A,1995-12.
[2] ARM. Using EmbeddedICE,ARM DAI 0031C,1999-02.
[3] ARM. ARM Architecture Reference Manual,ARM DDI 0100E,2000-06.
[4] ST. ST72651 DTC Specification,2002-01.
[5] ST. ST7265x Target Specification,2002-01.
[6] 张天武. 通过USB和JTAG接口实现主机和DSP器件的通讯[D].

上一页 1 2 下一页

关键词:EmJTAGARM调试工具

评论


相关推荐

技术专区

关闭