前文《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”配置的参数匹配,否则会出现无法正确引导内核启动的异常。
系统自动重启,就大功告成了。