【HarmonyOS HiSpark AI Camera】映像烧录

hushuo
发布于 2021-2-4 17:08
浏览
2收藏

HiSpark AI Camera开发板的鸿蒙系统有4个映像:
u-boot-hi3516dv300.bin、OHOS_Image.bin、rootfs.img和useRFs.img。
目前支持串口、USB、网口三种方式进行映像烧录。
在映像烧录前,需要确认每个映像在EMMC中的存储起始地址和存储空间大小即映像分区表。

HiSpark AI Camera开发板分区表如下:
(文件路径部分请用户根据自己的镜像目录进行修改!!!)

<?xml version="1.0" encoding="GB2312" ?>
<Partition_Info>
<Part Sel="1" PartitionName="fastboot" FlashType="emmc" FileSystem="none" Start="0"      Length="1M"   SelectFile="D:\img\hmos\u-boot-hi3516dv300.bin"/>
<Part Sel="1" PartitionName="kernel"    FlashType="emmc"  FileSystem="none" Start="1M"  Length="9M"   SelectFile="D:\img\hmos\OHOS_Image.bin"/>
<Part Sel="1" PartitionName="rootfs"    FlashType="emmc"  FileSystem="none" Start="10M" Length="15M" SelectFile="D:\img\hmos\rootfs.img"/>
<Part Sel="1" PartitionName="userfs"    FlashType="emmc"  FileSystem="none" Start="25M" Length="50M" SelectFile="D:\img\hmos\userfs.img"/>
</Partition_Info>

 

镜像名称 起始地址 长度
u-boot-hi3516dv300.bin 0x0 0x100000
OHOS_Image.bin 0x100000 0x900000
rootfs.img 0xa00000 0xf00000
userfs.img 0x1900000 0x3200000

 

在烧录映像前,需要通过串口线、网线连接PC和单板,同时连接单板的电源线,保证单板可正常上电和通信。

 

HiTool工具烧写

HiTool是海思芯片的映像烧录工具,在映像烧录前,先选择对应的芯片,见下图:

【HarmonyOS HiSpark AI Camera】映像烧录-鸿蒙开发者社区映像烧录方法见下图:

【HarmonyOS HiSpark AI Camera】映像烧录-鸿蒙开发者社区

1、PC与板端配置
本地PC配置:串口:设置单板和PC之间连接的串口号;服务器IP:设置PC的IP地址。
板端配置:IP地址:设置单板的IP地址 ;网关和子网掩码正常配置即可。
传输方式:选择网口,下载速度比较快。

 

2、烧写eMMMC
使用“浏览”选择分区表,选择需要烧录的映像,点击”烧写“。

 

3、上电
按照提示给单板重新上电。
注:在下载映像时,其它串口工具不能占用HiTool下载使用的串口。

 

IDE工具烧录

IDE工具烧录映像方法:

https://device.harmonyos.com/cn/docs/start/introduce/oem_camera_start_first_example-0000001051610926
其中“镜像烧写”详细介绍了烧录过程。

 

U-boot命令烧录

在U-boot命令行模式下,可以使用tftpboot进行映像文件下载,使用mmc write命令将映像保存到EMMC中。

由于tftpboot使用网络通信,需要先在PC端打开tftp工具,配置映像路径;然后在U-boot命令行模式下配置环境变量:ethaddr、ipaddr和serverip。
环境变量配置可参考“HiSpark AI Camera U-boot环境变量”。


U-boot映像下载:

hisilicon # tftpboot 0x80000000 u-boot-hi3516dv300.bin
Hisilicon ETH net controler
eth0 : phy status change : LINK=DOWN : DUPLEX=FULL : SPEED=100M
eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M
Using eth0 device
TFTP from server 10.20.16.12; our IP address is 10.20.16.110
Filename 'u-boot-hi3516dv300.bin'.
Load address: 0x80000000
Loading: #################
         44.9 KiB/s
done
Bytes transferred = 237403 (39f5b hex)
hisilicon #
hisilicon # mmc write 0 0x80000000 0x0 0x1d0   
​
MMC write: dev # 0, block # 0, count 464 ... 464 blocks written: OK
28.74 MB/s

 

tftpboot命令参数:
第一个参数0x80000000是下载U-boot映像的内存起始地址;第二个参数u-boot-hi3516dv300.bin是U-boot映像名。其他映像下载方法类似。

 

mmc write命令参数:
第一个参数0是mmc设备号;
第二个参数0x80000000是tftpboot下载U-boot映像的内存起始地址。
第三个参数0是U-boot映像保存在EMMC的起始地址/512;
第四个参数0x1d0是U-boot映像文件大小/512。
                U-boot映像文件大小:建议在PC端右键U-boot映像,选择“属性”,使用“占用空间”大小。


注:如果没有Hitool工具,不建议更新U-boot映像,否则一旦出错,后果不堪设想。

 

内核映像下载:

hisilicon # tftpboot 0x80000000 OHOS_Image.bin
Hisilicon ETH net controler
eth0 : phy status change : LINK=DOWN : DUPLEX=FULL : SPEED=100M
eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M
Using eth0 device
TFTP from server 10.20.16.12; our IP address is 10.20.16.110
Filename 'OHOS_Image.bin'.
Load address: 0x80000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #############################
         829.1 KiB/s
done
Bytes transferred = 5185276 (4f1efc hex)
hisilicon # mmc write 0 0x80000000 0x800 0x2790

MMC write: dev # 0, block # 2048, count 10128 ... 10128 blocks written: OK
37.65 MB/s
hisilicon #

 

在调试内核时,也可以不用写入到EMMC,直接使用go命令,进行内核映像加载(系统重启后,需要重新下载内核映像),命令如下:

 

hisilicon # tftpboot 0x80000000 OHOS_Image.bin
Hisilicon ETH net controler
eth0 : phy status change : LINK=DOWN : DUPLEX=FULL : SPEED=100M
eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M
Using eth0 device
TFTP from server 10.20.16.12; our IP address is 10.20.16.110
Filename 'OHOS_Image.bin'.
Load address: 0x80000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #############################
         838.9 KiB/s
done
Bytes transferred = 5185276 (4f1efc hex)
hisilicon # go 0x80000000
​
Starting application at 0x80000000 ...
​
******************Welcome******************
​
Processor   : Cortex-A7 * 2
Run Mode    : SMP
GIC Rev     : GICv2
build time  : Sep 21 2020 19:13:35
Kernel      : Huawei LiteOS 2.0.0.35/debug

 

rootfs.img和userfs.img下载方式类似,不再介绍。

 

U-boot启动信息

在空EMMC中烧录鸿蒙系统映像后,U-boot启动log如下:

System startup

Uncompress Ok!

U-Boot 2020.01 (Sep 01 2020 - 09:25:23 +0800)hi3516dv300

DRAM:  MMC:   
EMMC/MMC/SD controller initialization.
scan edges:2 p2f:6 f2p:1
mix set temp-phase 3
scan elemnts: startp:5 endp:123
Tuning Sampleclock. mix set phase:[04/07] ele:[2d/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
himci: 0 (eMMC)
Loading Environment from MMC... *** Warning - bad CRC, using default environment
​
In:    serial
Out:   serial
Err:   serial
Net:   eth0
Error: eth0 address not set.
​
Hit any key to stop autoboot:  0
​
Error: "distro_bootcmd" not defined
​
hisilicon #

 

从上面log看出,U-boot直接进入命令行模式(出现hisilicon#提示),无法正常引导内核和文件系统。因此,需要重新配置U-boot环境变量bootargs和bootcmd。
注:出厂的单板已经配置过环境变量bootargs和bootcmd,系统可以正常启动,不会出现上面情况。

 

原创作者:田曙亮

3
收藏 2
回复
举报
2条回复
按时间正序
/
按时间倒序
鸿蒙张荣超
鸿蒙张荣超

👍👍👍

回复
2021-3-7 22:03:27
Arrebol
Arrebol

感谢大神,想请教下,如果这样子烧,就需要很长的时间,如果我只是添加application的一个小功能,可以只烧一个模块吗?

回复
2021-4-9 15:50:25
回复
    相关推荐