linux nandfalsh空间划分及启动参数
来源:互联网 发布:天下网络盟重新城论坛 编辑:程序博客网 时间:2024/06/04 19:31
1.对nand的默认分区
分区只是内核的概念,就是说A~B地址放内核,C~D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等。一般我们只需要分3-4个区,第一个为boot区,一个为boot参数区(传递给内核的参数),一个为内核区,一个为文件系统区。(但是有的内核就会有很多分区,比如内核参数会有两个,还有会Logo的地址)而对于bootloader 对分区的概念不重要,只要它能把内核u-boot等烧到对相应位置能让内核知道到哪里去寻找相应的文件就行。而为了方便操作,bootloader类似也引入分区的概念。 如果bootloader对内核重新分区就需要重新设置一下bootloader环境参数,就可以同步更新内核分区信息如:
setenvbootargs 'noinitrd console=ttySAC0root=/dev/mtdblock3 rootfstype=jffs2mtdparts=nand_flash:128k(u-boot)ro,64k(u-bootenvs),3m(kernel),30m(root.jffs2),30m(root.yaffs)'
内核有自己默认的MTD分区,如果内核分区信息如下:
staticstruct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "uboot",
.offset = 0x00000000,
.size = 0x00040000,
},
[1] = {
.name = "kernel",
.offset = 0x00040000,
.size = 0x00200000,
},
[2] = {
.name = "yaffs2",
.offset = 0x00240000,
.size = MTDPART_SIZ_FULL
}
};
2.配置分区
那我们如何去配置呢。有如下两个方法:
1) 直接修改linux源码
Linux有他的默认分区,我们可以修改他的默认分区参数,来达到我们分区的目的。
但这样的方法缺点就是,修改一次都必须重新编译一次内核。
2) 在u-boot中传递分区参数给内核
在u-boot启动内核前,我们把参数设置到u-boot的引导命令中,如下形式:
setenv bootargs 'noinitrdconsole=ttySAC0root=/dev/mtdblock3 rootfstype=jffs2mtdparts=nand_flash:128k(u-boot)ro,128k(u-bootenvs),3m(kernel),30m(root.jffs2),30m(root.yaffs)'
也可以达到分区的目的。这样可以方便的修改分区参数。配置分区后别忘了重新烧写内核和文件系统镜像,修改相应的启动参数。如nand read 0x320000000x50000 0x200000;bootm 0x32000000,引导内核的地址要改为你内核的相应的地址。
3.自定义变量
实现在nand里面定义和保存我们自己的参数。使参数能在断电的情况下能保存。u-boot有如下接口函数:
a) 修改和创建变量
int setenv(char *name,char *value);
b) 制式换行
long conver_format(const char *cp,int base);
c) 得到变量值
char *getenv(char *name);
get_var(char *name)函数返回的是变量的值的字符串指针,如果你需要得到的本身就是一个字符串,那就无需转换。如果你想得到的是8,10或16进制的数的话,就需要使用 conver_format(const char *cp,int base)函数做转换。- linux nandfalsh空间划分及启动参数
- Linux空间划分 & MMU
- Linux线性地址空间的划分及内核寻址方式
- Linux启动参数及实现
- 空间划分及可见性算法【一】
- 空间划分及可见性算法【二】
- 空间划分及可见性算法【三】
- 空间划分及可见性算法
- Httpd及启动参数
- Httpd及启动参数
- Service启动及参数
- Linux启动参数及实现 __setup与early_param
- Linux启动参数及实现 __setup与early_param .
- Linux启动参数及实现 __setup与early_param
- Linux启动参数及实现 __setup…
- Linux启动参数及实现 __setup…
- Linux启动参数及实现 __setup与early_param
- Linux启动参数及实现 __setup与early_param
- tunna类似redush的工具
- 恩…… 一切都是新的开始~
- SpriteKit 横屏显示
- C++中的this指针
- Android——TV真机调试apk(android:sharedUserId="android.uid.system")
- linux nandfalsh空间划分及启动参数
- 学习计划_一周一结(2013)
- android boot process from power on
- 【Proguard】android 中 Proguard 使用
- 用百家姓表达128进制的数据
- hdu 4715 Difference Between Primes
- 面试之道网址
- 我的华为面试经历——技术服务
- android boot 代码流程http://www.cnblogs.com/idiottiger/archive/2012/05/23/2513494.html