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.ub(Windows下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