Hi3516开发板USB口烧录方法总结 原创 精华
Hi3516开发板USB口烧录方法总结
liangkz 2021.06.17
前文《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”配置的参数匹配,否则会出现无法正确引导内核启动的异常。
系统自动重启,就大功告成了。
方法简单粗暴,但确实有效.
小型系统烧录串口烧录成功,但是开机不亮屏,进入Monitor 无法进入命令行模式 输入参数
小型系统你用串口烧录,烧录时间会非常长,确定烧录成功了吗?
可以把平台上电后打印的log发出来看一下,看看uboot启动是否正常。
推荐上面的USB烧录方法,极速烧录。
也可以尝试一下网口烧录。
我看你总结windows上usb没有烧录成功,上午烧录了快两个小时才烧录好,我用ide看不到启动日志,用Hitool可以看到日志吗?
我按官网的操作,一次性烧录了四个文件fastboot、kernel、rootfs和userfs,
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/%E8%BF%90%E8%A1%8CHello-OHOS.md 官网说还要进行下面的操作,但是我进入不了命令行模式,所以现在屏幕没有点亮
(单板初次启动必选)修改U-boot的bootcmd及bootargs内容:该步骤为固化操作,若不修改参数只需执行一次。每次复位单板均会自动进入系统。
须知: U-boot引导程序默认会有2秒的等待时间,用户可使用回车打断等待并显示"hisilicon",通过reset命令可再次启动系统。
请问一下,我代码编译成功,在进行文件烧录。目前虚拟机已经识别了串口USB0,我未作修改,按默认配置保存,点击upload后出现了报错,不知道因为什么原因,求助大佬们。
这个情况我没遇到过,不清楚原因。
建议直接用HiTool工具在Windows下通过网络或者USB方式烧录,会快不少。
一直用不了usb烧录不知道为什么?驱动也装了
本地PC配置的串口选正确,再按上面配置好烧录信息,确认无误之后,点击“烧写”,出现提示框后,拔掉USB数据线(先拔掉USB数据线再点击“烧写”也可以),按住开发板上串口数据线座子旁边的reset按键,再插入USB数据线,最后松开reset按键,就会开始烧录流程了。
明天试一下,以前没有按个reset键,以前vscode和hitool usb都没有成功,vscode网络和串口可以,hitool目前就串口可以,usb和网络都报错
好的,谢谢,我找了一下问题,现在发现我的电脑里没有fastboot.bin所在的目录,这个可能是导致烧写不成功的原因,我先用hitool烧写方法先做,这个问题后面我再去探索一下。
小型系统(liteos_a/linux)的fastboot在:
//device/hisilicon/hispark_taurus/sdk_liteos/uboot/out/boot/u-boot-hi3516dv300.bin
你在IDE的烧录分区表中配置一下应该就可以了。
我现在使用hitool网口烧写的方式成功烧写,按照官方文档配置保存,但是无法重启,log如下:
hisilicon # reset
resetting ...
System startup
Uncompress Ok!
U-Boot 2020.01 (Mar 10 2021 - 15:44:50 +0000)hi3516dv300
DRAM: MMC:
EMMC/MMC/SD controller initialization.
scan edges:2 p2f:6 f2p:1
mix set temp-phase 3
scan elemnts: startp:3 endp:119
Tuning SampleClock. mix set phase:[03/07] ele:[13d/16]
MMC/SD Card:
MID: 0x15
Read Block: 512 Bytes
Write Block: 512 Bytes
Chip Size: 7456M Bytes (High Capacity)
Name: "8GTF4"
Chip Type: MMC
Version: 0.0
Speed: 100000000Hz
Bus Width: 4bit
EMMC/MMC/SD controller initialization.
Card did not respond to voltage select!
mmc_init failed! err:-95
No SD device found !
himci: 0 (eMMC), himci: 1
Loading Environment from MMC... OK
In: serial
Out: serial
Err: serial
Unable to use mmc for fat
Net: eth0
Error: eth0 address not set.
Hit any key to stop autoboot: 0
MMC read: dev # 0, block # 2048, count 18432 ... 18432 blocks read: OK
45.24 MB/s
Wrong Image Format for bootm command
ERROR: can't get kernel image!
采用网口+emmc方式烧写,目前个人分析可能是因为配置文件xml不对,请问xml文件的来源在哪里呢?我一个烧写成功的朋友说在编译生成的目录out下有xml,但是我没有找到,我现在是在linux虚拟机下用Deveco编译的,请问这个问题如何解决呢?
在
Hit any key to stop autoboot: 2
数秒的时候,按任意键中断引导,参考《3516开发板window上HiTool工具USB烧录三种固件总结》这篇文章的步骤,重新写入uBoot的启动参数设置4条命令,再试试看。