Hi3516開發板USB口燒錄方法總結
前文《Hi3516開發板燒錄總結》提到:
- 3. USB燒錄還沒成功
- 官網上說只需要連接USB線(包含了供電)和串口線即可,按照官方文檔操作,中間需要給平臺“重啟開發板(下電再上電)”,這總不能拔掉USB線再插上吧,開發板串口線座子邊上倒是有一個SW3按鍵(原理圖上是UPDATE_MODE),但目前實際按下去是沒有反應的,估計是還需要先做一些配置。
這幾天燒錄標準系統,速度實在是太慢了,完整燒錄一次需要8分鐘以上~~所以想嘗試一下USB燒錄。
向華為官方咨詢了一下,上面說到的需要給平臺“重啟開發板(下電再上電)”的操作,原來就是拔插一下USB數據線,簡單粗暴有效,我居然一開始就想當然地把這個操作否定掉了,實在是不應該!
我嘗試了一下各種燒錄方法,結果如下表:

下面就對上表紅框內的兩種燒錄方法做個對比:

首先需要在Windows主機安裝好USB燒錄的驅動程序“HiUSBBurnDriver”,以及USB轉串口的驅動程序。(請按官方指導文檔去下載和安裝)
USB口燒錄,只需要連接兩根線:USB線數據線(包含了供電)連接開發板背后的USB口和主機USB口;USB轉串口線連接開發板串口到主機另一個USB口。
USB轉串口線,默認是直接接到windows主機上的,需要切換連接到Linux虛擬機里去,如下圖,選擇“連接(與主機斷開連接)”,這時候windows的串口設備就會切換到Linux虛擬機里的USB0。

Linux虛擬機里,在DevEco 打開 Hi3516工程的配置頁面,點擊“hi3516dv300”標簽,找到“Upload Options”,“upload_port”設置為“/dev/tty/USB0”,“upload_protocol”設置為“hiburn-usb”,“upload_partitions”默認的四個可燒錄的分區都列出來了,保持默認配置(跟華為官方確認了,USB燒錄方法必須要擦除fastboot,然后一次性燒錄4個分區),所以這里的“upload_partitions”不要改動。“Partition Configuration”里面的四個燒錄分區的相關信息,也保持默認配置即可,點擊“Save”保存配置。


在DevEco的“Project Tasks”界面展開“hi3516dv300”,再展開“hi3516dv300_fastboot”,點擊“Erase”,開始擦除fastboot,這一步是必須要做的。

右下角的終端界面會提示:
- SerialPort has been connented, Please power off, then power on the device.
- If it doesn't work, please try to repower on.
這時候就需要手動拔插一次USB數據線(注意不是USB轉串口線),這就是“power off”再“power on”開發板了。
開發板重新上電,擦除fastboot分區成功,會有下圖的log,同時會有一個新的“Huawei USB Serial”設備嘗試連接進來,選擇將其連接進虛擬機里。

確定后,再點擊“Project Tasks”界面上的“Upload”按鍵,這時候平臺會自動重啟,
- Open USB Success
- ################################################# ---- 10%
- ########## .....
- ################################################# ---- 100%
- Boot download completed!
- Open USB Success
- start download process.
- Boot started successfully!
接下來是自動執行一組“Send command:”開始燒錄,20s左右就完成燒錄了,速度可比網口燒錄快多了!

燒錄完成后,平臺自動重啟,會停留在
- Hit any key to stop autoboot: 0
- ## Error: "distro_bootcmd" not defined
- hisilicon #
這一步,這是因為燒錄了fastboot分區的緣故。
這里,需要你重新寫入引導內核啟動的指令和參數,可以直接點擊“hi3516dv300”中的“Configure bootloader(Boot OS)”按鈕,根據終端的提示,重新拔插一下USB數據線,就可以自動執行命令配置fastboot的指令和參數,并且自動重啟了。

也可以在你清楚地知道自己在做什么的前提下,在終端手動寫入下面四條指令完成同樣的工作:
- setenv bootcmd "mmc read 0x0 0x80000000 0x800 0x4800; go 0x80000000";
- setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=20M rw";
- saveenv
- reset
前兩條指令的參數一定要與上面“Partition Configuration”配置的參數匹配,否則會出現無法正確引導內核啟動的異常。
系統自動重啟,就大功告成了。