“ 让调试U-Boot不再困难”
本文介绍U-Boot的两种调试方法,一种是基于代码级别,另外一种是基于工具进行在线调试。
01
—
DEBUG宏
U-Boot自带DEBUG宏,打开该宏定义之后,会增加许多的内在打印信息供开发人员参考。这个宏定义的开关可以通过在include/common.h中增加宏定义来实现。
DEBUG宏实际上控制的是下面的语句:
没有DEBUG宏定义,U-Boot的启动信息如下:
打开DEBUG宏定义,U-Boot的启动信息如下:
可以看到增加了很多打印,包括内置的调用函数链信息等。
02
—
JTAG工具在线调试
JTAG工具可以选择小巧易用的JLINK,通过工具自带软件包中的JLINK Commander工具实现在线调试的目的。
一个完整的调试步骤可以参考下面的提示进行:
1、connect
2、halt CPU
3、Set PC
4、Set Breakpoint、run,查看是否停在断点处
5、单步执行
6、读写寄存器
对于U-Boot的调试,大前提是一定要熟悉U-Boot代码。关于U-Boot代码的组成结构,主要由汇编初始化程序(初始化cpu和代码重定向)、C代码驱动初始化、命令行部分、内核镜像的加载部分的应用代码。每一部分的调试方法不尽相同,文中所述主要是针对U-Boot完全没有启动起来或者仅仅启动一部分的时候。