嵌入式系统开发 -基于分布式系统OpenHarmony 课件 01-OpenHarmony的系统构成_第1页
嵌入式系统开发 -基于分布式系统OpenHarmony 课件 01-OpenHarmony的系统构成_第2页
嵌入式系统开发 -基于分布式系统OpenHarmony 课件 01-OpenHarmony的系统构成_第3页
嵌入式系统开发 -基于分布式系统OpenHarmony 课件 01-OpenHarmony的系统构成_第4页
嵌入式系统开发 -基于分布式系统OpenHarmony 课件 01-OpenHarmony的系统构成_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

基于OpenHarmony的嵌入式开发

第一章OpenHarmony的系统构成大连理工大学-朱明安全边距1.1OpenHarmony系统特点[1.1.1]什么是OpenHarmony系统

由开放原子开源基金会孵化及运营的一个开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式搭建智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。基于OpenHarmony的嵌入式开发2开放原子开源基金会是致力于推动全球开源事业发展的非营利机构,于2020年6月在北京成立,由阿里巴巴、百度、华为、浪潮、360、腾讯、招商银行等多家龙头科技企业联合发起。2020年9月,开放原子开源基金会接受了华为公司捐赠的智能终端操作系统基础能力的相关代码,随后进行了开源,命名为OpenAtomOpenHarmony(一般简称为OpenHarmony)。随后,基金会成立了OpenHarmony项目群工作委员会,签署了OpenHarmony项目群管理制度。1.1OpenHarmony系统特点[1.1.1]

OpenHarmony与HarmonyOS

OpenHarmony是以华为捐赠的智能终端操作系统为基础的,目前其中也融合了其他参与者的贡献,是开源项目。适用于嵌入式和物联网等智能设备。

HarmonyOS包含了OpenHarmony所不具备的诸多商用功能,如多端设备协同认证等,而ASOP的实现也使得HarmonyOS手机和平板等设备能够运行Android应用程序,是商用系统。适用于手机、平板电脑和智能汽车等移动终端。基于OpenHarmony的嵌入式开发3鸿蒙软件体系HarmonyOSOpenHarmonyASOP……OpenHarmony第三方库其他HarmonyOS=OpenHarmony+ASOP+…安全边距1.1OpenHarmony系统特点[1.1.2]OpenHarmony的技术特点

可装卸性、实时性、稳定性-嵌入式操作系统必备的特性特性1/3:统一系统,弹性部署满足不同类型设备的需求:血压计、体重计、游戏机、音视频播放机、打印机和扫地机器人等,不同设备使用同一语言无缝沟通。满足不同性能设备的需求:不同类型的处理器、不同级别的存储能力、不同功能的外部设备和器件。基于OpenHarmony的嵌入式开发4智能穿戴设备大小家电设备机器人设备健康医疗设备安全边距1.1OpenHarmony系统特点[1.1.2]OpenHarmony的技术特点特性2/3:一次开发,多端部署

OpenHarmony则基于分布式技术,在不同的硬件设备之间随意调用、互助共享,写一次逻辑代码,就可以部署在多种终端上。基于OpenHarmony的嵌入式开发5解决多种终端设备开发过程中,不同设备间的屏幕尺寸、色彩风格等方面的适配问题安全边距1.1OpenHarmony系统特点[1.1.2]OpenHarmony的技术特点特性3/3:硬件互助,资源共享

-(1/4)分布式软总线基于OpenHarmony的嵌入式开发6传统意义的总线:一种内部结构,它是CPU、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。分布式软总线:为设备间的无缝互联提供了统一的分布式通信能力,能够快速发现并连接设备,高效地传输任务和数据。由WLAN服务能力、蓝牙服务能力、软总线和进程间通信RPC共同组成,提供相关的功能。安全边距1.1OpenHarmony系统特点[1.1.2]OpenHarmony的技术特点特性3/3:硬件互助,资源共享

-(1/4)分布式软总线基于OpenHarmony的嵌入式开发7WLAN服务为用户提供WLAN基础功能、P2P(Peer-to-Peer)功能和WLAN消息通知的相应服务,应用可以通过WLAN和其他设备互联互通。蓝牙服务为应用提供传统蓝牙以及低功耗蓝牙相关功能和服务。软总线为应用和系统提供近场设备间分布式通信的能力,提供不区分通信方式的设备发现、连接、组网和传输功能。进程间通信RPC(RemoteProcedureCall)提供了不区分设备内或设备间的进程间通信能力。安全边距1.1OpenHarmony系统特点[1.1.2]OpenHarmony的技术特点特性3/3:硬件互助,资源共享

-(2/4)分布式数据管理基于OpenHarmony的嵌入式开发8分布式数据管理实现了应用程序数据和用户数据在多终端设备上的分布式管理功能。用户的数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时能够实现数据的无缝衔接。持久化存储引擎支持数据跨设备相互同步安全边距1.1OpenHarmony系统特点[1.1.2]OpenHarmony的技术特点特性3/3:硬件互助,资源共享

-(3/4)分布式任务调度基于OpenHarmony的嵌入式开发9智慧屏设备智能穿戴设备分布式任务调度基于分布式软总线、分布式数据管理的分布式Profile等技术特性,构建统一的发现、同步、注册和调用的分布式服务管理机制,支持对跨设备的应用进行远程启动、远程调用、绑定和解绑、以及迁移等操作。

安全边距①智慧屏上在喜欢的节目菜单中,点击“开播后提醒我”按钮;②在节目开播时,智慧屏会拉起运动手表上的节目开播提醒FA;③通过运动手表上的该FA,用户可以快速获知喜欢的节目已经开始;④实现上述协同互助的作用。1.1OpenHarmony系统特点[1.1.2]OpenHarmony的技术特点特性3/3:硬件互助,资源共享

-(4/4)设备虚拟化功能基于OpenHarmony的嵌入式开发10安全边距将多台设备的各种硬件资源,如屏幕、相机、扩音器、键盘、传感器及存储器等予以抽象,形成“超级虚拟终端”内的统一硬件资源池,并支持硬件资源的按需分配和重新组合,真正实现了硬件资源的全局调用。硬件资源池化框架将各类设备的硬件资源进行抽象,为北向应用提供各种分布式服务,比如分布式相机、分布式屏幕、分布式音频和分布式输入等,同时提供统一的设备管理和分布式硬件框架,对硬件资源进行管理。1.1OpenHarmony系统特点[1.1.3]OpenHarmony的设备分类嵌入式系统分类方法之一:按照硬件平台的性能进行分类基于OpenHarmony的嵌入式开发11安全边距Mini

System/轻量系统L0类型:LiteOS-M内核CPU:Cortex-M/RISC-V32MEM:128KB~1MB功能:轻量级网络协议、轻量级的图形框架、IoT总线读写部件等;场景:智能家居领域的连接类模组、传感器设备和穿戴类设备等;硬件:Hi3861、TLSR9x、GR5515、BES2600、RK2206和ESP32等。Small

System/小型系统L1类型:LiteOS-A内核CPU:Cortex-AMEM:1MB~128MB功能:较高的安全能力、标准的图形框架、视频编解码的多媒体能力等;场景:智能摄像机、电子猫眼、路由器以及智慧出行领域的行车记录仪等;硬件:Hi3516DV300和STM32MP157A等。StandardSystem/标准系统L2类型:Linux内核CPU:Cortex-AMEM:128MB~功能:增强的交互能力、3DGPU、丰富的图形能力、完整的应用框架等;场景:高端的冰箱控制系统、汽车娱乐系统、智能家居控制系统等;硬件:RK3568、RK3399、RK3566、Hi3751V351、i.MX8M和T507等。不同类型系统的硬件不同,和内核软件功能存在差异,课程将分别介绍1.1OpenHarmony系统特点[1.1.4]OpenHarmony的技术架构系统的设计原则:按照功能进行分层设计基于OpenHarmony的嵌入式开发12安全边距1.2内核层[1.2.1]轻量系统的内核子系统内核类型:

LiteOS-M特性:MCU

AIoT领域设备

MPU、<1MB基于OpenHarmony的嵌入式开发13安全边距硬件相关层,提供HAL接口(HardwareAbstractionLayer)硬件无关层,提供KAL接口(KernelAbstractionLayer)基础内核模块提供基础能力,可选组建提供网络个文件系统等组件能力,以及调测工具。1.2内核层[1.2.2]小型系统的内核子系统内核类型:

LiteOS-A特性:CPU

AIoT领域设备

MMU、<128MB基于OpenHarmony的嵌入式开发14安全边距基础内核包括内核的基础机制,如调度和内存管理等;扩展组件包括文件系统、网络协议和安全等扩展功能;HDF框架是外设驱动的统一标准框架;兼容POSIX标准的应用可以方便移植到OpenHarmony。1.2内核层[1.2.2]小型系统的内核子系统基于OpenHarmony的嵌入式开发15安全边距①内核机制功能丰富:支持虚拟内存、系统调用、多核、轻量级IPC(Inter-ProcessCommunication,进程间通信)、DAC(DiscretionaryAccessControl,自主访问控制)等机制,支持多进程,应用之间内存隔离、相互不影响,提升系统的健壮性;②引入统一驱动框架HDF(HardwareDriverFoundation):统一驱动标准,提供了统一的接入方式,驱动更加容易移植,力求做到一次开发,多系统部署;③支持1200+标准POSIX接口:更全面的支持POSIX标准接口,使得应用软件易于开发和移植,为应用开发者提供友好的开发体验;④内核和硬件高解耦:内核与硬件高度解耦,新增单板,内核代码不用修改。1.2内核层基于OpenHarmony的嵌入式开发16安全边距[1.2.3]标准系统的内核内核类型:Linux特性:CPU、高性能应用、MMU、>128MBLinux内核版本分为稳定版本以及长期支持LTS版本。

稳定版本大约每三个月发布一个新版本,包含最新硬件支持、性能改进以及bug修复等;长期支持版本LTS对该版本内核的长期维护,一般维护周期达6年。OpenHarmony中的Linux内核从LTS版本中选择合适的版本作为内核的基础版本。完成对Linux-4.19及Linux-5.10的适配及支持(~2023年5月)。1.3驱动程序层基于OpenHarmony的嵌入式开发17安全边距[1.3]驱动程序框架HDF(HardwareDriverFoundation)HDI硬件设备统一接口:为系统提供统一、稳定的硬件设备操作接口。HDF驱动框架:提供统一的硬件资源管理等模块。统一的配置界面:硬件资源的抽象描述,屏蔽硬件差异,提升开发迁移效率。操作系统抽象层OSAL:提供统一封装的操作相关接口,屏蔽系统操作差异。平台驱动:为外设驱动提供Board硬件操作统一接口和适配接口抽象。外设驱动模型:提供标准化的器件驱动,提供驱动模型抽象。1.3驱动程序层基于OpenHarmony的嵌入式开发18安全边距[1.3]驱动程序框架HDF(HardwareDriverFoundation)(1)弹性化的框架能力:在传统的驱动框架能力的基础上,OpenHarmony驱动子系统通过构建弹性化的框架能力,可支持在百KB级别到百兆级容量的终端产品形态部署;(2)规范化的驱动接口:定义了常见驱动接口,为驱动开发者和使用者提供丰富、稳定接口,并和未来开放的面向手机、平板、智慧屏等设备驱动接口保持API兼容性;(3)组件化的驱动模型:支持组件化的驱动模型,为开发者提供更精细化的驱动管理,开发者可以对驱动进行组件化拆分,使得驱动开发者可以更多关注驱动与硬件交互部分。同时系统也预置了部分模板化的驱动模型组件,如网络设备模型等;(4)归一化的配置界面:提供统一的配置界面,构建跨平台的配置转换和生成工具,实现跨平台的无缝切换。1.4系统服务层基于OpenHarmony的嵌入式开发19安全边距[1.4]系统服务层(1)系统基本能力子系统集:为分布式应用在多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全和AI等子系统组成。(2)基础软件服务子系统集:提供公共的、通用的软件服务,由事件通知、电话、多媒体和DFX(DesignForX)等子系统组成。(3)增强软件服务子系统集:提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务和IoT专有业务等子系统组成。(4)硬件服务子系统集:提供硬件服务,由位置服务、用户IAM、穿戴专有硬件服务和IoT专有硬件服务等子系统组成。1.5框架层基于OpenHarmony的嵌入式开发20安全边距[1.5]框架层

为应用开发提供C/C++/JS等多语言的用户程序框架和Ability框架、适用于JS语言的ArkUI框架,以及各种软硬件服务对外开放的多语言框架API。(1)Ability框架实现了对Ability运行及生命周期的统一调度和管理,使应用进程能够支撑多个Ability,Ability具有跨应用进程间和同一进程内调用的能力。Ability是系统调度应用的最小单元,是能够完成一个独立功能的组件,一个应用可以包含一个或多个Ability;(2)JSArkUI框架采用类HTML和CSSWeb编程语言作为页面布局和页面样式的开发语言,页面业务逻辑则支持ECMAScript规范的JavaScript语言。框架提供的类Web编程范式,可以让开发者避免编写UI状态切换的代码,视图配置信息更加直观。1.6OpenHarmony

Shell基于OpenHarmony的嵌入式开发21安全边距[1.6.1]

OpenHarmonyShell的基本功能和特点

Shell的基本功能:

DOS

Shell:DOS

中带有基本图形用户界面(GUI)的文件管理程序;

PowerShell:PowerShell是Windows系统中的新式命令Shell,包括了其他常用Shell功能,PowerShell还能接受并返回.NET对象;

Linux

Shell:用户与Linux的交互桥梁。Shell既是命令语言,又是程序设计语言。Shell是一种应用程序,指这个应用程序提供了用户访问操作系统内核的服务;程序设计语言指可以构建脚本执行编程功能。

Shell是系统的用户界面,提供用户与内核进行交互操作的接口,接收用户输入的命令并将其送入内核执行,实现操作系统的文件管理、进程管理和内存管理等服务,并输出内核信息。常规意义上,Shell是基于纯文本(命令行模式)进行交互的。1.6OpenHarmony

Shell基于OpenHarmony的嵌入式开发22安全边距[1.6.1]

OpenHarmonyShell的基本功能和特点

OpenHarmony

Shell的特点:

支持使用exec命令来运行可执行文件;

默认为英文输入,输入的中文字符需要通过回退三次才能删除;

支持Shell命令、文件名及目录名的Tab键联想补全;

Shell端工作目录与系统工作目录是分开的,即通过Shell端cd和pwd等命令是对Shell端工作目录进行操作,通过chdir和getcwd等命令是对系统工作目录进行操作,两个工作目录相互之间没有联系;

在使用网络Shell指令前,需要先调用tcpip_init函数并完成telnet连接;

Shell功能不符合POSIX标准,仅供调试使用;

不建议使用Shell命令对/dev目录下的设备文件进行操作。1.6OpenHarmony

Shell基于OpenHarmony的嵌入式开发23安全边距[1.6.2]

OpenHarmonyShell命令类别1:系统命令

cpup、date、dmesg、exec、free、help、hwi、kill、log、memcheck、reset、sem、stack、su、swtmr、systeminfo、task、uname、watch、reboot、top、……类别2:文件命令

cat、cd、chgrp、chmod、chown、cp、format、ls、lsfd、mkdir、mount、pwd、rm、statfs、sync、touch、writeproc、umount、du、mv、……类别3:网络命令

arp、dhclient、ifconfig、netstat、ntpdate、ping、ping6、telnet、tftp、……与LinuxShell命令大部分名字相同,但OpenHarmony有裁剪和调整,参阅教材等资料

1.7系统编译与构建基于OpenHarmony的嵌入式开发24安全边距[1.7.1]

OpenHarmony开发环境配置方式1:安装包方式通过命令行模式下载、安装和编译,通过IDE烧录,有Docker环境。方式2:IDE方式通过IDE进行开发工具的安装及系统的编译、烧录和运行控制等操作。

IDE:DevEcoDeviceTool

支持代码查找、代码高亮、代码自动补齐、代码输入提示、代码检查等;

支持丰富的芯片和开发板,包括Hi3861V100和BearPi-HMNano等;

自动检测各芯片/开发板依赖的工具链是否完备,一键下载和自动安装;

支持多人共享开发模式,多人共享远程开发,单台服务器的编译烧录;

源码级调试,支持查看内存、变量、调用栈、寄存器和反汇编等功能。1.7系统编译与构建基于OpenHarmony的嵌入式开发25安全边距[1.7.1]

OpenHarmony开发环境配置

IDE方式:(1/4)DevEcoDeviceTool安装提供编辑、开发和调试的图形环境Windows1064,与Ubuntu系统上的IDE的版本号必须相同。①下载并解压缩DevEcoDeviceTool软件包;②卸载早期安装的其他版本的软件;③选择自动安装VSCode软件();④下载安装相关Python和其他插件。提供OpenHarmony系统的编译环境Ubuntu18.04~21.10,推荐20.04,建议内存不小于16GB,用户名不能包含中文字符,与Windows系统上IDE版本号相同。①设置Ubuntu的默认Shell为bash;②下载DevEcoDeviceTool的Linux版本安装包并安装;③安装过程中可能需要更新系统的Python版本。DevEco

Device

Tool支持C/C++语言,以插件的形式部署在Windows和Ubunut的VisualStudioCode(简称VSCode)上。1.7系统编译与构建基于OpenHarmony的嵌入式开发26安全边距[1.7.1]

OpenHarmony开发环境配置

IDE方式:(2/4)远程访问Ubuntu系统Ubuntu端:主要的系统编译环境,被Windows连接控制①安装并启动SSH服务(openssh-server);②查看Ubuntu系统的IP地址(ifconfig)。Windows端:连接Ubuntu端、控制编译过程①启动VSCode,点击插件(Extensions)按钮;②在插件市场搜索并安装Remote-SSH;③在RemoteExplorer中增加配置。输入Ubuntu的IP地址和用户名,其他使用默认项即可;④首次连接需要等待VSCode在Ubuntu系统的.vscode-server文件夹下自动安装插件;

⑤使用时,点击对应地址输入密码即可连接;⑥还可以在VSCode中使用SSH公钥替代密码。202304起,Hi3861开发仅需Windows环境1.7系统编译与构建基于OpenHarmony的嵌入式开发27安全边距[1.7.1]

OpenHarmony开发环境配置

IDE方式:(3/4)获取OpenHarmony源码

从码云Gitee网站获取OpenHarmony系统的源码,相关准备工作包括注册Gitee账号、注册Gitee的SSH公钥、安装git客户端和git-lfs、配置用户信息和安装Gitee的repo工具等;本书使用的版本为OpenHarmony3.1.1Release;

还可以DevEcoMarketplace、华为云等或者GitHub镜像仓库获取。

IDE方式:(4/4)安装编译工具

OpenHarmony的编译工具主要是命令行工具hb;

hb的主要安装步骤包括安装、设置并更新环境变量和测试过程。获取源码和安装编译工具的详细步骤请参阅教材完成。1.7系统编译与构建基于OpenHarmony的嵌入式开发28安全边距[1.7.1]

OpenHarmony开发环境配置

OpenHarmony源码存储结构存储位置内容功能applications应用程序样例,包括camera等base基础软件服务子系统集&硬件服务子系统集build组件化编译、构建和配置脚本docs说明文档domains增强软件服务子系统集drivers驱动子系统foundation系统基础能力子系统集存储位置内容功能kernel内核子系统prebuilts编译器及工具链子系统test测试子系统third_party开源第三方组件utils常用的工具集vendor厂商提供的软件build.py编译脚本文件1.7系统编译与构建基于OpenHarmony的嵌入式开发29安全边距[1.7.2]系统编译构建过程

OpenHarmony编译构建系统编译子系统的构建:主要是基于GN和Ninja搭建;

Ninja是一个注重速度的小型编译系统,其输入文件是由高级别的编译系统生成而来的,使编译尽可能快速完成。Ninja的默认文件名是build.ninja,其它文件也以.ninja为后缀,编译时使用ninja命令。

GN(GenerateNinja)是一种元构建系统,是ninja的前端,用于生成Ninja构建文件,目前支持Chromium,Fuchsia和OpenHarmony系统。支持功能:①以部件为最小粒度拼装产品和独立编译;②支持轻量、小型、标准三种系统构建,支持SDK开发套件的构建;③支持芯片解决方案厂商的灵活定制和独立编译。

OpenHarmony3.1仍有部分组件需make构建,因此还需要Python、CMake、Makefile和Menuconfig,以及Bash等软件和工具支撑。1.7系统编译与构建基于OpenHarmony的嵌入式开发30安全边距[1.7.2]系统编译构建过程

OpenHarmony系统的包含关系产品A产品B子系统1部件(1)部件(2)子系统2部件(3)部件(7)子系统3部件(4)部件(5)部件(6)模块①模块②模块③模块④模块⑤模块⑥模块⑦模块⑧模块⑨①平台:开发板和内核的组合,不同的平台支持的子系统和部件不同;②产品:产品是包含一系列部件的集合,编译后产品的镜像包可以运行在不同的开发板上;③子系统:系统功能按照“系统>子系统>部件”逐级展开,子系统是一个逻辑概念,具体由对应的部件构成;④部件:对子系统的进一步拆分,包括可复用的软件单元。能独立构建,以二进制方式集成,具备独立验证能力的二进制单元。⑤模块:模块就是编译子系统的一个编译目标,部件也可以是编译目标。1.7系统编译与构建基于OpenHarmony的嵌入式开发31安全边距[1.7.2]系统编译构建过程

OpenHarmony系统的包含关系产品B子系统1部件(1)部件(2)子系统3部件(4)部件(5)部件(6)模块①模块②模块③模块④模块⑤模块⑥模块⑦模块⑧模块⑨子系统是某个路径下所有部件的集合,一个部件只能属于一个子系统。部件是模块的集合,一个模块只能归属于一个部件。模块就是编译子系统的一个编译目标,部件也可以是编译目标。产品A子系统2部件(3)部件(6)部件可以在不同的产品中实现有差异,通过变体或者特性feature实现。特性,部件用于体现不同产品之间的差异。编译构建能编译什么?不能编译什么?1.7系统编译与构建基于OpenHarmony的嵌入式开发32安全边距[1.7.2]系统编译构建过程

OpenHarmony的编译构建流程否是开始选择产品类型是开发板目录编译芯片解决方案选择编译类型编译产品编译部件编译模块结束hb

set用于设置要编译的产品hb

build①读取编译配置:根据产品选择的开发板,读取开发板config.gni文件内容;②调用GN:调用gngen,读取产品配置生成产品解决方案out目录和Ninja文件;③调用Ninja:调用ninja-Cout/board/product编译;④系统镜像打包:将部件编译产物打包,设置文件属性和权限,制作文件系统镜像。1.7系统编译与构建基于OpenHarmony的嵌入式开发33安全边距[1.7.2]系统编译构建过程

OpenHarmony的编译配置规则:(1/7)产品配置规则

OpenHarmony的源码存储结构产品编译脚本产品配置文件文件系统打包的配置产品解决方案的OS适配HDF层的适配配置/驱动init进程启动配置系统服务启动配置产品解决方案厂商:华为海思产品名称1.7系统编译与构建基于OpenHarmony的嵌入式开发34安全边距[1.7.2]系统编译构建过程

OpenHarmony的编译配置规则:(1/7)产品配置规则①vendor/company/product/init_configs/etc/Linux系统必备。包含rcS脚本,Sxxx脚本和fstab脚本。Sxxx脚本中的内容与开发板和产品需要有关,主要包括设备节点的创建、创建目录、扫描设备节点、修改文件权限等。相关文件在产品编译的BUILD.gn中按需拷贝到产品out目录中,最终打包到rootfs镜像中。②vendor/company/product/init_configs/hals/解决方案厂商对OS的适配,需要实现的接口需要查阅各个部件的readme说明文档。③vendor/company/product/init_configs/init.cfginit进程启动服务的配置文件,仅支持start(启动某个服务)、mkdir(创建文件夹)、chmod(修改指定路径/文件的权限)、chown(修改指定路径/文件的属组)和mount(挂载命令)。1.7系统编译与构建基于OpenHarmony的嵌入式开发35安全边距[1.7.2]系统编译构建过程

OpenHarmony的编译配置规则:(1/7)产品配置规则

④vendor/company/product/config.json:编译构建的主入口产品名称config.json的版本号,固定"3.0”系统类型,mini/small/standardOH系统版本芯片厂商开发板名称内核类型内核版本号子系统子系统部件1.7系统编译与构建基于OpenHarmony的嵌入式开发36安全边距[1.7.2]系统编译构建过程

OpenHarmony的编译配置规则:(1/7)产品配置规则⑤vendor/company/product/fs.yml用于配置文件系统镜像制作过程。将编译产物打包成文件系统镜像,比如用户态根文件系统rootfs.img和可读写的userfs.img文件。fs.yml文件是一个可选文件,无文件系统的设备可以不配置该文件。文件由多个列表组成,每个列表对应一个文件系统。1.7系统编译与构建基于OpenHarmony的嵌入式开发37安全边距[1.7.2]系统编译构建过程

OpenHarmony的编译配置规则:(1/7)产品配置规则⑥vendor/company/product/BUILD.gn产品编译的入口,用于编译解决方案厂商源码和拷贝启动配置文件。编译目标产品的目录下的BUILD.gn会被使用。与产品名称保持一致复制init配置其他■新增产品并编译的主要步骤①创建产品目录,按照产品配置规则创建产品目录;②拼装产品,在产品文件夹下创建并编辑config.json文件;③适配OS接口,在产品目录下创建hals目录,放入解决方案对OS适配的源码和编译脚本;④配置系统服务,在产品目录下创建init_configs目录,在其中创建并编辑init.cfg文件;⑤Linux内核,还需在init_configs目录下创建etc目录、创建并编辑rcS文件、Sxxx等;⑥配置文件系统镜像,在产品目录下创建fs.yml文件并设定文件系统规则;⑦按需配置产品Patch,在产品目录下创建patch.yml文件;⑧编写编译脚本,在产品目录下创建BUILD.gn文件并按需设定内容;⑨编译产品,主要主要有命令行和hb两种方式方式1.7系统编译与构建基于OpenHarmony的嵌入式开发38安全边距[1.7.2]系统编译构建过程

OpenHarmony的编译配置规则:(2/7)子系统配置规则子系统的配置规则主要是在build/subsystem_config.json文件中指定的子系统的路径和子系统名称路径子系统名1.7系统编译与构建基于OpenHarmony的嵌入式开发39安全边距[1.7.2]系统编译构建过程

OpenHarmony的编译配置规则:(3/7)部件配置规则部件的bundle.json放在部件源码的根目录下。以泛sensor子系统的sensor服务部件为例,部件属性定义描述文件字段说明如图所示。部件配置中需要配置部件的名称、源码路径、功能简介、是否必选、编译目标、RAM、ROM、编译输出、已适配的内核、可配置的特性和依赖等属性定义。新增部件时必须在对应子系统json文件中添加部件定义,产品所配置的部件必须在某个子系统中被定义过。①添加部件;②拼装产品将部件添加到产品配置中;③编译,命令行方式活着hb方式;④编译输出。1.7系统编译与构建基于OpenHarmony的嵌入式开发40安全边距[1.7.2]系统编译构建过程

OpenHarmony的编译配置规则:(4/7)模块配置规则编译子系统通过模块、部件和产品三层配置实现目标系统思维编译和打包。模块是编译子系统的一个目标,包括动态库、静态库、配置文件和预编译模块等,模块必须要确定属于特定的部件,一个模块只能归属于一个部件。OpenHarmony使用定制化的Gn模板来配置模块规则。产品A子系统2部件(3)部件(7)模块⑩模块⑪■常用的四类模块配置规则①C/C++模板,包括ohos_shared_library、ohos_static_library、ohos_executable和ohos_source_set,代码在源码仓/build/templates/cxx/cxx.gni文件中;②预编译模板,包括ohos_prebuilt_executable、ohos_prebuilt_shared_library和ohos_prebuilt_static_library,代码在prebuilt.gni文件中;③Hap模板,包括ohos_hap、ohos_app_scope、ohos_js_assets和ohos_resources;④其他常用模板,包括配置文件模板ohos_prebuild_etc和sa配置模板ohos_sa_profile等。1.7系统编译与构建基于OpenHarmony的嵌入式开发41安全边距[1.7.2]系统编译构建过程

OpenHarmony的编译配置规则:(4/7)模块配置规则否是开始新建子系统并添加json文件添加部件bundle.json有芯片解决方案有子系统有部件新建模块BUILD.gn结束添加芯片解决方案修改产品配置是否修改产品配置否是新建并编译模块:编译子系统通过模块、部件和产品三层配置实现目标系统思维编译和打包。1.7系统编译与构建基于OpenHarmony的嵌入式开发42安全边距[1.7.2]系统编译构建过程

OpenHarmony的编译配置规则:(5/7)芯片解决方案配置规则芯片解决方案是指基于某款开发板的完整解决方案,包含驱动、设备侧接口适配、开发板sdk等。kernel_type:开发板使用的内核类型;kernel_version:开发使用的内核版本;board_cpu:开发板CPU类型;board_arch:开发芯片arch;board_toolchain:开发板编译工具链名称;board_toolchain_prefix:编译工具链前缀;board_toolchain_type:编译工具链类型;board_cflags:开发板的c文件编译选项;board_cxx_flags:开发板的cpp文件编译选项;board_ld_flags:开发板配置的链接选项。设备文件路径开发板路径芯片解决

温馨提示

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

评论

0/150

提交评论