HiHope开发者社区
直播中

HiHope

4年用户 809经验值
擅长:嵌入式技术
私信 关注
[经验]

【HarmonyOS HiSpark AI Camera】映像烧录

本帖最后由 l_xy 于 2020-10-18 18:26 编辑

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

HiSpark AI Camera开发板分区表如下:
红色部分请用户根据自己的镜像目录进行修改!!!
tition_Info>

D:imghmosu-boot-hi3516dv300.bin"/>

D:imghmosOHOS_Image.bin"/>

D:imghmosrootfs.img"/>

D:imghmosuserfs.img"/>



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

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

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

映像烧录方法见下图:
   151c4be1aebdc780dc751ec4a5d13fe.png

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

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

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

IDE工具烧录
其中“镜像烧写”详细介绍了烧录过程。

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

由于tftpboot使用网络通信,需要先在PC端打开tftp工具,配置映像路径;然后在U-boot命令行模式下配置环境变量:ethaddr、ipaddr和serverip。
环境变量配置可参考“HiSpark AI Camera U-boot环境变量”。
U-boot映像下载:
  1. hisilicon # tftpboot 0x80000000 u-boot-hi3516dv300.bin
  2. Hisilicon ETH net controler
  3. eth0 : phy status change : LINK=DOWN : DUPLEX=FULL : SPEED=100M
  4. eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M
  5. Using eth0 device
  6. TFTP from server 10.20.16.12; our IP address is 10.20.16.110
  7. Filename 'u-boot-hi3516dv300.bin'.
  8. Load address: 0x80000000
  9. Loading: #################
  10.          44.9 KiB/s
  11. done
  12. Bytes transferred = 237403 (39f5b hex)
  13. hisilicon #
  14. hisilicon # mmc write 0 0x80000000 0x0 0x1d0   

  15. MMC write: dev # 0, block # 0, count 464 ... 464 blocks written: OK
  16. 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映像,否则一旦出错,后果不堪设想。

内核映像下载:
  1. hisilicon # tftpboot 0x80000000 OHOS_Image.bin
  2. Hisilicon ETH net controler
  3. eth0 : phy status change : LINK=DOWN : DUPLEX=FULL : SPEED=100M
  4. eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M
  5. Using eth0 device
  6. TFTP from server 10.20.16.12; our IP address is 10.20.16.110
  7. Filename 'OHOS_Image.bin'.
  8. Load address: 0x80000000
  9. Loading: #################################################################
  10.          #################################################################
  11.          #################################################################
  12.          #################################################################
  13.          #################################################################
  14.          #############################
  15.          829.1 KiB/s
  16. done
  17. Bytes transferred = 5185276 (4f1efc hex)
  18. hisilicon # mmc write 0 0x80000000 0x800 0x2790

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

在调试内核时,也可以不用写入到EMMC,直接使用go命令,进行内核映像加载(系统重启后,需要重新下载内核映像),命令如下:
  1. hisilicon # tftpboot 0x80000000 OHOS_Image.bin
  2. Hisilicon ETH net controler
  3. eth0 : phy status change : LINK=DOWN : DUPLEX=FULL : SPEED=100M
  4. eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M
  5. Using eth0 device
  6. TFTP from server 10.20.16.12; our IP address is 10.20.16.110
  7. Filename 'OHOS_Image.bin'.
  8. Load address: 0x80000000
  9. Loading: #################################################################
  10.          #################################################################
  11.          #################################################################
  12.          #################################################################
  13.          #################################################################
  14.          #############################
  15.          838.9 KiB/s
  16. done
  17. Bytes transferred = 5185276 (4f1efc hex)
  18. hisilicon # go 0x80000000

  19. Starting application at 0x80000000 ...

  20. ******************Welcome******************

  21. Processor   : Cortex-A7 * 2
  22. Run Mode    : SMP
  23. GIC Rev     : GICv2
  24. build time  : Sep 21 2020 19:13:35
  25. Kernel      : Huawei LiteOS 2.0.0.35/debug

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

U-boot启动信息
在空EMMC中烧录鸿蒙系统映像后,U-boot启动log如下:
  1. System startup

  2. Uncompress Ok!

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

  4. DRAM:  MMC:   
  5. EMMC/MMC/SD controller initialization.
  6. scan edges:2 p2f:6 f2p:1
  7. mix set temp-phase 3
  8. scan elemnts: startp:5 endp:123
  9. Tuning SampleClock. mix set phase:[04/07] ele:[2d/16]
  10. MMC/SD Card:
  11.     MID:         0x15
  12.     Read Block:  512 Bytes
  13.     Write Block: 512 Bytes
  14.     Chip Size:   7456M Bytes (High Capacity)
  15.     Name:        "8GTF4"
  16.     Chip Type:   MMC
  17.     Version:     0.0
  18.     Speed:       100000000Hz
  19.     Bus Width:   4bit
  20. himci: 0 (eMMC)
  21. Loading Environment from MMC... *** Warning - bad CRC, using default environment

  22. In:    serial
  23. Out:   serial
  24. Err:   serial
  25. Net:   eth0
  26. Error: eth0 address not set.

  27. Hit any key to stop autoboot:  0

  28. Error: "distro_bootcmd" not defined

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



原创作者:田曙亮


回帖(3)

zhushy1988

2020-9-27 17:47:12
hitool烧录工具哪里下载?
举报

HiHope

2020-9-29 10:30:33
可以去hihope官网寻找 http://hihope.org/download/AllDocuments ,在HiHope SDK里面找
1 举报

jf_89761755

2020-10-1 19:44:56
请问为什么烧写我自己编译的和官网发布的release文件后,网络加载失败,报了很多错误。

[Init] ****/****/****/****/OpenHarmony/****/****/3/OpenHarmony 1.0/release
[Init] DoMount, failed for vfat /dev/mmcblk0 /sdcard rw,umask=000, err -1.
[ERR]Failed to find block driver /dev/mmcblk1
[Init] DoMount, failed for vfat /dev/mmcblk1 /sdcard rw,umask=000, err -1.
[Init] start service shell invalid, please check /bin/shell.
[Init] StartServiceByName, service shell start failed!
[Init] start service apphilogcat succeed, pid 3.

2 举报
  • HiHope: 这个可以提供更详细一点的说明吗
  • jf_89761755 回复 HiHope: 您好,非常感谢回复,已经解决了,是网线的问题,那些报错不影响运行,现在都正常了,谢谢。

更多回帖

发帖
×
20
完善资料,
赚取积分