前面利用J-flash软件把uboot.bin下载到norflash上面了,然后就可以利用ads 来进行单步调试uboot程序(2440要选择norflash启动,先调试从norflash启动uboot)。安装完ads1.2以后,会有如下图标:
打开AXD Debugger软件,进入option选项的configure target选项,点击add选项,添加Multi-ICE 目标:
在configure选项里面做一些配置:
配置完成以后,连接2440的jtag口,应该会在axd的log窗口,看到如下信息:
说明识别成功,可以开始调试。每次打开AXD软件,都会出现target device setting,对于2440,选择arm9即可:
axd有debug命令行输入串口,可以输入一些命令来控制cpu。上一章利用jflash 烧录uboot.bin到norflash中,物理地址为0。所以我们可以设置pc的值为0,让cpu从0地址直接从norflash开始执行,网上有很多教程是先下载到ram进行debug,因为想到后期uboot还是要反到flash中,所以直接从norflash启动开始debug:
可以选择单步调试,打断点方式来调试程序。因为uboot是在linux里面编的,然后在windows下debug,所以调试的时候可以看到,只能看到汇编,可读性较差,可以在linux中,利用objdump -D 反汇编uboot程序,会有相应的debug符号表对应着看,会清楚不少,当然由于链接地址和执行地址不同,以及后期uboot的relocation,地址可能需要做下转换,可以看到uboot的反汇编程序如下:
通过这种方式,可以和axd中的汇编程序对应起来,增加可读性。在axd里面,也能方便的看到一些通用寄存器的值:
同时还可以利用memory窗口来查看一些外设寄存器的值,比如调试串口,需要看相关串口寄存器的值是否设置正确:
可以看到调试起来还是比较直观方便。