AXD Debugger

来源:互联网 发布:淘宝满就减怎么设置 编辑:程序博客网 时间:2024/05/22 12:27

该文章转载于:http://blog.csdn.net/shuaishuai80/article/details/6202210

 

   以NandFlash测试程序为例来说明AXD工具使用方法.在CodeWarrior中执行Debug,ADS编译器会自动调用AXD工具.

(一)使用H-JTAG的AXD调试
(1)使用AXD工具前需要指定H-JTAG来调试开发板.
      开发板不上电,在CodeWarrior中执行Debug,ADS编译器自动调用AXD工具.在AXD界面内执行菜单Options/Configure Target,单击Add来添加H-JTAG配置文件.该配置文件是在H-JTAG安装目录下的H-JTAG.dll(常见安装目录c:/Program Files/H-JTAG/H-JTAG.dll).选中H-JTAG,单击Configure,这样就工程配置了AXD工具的H-JTAG.

(2)接入Debug串口线、USB线、JTAG线,打开H-JTAG代理调试软件、SecureCRT,打开开发板电源.注意,如果要使用AXD进行调试,NandFlash内不能有程序,否则会使要调试的程序运行不正常.所以,使用前先擦除NandFlash.

(3)在CodeWarrior中执行Debug,ADS编译器会自动调用AXD工具.如果AXD图标变色,说明已成功连接至开发板.

(4)配置SDRAM.由于需要将程序下载到SDRAM中运行,所以使用AXD调试前需要正确配置SDRAM.天祥电子提供了SDRAM的初始化脚本"2440init.txt",用户在运行AXD前应该先运行该初始化脚本.在AXD界面内执行菜单Options/Configure Interface/Session File,选择Run Configuration Script,单击Browse,找到该初始化脚本.注意,初始化脚本"2440init.txt"必须放在英文目录下.注意,再次运行AXD工具时,在AXD界面内的Command Line Interface可以看到AXD是否运行了该初始化脚本.

(5)AXD的简单调试

    单击go按钮,可以运行程序.如果正常运行,程序会自动跳到main函数处.当程序没有跳到main函数时,表明程序已跑飞.单击stop按钮,可以停止程序的运行.
   <1>再次单击go按钮,在SecureCRT内会打印出调试信息.
   <2>输入2,选择NandFlash K9F2G08.在SecureCRT内列出测试选项.
   <3>输入0: 读取NandFlash ID号.
   <4>输入1: 复位NandFlash.
   <5>输入2: 擦除NandFlash,并输入要擦除的块.输入1,擦除Block 0.
   <6>输入3: 读取页数据,并输入要读取的块,输入1;输入要读取的页,输入2.
   <7>输入4: 页写入,并输入要写入的块,输入2;输入要写入的页,输入1.

(二)使用J-Link的AXD调试

        如果用户的计算机没有并口,也可以使用J-link来连接开发板.

(1)安装J-link驱动.
(2)将J-link的一端接计算机的USB口,另一端接开发板的JTAG端口.
(3)接入Debug串口线、USB线,打开H-JTAG代理调试软件、SecureCRT,打开开发板电源.如果J-link绿灯亮起,表明连接正常.
(4)关闭开发板电源,添加J-link配置文件.
    在AXD界面内执行菜单Options/Configure Target,单击Add来添加J-link配置文件.该配置文件是在J-link安装目录下的JLinkRDI.dll.常见安装目录c:/Program Files/SEGGER/JLinkARM_V402a/JLinkRDI.dll.选中Multi-ICE,单击Configure,这样就配置了AXD工具的J-link.
(5)在CodeWarrior中执行Debug,ADS编译器会调用AXD工具.如果AXD图标变色,说明已成功连接至开发板.注意,如果要使用AXD进行调试,NandFlash内不能有程序,否则会使要调试的程序运行不正常.所以,使用前先擦除NandFlash.
(6)配置SDRAM.由于需要将程序下载到SDRAM中运行,所以使用AXD调试前需要正确配置SDRAM.天祥电子提供了SDRAM的初始化脚本"2440init.txt",用户在运行AXD前应该先运行该初始化脚本.在AXD界面内执行菜单Options/Configure Interface/Session File,选择Run Configuration Script,单击Browse,找到该初始化脚本.注意,初始化脚本"2440init.txt"必须放在英文目录下.在AXD界面内的Command Line Interface,可以看到AXD是否运行了该初始化脚本.
(7)单击go按钮,可以运行程序.如果正常运行,程序会自动跳到main函数处.当程序没有跳到main函数时,表明程序已跑飞.单击stop按钮,可以停止程序的运行.再次单击go按钮,在SecureCRT内会打印出调试信息.
    <1>输入2,选择NandFlash K9F2G08.在SecureCRT内列出测试选项.
    <2>输入0: 读取NandFlash ID号.
    <3>输入1: 复位NandFlash.
    <4>输入2: 擦除NandFlash,并输入要擦除的块.输入1,擦除Block 0.
    <5>输入3: 读取页数据,并输入要读取的块,输入1;输入要读取的页,输入2.
    <6>输入4: 页写入,并输入要写入的块,输入2;输入要写入的页,输入1.

 

(8) 如何查看常用寄存器值?

           通过查看内存中寄存器的地址中数据。以查看下面GPFCON和GPFDAT寄存器值为例:

              ldr   r0,=GPFCON

              ldr   r1,=0x0055

              str   r1,[r0]

              ldr   r0,=GPFDAT

              ldr   r1,=0x00

              str   r1,[r0]

            已知:GPFCON的地址为0x56000050,GPFDAT的地址为0x56000054,通过AXD的内存查询如下:输入查询寄存器GPFCON地址

             

              由上图可知:(GPFCON)=0x0000 0055 与程序设置值一致  ,(GPFDAT)=0xF0与程序设置不同。原因待查。

 

(三)AXD常见问题分析
(1)单击debug按钮后进入AXD调试界面,单击go(全速运行),但程序总是跑飞.跑飞的现象是单击停止按钮,出现如下图所示,图中都是汇编语言.
 
   解决步骤:
   <1>在AXD界面内执行菜单Options/Configure Target,查看是否添加了H-JTAG配置文件.
   <2>在AXD界面内执行菜单Options/Configure Interface/Session File,选择Run Configuration Script,单击Browse,找到SDRAM初始化脚本"2440init.txt".注意,初始化脚本"2440init.txt"必须放在英文目录下.注意,再次运行AXD工具时,在AXD界面内的Command Line Interface可以看到AXD是否运行了该初始化脚本.
   <3>要使用AXD进行调试,NandFlash内不能有程序,否则会使要调试的程序运行不正常.所以,使用前先擦除NandFlash.

          之前使用AXD调试,经常出现死机的原因就是nand flash有程序。擦除后,死机次数明显减少。
   <4>如果执行了以上的步骤,程序仍然跑飞,则需要关闭AXD,关闭开发板电源.然后再次上电,再次进行Debug调试.