手裏的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