uboot启动内核的问题~解决了好久都没有解决出来~

ppcst 2010-12-14 05:45:20
最近做uboot的移植,uboot是可以起来了,但是无法引导内核,问题如下:

-Boot 2010.03 (12鏈?02 2010 - 15:27:43) for SMDK6400



CPU: S3C6400@667MHz

Fclk = 667MHz, Hclk = 133MHz, Pclk = 66MHz (ASYNC Mode)

Board: SMDK6400

DRAM: 128 MB

Flash: 0 kB

NAND: 1024 MiB

*** Warning - bad CRC, using default environment


In: serial

Out: serial

Err: serial

Net: CS8900-0

Hit any key to stop autoboot: 0


NAND read: device 0 offset 0x60000, size 0x1c0000

1835008 bytes read: OK

Wrong Image Format for bootm command

ERROR: can't get kernel image!


本来我的内核是下载在0x40000中,size是300000;下载到的内存是c0008000;
我的解决方法:
1、 我修改了启动参数为:setenv bootcmd nand read c0008000 40000 300000; saveenv;
不行;
2、 我修改源代码中的include/configs/smdk6410.h文件为:
#define CONFIG_BOOTCOMMAND "nand read 0xc0008000 0x40000 0x300000;" "bootm c0008000"
但是编译后uboot都起不来了;不知道为什么;

问题:
1、第一种方法中更改环境变量能否更改启动的参数?
2、 第二种解决方法中,为什么不能起来?是否还需要修改其他的地方?
请各位大侠帮小弟一把~感谢!
...全文
8304 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
bys2010 2012-10-24
  • 打赏
  • 举报
回复
是你的uboot参数中有一个参数是bootfile=uImage,而你用的是zImage,所以会出现这种情况,执行:setenv bootfile zImage,就可以了
ashengsheng 2011-03-14
  • 打赏
  • 举报
回复
是否uImage生成的不对啊。
将u-boot源码编译后将mkimage拷到到/bin下再编译一下内核试试。
zhaokingset 2011-02-22
  • 打赏
  • 举报
回复
Wrong Image Format for bootm command

ERROR: can't get kernel image!

应该是内核格式不对吧。bootm好像启动uImage格式的。
你该成go命令试下。
nand read c0008000 40000 300000; go c0008000
李万鹏 2011-02-21
  • 打赏
  • 举报
回复
试了一下,是可以的,嘿嘿
李万鹏 2011-02-21
  • 打赏
  • 举报
回复
17楼 你 bootm后不加地址可以吗
李万鹏 2011-02-21
  • 打赏
  • 举报
回复
你开mmu?
steven_miao 2011-01-14
  • 打赏
  • 举报
回复
你用printenv看一下boot_command 的nand read 的地址。如果地址对的话,呵呵,那就看你的文件系统格式是什么。看对不对啊
wf1000000 2011-01-14
  • 打赏
  • 举报
回复
Wrong Image Format for bootm command

内核没有读到或者做的内核image不对吧。
chenxin20084809 2011-01-13
  • 打赏
  • 举报
回复
u-boot既然能够启动的话,可能就是kernel的zImage的问题了?
你确定你的配置弄对了吗?
Wenxy1 2011-01-13
  • 打赏
  • 举报
回复
试试楼上的设置,或者直接用命令设置:
setenv bootargs 'nand read 0x30008000 0x40000 0x400000;bootm'
hongkeyin 2011-01-13
  • 打赏
  • 举报
回复
在你的UBOOT目录:/include/configs/yinhk2440.h中对启动命令设置:
#define CONFIG_BOOTCOMMAND “nand read 0x30008000 0x40000 0x400000;bootm”
参数中的地址要具体对应你的设置!
用上面的方法可以复现你提出的问题!
mostmark 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 ppcst 的回复:]

引用 11 楼 mostmark 的回复:
引用 9 楼 ppcst 的回复:

7楼:我觉的应该是这样的,uboot管理内存就是已经初始化了mmu单元,板上带的uboot就是用这个命令的
另外 补充一下:我用的是real6410开发板;arm11处理器;uboot用 的是2010.03版本

我看了下6400确实提供了mmu支持,但我看到你似乎是没有改动直接用的6400的?

……
[/Quote]核是一样的就没什么问题
ppcst 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 mostmark 的回复:]
引用 9 楼 ppcst 的回复:

7楼:我觉的应该是这样的,uboot管理内存就是已经初始化了mmu单元,板上带的uboot就是用这个命令的
另外 补充一下:我用的是real6410开发板;arm11处理器;uboot用 的是2010.03版本

我看了下6400确实提供了mmu支持,但我看到你似乎是没有改动直接用的6400的?
[/Quote]

是的,mmu部分是没有改动就直接用的,网上搜没说他们的mmu部分不同,所以就直接用了,有不同吗?
李迟 2010-12-15
  • 打赏
  • 举报
回复
楼上大侠讨论太高深了,小弟还是ARM9阶段的呢。
现在u-boot已经研究得差不多了,只是没有SD卡,测试不了,USB不成功。

现在的一个奇怪问题:
我用cp将在内存的u-boot复制到nor的0地址处,重新启动开发板,即不成功。保存环境变量到nor中,能看到保存的内容,但改变保存,又变回原来的了。看来nor还有点问题。
mostmark 2010-12-15
  • 打赏
  • 举报
回复
另外这个命令是这么用的
setenv bootcmd 'nand read 0x30008000 0x80000 0x300000;bootm 0x30008000'
mostmark 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ppcst 的回复:]

7楼:我觉的应该是这样的,uboot管理内存就是已经初始化了mmu单元,板上带的uboot就是用这个命令的
另外 补充一下:我用的是real6410开发板;arm11处理器;uboot用 的是2010.03版本
[/Quote]
我看了下6400确实提供了mmu支持,但我看到你似乎是没有改动直接用的6400的?
ppcst 2010-12-15
  • 打赏
  • 举报
回复 1
我刚设置了env为setenv bootcmd nand read c0008000 40000 300000; saveenv;
修改后,一直了uboot里打转, 就是不跳进到linux~
无语~
不知道我的思路有没有错?
ppcst 2010-12-15
  • 打赏
  • 举报
回复
7楼:我觉的应该是这样的,uboot管理内存就是已经初始化了mmu单元,板上带的uboot就是用这个命令的
另外 补充一下:我用的是real6410开发板;arm11处理器;uboot用 的是2010.03版本
chancy3100 2010-12-15
  • 打赏
  • 举报
回复
关注......
mostmark 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ppcst 的回复:]

先谢谢楼上们的回答~
先补充一下我的nandflash的分区:
bootloader 0x0~0x0003ffff
kernel 0x40000~0x003fffff

一楼:RAM是有效地址来的
三楼:我的RAM的有效地址是0x5000 0000~0x5FFF FFFF 256MB,使用了虚拟存储 则c0008000是对应这块地址空间的
四楼:不加0x我想它默认应该是……
[/Quote]
你的意思是你在uboot中开启了mmu?建立页表了?
加载更多回复(6)

4,466

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧