1. 程式人生 > >RK3288升級韌體

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 驅動

為了所有裝置都使用更新的驅動,請先選擇"驅動解除安裝",然後再選擇"驅動安裝"。

Rk3288 driverassistant install.png

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

   image.png

    Firefly-RK3288-Reload

  image.png

主機應該會提示發現新硬體並配置驅動。開啟裝置管理器,會見到新裝置"Rockusb Device" 出現,如下圖。如果沒有,則需要返回上一步重新安裝驅動。

Rk3288 xp devicemanager.png

3.3 燒寫韌體

下載 AndroidTool,解壓,執行裡面的 AndroidTool.exe(注意,如果是 Windows 7/8,需要按滑鼠右鍵,選擇以管理員身份執行),如下圖:

TIM圖片20171221095252.png

3.3.1 燒寫統一韌體 update.img

燒寫統一韌體 update.img 的步驟如下:

    1.切換至"升級韌體"頁。

    2.按"韌體"按鈕,開啟要升級的韌體檔案。升級工具會顯示詳細的韌體資訊。

    3.按"升級"按鈕開始升級。

    4.如果升級失敗,可以嘗試先按"擦除Flash"按鈕來擦除 Flash,然後再升級。

注意:如果你燒寫的韌體laoder版本與原來的機器的不一致,請在升級韌體前先執行"擦除Flash"。

TIM圖片20171221095947.png

3.3.2 燒寫分割槽映像

燒寫分割槽映像時,請使用對應SDK下的FFTools/AndroidTool.rar燒寫。步驟如下:

    1.切換至"下載映象"頁。
    2.勾選需要燒錄的分割槽,可以多選。
    3.確保映像檔案的路徑正確,需要的話,點路徑右邊的空白表格單元格來重新選擇。
    4.點選"執行"按鈕開始升級,升級結束後設備會自動重啟。

TIM圖片20171221095947.png

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

Rk3288 rkflashkit.png

  • 命令列:

$ 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 模式》