at91rm9200 片内启动继续(u-boot 1.1.6)

 
Living with you!
欢迎转载
http://blog.csdn.net/livingpark
Living Park

终于可以使用loader.bin通过Xmodem加载u-boot.bin了,这种轻松并不能持续3分钟,加载完u-boot.bin后没有任何反应,没有出现那可爱的U-Boot>提示符,对于这个问题 xufujun的文章中提到:
不过由于U-Boot本身的relocate功能,在我们通过loader下载到DEMO板上时,它无法运行,在loader显示“U-Boot downloaded successfully”之后便没有了下文。

所以我们开始修改有关9200的配置,主要就是在“/u-boot-1.1.6

/include/configs/at91rm9200dk.h”里添加两个宏定义:

修改完成后,从新make,得到的u-boot.bin大小为92K,可以在我们的DEMO板上顺利起来。”(以上原文引用)

但是具体添加哪两个宏定义呢,没有提到。其实只要在u-boot-1.1.6/include/configs/at91rm9200dk.h开始处添加

#define CONFIG_SKIP_LOWLEVEL_INIT

就可以了。好奇心没有满足的朋友可以到CalmArrow(lqm)的文章中发掘更好的解决之道,不过是U-boot-1.3.0。

这次看到U-Boot>提示符了,uboot启动起来了。但是如果你看的仔细的话,很可能看到显示的flash大小是0K(如果你的板子存在flash的话注意了:) ).这时需要添加自己的flash识别,我使用的flash是S29GL064的,使用该flash的朋友可以参考mifarelight的文章。这样修改完成后可以正确显示出flash的容量。

这时你如果想要使用tftp的话可能会发现根本不能传输文件,那么网络驱动就需要修改了,同样是xufujun的文章中提到了这个问题,但是同样的半途而废(:( ),需要的朋友可以参考。其中提到:

lxt971a.h”文件,并在文件的最后,但是是在“#endif /*__LXT971A_H__ */”之前添加如下4个函数的声明:

”但是没有提到哪四个函数声明。应该是一下四个:

UCHAR lxt972_InitPhy (AT91PS_EMAC p_mac);
unsigned int lxt972_IsPhyConnected (AT91PS_EMAC p_mac);
UCHAR lxt972_GetLinkSpeed (AT91PS_EMAC p_mac);
UCHAR lxt972_AutoNegotiate (AT91PS_EMAC p_mac, int *status);


“在“/u-boot-1.1.6/include/configs/at91rm9200dk.h”里添加如下几个宏定义:

其中最后一条不可以缺少 。”

但是几个宏定义是什么没有提到,具体是什么还没有研究明白:(,有人知道请告诉我一声:)在此致谢。

先抛下网络不谈(可以使用kermit替代,loadb命令),要将boot.bin写到flash时出现问题,protect off->erase->cp.b,最后一步向flash中拷贝数据时出现flash没有erase的错误,而前面刚刚erase过,另外,如果使用saveenv命令保存环境变量的话可以写flash成功,不知道什么原因了,其中的蹊跷接着研究。

你可能感兴趣的:(网络,Flash)