我的u-boot版本为u-boot-2010.03,在修改u-boot网卡驱动的过程中,老是不能正确的ping通我的ubuntu虚拟机,所以我想测试一下u-boot是如何去初始化网卡,并配置网卡参数的。刚开始的时候我想利用puts(“Hello,I'm here!\n”)或者printf(Hello,I'm here!\n)函数通过串口打印语句的方法,来查看u-boot运行到哪一步了,但是实际写入后才发现不仅没有打印该语句,同时串口没有了任何的输出。经过分析发现,该语句在串口的初始化之前,所以打印测试语句的方法是行不通的。没办法,只能回到最原始的点灯程序来调试。
通过搜索寄存器的定义发现在include/asm-arm/arch-s3c64xx/s3c64106410.h文件中对6410常用的寄存器进行了定义。于是点灯测试的程序就很容易写出来了,如下:
GPMCON_REG = 0x1111; //设置GPMCON寄存器为输出引脚
GPMDAT_REG = (~(1<<2)); //设置GPMDAT寄存器的bit[2]为低电平
同时不要忘记在插入点灯代码的文件头部包含#include <asm-arm/arch-s3c64xx/s3c6410.h>该文件。于是成功点灯!