uboot 對 FAT 分割槽的解析

2022-08-13 17:57:11 字數 675 閱讀 6325

改寫 uboot 從 u 盤讀入韌體,然後刷機。發現有的 u 盤無法正確讀到分割槽,跟蹤了一下發現自己寫的**有漏洞,只嘗試解析分割槽表裡的第乙個分割槽。跟蹤的過程中重溫了一下 mbr 的格式,這裡記錄一下 uboot 對其中分割槽表的解析。

主引導記錄(master boot record),位於儲存介質的第乙個扇區。儲存介質可能是硬碟、u 盤或 sd 卡等。

mbr 存在第乙個扇區裡,總共有 512 位元組,其包括三個部分:

啟動**,前 446 個位元組 (0,0x1bd]。一般 u 盤或 sd 卡不作啟動用,這段空間的內容無意義。

分割槽表 dpt(disk partition table),64 位元組 [0x1be, 0x1fd]

結束標誌,2 位元組 [0x1fe, 0x1ff],0x55aa,用於標誌 mbr 是否有效

每個分割槽資訊佔 16 位元組,64 位元組的分割槽表最多可以描述四個分割槽。如果想劃分更多的分割槽,則要使用到擴充套件分割槽。

16 位元組的分割槽資訊意義為:

typedef struct dos_partition  dos_partition_t;
如果分割槽表項指定的分割槽一般稱為主分割槽。另外,分割槽表項還可以指定分割槽型別為擴充套件分割槽 0x7,這樣該表項描述的那個分割槽的起始扇區中還包括乙個分割槽表。

uboot 中按以下條件判斷乙個分割槽為 fat 分割槽:

uboot對Flash和DDR的分割槽管理

1 uboot階段對flash的分割槽 1 所謂分割槽,就是對flash進行分塊管理。2 pc機等產品中,因為大家都是在作業系統下使用硬碟的,整個硬碟由作業系統統一管理,作業系統會使用檔案系統幫助我們管理磁碟空間。管理保證了檔案之間不會相互堆疊 於是乎使用者不用自己太多在意分割槽問題。3 在uboo...

uboot與kernel的flash分割槽

1.我們可以在uboot中修改flash分割槽。2.我們也可以在kernel中修改flash分割槽,但是需要與uboot中的分割槽表一致。3.我們可以通過uboot用引數傳給kernel分割槽資訊,這樣只需要維護uboot的分割槽表即可。這要對bootloader對核心重新分割槽 這需要重新設定一下...

uboot 和核心的分割槽關係

隨著核心的更新,核心越來越大,uboot給nand的kernel分割槽預設是2m的 device nand0 parts 4 name size offset mask flags 0 bootloader 0x00040000 0x00000000 0 1 params 0x00020000 0x...