Eclipse调试U-Boot
——西伯利亚的风
使用Eclipse调试U-Boot非常方便,也非常有必要。韦东山老师已经写了Eclipse+OpenOCD(OpenJtag)调试U-Boot的说明书。这里就不再重复设置过程了。这里分析一下关键技术。
在Eclipse设置过程中,需要设置
开发板的初始化代码,在Eclipse里针对S3C2440的初始化为s3c2440_gdb.init,主要完成关闭看门狗、屏蔽中断、设置系统时钟、初始化SDRAM。如果使用别的芯片,比如S3C2410、PXA270等,则需要修改s3c2440_gdb.init文件,以完成相应芯片的初始化。
调试U-Boot时,需要去掉代码重定位这一步,否则调试不了,也就是说,直接将编译好的u-boot下载到内存中,然后使用Eclipse在内存中调试u-boot。使用Eclipse调试u-boot时,会自动完成u-boot.bin的加载(load)。
网上下载的u-boot直接使用Eclipse+OpenOCD是调试不了的,需要在开发板的配置文件smdk2410.h ( 路径:include/configs/smdk2410.h,为了方便,本人直接以smdk2410为模板修改,对于Jz2440开发板自带的u-boot配置文件是include/configs/100ask24x0.h)中增加宏定义:
#define CONFIG_SKIP_LOWLEVEL_INIT 1
#define CONFIG_SKIP_RELOCATE_UBOOT 1
以跳过重定位代码。
本人自己精简了一个start.S,去除了重定位代码,效果与配置文件smdk2410.h增加两条宏定义语句一样。使用此文件直接替换start.S(cpu/
ARM920t/start.S)即可实现在Eclipse中调试。先将原来的start.S(cpu/arm920t/start.S)保存起来,然后使用精简的start.S替换原来的start.S,编译,重新生成u-boot,在Eclipse中使用新生成的u-boot调试u-boot源码(PC 上运行Eclipse,使用OpenJtag连接开发板),调试完毕,将原来的start.S还原,再次编译,此时生成的u-boot才可以下载到开发板上实际运行。
精简的start.S主要完成CPU模式设置、关闭看门狗、禁止中断等功能,具体流程图如图1.1所示。
图1.1 精简start.S 流程图
大家使用Eclipse调试程序时,遇到了什么问题,也可以在下面跟帖,最好有详细描述+截图(Eclipse调试界面截图),我会尽量回复大家,我回复不了的,那就让群里面的高手解答,实在解决不了的,那就只有找韦东山大师了!
附件:
精简的start.S