开发环境:
开发系统:Ubuntu 20.04
开发板:HiSpark IPCCamera(Hi3518)
3.1 Harmony源码编译Harmony在V1.1.1之后引入hb工具,因此不同的版本会有不同的编译方式。
HiSpark IPC DIYCamera基于华为海思Hi3518芯片,对应的产品名字是ipccamera_hispark_aries。
接下来编译ipccamera_hispark_aries,这里采用hb工具编译,在代码根目录下执行
$hb set
然后输入‘.’表示当然路径。
这里我们选择ipccamera_hispark_aries
可使用上下键进行选择,也可使鼠标选择。
然后输入以下命令开始编译:
$ hb build -f
等待编译完成。
编译成功后,在out目录会生成ohos_image.bin, rootfs_jffs2.img, userfs_jffs2.img三个文件。
ohos_image.bin, rootfs_jffs2.img, userfs_jffs2.img三个文件是需要烧写的,因此需要拷贝到Windows。
值得注意的是,Harmony最新均是采用hb编译。
3.2 Harmony固件烧写HiSpark IPCCamera烧写Harmony固件到flash可以采用两种方式:串口方式、USB方式。
下面一一介绍。
3.2.1串口烧写这里使用海思自研的烧录工具Hitool。
接下来准备好需要用到的文件,由于没有编译Hi3518ev300的Uboot,这里可以到润和官网下载。
下载之后解压需要用到里面的Uboot文件。
这里按照分区方式烧写,可以将uboot、ohos_image.bin, rootfs_jffs2.img, userfs_jffs2.img四个文件一起烧写,也可以只烧写ohos_image.bin, rootfs_jffs2.img, userfs_jffs2.img三个文件。
然后准备一个分区文件ipcamera_hi3518.xml,输入以下内容:
<?xml version="1.0"encoding="GB2312" ?>
<Partition_InfoProgrammerFile="">
<Part Sel="1"PartitionName="fastboot" FlashType="spi"FileSystem="none" Start="0" Length="1M"SelectFile="u-boot-hi3518ev300.bin"/>
<Part Sel="1" PartitionName="ohos_image"FlashType="spi" FileSystem="none" Start="1M"Length="6M" SelectFile="OHOS_Image.bin"/>
<Part Sel="1"PartitionName="rootfs" FlashType="spi"FileSystem="none" Start="7M" Length="8M"SelectFile="rootfs_jffs2.img"/>
<Part Sel="1" PartitionName="userfs"FlashType="spi" FileSystem="none" Start="15M"Length="1M" SelectFile="userfs_jffs2.img"/>
</Partition_Info>
准备好所有文件资源就可以开始烧写了。
首先打开Hitool,选择HiBurn工具。
选择hi3518ev300芯片。
在 USB 线没有上电的前提下,选择好对应的串口号后,选择传输方式为串口,然后选择分区文件表。
接着勾选所有文件,上电,再点击擦除按钮。
不管是擦除还是烧写,都需要拔掉电源再插上电源。可以按照HiBurn控制台的提示进行操作。
等待烧写完成即可,串口烧写的时间比较长,请耐心等待。
修改U-boot的bootcmd及bootargs内容,打开终端,输入以下语句到终端:
setenv bootargs "console=ttyAMA0,115200n8 root=flashfstype=jffs2 rw rootaddr=7M rootsize=8M";
setenv bootcmd "sf probe 0;sf read 0x400000000x100000 0x600000;go 0x40000000";
saveenv
然后输入reset即可重启。
输入回车会出现 OHOS # 提示符表示系统启动完成。
3.2.2 USB烧写首先安装HiUSBBurnDriver,不然无法使用USB烧写。
在烧写之前,先擦除分区,参看上一节内容。
接下来就可以烧写固件了。
等待烧写完成即可。
输入以下语句到终端:
setenv bootargs "console=ttyAMA0,115200n8 root=flashfstype=jffs2 rw rootaddr=7M rootsize=8M";
setenv bootcmd "sf probe 0;sf read 0x400000000x100000 0x600000;go 0x40000000";
saveenv
然后输入reset即可重启。