HarmonyOS应用开发 — 设备虚拟化特性开发

1、介绍

本篇将实现的内容
经过本活动,您将可以使用咱们的DevEco Device Tool完成摄像头设备的开发。达到如下效果:在使用华为手机畅联通话的过程当中,能够将开发板摄像头虚拟化为手机的摄像头,在手机上展现摄像头设备拍摄到的画面html

您将会学到什么python

  • 如何经过HPM包管理器获取基于HarmonyOS的具备设备虚拟化能力的摄像头解决方案工程。 使用DevEco Device
  • Tool开发环境完成代码开发、代码安全检查、编译、调试、烧录全流程。

2、您须要什么

1. 硬件要求

  1. H3518EV300+H3861WiFi模组的开发板、配套摄像头
  2. 华为手机(EMUI 10.1)
  3. PC电脑

2. 软件要求

  • VS Code。
  • DevEco Device Tool插件。

3. 须要的知识点

  • 硬件基础开发能力
  • C语言基础能力

提示:全部软硬件环境已经在CodeLab现场为你们准备好了web

3、能力接入准备(可选)

参考文档第"3 环境搭建"
上述环境在CodeLab现场已经为你们准备好。安全

4、Codelabs操做步骤(一、二、3···)

1. 访问站点https://hpm.cbg.huawei.com/#/home,以下图

在这里插入图片描述

2. 点击"直接下载"获取到文件"xxx.zip",若是没有登陆,会弹出登陆页面,输入用户名,密码。Codelab现场已经登陆。

3. 打开vscode编辑器,找到"Welcome页面->Create Project" 以下图

在插件welcome首页,选择Import Project按钮
在这里插入图片描述
出现下面的窗口,选择源码路径,点击Import:ssh

在这里插入图片描述
导入源码后的窗口,左边栏会显示源码的目录结构:编辑器

在这里插入图片描述

4. 点击

在这里插入图片描述
打开TERMINAL窗口,以下图:
在这里插入图片描述ide

5. 在TERMINAL窗口中,输入命令hpm install,以下图:

在这里插入图片描述

6. hpm install命令行执行完毕,源码工程就准备就绪了。

7. 代码片断

Camera虚拟化接口适配,此类接口用于定义DV Engine对智能设备Camera硬件的调用接口,智能设备厂商需实现对应的libdmsdpcamerahandler.so。若是智能设备厂商不具有Camera硬件或者不须要将Camera硬件虚拟化,不须要关注此接口,默认不实现此so便可。下面为实现功能前的部分接口代码,所属文件为\vendor\hisi\camera\dvkit_product\sample\ohos3518ev300\dvkit\dvkit_camera\dmsdp_camera_sdk.c:
将OpenCamera接口函数补充完整,就能够实现camera的虚拟化功能,代码以下:svg

int32_t OpenCamera(const DMSDPCameraParam *param)
{
    if (param == NULL) {
        return DMSDP_ERR_INVALID_PARAMETER;
    }

    if (!IsCameraIdValid(param->id, param->idLen)) {
        LOGD("OpenCamera camera id invalid");
        return DMSDP_ERR_INVALID_PARAMETER;
    }

    /* camera paramter convert */
    LOGD("OpenCamera sdk camera=%s,width=%d,height=%d,fps=%d,dataType=%d", param->id, param->width, param->height,
        param->fps, param->dataFormat);

    int32_t ret = VideoStartPIPE(param->dataFormat);
    return ret;
}

代码目录以下:
在这里插入图片描述
上述代码会被编进应用程序sample_dvkit中,该应用程序在板子的/bin/目录下,见下图:
在这里插入图片描述函数

8. 安全检查

选择须要安全检查的代码目录,右键:code check
在这里插入图片描述工具

点击错误项,跳转到对应文件的对应代码行数

9. HarmonyOS Demo源码Linux编译

经过"Terminal""New Terminal"打开终端窗口,其中
方框1表示新建终端窗口按钮;
方框2表示打开终端窗口后的界面;
方框3,经过SSH链接Linux机器,并输入Linux机器的帐号和IP地址:ssh –p22 root@10.30.237.175;
方框4,输入Linux机器的密码N6O%sUFoXBD!,,成功连上Linux机器;
因为编译代码须要root权限,若是使用其它非root帐号链接Linux机器,这须要在终端中输入sudo su命令切换成root帐号或者将源码文件夹设置权限为777;
接下来的操做均是在下方的终端工具中,彻底是等同Linux机器下的操做,如编译的话,则进入源码路径,输入编译脚本便可;
在这里插入图片描述
其中编译脚本命令为python build.py ipcamera -p hi3518ev300_liteos_a -b debug,见下图:
在这里插入图片描述
成功编译完成以下图:
在这里插入图片描述
编译出的结果在out目录下,有三个须要烧录的文件OHOS_Image.bin、rootfs.img、userfs.img,一个能够调试的可执行程序OHOS_Image以下图:
在这里插入图片描述
若是非首次编译,而且未改动内核代码,文件OHOS_Image.bin和OHOS_Image可能须要去以下目录下:

\vendor\hisi\hi35xx\hi35xx_init\hi3518ev300

u-boot-hi3518ev300.bin的路径为:

./vendor/hisi/camera/hi3518ev300/Hi3516EV200_SDK_V6.0.0.1_B010/osdrv/pub/u-boot-hi3518ev300.bin

10. HarmonyOS源码烧录

目前烧录方法主要是USB烧录:
USB烧录具体步骤以下:
打开插件,找到方框1的按钮Configure,左键点击;
弹出的窗口,找到方框2的按钮Burn,左键点击;
右侧窗口找Burning Mode选择usbport;
下方的Dependent Tools的依赖文件,须要选择依赖文件的存放目录HiBurnCmdLine-v5.3.30,依赖文件单独提供,搭建vscode环境时提供;
在这里插入图片描述
在窗口下方的Burn Files中选择待烧录的三文件路径,分别是u-boot-hi3518ev300.bin(单独提供,不须要编译生成)、OHOS_Image.bin(在编译OHOS源码时生成,在out目录下,上面的编译源码已经说起)、rootfs.img(在编译OHOS源码时生成,在out目录下,上面的编译源码已经说起)、userfs.img(在编译OHOS源码时生成,在out目录下,上面的编译源码已经说起),烧录的起始地址以下图所示,最后点击保存按钮,USB烧录的配置完成,其中下图1对应的u-boot-hi3518ev300.bin,2对应的是OHOS_Image.bin,3对应的是rootfs.img,4对应的是userfs.img:
在这里插入图片描述
以下图,先点击下方的Burn按钮,会弹出选择串口的打印,输入开发板对应的串口号
在这里插入图片描述
出现下图,须要插拔下电源:
在这里插入图片描述
显示擦除完uboot后若是提醒还须要从新插拔下电源,则须要插拔下电源开关,log为Please power off and restart the board within 15 seconds以下:
在这里插入图片描述
下图显示正在烧录:
在这里插入图片描述
烧录完成:
在这里插入图片描述

烧录完成后,经过下方的串口功能,设置uboot的参数

setenv bootargs 'console=ttyAMA0,115200n8 root=flash fstype=jffs2 rw rootaddr=7M rootsize=8M'
setenv bootcmd 'sf probe 0;sf read 0x40000000 0x100000 0x600000;mw 0x112c0048 1a04 1;mw 0x112c004c 1004 1;mw 0x112c0064 1004 1;mw 0x112c0060 1004 1;mw 0x112c005c 1004 1;mw 0x112c0058 1004 1;mw 0x120C0020 0430 1;go 0x40000000'
saveenv
reset

在这里插入图片描述
最后出现下面的结果,则表示系统已经正常启动:

11. HarmonyOS源码单步调试

目前调试主要支持的是GDB调试,还有LLDB调试;
GDB调试:
经过"Configure"“Debug"打开调试配置页,而后将方框4中的调试类型选"openocd-debug-gdb”;
方框5表示GDB调试过程当中须要依赖的软件名称、安装状态、配置路径;
方框6表示调试过程当中常常涉及的一些参数设置,包括:
Executable File:内核文件,选择out目录下编译生成的内核文件,如liteos;
Symbol Files:应用程序符号表文件,请手动配置程序符号表文件所在路径;
OpenOCD Load Commands:OpenOCD加载命令,保持默认值"init"便可;
Set Substitute Path:当源码在Linux环境下进行编译,借助IDE进行烧录、调试时,请设置
映射路径,把Linux路径映射到Windows,格式参考提示
“set substitute-path {Linux路径} {映射的后的Windows路径}”;
Default Breakpoint Address:默认的断点位置,启动调试功能后,程序会自动在该位置中止;
Restart Commands:重启调试任务时,工具发给单板的命令,保持默认值便可;
Max Breakpoints:设置断点的最大数量(主要是硬件断点,不一样的硬件可能存在差别),当用

户在调试过程当中添加的断点数过多,可能致使调试功能崩溃;
在这里插入图片描述在这里插入图片描述

12. HUAWEI DevEco Device Tool终端工具

IDE还集成了一些经常使用的工具,知足开发者不一样的需求:
串口工具
当开发板连接PC时,经过点击Visual Studio Code最下面的状态栏中的"Serial",经过配置端口号、波特率、数据位、中止位串口参数,能够打开一个串口工具。经过串口工具能够执行一些常见的操做,包括:设置u-boot的环境参数、进入开发板中烧录的HarmonyOS系统、调试等。

5、恭喜你

到这里你已经完成了本次开发过程。您能够经过如下方式检验开发过程是否正确

  • 请使用华为手机A,打开智慧生活APP,经过添加设备,把刚开发完成的智能设备添加到智慧生活APP中。

详细步骤以下:

a) 设备启动后,会默认启动一个AP等待手机链接,此时打开手机上的智慧生活APP,下图为智慧生活APP界面:
在这里插入图片描述
b)开始添加设备,点击右上角"+",“添加设备”,进行设备搜索,添加设备界面以下:
在这里插入图片描述
c)搜索设备,搜索设备界面以下:在这里插入图片描述
d)搜索到的所要链接的设备后点击"链接",此时须要输入当前WiFi信息,输入WIFI SSID和密码后,点击"下一步"。 点击"肯定"后开始链接。
e)链接后出现下面的界面,选择房间号,点击"完成",即完成了设备添加:
在这里插入图片描述

  • 用另一台手机的畅联通话APP拨打A手机。接通后,在A手机的屏幕左上角点击更多设备,能够发现开发完的智能设备,点击该设备,选择把摄像头虚拟化成A手机的外设,B手机视频通话能看到的界面切换成了智能设备拍摄到的画面。

具体步骤以下:

a)打开手机通话(EMUI11.0以前的版本)切换至畅联通话页或打开畅联通话APP(EMUI11.0及以后版本)以下图,输入被呼叫手机ID号,拨通畅联通话:
在这里插入图片描述
b)点击测试手机左上角虚拟化按键,进行搜索,如图搜索到"XX全景摄像头":
在这里插入图片描述
c)点击搜索到的设备,虚拟化摄像头成功:
在这里插入图片描述
【若是您想学习HarmonyOS 应用开发基础教程 请猛戳】