1. 程式人生 > >uboot中對Flash和DDR的管理

uboot中對Flash和DDR的管理

《朱老師物聯網大講堂》學習筆記

學習地址:www.zhulaoshi.org

uboot中對flash和ddr的管理


uboot階段對flash的分割槽,

uboot,var,kernel,rootfs,自由。

uboot中是沒有作業系統中的,但是都有一個分割槽表決定分配方法,

這個分配不是隨意的,比如soc要從第1個扇區開始讀,我們的分配就得配合它,

在移植前,這個分配得定好,這個標準是:

uboot:uboot必須從Flash起始地址開始存放(也許是扇區0,也許是扇區1,也許是其他,取決於SoC的啟動設計),

uboot分割槽的大小一般設計為512KB或者1MB(因為一般uboot肯定不足512KB);

環境變數:環境變數分割槽一般緊貼著uboot來存放,大小為32KB或者更多一點。

kernel:kernel可以緊貼環境變數存放,大小一般為3MB或5MB或其他。

rootfs:······

剩下的就是自由分割槽,一般kernel啟動後將自由分割槽掛載到rootfs下使用


uboot必須在Flash開頭,其他分割槽相對位置是可變的。

分割槽在系統移植前確定好,在uboot中和kernel中使用同一個分割槽表。將來在系統部署時和系統程式碼中的分割槽方法也必須一樣。



uboot階段DDR的分割槽

Flash是掉電存在的,DDR是掉電消失,因此DDR每次系統執行時才開始部署使用的,

記憶體的分割槽一般是在linux核心啟動起來之前,linux核心啟動後核心的記憶體管理模組會接管整個記憶體空間,我們就不用管了,

記憶體中分割槽必須分配好,以避免各個不同功能使用了同一塊記憶體造成的互相踩踏,

比如tftp 0x23E00000 zImage去下載zImage到記憶體的0x23E00000處就會出錯,因為這個記憶體處實際是uboot的映象所在,

這樣下載會導致下載的zImage把記憶體中的uboot給沖掉。