Hi3516开发板烧录总结

开发
文章由鸿蒙社区产出,想要了解更多内容请前往:51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com

[[401457]] 

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

上周在研究Hi3861平台的软总线组件,周末的时候,购买的Hi3516开发板到货,就着手研究了一下Hi3516开发板。

在Linux下的DevEco新建Hi3516工程并通过HPM下载代码,一键build,out目录有三个重要文件:

OHOS_Image.bin(size 5M)、rootfs.img(size 14M)、userfs.img(size 50M),加上 //vendor/hisi/hi35xx/hi3516dv300/uboot/out/boot/u-boot-hi3516dv300.bin(size 231K)共计4个文件,可以烧录到开发板上。

在动手烧录之前,一定要先仔细研究一下官网的“Hi3516系列开发板烧录”说明。

去润和官网下载windows下的串口驱动(“USB-to-Serial Comm Port”+”PL2303_Prolific_DriverInstaller_v1_12_0”)并安装起来。

这里还有一个Hi3516-HiTool工具可以用来在windows下烧录,不需要的话可不下载。

这里往后翻一下,还有一个HiUSBBurnDriver驱动可以下载,通过USB口来烧录需要安装这个驱动。

1. USB转串口线连接开发板与虚拟机里的DevEco

开发板配送的USB转串口线,默认是直接接到windows主机上的,要切换连接到Linux虚拟机里去,如下图,选择“连接(与主机断开连接)”。

在Linux的DevEco,Hi3516工程的配置中的“upload_port”选中对应的设备即可将开发平台与DevEco连接在一起了。

2. 不推荐串口烧录

上面的upload_protocol 选择“hiburn-serial”模式就可以启动串口烧录了,这种模式下,开发板只要连接电源线和USB转串口线(接入Linux虚拟机DevEco),按官网提供的步骤操作烧录就可以了。

但是非常不推荐串口烧录,速度太慢了,烧录一次半个小时以上,迫不得已的烧录办法。

3. USB烧录还没成功

官网上说只需要连接USB线(包含了供电)和串口线即可,按照官方文档操作,中间需要给平台“重启开发板(下电再上电)”,这总不能拔掉USB线再插上吧,开发板串口线座子边上倒是有一个SW3按键(原理图上是UPDATE_MODE),但目前实际按下去是没有反应的,估计是还需要先做一些配置。

所以目前还没有成功通过USB进行烧录,先放下,待后面再研究一下。

4. 网口烧录

虚拟机的网络设置成桥接模式,可以让虚拟机、windows主机、Hi3516开发板三者并列位于当前局域网环境中,开发板需要通过网线接入当前局域网,这样操作起来会比较简单。【NAT模式我还没试过,不知道行不行】

如上上图,upload_protocol 选择“hiburn-net”模式,这时DevEco会自动生成:

分别是虚拟机的IP地址、掩码、网关和将要为Hi3516开发板分配的IP(这个可以自己改成别的地址,不与局域网内的设备产生冲突就可以了)。

至此,Hi3516开发板连接有电源线、网线接入局域网、USB转串口线连入Linux虚拟机。

先看下一节“不要烧录fastboot”,去掉烧录fastboot的烧录后,按官方操作说明进行操作即可,要是烧录不成功,可能需要先看看网络配置是否正常。

网口烧录一般在两三分钟内就可以烧录完成,缺点是需要网络。

5. 不要烧录fastboot

平常开发没有修改到fastboot的话,就没必要去烧录fastboot了。

要是用Windows下的Hi3516-HiTool工具来烧录,不要勾选fastboot就可以了。

要是通过Linux下的DevEco来烧录,就要手动删掉这个fastboot。

DevEco创建并通过HPM下载安装Hi3516工程时,默认是勾选烧录fastboot的,这是一个坑。

可以在Hi3516工程的配置里的“hi3516dv300”标签下的“upload_partitions”项目里,把“partition:hi3516dv300_fastboot”删除掉,这样左手边的“PROJECT TASKS”下就没有“hi3516dv300_fastboot”的烧录选项了,一键烧录时就避免烧录fastboot了。需要烧录的时候,再加上去就可以了。

要是不删除“partition:hi3516dv300_fastboot”,那烧录时,就不要点击“Upload”进行一键烧录,可以通过下面的kernel/rootfs/userfs标签单独烧录某个partition就可以了。

6. 烧录fastboot之后

要是修改了uboot代码,必须要烧录fastboot,或者误烧录了fastboot,之后的开机会停留在:

  1. Hit any key to stopautoboot: 0  
  2.  
  3. ## Error:"distro_bootcmd" not defined  
  4.  
  5. hisilicon # 

这一步,需要重新设置bootcmd和bootargs。

可以参考官方说明进行操作,需要特别注意的是:

  1. setenv bootcmd "mmc read 0x0 0x80000000 0x800 0x4800; go 0x80000000"

我们之前已经将OHOS_Image.bin烧写到FLASH(emmc)中去了(烧写地址是和大小就是下图中的Address和Length)。

这条 bootcmd 是 uboot 引导启动鸿蒙内核的指令,意思就是:从FLASH(emmc)地址为 0x800(单位为512B,即1MByte)的地方开始,读取大小为 0x4800(单位为512B,即9MByte)的内容(包含了整个OHOS_Image.bin和部分空余空间)到地址为0x80000000的内存(DDR)里去,并从内存的0x80000000地址开始执行指令,由此进入汇编代码引导LiteOS-A内核启动阶段(见《鸿蒙系统的启动流程》第二阶段)。

这里的 0x4800 的大小(9MB)与 DevEco 中所填写的 OHOS_Image.bin 文件大小(注意不是实际大小,而是下面的Length )必须相同。如下:

如本文开头所述,编译出来的OHOS_Image.bin(size 5M),这里给的9M空间足够了,不要随便修改。

未来如果修改内核编译出来的OHOS_Image.bin超过9M大小,那就需要修改这里的Length参数里,具体可在“New Option”中选择“partition_length”再进行设置,改了这个之后,后面的rootfs/userfs的起始地址也必须要跟着往后挪相应的值。

  1. setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=15M rw"

表示设置启动参数,输出模式为串口输出,波特率为115200,数据位8,rootfs挂载于emmc器件,文件系统类型为vfat,“rootaddr=10M rootsize=15M rw”处对应填入rootfs.img的烧写起始位置与长度,此处与DevEco中填写的 rootfs.img 文件大小必须相同。

前面 fastboot 占了1M空间,kernel占了9M空间(虽然OHOS_Image.bin实际只用了5M),所以rootfs的起始地址就从10M处开始,size 的话,按DevEco的配置(0x1400000),这里的rootsize=15M 是要改成rootsize=20M的,如下图:

本文开头rootfs.img(size 14M),实际只占用了这20M中的前面14M,暂没有必要修改这个参数。

以后修改系统代码,增加了一些库文件等等,rootfs超过了20M,也需要修改Length参数,同时会影响到后面的userfs的起始地址。

目前userfs默认50M,其余也都先按默认值来处理就可以了。

确认无误后,执行:

  1. saveenv 
  2.  
  3. reset 

进行保存设置和重启,应该就可以正常启动了。

要是仍然没法正常启动,那就需要看log分析是到哪一步出现了异常。

7. uboot命令行 hisilicon#

uboot启动到

  1. Hit any key to stopautoboot: 2 

在这一步时,按任意键可以中断Uboot对鸿蒙系统内核的引导,进入uboot命令行模式【uboot引导鸿蒙系统内核出现异常如上一节,也会导致进入uboot的命令行模式】。

在hisilicon# 下,敲入“?”或者“help”,可以查看支持的指令。

8. Windows Hi3516-HiTool烧录

上面说到的都是在Linux虚拟机的DevEco上烧录的,这里我们也可以在windows下用Hi3516-HiTool来进行烧录。

需要先做一些准备工作:Linux下按照上一节的操作进入uboot的命令行,写入指令:

  1. setenv serverip 192.168.1.114 
  2.  
  3. setenv ipaddr 192.168.1.55 
  4.  
  5. saveenv 

windows主机作为server端,它的ip地址是 192.168.1.114,Hi3516开发板地址为 192.168.1.55。

然后拷贝linux编译出来的OHOS_Image.bin、rootfs.img、userfs.img、u-boot-hi3516dv300.bin到windows目录下。

再按第一节中描述的,断开USB转串口与linux的连接,回到windows主机的 com6 口。

Windows下打开Hi3516-HiTool,确认下面的配置与实际相符,特别是四个文件的起始地址和大小,一定要与上面setenv bootcmd、setenv bootargs 的参数匹配,否则烧录后重启,会启动失败的。确认无误后,点击烧写,开发板断电再重新上电即可开始烧写。

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2021-06-25 09:28:46

鸿蒙HarmonyOS应用

2022-02-16 16:01:02

Hi3516开发板鸿蒙

2022-04-15 14:45:49

Hi3516系统类型烧录鸿蒙

2021-07-09 14:20:23

鸿蒙HarmonyOS应用

2021-12-03 09:50:39

鸿蒙HarmonyOS应用

2022-01-05 20:27:45

鸿蒙HarmonyOS应用

2021-07-19 15:34:05

鸿蒙HarmonyOS应用

2020-10-14 09:37:03

HiBurn鸿蒙.bin文件

2021-07-21 09:58:50

鸿蒙HarmonyOS应用

2021-12-29 16:13:03

鸿蒙HarmonyOS应用

2022-04-02 20:45:04

Hi3516开发板操作系统鸿蒙

2020-11-06 10:15:16

HiBurn

2021-03-29 15:36:46

鸿蒙HarmonyOS应用

2021-04-09 09:45:21

鸿蒙HarmonyOS应用

2021-08-06 15:09:22

鸿蒙HarmonyOS应用

2021-12-30 16:12:07

鸿蒙HarmonyOS应用

2022-03-14 15:26:59

Hi3516Ark子系统鸿蒙

2021-03-16 09:49:16

鸿蒙HarmonyOS应用

2021-11-09 15:28:41

鸿蒙HarmonyOS应用

2021-09-24 10:20:42

鸿蒙HarmonyOS应用
点赞
收藏

51CTO技术栈公众号