OpenHarmony轻智能产品开发_第1页
OpenHarmony轻智能产品开发_第2页
OpenHarmony轻智能产品开发_第3页
OpenHarmony轻智能产品开发_第4页
OpenHarmony轻智能产品开发_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、OpenHarmony何廉毅轻智能产品开发专注嵌入式BSP开发曾在优思通信,上海箩箕技术,HTC,深兰科技,等多家公司从事嵌入式和BSP开发,现在好叭科技从事嵌入式和BSP开发。何廉毅适宜人群想要了解OpenHarmony想要从事OpenHarmony嵌入式开发正在从事OpenHarmony开发课程内容OpenHarmony cortex-m系列芯片开发环境搭建OpenHarmony cortex-m系列芯片图形和输入接口适配OpenHarmony轻智能产品介绍OpenHarmony cortex-m系列芯片添加工程OpenHarmony cortex-m系列芯片移植开发中的注意事项OpenH

2、armony轻智能产品介绍OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。可以运行第三方JS应用,可以应用于轻智能穿戴设备,智能门锁,智能传感器模块,智能电子玩具,智能家电等。OpenHarmony cortex-m系列芯片开发环境搭建开发工具OpenHarmony cortex-m的编译环境是Ubuntu16.04及以上64位系统版本。开发和编译工具,git git-lfs repo python3.8 pip

3、3 gn ninja hc-gen hb gcc openjdk-8。 其他工具, sudo apt-get install build-essential gcc g+ make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils mtoolsOpenHarmony cortex-m系列芯片开发环境搭建具体搭建步骤:1. 创建存放编译相关工具的目录: mkd

4、ir /tools2. 安装 git-lfs: cd /tools wget https:/packagecloud.io/install/repositories/github/git-lfs/script.deb.sh sudo chmod a+x script.deb.sh sudo os=ubuntu dist=trusty ./script.deb.sh sudo apt install git-lfs3. 安装repo: mkdir /bin curl -s /oschina/repo/raw/fork_flow/repo-py3 /bin/repo chmod a+x /bin/

5、repoOpenHarmony cortex-m系列芯片开发环境搭建4. 安装python3.8 sudo apt-get install python3.8 sudo update-alternatives -install /usr/bin/python python /usr/bin/python3.8 35. pip3安装 sudo apt-get install python3-setuptools python3-pip -y sudo pip3 install -upgrade pip6. gn安装 cd /tools mkdir gn wget /harmonyos/compi

6、ler/gn/1717/linux/gn-linux-x86-1717.tar.gz tar -zxvf gn-linux-x86-1717.tar.gz -C /tools/gnOpenHarmony cortex-m系列芯片开发环境搭建7. 安装ninja cd /tools wget /harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar tar -xvf ninja.1.9.0.tar8. 安装 hc-gen cd /tools wget /harmonyos/compiler/hc-gen/0.65/linux/hc-gen-0.6

7、5-linux.tar tar -xvf hc-gen-0.65-linux.tar9. 安装hb (python版本需要大于3.7) python -m pip install -user ohos-buildOpenHarmony cortex-m系列芯片开发环境搭建10. 安装交叉编译器: arm cortex-m用arm-gcc交叉编译链编译 cd /tools git clone/harylee/gcc-arm-none-eabi-10-2020-q4-major.git 将交叉编译器环境变量bin目录配置到.bashrc文件中或者配置 device/xx/xxxxx/liteos_

8、m/config.gni 文 件中board_toolchain_path宏为交叉编译器bin路径11. 安装jdk: sudo apt-get install -y openjdk-8-jdk sudo echo export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/bin/.bashrc12.设置环境变量: vim /.bashrc 在文件末尾添加如下一行: export PATH=/tools/gn:/tools/ninja:/tools/llvm/bin:/tools/hc-gen:/.local/bin:$PATH source /.b

9、ashrcOpenHarmony cortex-m系列芯片开发环境搭建13. 安装其他工具 sudo apt-get install build-essential gcc g+ make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils mtools14. ssh key 生成 cd ssh-keygen 把 /.ssh/下的id_rsa.pub文件中的内

10、容添加到gitee网站上去OpenHarmony cortex-m系列芯片开发环境搭建15. 编译命令 hb set # 这条命令是设置编译环境,如代码路径,编译工程 配置好代码路径和工程后,就可以 hb build f # 这条命令来编译系统了OpenHarmony cortex-m系列芯片添加工程在hb set命令中需要选择工程,我们现在来讲如何添加工程在vendor目录下创建对应的目录。这个目录下需要有 BUILD.gn config config.json README.md 这几个文件BUILD.gn需要定义一个group,名字和目录名字一样 OpenHarmony cortex-m

11、系列芯片添加工程4. config.json配置: 这个文件中需要配置产品名,开发板型号,公司名字,及其需要使能的组件。 product_name: minidisplay_demo, ohos_version: OpenHarmony 1.0, device_company: st, board: stm32l4r9i_disco, kernel_type: liteos_m, kernel_version: 3.0.0,OpenHarmony cortex-m系列芯片添加工程4. config.json配置: 这个文件中需要配置产品名,开发板型号,公司名字,及其需要使能的组件。 subsy

12、stems: subsystem: kernel, components: component: liteos_m, features: enable_ohos_kernel_liteos_m_fs = true, enable_ohos_kernel_liteos_m_lwip = false, enable_ohos_kernel_liteos_m_shell = true, enable_ohos_kernel_liteos_m_fatfs = false, enable_ohos_kernel_liteos_m_littlefs = true, enable_ohos_kernel_l

13、iteos_m_kal = true ,OpenHarmony cortex-m系列芯片添加工程4. config.json配置: 这个文件中需要配置产品名,开发板型号,公司名字,及其需要使能的组件。 subsystem: graphic, components: component: graphic_utils, features: , component: ui, features: enable_graphic_font = true , vendor_adapter_dir: /device/st/stm32l4r9i_disco, third_party_dir: /third_pa

14、rty, product_adapter_dir: , ohos_product_type:, ohos_manufacture:,OpenHarmony cortex-m系列芯片添加工程4. config.json配置: 这个文件中需要配置产品名,开发板型号,公司名字,及其需要使能的组件。 ohos_brand:, ohos_market_name:, ohos_product_series:, ohos_product_model:, ohos_software_model:, ohos_hardware_model:, ohos_hardware_profile:, ohos_seria

15、l:, ohos_bootloader_version:, ohos_secure_patch_level:, ohos_abi_list:OpenHarmony cortex-m系列芯片添加工程在device目录下创建对应的目录,并添加工程文件OpenHarmony cortex-m系列芯片图形和输入接口适配图形系统: 主要包括UI组件、布局、动画、字体、输入事件、窗口管理、渲染绘制等模块,构建基于轻量OS应用框架满足硬件资源较小的物联网设备或者构建基于标准OS的应用框架满足富设备(如平板和轻智能机等)的OpenHarmony系统应用开发。图形系统在OpenHarmony中的位置:OpenH

16、armony cortex-m系列芯片图形和输入接口适配OpenHarmony cortex-m系列芯片图形和输入接口适配在现有的项目中独立集成图形子系统,需要做一些简单的适配工作,主要分为以下几部分:引擎初始化显示设备适配输入设备适配字体初始化屏幕刷新对接OpenHarmony cortex-m系列芯片图形和输入接口适配引擎初始化: 在图形系统初始化阶段直接调用 OHOS:GraphicStartUp:Init(); 就可以进行图形引擎初始化2.显示设备适配 设置屏幕大小、对接基础图元绘制,获取图形绘制的 buffer,把图形绘制的数据刷到 屏幕上显示等。 显示层适配需要继承实现 gfx_e

17、ngine_manager.h 中的 BaseGfxEngine 类, BaseGfxEngine 类中有3类接口: 第一类:获取显存、申请缓存、释放缓存; 第二类:绘制类基础接口,例如:画线、Blit、Fill 等; 第三类:送显接口,调用该接口完成把绘制内容送显。 其中获取显存和送显接口为移植不同平台必须实现的,第二类接口, UIKit 框架有默认软件 实现,不同平台如有硬件加速,例如DMA2D,可选择性适配。OpenHarmony cortex-m系列芯片图形和输入接口适配设置屏幕大小: 在graphic_config.h文件中设置屏幕的大小 foundation/graphic/uti

18、ls/interfaces/innerkits/graphic_config.h OpenHarmony cortex-m系列芯片图形和输入接口适配显示层适配: 我们需要需要继承实现 gfx_engine_manager.h 中的 BaseGfxEngine 类class StDevice : public BaseGfxEngine public: StDevice() virtual StDevice() void FlushRegion(const Rect& rect, const uint8_t* buffer, ColorMode mode); void Flush() overr

19、ide; BufferInfo* GetFBBufferInfo() override;我们至少要实现这几个api, StDevice()和StDevice() 属于构造函数和析构函数。 FlushRegion为在buffer的一块区域上进行绘制。Flush把buffer中的内容刷到屏幕上。GetFBBufferInfo 接口为获取图形buffer的信息,包括buffer大小, 颜色模式(ARGB8888或RGB888),buffer的高度和宽度,及行的长度OpenHarmony cortex-m系列芯片图形和输入接口适配BufferInfo* StDevice:GetFBBufferInfo

20、() static BufferInfo* bufferInfo = nullptr; if (bufferInfo = nullptr) bufferInfo = new BufferInfo; bufferInfo-rect = 0, 0, 390 - 1, 390 - 1; bufferInfo-mode = RGB888; bufferInfo-color = 0 x44; bufferInfo-phyAddr = bufferInfo-virAddr = g_rectBuffer; bufferInfo-stride = 390 * 3; bufferInfo-width = 390

21、; bufferInfo-height = 390; return bufferInfo;OpenHarmony cortex-m系列芯片图形和输入接口适配如果使用的芯片有图形加速模块,则还需要实现Blit、Fill这些接口,Blit是图像混合接口,Fill为颜色填充接口。 virtual void Blit(BufferInfo& dst, const Point& dstPos, const BufferInfo& src, const Rect& subRect, const BlendOption& blendOption); virtual void Fill(BufferInfo&

22、 dst, const Rect& fillArea, const ColorType color, const OpacityType opacity);OpenHarmony cortex-m系列芯片图形和输入接口适配输入接口适配: 支持触摸输入、按键输入和旋转输入。当前所有输入设备都需要继承 InputDevice 实现 Read 接口。 触摸输入继承 PointerInputDevice 类实现 Read 接口,需要返回 x/y 坐标和按压状态;class TouchInput : public OHOS:PointerInputDevice public: TouchInput() virtual TouchInput() / implements read function bool Read(OHOS:DeviceData& data) override input_event touchMsg; osStatus_t ret = osMessageQueueGet(touch_screen_QueueId, &touchMsg, 0, 0); if (ret != osOK) data.state = 0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论