vivi中bon和part的區別

 

vivibonpart的區別:

       1vivi(bootloader)啓動後可使用命令:part show查看mtdpart信息;bon part info查看bon分區信息。

       2vivi中的bon分區相關:vivi啓動linux時會將linux_cmd_line(其在vivi內核的位置爲:

 

vivi/arch/s3c2410/smdk.c中的:char linux_cmd[] = "noinitrd root=/dev/bon/2 init=/linuxrc

 

console=ttyS0";可以修改此源碼編譯,也可以進入vivi後通過命令:param set linux_cmd_line

 

"root=/dev/bon/2 init=/linuxrc console=ttyS0進行設置")參數傳遞給內核。內核啓動時會根據此參數將設

 

/dev/bon/2flashbon分區的第三個分區)以cramfs格式掛載到根目錄"/"下。另外linux啓動時還會檢測vivi

 

中使用bon分區時的分的mtd分區(bon分區時在相應偏移後面加“:m”標誌的分區。例如:vivi命令——bon part 0

 

1296k 21696k:m,表示分了3個分區,2bon分區(前兩個)、1mtd分區(最後一個))。那麼內核如何檢測bon

 

分區和mtd分區呢?起始很簡單,在vivi中使用bon分區時,會將相應的分區信息放在NAND Flash的最後0x4000個字

 

節中,即在nand flash0x03FFC000 0x33FFFFFF 範圍內,分區表起始於0x03FFC000linux就是通過讀取此地址

 

區域的nand獲得的bon分區表信息。linux啓動時也會檢測到vivi使用bon分區時的mtd分區,並將此分

 

/dev/mtdblock/1掛載到/mnt/yaffs下。這樣/mnt/yaffs就可以進行讀寫,並且掉電保存。此掛載信息的修改是在

 

根文件系統目錄結構中的/etc/fstab中的:/dev/mtdblock/1 /mnt/yaffs  yaffs   defaults    1 1

 

具體有關fstab文件的含義請參考文件:fstab文件詳解-掛載.txt

       3vivi中的part分區相關:在使用vivi進行燒錄vivikernelrootfs時怎麼知道根據相應命令把相應的

 

鏡像保存到nand的適當位置呢?起始也很簡單。在vivi源碼vivi/arch/s3c2410/smdk.c中的:

#ifdef CONFIG_S3C2410_NAND_BOOT

mtd_partition_t default_mtd_partitions[] = {

       {

              name:         "vivi",

              offset:              0,

              size:         0x00020000,

              flag:         0

       }, {

              name:         "param",

              offset:              0x00020000,

              size:         0x00010000,

              flag:         0

       }, {

              name:         "kernel",

              offset:              0x00030000,

              size:         0x001d0000,  // 2M sector 

              flag:         0

       }, {

              name:         "root",

              offset:              0x00200000,

              size:         0x03000000,

              flag:         MF_BONFS

       }

};

#endif

定義了相應的默認part分區信息。當執行命令:load flash kernel x時,vivi就會查找此表中的

 

default_mtd_partitions[i].name,如果name等於kernel則將offset返回,並將相應的鏡像如:zImage保存到

 

flashkernel分區信息所指示的offset位置(此處查看上表爲:0x00030000,)。相應當vivi執行命令boot命令啓

 

動內核時會從nand0x00030000,位置讀取size個字節到sram中。然後再調到linux的入口地址處執行。

       4、分析:根據上述bonpart分區的介紹,您是否還有疑問?從上可以得出,linux啓動時只需要使用bon

 

分區時的根文件系統分區(必須爲bon格式)和需要掛載yaffs文件系統的分區(必須標記爲mtd分區)。由於vivi

 

rootfs的位置是根據part分區定的。所以在使用bon進行分區時必須有一個和default_mtd_partitionsroot分區

 

的起始地址和大小相同的bon分區,例如:此處必須有一個起始地址和大小分別爲0x00200000,0x03000000bon分區

 

。另外如果要掛在yaffs文件系統,bon分區時必須有一個mtd分區。如果想通過viviflash的其它分區寫入數據的

 

話,此處的default_mtd_partitions必須加入相應的分區信息。例如:default_mtd_partitions中加入分區

{

       name:         "yaffs",

       offset:              0x03200000,

       size:         0x00500000,

       flag:         0

}

那麼如果使用bon分區時有一個起始地址和大小分別爲0x03200000, 0x00500000的分區。則使用load flash yaffs x

 

可以燒錄相應文件。如果符合相應格式在linux可以使用命令:mount -t filesystem /dev/bon/x /mnt/bonx掛載

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章