电子产业一站式赋能平台

PCB联盟网

搜索
查看: 563|回复: 0
收起左侧

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

[复制链接]

2607

主题

2607

帖子

7472

积分

高级会员

Rank: 5Rank: 5

积分
7472
发表于 2020-9-25 17:56:42 | 显示全部楼层 |阅读模式
HarmonyOS应用开发-设备虚拟化特性开发,   
1. 介绍


您将建立什么

在这个Codelab中,您将能够使用HUAWEIDevEco Device Tool完成摄像头设备的开发,达到以下效果:在使用华为手机畅连通话的过程中,可以将开发板摄像头虚拟化为本端手机摄像头,在对端手机上展示摄像头设备拍摄的画面。
您将学到什么



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

2. 您需要什么
硬件要求



  • HI3518EV300+HI3881WiFi模组的开发板、配套摄像头
  • 华为手机(EMUI     10.1)
  • PC电脑
      

软件要求



  • VS Code
  • HUAWEI DevEco Device Tool插件
  • Linux虚拟机
      

需要的知识点



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



提示:本次代码编译构建环境均为Linux。所有软硬件环境,需要使用的用户名和密码已经在CodeLab现场为大家准备好了。
3. 操作步骤


1. 访问站点https://hpm.harmonyos.com/#/home,如下图,选择摄像头类产品



1.png (118.66 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传


2. 进入页面后点击“直接下载“下载文件到Linux虚拟机映射的网络驱动器路径并解压。

2.png (102.01 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传


3. 打开vscode编辑器,在HUAWEI DevEco Device Tool插件welcome首页,选择Import Project,如下图:

3.png (71.8 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

出现下面窗口,选择上一步解压文件所在路径,点击Import:



4.png (59.23 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传


4. 打开TERMINAL窗口

5.png (3.89 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

如下图:



6.png (89.81 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传


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

7.png (96.64 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传


6. hpm install命令行执行完毕,源码工程就准备就绪了。
7. 添加代码片段打开 ./vendor/hisi/camera/dvkit_product/sample/ohos3518ev300/dvkit/dvkit_camera/dmsdp_camera_sdk.c:

将OpenCamera接口函数参照如下代码片段补充完整,即可以实现camera的虚拟化功能,代码如下:



  • 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;
      
  • }
      


复制代码
8. 安全检查

选中需要安全检查的代码文件或者目录,点击右键,选择“Code Check“进行安全检查



8.png (271.4 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

检查完毕后,点击具体的错误项,跳转到对应文件的对应代码行。


9. HarmonyOSDemo源码编译

通过Terminal > New Terminal打开终端窗口,其中

方框1表示新建终端窗口按钮;

方框2表示打开终端窗口后的界面;

方框3在终端窗口中通过SSH连接Linux机器,并输入Linux机器的账号和IP地址:ssh–p22 account@IP;

方框4 输入Linux机器的密码,成功连上Linux机器;



9.png (124.36 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

在终端窗口执行cd进入源码路径,输入编译脚本命令:python build.py ipcamera -phi3518ev300_liteos_a -b debug,见下图:



10.png (187.64 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

成功编译完成如下图:



11.png (237.82 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

编译结果位于out目录。待烧录文件:OHOS_Image.bin、rootfs.img、useRFs.img;调试可执行文件:OHOS_Image,图示如下:



12.png (69.36 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

如果out目录下不能找到对应的文件,则从./vendor/hisi/i35xx/hi35xx_init/hi3518ev300目录中查找OHOS_Image.bin、OHOS_Image。


10. HarmonyOS镜像烧录目前烧录方法主要是USB烧录,具体步骤如下:

1)打开插件,找到方框1的按钮Configure,左键点击;

2)弹出的窗口,找到方框2的按钮Burn,左键点击;

3)右侧窗口找Burning Mode选择usbport;

4)下方的Dependent Tools的依赖文件,需要选择依赖文件的存放目录HiBurnCmdLine-v5.3.30,依赖文件单独提供;



13.png (63.75 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

5)在窗口下方的Burn Files中选择待烧录文件的路径,分别是u-boot-hi3518ev300.bin(./vendor/hisi/camera/hi3518ev300/Hi3516Ev200_SDK_V6.0.0.1_B010/osdrv/pub/u-boot-hi3518ev300.bin)、OHOS_Image.bin、rootfs.img、userfs.img,烧录的起始地址如下图所示,最后点击保存按钮,USB烧录的配置完成。如下图:其中标记1对应u-boot-hi3518ev300.bin,标记2对应OHOS_Image.bin,标记3对应rootfs.img,标记4对应userfs.img:



6)点击Burn按钮,输入开发板对应的串口号:



14.png (74.8 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

烧录过程中出现“Please power off and restart the board within15 seconds“如下图所示,则复位单板:



15.png (64.68 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

显示擦除完uboot后如果还有上图提示,则再次复位单板。

7)烧录完成:



16.png (53.26 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

烧录完成后,关闭当前终端窗口。点击下图所示“串口“按钮,打开串口终端,



17.png (48.56 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传



输入如下命令:



  • 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
      


复制代码

18.png (134.2 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传




11. HarmonyOS源码单步调试



目前调试支持GDB调试和LLDB调试。如下以GDB调试为例来介绍单步调试:

通过Configure> Debug打开调试配置页,将方框4中调试类型选为“openocd-debug-gdb“;

方框5 GDB调试过程中需要依赖的软件名称、安装状态、配置路径;

方框6 调试过程中经常涉及的一些参数设置,包括:

1)ExecutableFile:选择内核文件OHOS_Image;

2)OpenOCD LoadCommands:OpenOCD加载命令,保持默认值“init“即可;

3)SetSubstitute Path:当前源码在Linux环境下进行编译,借助IDE进行烧录、调试时,设置映射路径,把Linux路径映射到Windows,格式参考提示 “setsubstitute-path {Linux路径}{映射的后的Windows路径}“;

4)DefaultBreakpoint Address:默认的断点位置,启动调试功能后,程序会自动在该位置停止;

5)RestartCommands:重启调试任务时,工具发给单板的命令,保持默认值即可;

6)MaxBreakpoints:设置断点的最大数量(主要是硬件断点,不同的硬件可能存在差异),当用户在调试过程中添加的断点数过多,可能导致调试功能崩溃;



19.png (36.15 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传



20.png (67.11 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传



21.png (110.05 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

开始调试,点击下图的按钮,



22.png (34.03 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

正式进入调试阶段:



23.png (89.1 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

调试工作界面如下图所示,主要分为调试功能区、调试侧边栏和调试控制台。



24.png (330.37 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

启动调试功能后,当代码执行到设置的断点时,程序会暂停,你可以根据调试功能区的按钮进行代码的调试。





  • Continue/Pause(“F5“),当程序执行到断点时暂停,点击此按钮程序继续执行。
  • Step     Over(“F10“),在单步调试时,直接前进到下一行(如果在函数中存在子函数时,不会进入子函数内单步执行,而是将整个子函数当作一步执行)。
  • Step     Into(“F11“),在单步调试时,遇到子函数后,进入子函数并继续单步执行。
  • Step     Out(“Shift+F11“),在单步调试执行到子函数内时,点击Step     Out会执行完子函数剩余部分,并跳出返回到上一层函数。
  • Restart(“Ctrl+Shift+F5“),重新启动调试。
  • Stop(“Shift+F5“),停止调试任务。
      
调试过程中可以使用IDE查看函数的反汇编和内存的内容,使用快捷键ctrl+shift+p,在弹出的窗口中输入 DevEcoDevice Tool:View Disassembly(Function),然后再输入函数名字,即可查看当前函数的对应的汇编。输入 DevEcoDevice Tool:View Memory,输入内存地址和要显示的内存长度,即可显示内存内容:



25.png (811.34 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传


12. 摄像头虚拟化特性验证1)请使用华为手机A,打开智慧生活APP,通过添加设备,把刚开发完成的智能设备添到智慧生活APP中。

详细步骤如下:

a) 设备启动后,会默认启动一个AP等待手机连接,此时打开手机上的智慧生活APP,下图为智慧生活APP界面:



26.png (191.44 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

b)开始添加设备,点击右上角“+“,“添加设备“,进行设备搜索,添加设备界面如下:



27.png (179.41 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

c)搜索设备,搜索设备界面如下:



28.png (97.58 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

d)搜索到的所要连接的设备后点击“连接“,此时需要输入当前WiFi信息,输入WIFI SSID和密码后,点击“下一步“。 出现下图点击手动输入12345678后,然后点击“确定“后开始连接:



29.jpg (34.26 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

e)连接后出现下面的界面,选择房间号,点击“完成“,即完成了设备添加:



30.png (113.49 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

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

具体步骤如下:

a)打开手机通话(EMUI10.0之后的版本)切换至畅连通话页或打开畅连通话APP如下图,输入被呼叫手机号,拨通畅连通话:



31.png (118.05 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

b)点击测试手机左上角虚拟化按键,进行搜索,如图搜索到“XX全景摄像头“:



32.png (259.49 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传



33.png (232.83 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

c)点击搜索到的设备,虚拟化摄像头成功:



34.jpg (46.82 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传


4. 恭喜您



您已经成功完成了Codelab并学到了:





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


注:文档和视频中所有的图片及代码截图皆为示意图,具体以HarmonyOS官网发布内容为准。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表