1. 程式人生 > >u-boot燒寫emmc,並從emmc讀資料到記憶體啟動核心

u-boot燒寫emmc,並從emmc讀資料到記憶體啟動核心

使用的是petalinux-v2015.4-final版本編譯出來的U-BOOT及image.ub。板子核心晶片為ZYNQ-7021。

mmc info 顯示儲存裝置的資訊,在切換到emmc裝置下(執行mmc dev 0),執行mmcinfo可看到儲存裝置各屬性資訊

1.使用mmc erase addr blk# cnt    命令把emmc中的部分儲存空間清空。mmc erase 0 12500

其中addr指記憶體中的目標位置起始地址,blk#指被拷貝內容起始儲存塊的塊號,cnt指要被拷貝的塊數。一般每個塊的大小為512byte。所以blk和cnt引數的單位都是塊,一般為512位元組。化成十六進位制就是0x200。在使用mmc read命令時要注意後面的引數換算,即offset/0x200 = blk,size/200=cnt。

2.用tftf把image.ub下載到記憶體中:tftp 0x800000 image.ub 或者tftpboot 0x800000 image.ubWindows下TFTP伺服器下載連結

3.把內存中的內容寫到emmc中指定位置,我寫在0x0開始的位置: mmc write 0x800000 0 12500

4.設定環境變數並儲存在啟動過程中將emmc中的內容讀取到0x1000000記憶體中並啟動核心: setenv boot_emmc 'mmc read 0x1000000 0x0 12500 && bootm 0x1000000'(後面的bootm 0x1000000是從記憶體這個位置啟動,為什麼是0x1000000在這裡有簡單說到

最後就直接啟動就可以了,我這裡是直接在u-boot下面run,如圖:

注意:  我這裡只有一個儲存裝置所以是直接操作,如果有多個emmc或者SD用命令: mmc dev 1 切換到相應裝置才能對其讀)。這裡有一篇對在u-boot對FLASH燒寫的文章可以和這篇對照檢視連結:燒寫到flash啟動核心網址:https://mp.csdn.net/postedit/80930124