我使用的AM3352开发板,想实现ramdisk做为根文件系统来启动板子的功能,我的启动参数如下:
setenv ram_arg ' run bootargs_defaults;setenv bootargs ${bootargs} initrd=0x82000000,0x1000000 root=/dev/ram rw rootfstype=ext2 mem=96M"'
也就是说ramdisk是位于uboot内存空间的0x82000000地址,大小为16M,这种方式现在启动板子没有问题,系统初步来看也能正常工作,我所困惑的是uboot下的0x82000000地址和linux内存空间到底是个怎样的关系,会不会有冲突,在linux系统运行期间会不会意外改写这块的内存数据,如果被改写了ramdisk文件系统就会出现问题,这种情况是不被允许的。我应该怎么确定ramdisk的内存空间,才能避免与linux内存发送冲突,希望哪位大侠能指点一二,不剩感激~
Jian Zhou:
有参考过下面这个文档么:
http://processors.wiki.ti.com/index.php/Booting_Linux_kernel_using_U-Boot?keyMatch=ramdisk&tisearch=Search-EN#NAND_Flash_.28ramdisk_as_rootfs.29
user3701771:
回复 Jian Zhou:
Jian Zhou:你好
我看了你发的链接,你可能理解错了我的问题,我问的是ramdisk作为根文件系统启动,被载入到(UBoot)内存的地址是如何确定的?会不会与linux下的内存空间产生冲突!
我给的启动参数里面的(uboot)ramdisk根文件系统内存地址是0x82000000,是可以正常启动进入到linux系统的!
Yaoming Qin:
回复 user3701771:
首先不要和kernel的地址重叠,剩下的kernel会处理的
leo chen:
在传递参数的时候已经把mem空间作为参数传给内核了
这个大小需要实际内存的大小 减去 ramdisk文件的大小
然后剩下的都是内核完成了
user3701771:
回复 leo chen:
谢谢leo chen,我也是这样认为的,但就是不知道内核是如何实现的!我的内核地址是在0x803a0000地址空间,应该没有重复,目前看来我这样的安排也没有什么问题,再研究研究~