手里的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[] 数组,在其中添加一个分区便可。代码以下:spa
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中,启动内核后,能够发现内核识别了划分的四个分区,3d
进入Linux系统后,也能够使用df -h查看分区,code
能够发现第四个分区mtdblock3被识别且挂载到/mnt/disk路径下了。blog
能够发现1M(Uboot分区)+5M(Kernel分区)+100M(cramfs分区)+1.9G(第四个分区),恰好是OK6410NAND Flash的大小。开发
值得注意的是,在新版本的UBoot和Linux搭配下,只须要添加分区数组内容便可,无需修改其余部分,很简单和方便。flash
能够扩展的是,在移植Android系统时,经过此种方式划分相应的data, system, cache分区便可。it