[]【HarmonyOS HiSpark AI Camera试用连载 】第一个应用程序

阅读量0
0
0
`

1. 参考文档:
  • 官方-开发Hi3516第一个应用程序示例 :https://device.harmonyos.com/cn/docs/start/introduce/oem_camera_start_first_example-0000001051610926
  • 源码码获取:https://openharmony.gitee.com/openharmony/docs/blob/master/get-code/%E6%BA%90%E7%A0%81%E8%8E%B7%E5%8F%96.md
  • 如何在Linux环境下在Hi3516DV300开发板搭载鸿蒙OS实现一个简单的Helloworld程序:https://bbs.elecfans.com/jishu_1991158_1_1.html
  • Open Harmony OS烧录总结(张飞电子):http://t.elecfans.com/c1302.html
视频课程的播放键不是点击正文里的播放图标,而是右侧边栏“关于讲师”介绍内容上面的红色图标“进入学习”或者“继续学习”。
  • 【HarmonyOS HiSpark AI Camera试用连载 】AI Camera 鸿蒙程序编写编译及烧录Linux完全版:https://bbs.elecfans.com/jishu_1996035_1_1.html
这篇文章是发烧友jf_89761755写的一篇很赞的编译、烧录说明文档。

2. 获取源码:从代码仓库获取
该方法和网速有关,可能耗时较久,推荐用后文通过镜像站点下载的方法。
2.1 注册码云gitee账号。
2.2 注册码云SSH公钥,请参考码云帮助中心的公钥管理:https://gitee.com/help/articles/4181
2.3 安装git客户端并配置用户信息。

  1. $ git config --global user.name "xxx"
  2. $ git config --global user.email "xxx@xxx.com"
  3. $ git config --global credential.helper store
复制代码
安装码云repo工具,可以执行如下命令:
$ sudo su // 不在root用户,sudo都不让执行下面内容
$ apt install curl
$ curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo
$ chmod a+x /usr/local/bin/repo
$ chown ubuntu:ubuntu /usr/local/bin/repo
$ pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
$ exit

2.4 通过repo下载
执行下载:

$ mkdir ~/harmony/sdk-repo && cd ~/harmony/sdk-repo
$ repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
$ repo sync -c  
注意:repo获取的镜像是不带git管理的,需要自己重新添加。

3. 获取源码:通过镜像站点下载(推荐)
  • OpenHarmony全量代码:https://repo.huaweicloud.com/harmonyos/os/1.0/code-1.0.tar.gz
  • Hi3516解决方案(二进制):https://repo.huaweicloud.com/harmonyos/os/1.0/ipcamera_hi3516dv300-1.0.tar.gz
添加git管理:

  1. ~/harmony/sdk$ tar -xzvf ~/harmony/backup/source/code-all-1.0.tar.gz -C ~/harmony/sdk/
  2. ~/harmony/sdk$ git init
  3. ~/harmony/sdk$ git add .
  4. ~/harmony/sdk$ git commit -m "initial commit"
复制代码

4. 源码目录简介
目录名
描述
applications
应用程序样例,包括wifi-iot,camera等
base
基础软件服务子系统集&硬件服务子系统集
build
组件化编译、构建和配置脚本
domains
增强软件服务子系统集
drivers
驱动子系统
foundation
系统基础能力子系统集
kernel
内核子系统
prebuilts
编译器及工具链子系统
test
测试子系统
third_party
开源第三方组件
utils
常用的工具集
vendor
厂商提供的软件
build.py
编译脚本文件

5. 修改源码
~/harmony/harmony-sdk$ sudo chown ubuntu:ubuntu -R harmony-sdk/
$ vi ~/harmony/sdk/applications/sample/camera/app/src/helloworld.c
  1. #include <stdio.h>
  2. #include "los_sample.h"

  3. int main(int argc, char **argv)
  4. {
  5.     printf("
  6. ************************************************
  7. ");
  8.     printf("
  9.                 Hello OHOS!
  10. ");
  11. +    printf("
  12.                 Hello World!
  13. ");
  14.     printf("
  15. ************************************************
  16. ");

  17.     LOS_Sample(g_num);

  18.     return 0;
  19. }
复制代码

6. 编译
$ python build.py ipcamera_hi3516dv300 -b debug

  1. ...
  2. [1336/1338] STAMP obj/build/lite/ohos.stamp
  3. [1337/1338] ACTION //build/lite:gen_rootfs(//build/lite/toolchain:linux_x86_64_clang)
  4. [1338/1338] STAMP obj/build/lite/gen_rootfs.stamp
  5. ohos ipcamera_hi3516dv300 build success!
复制代码
注意:
如果删除了SDK的部分内容可能导致再次编译会报错(即使用“git reset --hard
”恢复都没有用),解决办法是删除当前工程,重新解压源码,然后重新编译即可。

写成编译脚本:
$ touch build.sh && chmod 777 build.sh && vi build.sh

  1. #/bin/bash

  2. python build.py ipcamera_hi3516dv300 -b debug
复制代码
脚本可根据自己需求慢慢完善,下面是用脚本进行编译:
$ ./build.sh

  1. === start build ===

  2. Done. Made 247 targets from 156 files in 1025ms
  3. ninja: Entering directory `/home/ubuntu/harmony/sdk/out/ipcamera_hi3516dv300'
  4. [1/1338] STAMP obj/applications/sample/camera/communication/sample.stamp
  5. [2/1338] COPY ../../applications/sample/camera/hap/launcher.hap system/internal/launcher.hap
  6. ...
  7. [1337/1338] ACTION //build/lite:gen_rootfs(//build/lite/toolchain:linux_x86_64_clang)
  8. [1338/1338] STAMP obj/build/lite/gen_rootfs.stamp
  9. ohos ipcamera_hi3516dv300 build success!
复制代码
将产物拷贝到Windows共享目录中:
$ rm /mnt/hgfs/proj-harmony/images/out/ -rf
$ cp -rf out/ /mnt/hgfs/proj-harmony/images/

7. 烧录
7.1 使用HiTool烧录
7.1.1 下载HiTool
百度网盘下载地址:https://pan.baidu.com/s/1J51RpFUgJlyDxYs_mnuojw
提取码:4fn5

7.1.2 鼠标双击打开HiTool.exe

1鼠标双击打开HiTool.png

界面如下:
2界面如下.png


7.1.3 通过串口烧写bootloader(fastboot,uboot)
uboot位置:
$ ls -al ~/harmony/sdk/vendor/hisi/hi35xx/hi3516dv300/uboot/out/boot/u-boot-hi3516dv300.bin

  1. -rwxr-xr-x 1 ubuntu ubuntu 237403 9月   9 22:57 /home/ubuntu/harmony/sdk/vendor/hisi/hi35xx/hi3516dv300/uboot/out/boot/u-boot-hi3516dv300.bin
复制代码
张飞电子的视频中讲SDK中的uboot固件有问题,可能导致系统无法启动,暂时先不更新uboot,您可以直接跳到7.1.4小节阅读。

uboot网络配置:

  1. # setenv serverip 192.168.1.3;setenv ipaddr 192.168.1.2;saveenv;
复制代码
uboot启动指令:
  1. # setenv bootcmd "sf probe 0;mmc read 0x0 0x80000000 0x800 0x3000;";
  2. # setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=7M rootsize=15M rw"; saveenv; go 0x80000000
复制代码

下面部分是管理串口烧录的部分:

3下面部分是管理串口烧录的部分.png


7.1.4 通过网口烧写其他内容(OHOS_Image.bin、rootfs.img、userfs.img)
7.1.4.1 设置PC的IP地址:
在网络图标上点击鼠标右键,单击打开“打开网络和共享中心”


点击当前网络:
5点击当前网络.png

进入PC的IP设置:
6进入PC的IP设置.png

设置PC的静态IP为:192.168.1.3
7设置PC的静态IP.png


7.1.4.2 设置目标板(uboot)的IP
通过HiTool的终端连接到目标板系统,下面是管理终端的串口的部分:

8管理终端的串口的部分.png

在uboot倒计时阶段输入任意键,让系统停留在uboot阶段:
9让系统停留在uboot阶段.png

查看默认配置:
hisilicon # print

  1. arch=arm
  2. baudrate=115200
  3. board=hi3516dv300
  4. board_name=hi3516dv300
  5. bootargs=mem=512M console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootfstype=ext4 rootwait blkdevparts=mmcblk0:1M(boot),4M(kernel),7440M(rootfs)
  6. bootcmd=mmc read 0x0 0x82000000 0x800 0x2000;bootm 0x82000000
  7. bootdelay=2
  8. cpu=armv7
  9. ethact=eth0
  10. soc=hi3516dv300
  11. stderr=serial
  12. stdin=serial
  13. stdout=serial
  14. vendor=hisilicon
  15. verify=n

  16. Environment size: 419/262140 bytes
复制代码
设置uboot的IP地址:
hisilicon # setenv serverip 192.168.1.3;setenv ipaddr 192.168.1.2;saveenv;
hisilicon # print
  1. arch=arm
  2. baudrate=115200
  3. board=hi3516dv300
  4. board_name=hi3516dv300
  5. bootargs=mem=512M console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootfstype=ext4 rootwait blkdevparts=mmcblk0:1M(boot),4M(kernel),7440M(rootfs)
  6. bootcmd=mmc read 0x0 0x82000000 0x800 0x2000;bootm 0x82000000
  7. bootdelay=2
  8. cpu=armv7
  9. ethact=eth0
  10. ipaddr=192.168.1.2
  11. serverip=192.168.1.3
  12. soc=hi3516dv300
  13. stderr=serial
  14. stdin=serial
  15. stdout=serial
  16. vendor=hisilicon
  17. verify=n

  18. Environment size: 463/262140 bytes
复制代码
查看网络是否通畅:
hisilicon # ping 192.168.1.3
  1. Hisilicon ETH net controler
  2. eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M
  3. Using eth0 device
  4. ping failed; host 192.168.1.3 is not alive
复制代码
目前不能通过路由器连接,只能通过网线直连:
hisilicon # ping 192.168.1.3
  1. Hisilicon ETH net controler
  2. eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M
  3. Using eth0 device
  4. host 192.168.1.3 is alive
复制代码

7.1.4.3 在HiTool工具中依次填入OHOS_Image.bin、rootfs.img、userfs.img的文件位置
这里我们使用官方编译好的固件:ipcamera_hi3516dv300-1.0。
10ipcamera_hi3516dv300-1.0.png

流程如下:
11流程如下.png

点击“烧写”按键后,控制台会提示重启目标板:
12控制台会提示重启目标板.png

重启后,系统就自动进入烧写了:
13系统就自动进入烧写了.png

烧写成功:
14烧写成功.png

登陆系统:
此时登陆会进入之前的uboot中,单板初次启动需要修改启动参数。
  1. hisilicon # setenv bootcmd "mmc read 0x0 0x80000000 0x800 0x2800; go 0x80000000";
复制代码
注释:读取FLASH起始地址为0x800(单位为512B,即uboot大小为1MB),大小为0x2800(单位为512B,即OHOS_Image.bin大小为5MB)的内容到0x80000000的内存地址。
  1. hisilicon # setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=6M rootsize=15M rw";
复制代码
注释:表示设置启动参数,输出模式为串口输出,波特率为115200,数据位8,rootfs挂载于emmc器件,文件系统类型为vfat,“rootaddr=6M rootsize=14M rw”处对应填入rootfs.img的烧写起始位置与长度,此处与新增rootfs.img文件时所填大小必须相同。

保存环境变量,然后重启系统:
  1. hisilicon # saveenv
  2. hisilicon # reset
复制代码

重启后系统即可登陆到官方系统:

15重启后系统即可登陆到官方系统.png

拍照或者录视频:
16拍照或者录视频.png

wifi列表:
17wifi列表.png

关于:

18关于.png

但是uart-debug无法输入指令:
19但是uart-debug无法输入指令.png


下面烧写自己修改过~/harmony/sdk/applications/sample/camera/app/src/helloworld.c应用的系统:
20下面烧写自己修改过.png

设置环境变量:
  1. hisilicon # setenv bootcmd "mmc read 0x0 0x80000000 0x800 0x3000; go 0x80000000";
  2. hisilicon # setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=7M rootsize=15M rw";
  3. hisilicon # saveenv
  4. hisilicon # reset
复制代码
重启后进入系统:
桌面和官方提供的镜像一样的,不过终端界面有变化了,可以登录操作:
21不过终端界面有变化了.png

执行测试:
  1. OHOS # ./bin/camera_app
复制代码
22执行测试.png


7.2 使用VSCode烧录
使用该方法最好搭配共享文件夹来使用,用VSCode编辑源码、烧录固件,用Linux服务器进行代码编译。
“官方-开发Hi3516第一个应用程序示例”中有VSCode烧录的详细说明,这里不再赘述。

本文结束,感谢您的阅读!

`
20下面烧写自己修改过.png
4打开网络和共享中心.png

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友