首页 新闻资讯 技术资料 论坛 网站地图
安防产品 IC设计 SOPC 测试测量 嵌入式开发新闻 综合电子技术 传感控制
电子元器件搜索:
IC库存(8958万) PDF资料(329万) IC价格 IC求购 资讯 技术资料
维库电子市场网是知名的电子元器件交易网站, 为电子生产企业提供IC库存和技术资料查询服务。
位置: 首页 > 详细信息
  u-boot中的问题
出处:21ic 时间: 2007-10-21
db10 发布于 2007-10-17 15:44:00
   在u-boot中有环境变量,与linux启动息息相关,并且在linux内核编译时必须与u-boot里的保持一致,否则linux启动不了。u-boot中的环境变量 bootargs root=/dev/ram rw initrd=0x21100000,8000000 ramdisk_size=20000  console=ttyS0,115200,mem=32M

其中
initrd=0x21100000,8000000意思是ramdisk盘空间位置在0x21100000,大小是1024*1024*7.629bytes,ramdisk_size=20000 是1024*1.95K大小空间,ramdisk_size=20000必须要。
root=/dev/ram,指明使用什么驱动设备,主要是提供是以什么为根文件系统(本设置里是ramdisk为根文件系统),设备的主设备号,从设备号参见内核中Document/devices文档。上面是使用的RAMDISK作为根文件系统的根文件系统在/dev/ram上。
console=/dev/tty0,115200说明初始化控制台时,使用设备/dev/tty0,波特率为115200。
  有点不是特明白8000000与ramdisk_size=20000关系和区别?请人解释一下!



whereis 发布于 2007-10-17 16:04:00
uboot中无启动参数,仅仅使用内核的启动参数,同样可以启动。
直接用go命令。

如果,没有8000000,单纯initrd=0x21100000,启动得了吗?试试

内核里面可以配置ramdisk大小的。

另外,谁提供提供的平台,谁负责吧,不是你自己倒腾的吧?


db10 发布于 2007-10-18 22:31:00
 我要问得是8000000与ramdisk_size=20000分别指什么大小?
你说得跟我问得没有直接联系。   
因为我只知道8000000是1024K*1024*7.6大小ramdisk 而ramdisk_size=20000是1024*1.95K大小ramdisk 感觉矛盾。


whereis 发布于 2007-10-19 7:46:00
很难理解吗,有点跳tone而已。
其实,把"ramdisk_size=XXX"那个删掉,直接改为"initrd=0x21100000,0x800000",然后到内核中配个8MB ramdisk,应该就可以了。
你的这个启动参数是谁给的,或是你自己倒腾出来的?
另外,用你原来的参数,系统起得来吗?有没bootlogo,看看ramdisk那个是怎么输出的。


* - 本贴最后修改时间:2007-10-19 8:05:54 修改者:whereis


mybao 发布于 2007-10-19 9:33:00
lz自己动手吧,代码里搜索initrd和ramdisk_size,看看怎样解析的


mybao 发布于 2007-10-19 9:45:00
arch\arm\kernel\setup.c找了,没有对ramdisk_size解析,这个参数估计没意义了。
按照whereis的应该没问题。

* - 本贴最后修改时间:2007-10-19 9:49:27 修改者:mybao


db10 发布于 2007-10-19 10:19:00
 真服了你,我问的是这两个参数为什么大小不一致,代表的意思。你说的一堆话等于没有说。你说的我如果不理解,否则移植不会成功。现在早跑起来了。


whereis 发布于 2007-10-19 10:51:00
呵呵,口水一下。
那你的,ramdisk,按照那个配置,到底多大?
有没bootlogo,show,show。


* - 本贴最后修改时间:2007-10-19 10:52:08 修改者:whereis


db10 发布于 2007-10-19 14:39:00
启动相关信息:
RAMDISK driver initialized: 16 RAM disks of 1953K size 1024 blocksize

Freeing initrd memory: 7812K


whereis 发布于 2007-10-19 23:22:00
哈哈,db10,你的这个问题有点意思,看看这个。
http://oldlinux.org/oldlinux/redirect.php?fid=22&tid=8527&goto=nextoldset

我想应该这样解释吧,"initrd=0x21100000,8000000",此处的8000000表示的是ramdisk实际大小8MB。(当然,实际做ramdisk的时候,拷贝到里面的内容,也不到8MB)
而后面的"ramdisk_size=20000",表示ramdisk块的个数,而ramdisk块的大小默认情况为1024字节,因此总共大约20MB的空间。

其实,2者应该不矛盾,就好比,你有个1GB的硬盘,但实际里面只存了50MB的内容。

不过,我很纳闷,你去掉"ramdisk_size=20000"选项之后,系统怎么会起不起来。





db10 发布于 2007-10-21 9:59:00
 不过,我很纳闷,你去掉"ramdisk_size=20000"选项之后,系统怎么会起不起来。

我现在可能理解这句话了,因为在内核配置时,有一选项ramdisk_size,如果配置上了,那u-boot里的环境变量也必须有这一项,值也保持一致,如果不一致,会启动不了。


JoveMeng 发布于 2007-10-21 18:27:00
在内核配置时,有一选项ramdisk_size,只要设置这个值>=你的ramdisk大小就行,并不一定要和U-boot的一样。如果你内术内核里没有设置这个值,那么默认的大小空间根据你的config文件来的,
如果initrd=0x21100000,8000000中的8000000比你的ramdisk.gz文件小的话,内核也许会起不来或者起来后你的文件系统里会少一些文件。
如果内核的起动参数里ramdisk_size的值存在,那里内核就会使用这个值而不是使用你在config时设置的值。
如果u-boot里bootargs变量存在,那么内核起动是使用的是u-boot里bootargs的值而不是配置内核时的cmdline的值,因些当u-boot的bootargs变量不存在时内核的cmdline参数才有效。也就是内核里设置好了的话就没有必要设置u-boot的bootargs变量。




mybao 发布于 2007-10-21 21:50:00
8错


关闭】 【打印
相关专题  
嵌入式硬件
消费电子
计算机外设
软件开发
医疗电子
存储器
通信产品
AD/DA
开发工具
数控系统
应用产品
电源系列
SOPC
嵌入式系统
接口电路
CPLD/FPGA
嵌入式软件
军工/航空航天
传感控制
测试测量
IC设计
嵌入式开发新闻
安防产品
综合电子技术
汽车电子

© 2007 百斯嵌入式开发网 网站地图