uboot与kernel的flash分区
1. 我们可以在uboot中修改flash分区。 2.我们也可以在kernel中修改Flash分区,但是需要与uboot中的分区表一致。 3.我们可以通过uboot用参数传给kernel分区信息,这样只需要维护uboot的分区表即可。 这要对bootloader对内核重新分区:这需要重新设置一下bootloader环境参数,就可以同步更新内核分区信息 如: setenv?bootargs?'noinitrd console=ttySAC0 root=/dev/mtdblock3 rootfstype=jffs2 ???????????????????????????mtdparts=nand_flash:128k(u-boot)ro,64k(u-boot envs),3m(kernel),30m(root.jffs2),30m(root.yaffs)' 内核配置时选上Device Drivers? ---> Memory Technology Device (MTD) support? --->?Command line partition table parsing 在设置了mtdparts变量之后,就可以在nand read/write/erase命令中直接使用分区的名字而不必指定分区的偏移位置.而这需要内核MTD最好没有规划分区。 a?。如果你是通过uboot的内核命令行给MTD层传递MTD分区信息,这种情况下,内核读取到的分区信息始终和u-boot中的保持一致(推荐的做法) b?。如果你是把分区信息写在内核源代码MTD里定义好的方法,那最好保证它和u-boot中的保持一致,即同步修改uboot及内核的相关部分。 ? 2: 内核通过bootargs找到文件系统,bootargs中的mtdblockx即代表分区,block1,2,3代表哪个分区。 事实上,bootargs中的"root=/dev/mtdblockx"只是告诉内核,root fs从第x个(x=0,1,2...)MTD分区挂载,mtdblock0对应第一个分区,mtdblock1对应第二个分区,以此类推. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |