前面利用J-flash软件把uboot.bin下载到norflash上面了,然后就可以利用ads 来进行单步调试uboot程序(2440要选择norflash启动,先调试从norflash启动uboot)。安装完ads1.2以后,会有如下图标:

                                                                                          调试 s3c2440 uboot准备工作2:利用ADS调试uboot

打开AXD Debugger软件,进入option选项的configure target选项,点击add选项,添加Multi-ICE 目标:

                                         调试 s3c2440 uboot准备工作2:利用ADS调试uboot

在configure选项里面做一些配置:

                                   调试 s3c2440 uboot准备工作2:利用ADS调试uboot

                               调试 s3c2440 uboot准备工作2:利用ADS调试uboot

 

                                      调试 s3c2440 uboot准备工作2:利用ADS调试uboot

配置完成以后,连接2440的jtag口,应该会在axd的log窗口,看到如下信息:

                                 调试 s3c2440 uboot准备工作2:利用ADS调试uboot

说明识别成功,可以开始调试。每次打开AXD软件,都会出现target device setting,对于2440,选择arm9即可:

                                                调试 s3c2440 uboot准备工作2:利用ADS调试uboot

axd有debug命令行输入串口,可以输入一些命令来控制cpu。上一章利用jflash 烧录uboot.bin到norflash中,物理地址为0。所以我们可以设置pc的值为0,让cpu从0地址直接从norflash开始执行,网上有很多教程是先下载到ram进行debug,因为想到后期uboot还是要反到flash中,所以直接从norflash启动开始debug:

                               调试 s3c2440 uboot准备工作2:利用ADS调试uboot

可以选择单步调试,打断点方式来调试程序。因为uboot是在linux里面编的,然后在windows下debug,所以调试的时候可以看到,只能看到汇编,可读性较差,可以在linux中,利用objdump -D 反汇编uboot程序,会有相应的debug符号表对应着看,会清楚不少,当然由于链接地址和执行地址不同,以及后期uboot的relocation,地址可能需要做下转换,可以看到uboot的反汇编程序如下:         调试 s3c2440 uboot准备工作2:利用ADS调试uboot

通过这种方式,可以和axd中的汇编程序对应起来,增加可读性。在axd里面,也能方便的看到一些通用寄存器的值:

                                            调试 s3c2440 uboot准备工作2:利用ADS调试uboot

同时还可以利用memory窗口来查看一些外设寄存器的值,比如调试串口,需要看相关串口寄存器的值是否设置正确:

调试 s3c2440 uboot准备工作2:利用ADS调试uboot

可以看到调试起来还是比较直观方便。

 

 

相关文章:

  • 2021-09-10
  • 2022-12-23
  • 2022-12-23
  • 2021-04-11
  • 2021-10-11
  • 2021-11-03
  • 2021-08-16
  • 2021-09-01
猜你喜欢
  • 2022-12-23
  • 2022-01-20
  • 2021-07-12
  • 2021-10-01
  • 2021-07-30
相关资源
相似解决方案