• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 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: 10245
精华: 0
发帖: 19
金钱: 110 两
威望: 31 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2009-10-28
最后登录: 2013-01-30
1楼  发表于: 2010-07-09 14:57
不能这样下载的,这样下载就好像把鸟淹在水里让他飞一样。
用JTAG下载,可以参考一下这个:http://leelao.bokee.com/viewdiary.43854108.html
这样uboot就只是作为一个像执行程序,在某个地址被运行(跑裸机)。
你先走吧,我在后面看看.
级别: 新手上路
UID: 19547
精华: 0
发帖: 16
金钱: 80 两
威望: 16 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2010-04-20
最后登录: 2012-06-08
2楼  发表于: 2010-07-09 22:17
引用第1楼lee.lao于2010-07-09 14:57发表的  :
不能这样下载的,这样下载就好像把鸟淹在水里让他飞一样。
用JTAG下载,可以参考一下这个:http://leelao.bokee.com/viewdiary.43854108.html
这样uboot就只是作为一个像执行程序,在某个地址被运行(跑裸机)。


哦,那为什么我用论坛中,其他人提供的uboot.bin,就可以在内存中运行呢。而且,我看Tekkaman Ninja修改的代码,好像也追加了“检测自己现在在哪运行”的代码。
呵呵,我是初学者,还请多多帮助,谢谢。
级别: 新手上路
UID: 19547
精华: 0
发帖: 16
金钱: 80 两
威望: 16 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2010-04-20
最后登录: 2012-06-08
3楼  发表于: 2010-07-11 22:53
大家好,现在我编译的uboot.bin也能下载到sdram运行了,我是这么做的:我把DNW下载的地址写成0x33f80000,然后再下载,就能运行uboot了。好像是因为config.mk文件中有"TEXT_BASE = 0x33F80000",上网查了一下,据说是uboot的链接地址,具体我不懂了。
但是还有一个问题,就是下载后,在uboot运行时需要马上,按一下键盘,不要等它倒计时,因为若是等它倒计时,它就会停住,死在那,不能正常运行uboot。
这又是什么原因呀,还请大家多多指点。
级别: 新手上路
UID: 24329
精华: 0
发帖: 14
金钱: 70 两
威望: 14 点
贡献值: 0 点
综合积分: 28 分
注册时间: 2010-07-06
最后登录: 2017-10-01
4楼  发表于: 2010-07-30 11:03
关于你的“在uboot运行时需要马上,按一下键盘,不要等它倒计时,因为若是等它倒计时,它就会停住,死在那”
    因为uboot倒计时,就是在检测任意键按下,有按下就停止,并死循环等待用户输入命令。如果计时到了会自动运行BOOTCMD命令,bootcmd一般会执行两个动作,1:加载内核到ram,2:执行内核。  已经去执行内核了,并且找不到内核,是不是cp跑飞了??

关于你想用VIVI把UBOOT下载到ram里面跑,很经典......vivi我用的少,我去玩玩....
      有两点提示,1:vivi如何把UBOOT下载到指定的地址?,好像是通过DNW指定。
               2:vivi如何到指定内存运行?
                              解决以上两点即可.........
级别: 新手上路
UID: 19547
精华: 0
发帖: 16
金钱: 80 两
威望: 16 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2010-04-20
最后登录: 2012-06-08
5楼  发表于: 2010-09-12 17:23

 回 4楼(rushao) 的帖子

谢谢你的指点,我的那个uboot,倒计时的时候,一到3就自己停住了,还没有倒计时到0了,不知什么原因,呵呵...
级别: 侠客
UID: 33103
精华: 0
发帖: 61
金钱: 315 两
威望: 63 点
贡献值: 0 点
综合积分: 122 分
注册时间: 2010-11-25
最后登录: 2011-07-14
6楼  发表于: 2011-06-20 09:59
哥们,应该不是的,dnw不用另外设置,只用设置一个地方就行了,因为在stat.S中有一段这样的代码:#ifndef CONFIG_SKIP_LOWLEVEL_INIT
    bl    cpu_init_crit
#endif
在开头的地方定义一下这个CONFIG_SKIP_LOWLEVEL_INIT
也就是#define CONFIG_SKIP_LOWLEVEL_INIT
再次编译就成了,我也不知道是什么原因,本来我是想把那段从nor flash中搬移到内存中的那段代码给屏蔽了的,谁知道没认真弄,屏蔽了这个,谁知道成功了,瞎猫碰见死耗子,呵呵。。。大家可以试试。。。下面是dnw的贴图:

宁可高傲的发霉,也不可低贱的恋爱
级别: 侠客
UID: 33103
精华: 0
发帖: 61
金钱: 315 两
威望: 63 点
贡献值: 0 点
综合积分: 122 分
注册时间: 2010-11-25
最后登录: 2011-07-14
7楼  发表于: 2011-06-20 21:48
我传一个镜像吧,呵呵,
u-boot.bin (98 K) 下载次数:250
用surpvivi 中的d下载,直接就有会成功的。。。。
宁可高傲的发霉,也不可低贱的恋爱
级别: 侠客
UID: 7944
精华: 0
发帖: 76
金钱: 400 两
威望: 99 点
贡献值: 0 点
综合积分: 152 分
注册时间: 2009-08-03
最后登录: 2018-02-08
8楼  发表于: 2011-11-30 10:35
大家好我也是按Tekkaman Ninja这个老兄的U-BOOT移植的能下载但是不运行,好像第一次可以按D下载运行可以但第二次能下载不能运出提示符等信息回去试试
级别: 侠客
UID: 35055
精华: 0
发帖: 50
金钱: 250 两
威望: 50 点
贡献值: 0 点
综合积分: 100 分
注册时间: 2010-12-25
最后登录: 2021-10-15
9楼  发表于: 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。
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go