九鼎S5PV210開發板的SD卡啟動、uboot tftp升級核心映象

一匹夫發表於2021-01-30

 

Note: 我的S5PV210板子的磁碟是emmc版本,不是nandflash版本。

 

1. SD卡內燒錄uboot映象,然後作為啟動盤來啟動emmc中的核心映象和根檔案系統。

只要破壞emmc內的uboot映象,就可以使其從sd2啟動 (因為emmc內沒了完整的uboot,自然就無法啟動核心)

然後使用SD卡燒錄的工具軟體在SD卡內燒錄uboot映象,啟動盤就製作好了。

有了啟動盤,就可以把uboot程式跑起來,

而uboot的作用是支援多種方式升級核心,例如tftp升級、SD卡升級,等等。

 

2. Uboot內使用tftp 升級核心

先設定好三個環境變數

之後在uboot內去ping PC windows主機

登入uboot後,網線連線板子與PC機,PC主機windows上ipconfig,乙太網介面卡有可能會顯示:媒體已斷開連線。實際上不要緊的,板子仍然可以ping通PC機windows的。
我們需要windows的IP地址。
要獲取windows的IP地址,網線連線好,讓板子先進到linux系統,再在windows上ipconfig就可以看到IP地址了(乙太網介面卡 乙太網),然後重新進入uboot去ping。

只要ping後顯示host 是alive的資訊即表示ping成功。

 

3. 保證能ping通後,執行下載或燒錄(或叫升級也行)新的核心

實測該tftp升級核心命令是搬移到記憶體DDR去,而不是磁碟emmc去。測試方法是搬移到DDR的核心映象,在整機斷電後重啟就會失效。

 

之後執行bootm 30008000 或者 bootm 30008000 zImage

PS:bootm由boot和m構成,這裡m指的就是memory,即ddr記憶體,

所以當使用bootm時,若ddr中沒有核心映象,則會啟動失敗。

可見啟動新核心成功了。

 

然後遺憾的是現在還不能稱之為升級新核心成功,因為只要現在的板子一斷電,重新上電,uboot自動載入的核心依然是emmc內的舊核心。而我們已有的tftp只是把核心從PC主機上搬到了Linux板子上的DDR裡,並沒有覆蓋寫入到板載emmc的舊核心的位置。

我們可以通過uboot內的mmc或者movi指令來將DDR內的核心燒寫到emmc內去。

重新進入uboot,

在uboot內執行help movi, 可以瞭解下movi命令的用法

 

和之前一樣,先用tftp把zImage搬到DDR

現在,即使整機斷電重啟,啟動的核心也是新的核心了。

看到這裡可能會有疑問,為什麼在執行movi命令時,也不指定將DDR裡的kernel燒寫到emmc的哪個起始地址去呢?

因為uboot裡面有個分割槽表,uboot的分割槽表和核心的分割槽表是一樣的,已經記錄了磁碟emmc內的分割槽資訊了。所以我們在使用movi命令燒寫kernel時就不需要再指定emmc的地址了。

換句話說: uboot內部知道kernel分割槽在磁碟emmc中的具體地址,而我們命令中只需要告訴現在燒寫進去的是kernel這個分割槽即可

 

4. 將emmc上的kernel映象載入到DDR,如下圖所示

 

5. 九鼎SD卡升級介紹

進入uboot

既然uboot已經啟動了,uboot程式已經在跑了,這時候就可以把出SD卡拔出來,

然後建立個x210資料夾,裡面放置uboot、核心、根檔案系統映象。

插上SD卡,執行上圖該命令,應該就可以一次性完成升級uboot、核心和根檔案系統映象了。

九鼎科技相關文件如下圖

 

 

 

.

相關文章