0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HarmonyOS的烧录方法介绍

h1654155282.3538 来源:张飞实战电子 作者:张飞实战电子 2020-10-19 11:02 次阅读

1.烧录工具

理解HarmonyOS驱动框架,用户态APP和内核态驱动之间的通信机制。

HarmonyOS烧录使用的海思自研的烧录工具Hitool,使用起来相对来说比较简单。整体界面如图所示:

2.烧录内容

烧录内容主要分为两部分,一部分是引导文件fastboot烧录,另一部分为项目文件烧录。这些文件分别是:OHOS_Image.bin可执行文件,rootfs.img和userfs.img镜像文件。

3.烧录方法

本文以sample_test demo 为例讲解烧录方法,开发板类型是Hi3516DV300.

烧录的第一步是打开Hitool工具,选择对应的芯片类型。如果你的开发板使用的是Hi3518ev300的,请选择对应的芯片。

3.1

3.1.1

Hiburn请按照如图进行设置:

① 我手上用的开发板是Hi3516DV300的,它的外挂flash是spi nor类型的,你们自己的设置请根据实际情况确定。

② 本示例所用的串口设备,计算机识别成COM1,你们做开发时请设置成相应的端口号。

③ 烧录方式选择fastboot。

Uboot所在目录(如果uboot不能正常启动,请从其他地方寻找相对老一点的版本uboot):

点击开始烧录,开发板电源拔掉并重新接上。

烧写成功后,打开终端,连接串口可以进入hisilion命令行。

3.1.2

3.1.2.1

首先软件的设置如下图所示,请参考图例正确设置:

这里面比较重要的就是开始地址和文件长度的确定,这个部分的规则如下:

① Uboot占用了1M的存储空间,所以OHOS_Image.bin的开始地址是1M,

② 文件大小不足1M的取值1M,比如本示例中OHOS_Image.bin的大小是5656kb,Hiburn中它的长度设置为6M。所以rootfs.img烧录的起始地址是1M+ 6M = 7M。

③ 其余情况,以此类推。

本示例中,各文件长度如下图所示:

3.1.2.2

开始烧录前,首先先断开打印信息的串口链接,把串口腾出来给烧录器使用。

3.1.2.3

点击“烧写”,并给开发板重新上电,烧录就开始了。16M的文件,用串口11500bps的烧写速度,是需要花费一段时间的,所以系统及应用文件的烧录一般不建议使用串口。

烧录过程截图:

烧写完成,耗时28分钟。

3.2

本示例网口烧录,硬件设备使用的是UGREEN的usbRJ45网线接口,仅供参考。

3.2.1

首先为开发板互联网口添加IP地址:192.168.1.3,增加方法如下:

控制面板中找到与单板连接的网卡,右键打开属性。

选择Internet协议版本4(TCP/IPv4)。

按图配置IP地址和网关。

点击“确定”完成配置保存。

3.2.2

单板与PC间连接串口后,将单板上电,自动进入U-boot,按键盘"回车"键可在命令窗口输入命令,为单板配置192.168.1.10的IP地址,并指定192.168.1.3的服务器IP地址,命令如下。

setenv serverip 192.168.1.3

setenv ipaddr 192.168.1.10

saveenv

配置完成后使用pri命令确认查看配置结果,如下图所示。

检查网络:在PC端使用ping命令确定单板与PC的网络,命令为"ping 192.168.1.3"。

3.2.3

开始烧录前,首先先断开打印信息的串口链接,把串口腾出来给烧录器使用。

3.2.4

Hitool配置如下,请参考。

配置完成后,点击烧录。烧录成功截图:

3.2.5

网口烧录的命令删去中间的细节输出,整理如图所示:

start download process.

Boot started successfully!

Send command:getinfo version

version: U-Boot 2016.11

[EOT](OK)

Send command:sf probe 0//选择spi flash 0

[EOT](OK)

Send command:getinfo spi

Block:64KB Chip:16MB*1

ID:0xC2 0x20 0x18

Name:"MX25L128XX"

[EOT](OK)

waiting phy ready, it will take 8s.

Send command:setenv serverip 192.168.1.3

[EOT](OK)

Send command:setenv ethaddr 00:8c:55:07:b0:88

[EOT](OK)

Send command:setenv ipaddr 192.168.1.10

[EOT](OK)

Send command:setenv netmask 255.255.255.0

[EOT](OK)

Send command:setenv gatewayip 192.168.1.1

[EOT](OK)

Tftp server Download Home switched to <10.175.126.15zhuanjiazfdzcamera0825outipcamera_hi3516dv300_liteos_a>

Send command:mw.b 0x81000000 0xFF 0x590000//把内存中从0x81000000 开始的0x590000个字节全部置1

[EOT](OK)

Send command:tftp 0x81000000 OHOS_Image.bin//把OHOS_Image.bin文档加载到内存中去,起始地址为0x81000000.

Hisilicon ETH net controler

eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M

Using eth0 device

TFTP from server 192.168.1.3; our IP address is 192.168.1.10

Filename 'OHOS_Image.bin'.

Load address: 0x81000000

Bytes transferred = 5791744 (586000 hex)

[EOT](OK)

Send command:crc32 81000000 586000

crc32 for 81000000 ... 81585fff ==> 78b90ed7

[EOT](OK)

Send command:sf probe 0//选择spi flash 0

[EOT](OK)

Send command:sf erase 0x100000 0x600000//把flash存储器中从0x100000开始的6M字节的存储空间清零。

Send command:sf write 0x81000000 0x100000 0x590000//把内存中从0x81000000开始的0x590000字节的内容copy到flash中,flash中存储的起始地址是0x100000

device 0 offset 0x100000, size 0x590000

Send command:mw.b 0x81000000 0xFF 0x780000//把内存中从0x81000000 开始的0x780000个字节全部置1

[EOT](OK)

Send command:tftp 0x81000000 rootfs.img//加载rootfs.img到内存中去,存储单位的起始地址是0x81000000

Hisilicon ETH net controler

eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M

Using eth0 device

TFTP from server 192.168.1.3; our IP address is 192.168.1.10

Filename 'rootfs.img'.

Send command:crc32 81000000 772314

crc32 for 81000000 ... 81772313 ==> ba26d341

[EOT](OK)

Send command:sf probe 0//选择spi flash 0

[EOT](OK)

Send command:sf erase 0x700000 0x800000//把flash存储器中从0x700000开始的8M字节的存储空间清零。

Send command:sf write 0x81000000 0x700000 0x780000//把内存中从0x81000000开始的0x780000字节的内容copy到flash中,flash中存储的起始地址是0x700000

device 0 offset 0x700000, size 0x780000

Send command:mw.b 0x81000000 0xFF 0x10000//把内存中从0x81000000 开始的0x10000个字节全部置1

[EOT](OK)

Send command:tftp 0x81000000 userfs.img//加载userfs.img到内存中去,存储单位的起始地址是0x81000000

Hisilicon ETH net controler

eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M

Using eth0 device

TFTP from server 192.168.1.3; our IP address is 192.168.1.10

Filename 'userfs.img'.

Load address: 0x81000000

Loading: *##

0 Bytes/s

done

Bytes transferred = 3020 (bcc hex)

[EOT](OK)

Send command:crc32 81000000 bcc

crc32 for 81000000 ... 81000bcb ==> 0361fc92

[EOT](OK)

Send command:sf probe 0//选择spi flash 0

[EOT](OK)

Send command:sf erase 0xf00000 0x100000//把flash存储器中从0xF00000开始的1M字节的存储空间清零。

Send command:sf write 0x81000000 0xf00000 0x10000//把内存中从0x81000000开始的0x10000字节的内容copy到flash中,flash中存储的起始地址是0xf00000

device 0 offset 0xf00000, size 0x10000

Writing at 0xf10000 -- 100% complete.

SF: 65536 bytes @ 0xf00000 Written: OK

[EOT](OK)

Partition burnt successfully!

Send command:reset

reset success!

Partition burnt completed!

Serial channels were closed successfully.

3.3

硬件使用的双母口USB线。

3.3.1

文件目录中只要包含OHOS_Image.bin,rootfs.img,userfs.img三个文件即可,不限定位置。

烧写方式一定要选择DDR烧写。

3.3.2

3.3.2.1

在串口终端中输入以下命令,每条命令的具体含义请参考网口烧录相关部分的描述:

mw.b 0x80000000 0xff 0x600000;// 0x600000就是OHOS_Image.bin所占的空间(取整)

usbtftp 0x80000000 OHOS_Image.bin;

sf probe 0;sf erase 0x100000 0x600000;sf write 0x80000000 0x100000 0x600000;//起始地址为0x100000

如果是Hi3518ev300的板子,请把命令中的0x80000000改成0x40000000。

3.3.2.2

在串口终端中输入以下命令,每条命令的具体含义请参考网口烧录相关部分的描述:

mw.b 0x80000000 0xff 0x800000;//0x800000就是rootfs.img所占的空间(取整)

usbtftp 0x80000000 rootfs.img;

sf probe 0;sf erase 0x700000 0x800000;sf write 0x80000000 0x700000 0x800000;//起始地址为0x100000+0x600000 = 0x700000

如果是Hi3518ev300的板子,请把命令中的0x80000000改成0x40000000。

3.3.2.3

在串口终端中输入以下命令,每条命令的具体含义请参考网口烧录相关部分的描述:

mw.b 0x80000000 0xff 0x100000;//0x100000就是userfs.img所占的空间(取整)

usbtftp 0x80000000 userfs.img;

sf probe 0;sf erase 0xf00000 0x100000;sf write 0x80000000 0xf00000 0x100000;//起始地址为0x100000+0x600000+0x800000=0xf00000

如果是Hi3518ev300的板子,请把命令中的0x80000000改成0x40000000。

3.3.2.4

4.开源板emmc烧录

烧录的时候,选择eMMC方式。我们这里选择通过网口烧录eMMC,网口的配置参考上文。

烧录完成之后,uboot的启动命令还有所不同,在eMMC中,存储是以512B为单位的,如果我们的文件(比如是OHOS_Image.bin)大小为6M(10进制),我们需要把它转换成16进制,具体转换的公式如下:

10进制中文件总大小:6* 1024 * 1024 Byte=6291456Byte,那么总共是多少个512KB的块呢?我们用6291456/512= 12288个块(十进制),再把十进制中的12288个块转换成16进制,得0x3000。那么也就是说一共有0x3000个512Byte的块。

setenv bootcmd "sf probe 0;mmc read 0x0 0x80000000 0x800 0x3000;";

setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=7M rootsize=15M rw"; saveenv;

5.不同烧录方法之间的比较

Usb烧录方式和网口烧录方式想象,不同之处比较如下:

网口烧录和USB烧录的速度基本是相同的,相比之下串口烧录就太慢了,所以正常情况下不推荐串口烧录。

综上比较,只从效率的角度看,烧录器的选择优先级为:

网口烧录> USB 烧录>串口烧录

6.其他问题

我们现在用的开发板Flash只有16M,如果程序过大,则无法进行烧录。所以做项目的时候,外挂的flash尽可能大一些,留有足够的预备空间。
责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 烧录
    +关注

    关注

    8

    文章

    220

    浏览量

    35191
  • HarmonyOS
    +关注

    关注

    79

    文章

    1814

    浏览量

    29258
收藏 人收藏

    评论

    相关推荐

    鸿蒙HarmonyOS烧录方法总结

    这份文档分为5个步骤介绍HarmonyOS烧录方法:1、烧录工具;2、烧录内容;3、
    发表于 09-10 15:58

    鸿蒙HarmonyOS烧录方法总结

    本帖最后由 o_dream 于 2020-9-10 17:31 编辑 1.烧录工具理解HarmonyOS驱动框架,用户态APP和内核态驱动之间的通信机制。HarmonyOS烧录使
    发表于 09-10 16:33

    鸿蒙系统(HarmonyOS)精华问答集锦

    对于鸿蒙系统,各位小伙伴是不是和小编一样,还是有很多问题不解。本期小编就整理了鸿蒙系统首批体验者精选问答。他们从开发者的角度出发,首先介绍HarmonyOS的体系、内核、系统特色,以及围绕“如何从
    发表于 10-10 15:13

    【HiSpark系列】鸿蒙HarmonyOS烧录方法总结

    优先级为:网口烧录 > USB 烧录 > 串口烧录6.其他问题我们现在用的开发板 Flash 只有 1 6M ,如果程序过大,则无法进行烧录。所以做项目的时候,外挂的 flash 会大
    发表于 10-20 10:41

    开发板烧录

    这里主要有烧录用到的软件以及环境搭建的教程:鸿蒙OS开发环境搭建鸿蒙HarmonyOS烧录方法总结HUAWEI DevEco Device Tool 使用指南
    发表于 11-24 11:00

    HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】visual studio code编写;Linux编译与Hiburn烧录(三)

    烧录的话,我用visual studio code一直报错,后来就了解到一个新的方法,用Hitool烧录。但是现在百度上的Hitool里面的芯片匹配不上。所以推荐大家使用下面的Hiburn软件。以
    发表于 12-04 11:25

    HarmonyOS HiSpark AI Camera试用连载 】Hi3516开发板烧录方法

    一、烧录说明 本文记录的是基于Hi3516芯片的HarmonyOS AI Camera开发板烧录方法。基于Hi3516开发板可采用海思自研的烧录
    发表于 01-30 23:22

    HarmonyOS介绍

    烧录、源码修改、调试验证等方法。Δ Hi3861开发板搭建环境: 介绍搭建环境所需要的硬件要求,并提供编译工具安装包。Δ Hi3861开发板第一个示例程序: 本示例将演示如何通过AT命令完成WLAN
    发表于 02-04 13:03

    HarmonyOS的相关资料分享

    1.介绍HarmonyOS 智能设备一站式集成开发环境,支持 HarmonyOS 组件按需定制、一键编译和烧录、可视化调试、分布式能力集成等,帮助开发者高效开发和创新新硬件。2.下载h
    发表于 11-03 09:02

    鸿蒙HarmonyOS烧录方法总结

    理解 HarmonyOS 驱动框架,用户态 APP 和内核态驱动之间的通信机制。HarmonyOS 烧录使用的海思自研的烧录工具 Hitool,使用起来相对来说比较简单。
    发表于 10-14 11:26 12次下载
    鸿蒙<b class='flag-5'>HarmonyOS</b><b class='flag-5'>烧录</b><b class='flag-5'>方法</b>总结

    单片机c8051f320烧录hex和bin的方法

    单片机c8051f320烧录hex和bin的方法烧录hex的方法烧录bin的方法
    发表于 11-24 17:36 18次下载
    单片机c8051f320<b class='flag-5'>烧录</b>hex和bin的<b class='flag-5'>方法</b>

    51 单片机串口烧录程序方法

    51单片机串口烧录程序方法51 单片机串口烧录程序方法一、说明介绍二、51 单片机串口引脚三、USART 转 USB 转换器三、
    发表于 11-25 18:21 118次下载
    51 单片机串口<b class='flag-5'>烧录</b>程序<b class='flag-5'>方法</b>

    Telink蓝牙芯片量产的烧录方法

    Telink蓝牙芯片量产烧录有一套成熟的烧录方法,软硬件配合可以完成Telink蓝牙芯片的测试、参数校准以及烧录工作。软件是Telink
    发表于 06-20 09:49 15次下载

    面向HarmonyOS开发者的HarmonyOS 3.0 Beta介绍

    Beta。这些新API带来了哪些开发上的变化?快来了解吧~   01 版本类型介绍 面向开发者的HarmonyOS版本包含以下三种类型,具体说明如图1所示。 图1 HarmonyOS的三种版本类型   02
    的头像 发表于 07-06 20:34 2964次阅读

    MCU控制器需要烧录吗 mcu烧录方法介绍

    烧录过程涉及将编写好的程序代码通过特定的烧录工具(如编程器、烧录器等)连接到MCU的编程接口,并将程序代码传输到MCU的存储器中。这个过程可以通过专门的集成开发环境(IDE)或烧录软件
    发表于 07-20 14:56 2213次阅读