让调试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完全没有启动起来或者仅仅启动一部分的时候。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐