1. 前言
uboot由于和kernel不一样,没有那么多调试手段,这里主要总结下我知道的
2. 打印信息
打印是最常用的调试手段,在uboot中也常常使用打印命令。
目前uboot中有三种打印接口可以供调用。
printf 标准打印接口,打印到串口
tick_printf 标准打印接口封装,添加了时间信息
sunxi_dump 按二进制打印出某一个地址开始指定长度buffer
printf打印函数可以加上编译器预定义宏FUNC LINE
3. 符号表
Uboot符号表是编译uboot二进制文件产生的,它里面包含了很多调试信息一般都比较大。
uboot二进制用来烧写到机器内部,uboot符号表用来调试。
示例用法如下: 下面是USB量产时出现的一个data abort,导致了系统重启。
解决这个问题需要从打印中获得两个数据:重地位偏移地址,出错时PC指针。
arm-linux-gnueabihf-addr2line -e u-boot -a (pc-重定位偏移地址)