九鼎S5PV210開發板的SD卡啟動、uboot tftp升級內核鏡像

 

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、內核和根文件系統鏡像了。

九鼎科技相關文檔如下圖

 

 

 

.