主题 : uboot.bin下载到内存中,无法运行 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 19547
精华: 0
发帖: 16
金钱: 80 两
威望: 16 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2010-04-20
最后登录: 2012-06-08
楼主  发表于: 2010-07-06 22:55

 uboot.bin下载到内存中,无法运行

大家好,我下载了Tekkaman Ninja修改好的uboot源码(地址是http://github.com/tekkamanninja/U-boot-2009.11_tekkaman),然后进行编译,编译工具是arm-linux-gcc-4.3.2(命令是make CROSS_COMPILE=arm-linux-),生成u-boot.bin。
然后使用mini2440的vivi下载,开关拨到nor启动方式,进入BIOS后,按[d],使用DNW下载刚生成的u-boot.bin,然后出现以下信息,就停住了。

Now, Downloading [ADDRESS:30000000h,TOTAL:255550]
RECEIVED FILE SIZE: 255550 (249KB/S, 1S)
Downloaded file at 0x30000000, size = 255540 bytes

但是,用vivi把它下载到nand flash里(按[a]),再从nand flash启动(开关拨到S2),就可以运行uboot了。我用了gcc-3.4.5-glibc-2.3.6编译器,效果也是一样,无法直接在内存中运行。

我用过论坛里大家发的u-boot.bin,下载后直接就可以在内存中运行,而且把它下载到nand flash也可以运行。

请大家帮帮忙,告诉我是怎么回事呀,谢谢!
级别: 侠客
UID: 35055
精华: 0
发帖: 50
金钱: 250 两
威望: 50 点
贡献值: 0 点
综合积分: 100 分
注册时间: 2010-12-25
最后登录: 2021-10-15
1楼  发表于: 2012-02-10 13:32
在Start.S中,cpu的初始化由cpu_init_crit实现,它完成以下功能:flush v4 I/D caches, 关闭MMU stuff,关闭caches和调用lowlevel_init初始化BWSCON。lowlevel_init在<yourpath>\board\yourboard中实现。
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
             bl     cpu_init_crit
#endif
从上面可以看到cpu_init_crit是条件编译的,这主要用于调试阶段。
如果是通过其他bootloader加载u-boot并调试的话,那么,#define CONFIG_SKIP_LOWLEVEL_INIT一下是很有必要的。
假设通过vivi将u-boot.bin加载到RAM中执行,如果没有定义CONFIG_SKIP_LOWLEVEL_INIT那么在终端上我们什么也看不到。
原因是u-boot.bin本来就在RAM中了,而u-boot.bin运行到cpu_init_crit后,CPU被初始化了一番,u-boot.bin也就全部在RAM中消失了。
所以在调试阶段记住#define CONFIG_SKIP_LOWLEVEL_INIT。
级别: 侠客
UID: 35055
精华: 0
发帖: 50
金钱: 250 两
威望: 50 点
贡献值: 0 点
综合积分: 100 分
注册时间: 2010-12-25
最后登录: 2021-10-15
2楼  发表于: 2012-03-23 23:14

 回 10楼(porpoise) 的帖子

你下载的地址是多少呀?

你可以看看这里面讲的或许对你有帮助
http://www.aiothome.net/read.php?tid-17487.html