vivi中bon和part的區別:
1、vivi(bootloader)啟動後可使用命令:part show檢視mtdpart資訊;bon part info檢視bon分割槽資訊。
2、vivi中的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/2(flash的bon分割槽的第三個分割槽)以cramfs格式掛載到根目錄"/"下。另外linux啟動時還會檢測vivi中使用bon分割槽時的分的mtd分割槽(bon分割槽時在相應偏移後面加「:m」標誌的分割槽。
例如:vivi命令——bon part 0 1296k 21696k:m,表示分了3個分割槽,2個bon分割槽(前兩個)、1個mtd分割槽(最後乙個))。
那麼核心如何檢測bon分割槽和mtd分割槽呢?起始很簡單,在vivi中使用bon分割槽時,會將相應的分割槽資訊放在nand flash的最後0x4000個位元組中,即在nand flash的0x03ffc000 ~0x33ffffff 範圍內,分割槽表起始於0x03ffc000。linux就是通過讀取此位址區域的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。
3、vivi中的part分割槽相關:在使用vivi進行燒錄vivi、kernel、rootfs時怎麼知道根據相應命令把相應的映象儲存到nand的適當位置呢?起始也很簡單。在vivi原始碼vivi/arch/s3c2410/smdk.c中的:
#ifdef config_s3c2410_nand_boot
mtd_partition_t default_mtd_partitions=
,,,}
;#endif
定義了相應的預設part分割槽資訊。當執行命令:load flash kernel x時,vivi就會查詢此表中的default_mtd_partitions[i]
.name項,如果name等於kernel則將offset返回,並將相應的映象如:zimage儲存到flash的kernel分割槽資訊所指示的offset位置(此處檢視上表為:0x00030000,)。相應當vivi執行命令boot命令啟動核心時會從nand的0x00030000,位置讀取size個位元組到sram中。然後再調到linux的入口位址處執行。
4、分析:根據上述bon和part分割槽的介紹,您是否還有疑問?從上可以得出,linux啟動時只需要使用bon分割槽時的根檔案系統分割槽(必須為bon格式)和需要掛載yaffs檔案系統的分割槽(必須標記為mtd分割槽)。由於vivi燒寫rootfs的位置是根據part分割槽定的。所以在使用bon進行分割槽時必須有乙個和default_mtd_partitions中root分割槽的起始位址和大小相同的bon分割槽,例如:此處必須有乙個起始位址和大小分別為0x00200000,0x03000000的bon分割槽。另外如果要掛在yaffs檔案系統,bon分割槽時必須有乙個mtd分割槽。如果想通過vivi向flash的其它分割槽寫入資料的話,此處的default_mtd_partitions必須加入相應的分割槽資訊。例如:default_mtd_partitions中加入分割槽
記憶體中堆區和棧區的區別
從下面五個方面說一下記憶體中堆和棧的區別 1 管理方式 對於棧來講,是由編譯器自動管理,無需我們手工控制 對於堆來說,釋放工作由程式設計師控制,容易產生memory leak。2 申請大小 能從棧獲得的空間較小,堆是向高位址擴充套件的資料結構,是不連續的記憶體區域。堆的大小受限於計算機系統中有效的虛...
zju 2 vivi的配置編譯和固化
1 實驗目的 熟悉vivi的知識和應用並使用交叉編譯平台vivi引導並燒寫到目標板。二 實驗內容 1 在ubuntu下配置vivi並進行交叉編譯 2 將編譯好的vivi燒寫到目標板上。三 主要儀器裝置 1 ubuntu12.04系統。2 英培特eduk4 s3c2410試驗平台 四 操作方法和實驗步...
SQL Server中的頁和區
sql server中的頁和區 真題1 sql server 的兩種存 儲結構是什麼?答案 sql server 的兩種儲存結構是頁與區間。1 頁 用於資料儲存的連續的磁碟空間塊,sql server 中資料儲存的基本單位是頁,磁碟 i o操作在頁級執行,頁的 大小為8kb 每頁的開頭是 96位元組...