关于uboot如何找内核,内核如何找根文件系统的个人见解
来源:互联网 发布:恢复数据多少钱 编辑:程序博客网 时间:2024/04/26 04:16
关于uboot如何找内核,内核如何找根文件系统的个人见解
这几天真算是让这个辰汉给搞趴下了,唉。也没有资料可以参考。一点信息也不说,弄不弄就把Freescale的东东拿出来。而你的东东又跟原厂的不一样。我真CAO了。
为了将这些映像搞进NAND中,哥我彻夜未眠啊。还有,那个网卡驱动现在都不好用。网络不行啊。
还是以i.mx53处理器为例吧。我估计别的也差不多。i.mx53根据GPIO引脚的高低电平决定从哪个外设引导。手册上有说明的,就是几个拨码开关,通过上拉、下拉电阻搞个高低电平,让处理器在复位时采样,决定如何引导。
当从NAND引导后,应该uboot烧写在Nand Flash的0x0起始地址处,所以起初先执行uboot,uboot会以两种格式进行交互。一是开机的时候直接任意按一个键,进入命令交互模式,类似于linux下的shell。另一种是直接默认使用bootcmd进行加载。而我们进入命令交互模式就是为了定制bootcmd命令,实现开机加载uboot,通过uboot加载内核,通过内核加载rootfs。
在uboot中有几条重要的命令,如下:
1、mmc read 1 ${loadaddr} 0x800 0x1800;bootm
Mmc read 这条命令相对于nand read,而在i.mx53平台下Nand Flash是通过MMC接口访问的,在uboot中通过MMC实现了Nand Flash的访问。
这条命令的作用是:读取1号MMC设备(即Nand Flash)中,从0x800地址开始,大小为0x1800的内核数据至内存${loadaddr}地址处。
不过我就一直没有搞明白0x1800/1024=6KB,内核不可能这么小????
Bootm就是直接跳至内存${loadaddr}地址去执行了。
这个默认的${loadaddr}我在uboot-imx/include/configs/mx53_smd.h文件中找到了,定义如下:
#define CONFIG_LOADADDR 0x70800000
查看了别的文件mx53_arm2_ddr3.h,mx53_ard.h也是这个值。可能是官方定义的默认值。
还有一个地方不明白,不是说使用mkimage将zImage加上64个字节的uboot头部吗?而加了之后真正的内核入口地址应该是偏移64个字节?这里怎么没有体现出来啊????
2、setenv bootargs ‘console=ttymxc0,115200 root=/dev/mmcblk0p1 rootwaitrw ‘
这一条就是uboot传输给内核的参数,这些参数会存放在NAND Flash提前协商分区好的扇区上,内核启动的时候会去特定的地址去读取这些内核参数。
而这里最最主要的也是 root=/dev/mmcblk0p1,这就是根文件系统的挂载点。为什么要这样写呢?这样写内核能找到根文件系统吗?为什么不直接写根文件系统在NAND Flash的起始地址呢?
哈哈,问题就在这里,我们都写过LDD3中的hello world,都知道在linux一切都是文件,只要是设备,肯定就对应一个设备文件。而内核对文件系统也不例外。内核把文件系统也当成一个设备,通过特定的设备节点进行访问。
那文件系统都没有挂载,光有一个设备节点有什么用?
哈哈,这个问题问得好。我都思考好长时间了,这里告诉大家。还记得NANDFlash的分区吗?我们将其划分为好几个区,bootloader,kernel,rootfs,userfs等。这些分区都对应于Nand Flash上的物理空间,内核挂载文件系统是通过内核中的NAND Flash分区表进行的。当读取完毕后,再通过内核参数root=/dev/mmcblk0p1设备节点进行交互。
当然,这些只是理论上的,也是这几天鼓捣i.mx53总结下来的,还是要奉劝几位,买评估板一定得买原厂原货,资料多,有技术支持。不要贪图小便宜,买个仿造的,唉。IT屌丝男,伤不起啊。
晚上,继续加班,搞网卡驱动。唉,怎么就不好使呢。。。。。。。
- 关于uboot如何找内核,内核如何找根文件系统的个人见解
- uboot如何启动内核
- uboot如何启动内核?
- 分析uboot是如何启动内核的
- 分析uboot是如何启动内核的
- 分析uboot是如何启动内核的
- 分析uboot是如何启动内核的
- 分析uboot是如何启动内核的
- 分析uboot是如何启动内核的
- 分析uboot是如何启动内核的
- 分析uboot是如何启动内核的
- 分析uboot是如何启动内核的 .
- 教你如何将uboot、linux内核和根文件系统烧写到SD卡
- 如何把内核、uboot、和根文件系统下载到开发板中
- Uboot到底如何启动内核
- Uboot到底如何启动内核
- 如何找实习单位(个人的一点经验)
- 如何查看内核支持的文件系统
- 程序员编程艺术:第七章、求连续子数组的最大和
- 你未必知道的CSS故事:揭开leading的面纱
- 文件存储
- PreferenceScreen
- 程序员编程艺术:第八章、从头至尾漫谈虚函数
- 关于uboot如何找内核,内核如何找根文件系统的个人见解
- ip地址格式可以有前置0吗
- 创建iOS单元测试
- [转]Stage3D 翻译系列之六:一个真正的纯Stage3D应用(一)
- 三元表达式
- UIView相关方法
- 严重: Parse Fatal Error at line 154 column 33: Invalid byte 2 of 2-byte UTF-8 sequence.
- 程序员编程艺术:第九章、闲话链表追赶问题
- C#多线程参数传递