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分區即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM