通常所说的大致分两类,一类用于测试芯片的电气特性,检测芯片是否有问题;一类
用于 Debug;一般支持的 CPU 内都包含了这两个模块。
一个含有 Debug 接口模块的 CPU,只要时钟正常,就可以通过 JTAG接口访问 CPU
的内部寄存器和挂在 CPU 总线上的设备,如 FLASH,RAM,SOC(比如 4510B,44Box,
AT91M 系列)内置模块的寄存器,象 UART,Timers,GPIO 等等的寄存器。上面说的
只是 JTAG 接口所具备的能力,要使用这些功能,还需要软件的配合,具体实现的功能
则由具体的软件决定。例如下载程序到 RAM 功能。了解 SOC 的都知道,要使用外接
的 RAM,需要参照 SOCDataSheet 的寄存器说明,设置 RAM 的基地址,总线宽度,
访问速度等等。有的 SOC 则还需要 Remap,才能正常工作。运行Firmware 时,这些
设置由 Firmware 的初始化程序完成。但如果使用 JTAG 接口,相关的寄存器可能还处
在上电值,甚至时错误值,RAM 不能正常工作,所以下载必然要失败。要正常使用,
先要想办法设置 RAM。在 ADW 中,可以在 Console 窗口通过 Let 命令设置,在 AXD
中可以在 Console 窗口通过 Set 命令设置。
下面是一个设置 AT91M40800 的命令序列,关闭中断,设置 CS0-CS3,并进行
Remap,适用于 AXD(ADS 带的 Debug)
setmem 0xfffff124,0xFFFFFFFF,32---关闭所有中断
setmem 0xffe00000,0x0100253d,32--- 设 置 CS0
0xffe00004,0x02002021,32---设置 CS1
setmem 0xffe00008,0x0300253d,32---设置 CS2
setmem 0xffe0000C,0x0400253d,32---设置 CS3
setmem 0xffe00020,1,32---Remap
如果要在 ADW(SDT 带的 DEBUG)中使用,则要改为: