RK3288升級韌體
1 前言
本文介紹瞭如何將主機上的韌體檔案,通過 Micro USB OTG 線,燒錄到開發板的快閃記憶體中。
升級時,需要根據主機作業系統和韌體型別來選擇合適的升級方式。
2 準備工作
Firefly RK3288 開發板
韌體
主機
良好的 Micro USB OTG 線
韌體檔案一般有兩種:
單個統一韌體 update.img, 將啟動載入器、引數和所有分割槽映象都打包到一起,用於韌體釋出。
多個分割槽映象,如 kernel.img, boot.img, recovery.img 等,在開發階段生成。
這裡可以找到已編譯好的統一韌體,下載後解壓。也可以參考編譯韌體的說明自行編譯。
主機作業系統支援:
Windows XP (32/64位)
Windows 7 (32/64位)
Windows 8 (32/64位)
Linux (32/64位)
3 Windows
之前燒寫 RK 的韌體,需要用到以下兩種工具:
量產工具 RKBatchTool,用於燒寫統一韌體(update.img)
開發者工具 RKDevelopTool,可單獨燒寫分割槽韌體
後來 RK 釋出了 AndroidTool 工具,在 RKDevelopTool 的基礎上增加了統一韌體(update.img)的燒寫支援,因此現在僅需要這個工具即可。
使用燒寫工具前需要安裝 RK USB 驅動。如果驅動已經安裝好,可以跳過這步。
3.1 安裝 RK USB 驅動
為了所有裝置都使用更新的驅動,請先選擇"驅動解除安裝",然後再選擇"驅動安裝"。
3.2 連線裝置
有兩種方法可以使裝置進入升級模式
一種方式是斷開電源介面卡
1.用 Micro USB OTG 線連線好裝置和主機。
2.按住裝置上的 RECOVERY (恢復)鍵並保持。
3.插上電源
4.大約兩秒鐘後,鬆開 RECOVERY 鍵。
一種方式是接上電源介面卡
1.用 Micro USB OTG 線連線好裝置和主機。
2.按住裝置上的 RECOVERY (恢復)鍵並保持。
3.短按一下 RESET(復位)鍵。
4.大約兩秒鐘後,鬆開 RECOVERY 鍵。
各個裝置的RECOVERY,RESET,OTG,USB如下
Firefly-RK3288
Firefly-RK3288-Reload
主機應該會提示發現新硬體並配置驅動。開啟裝置管理器,會見到新裝置"Rockusb Device" 出現,如下圖。如果沒有,則需要返回上一步重新安裝驅動。
3.3 燒寫韌體
下載 AndroidTool,解壓,執行裡面的 AndroidTool.exe(注意,如果是 Windows 7/8,需要按滑鼠右鍵,選擇以管理員身份執行),如下圖:
3.3.1 燒寫統一韌體 update.img
燒寫統一韌體 update.img 的步驟如下:
1.切換至"升級韌體"頁。
2.按"韌體"按鈕,開啟要升級的韌體檔案。升級工具會顯示詳細的韌體資訊。
3.按"升級"按鈕開始升級。
4.如果升級失敗,可以嘗試先按"擦除Flash"按鈕來擦除 Flash,然後再升級。
注意:如果你燒寫的韌體laoder版本與原來的機器的不一致,請在升級韌體前先執行"擦除Flash"。
3.3.2 燒寫分割槽映像
燒寫分割槽映像時,請使用對應SDK下的FFTools/AndroidTool.rar燒寫。步驟如下:
1.切換至"下載映象"頁。
2.勾選需要燒錄的分割槽,可以多選。
3.確保映像檔案的路徑正確,需要的話,點路徑右邊的空白表格單元格來重新選擇。
4.點選"執行"按鈕開始升級,升級結束後設備會自動重啟。
4 Linux
RK 提供了一個 Linux 下的命令列工具 upgrade_tool,支援統一韌體 update.img 和分割槽映象的燒寫。
開源工具則有兩個選擇:
它們都僅支援分割槽映像燒寫,不支援統一韌體。rkflashtool 是命令列工具,rkflashkit 有圖形介面,後加了命令列支援,更是好用。以下僅對 rkflashkit 做介紹。
Linux 下無須安裝裝置驅動,參照 Windows 章節連線裝置則可。
4.1 upgrade_tool
unzip Linux_Upgrade_Tool_v1.24.zip cd Linux_Upgrade_Tool_v1.24 sudo mv upgrade_tool /usr/local/bin sudo chown root:root /usr/local/bin/upgrade_tool
燒寫統一韌體 update.img:
sudo upgrade_tool uf update.img
燒寫分割槽映象:
sudo upgrade_tool di -b /path/to/boot.img sudo upgrade_tool di -k /path/to/kernel.img sudo upgrade_tool di -s /path/to/system.img sudo upgrade_tool di -r /path/to/recovery.img sudo upgrade_tool di -m /path/to/misc.img sudo upgrade_tool di resource /path/to/resource.img sudo upgrade_tool di -p paramater #燒寫 parameter sudo upgrade_tool ul bootloader.bin # 燒寫 bootloader
如果因 flash 問題導致升級時出錯,可以嘗試低階格式化、擦除 nand flash:
sudo upgrade_tool lf # 低階格式化 sudo upgrade_tool ef # 擦除
4.2 rkflashkit
安裝:
sudo apt-get install build-essential fakeroot git clone https://github.com/linuxerwang/rkflashkit cd rkflashkit ./waf debian sudo apt-get install python-gtk2 sudo dpkg -i rkflashkit_0.1.2_all.deb
圖形介面:
sudo rkflashkit
命令列:
$ rkflashkit --help Usage: <cmd> [args] [<cmd> [args]...] part List partition flash @<PARTITION> <IMAGE FILE> Flash partition with image file cmp @<PARTITION> <IMAGE FILE> Compare partition with image file backup @<PARTITION> <IMAGE FILE> Backup partition to image file erase @<PARTITION> Erase partition reboot Reboot device For example, flash device with boot.img and kernel.img, then reboot: sudo rkflashkit flash @boot boot.img @kernel.img kernel.img reboot
幫助資訊裡有使用示例,可以看出,一條命令就可以燒寫多個映像檔案並重啟裝置,對需要經常編譯和燒寫核心的開發者來說,是一大福音。
5 常見問題
5.1 如何強行進入 MaskRom 模式
如果板子進入不了 Loader 模式,此時可以嘗試強行進入 MaskRom 模式。操作方法見《如何進入 MaskRom 模式》。