Linux内核移植--1.添加NAND Flash分区

手里的OK6410,移植完Uboot2010.03后,开始移植Linux3.5,通过DNW烧入uImage后,可以工作。在此过程中,理解了Uboot和Linux Kernel之间的关系,同时也对开发板上的各个子电路和芯片也有了新的认识。但是美中不足的是飞凌提供的cramfs文件系统,却是个只读的文件系统,无法存储数据,这样直接影响到tftp的使用,所以尝试添加一个分区,用来存储数据。

添加分区十分简单,只需要在arch/arm/mach-s3c64xx/mach-ok6410.c中找到struct mtd_partitions ok6410_nand_part[] 数组,在其中添加一个分区即可。代码如下:

 1 191//nand flash  add by wenix
 2 192 struct mtd_partition ok6410_nand_part[] = {                                                                    
 3 193     {
 4 194         .name        = "Bootloader",
 5 195         .offset        = 0,
 6 196         .size        = (1 * SZ_1M),
 7 197         .mask_flags    = MTD_CAP_NANDFLASH,
 8 198     },
 9 199
10 200     {
11 201         .name        = "Kernel",
12 203         .offset        = (1 * SZ_1M),
13 204         .size        = (5*SZ_1M) ,
14 205         .mask_flags    = MTD_CAP_NANDFLASH,
15 206     },
16 207     { /*修改此部分,添加一个100M分区*/
17 208         .name        = "File System 0",//分区名,使用df可以查看
18 209         .offset      = (6*SZ_1M), //分区偏移值,不与前面分区重叠即可
19 210         .size        = (100*SZ_1M),//分区大小,此处调整为100M
20 211         .mask_flags  = MTD_CAP_NANDFLASH,
21 212     },
22 213     {
23 214         .name        = "File System 1",
24 215         .offset      = MTDPART_OFS_APPEND,
25 216         .size        = MTDPART_SIZ_FULL,
26 217     }
27 218 };

然后编译内核,并下载烧写到NAND Flash中,启动内核后,可以发现内核识别了划分的四个分区,

进入Linux系统后,也可以使用df -h查看分区,

可以发现第四个分区mtdblock3被识别且挂载到/mnt/disk路径下了。

可以发现1M(Uboot分区)+5M(Kernel分区)+100M(cramfs分区)+1.9G(第四个分区),刚好是OK6410NAND Flash的大小。

值得注意的是,在新版本的UBoot和Linux搭配下,只需要添加分区数组内容即可,无需修改其他部分,很简单和方便。

可以扩展的是,在移植Android系统时,通过此种方式划分相应的data, system, cache分区即可。

转载于:https://www.cnblogs.com/wenix/p/3546740.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值