操作系统设计原理 课件第9章 OpenHarmony系统_第1页
操作系统设计原理 课件第9章 OpenHarmony系统_第2页
操作系统设计原理 课件第9章 OpenHarmony系统_第3页
操作系统设计原理 课件第9章 OpenHarmony系统_第4页
操作系统设计原理 课件第9章 OpenHarmony系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

操作系统设计原理第9章OpenHarmony系统

开源鸿蒙主讲人:2025.7本章目标掌握内容OpenHarmony技术特性与多内核架构系统类型划分与子系统组件多核内核机制理解源码开发环境搭建与实践实践任务Windows下搭建OpenHarmony开发环境编译轻量与小型系统内核镜像基于轻量系统编译线程管理示例OpenHarmony概述1.OpenHarmony架构2.OpenHarmony开发实践3.课程总结4.CONTENTS目录PartOpenHarmony概述01技术愿景通过硬件互助资源共享,实现多设备的无缝协同,让开发者能够一次开发多端部署,降低跨设备开发成本。核心定位作为分布式操作系统框架,支持手机、平板、穿戴设备、车机等设备的统一融合,打造无缝连接的智能生态。项目背景OpenHarmony由开放原子开源基金会孵化,旨在面向全场景、全连接、全智能时代,打破设备之间的界限,实现万物互联。项目背景与核心定位技术特性资源互助

硬件共享设备虚拟化整合来自不同设备的资源分布式任务调度管理跨设备的分布式服务分布式数据管理实现应用程序数据的分布式管理提供统一的分布式通信分布式软总线一次开发

多端部署统一OS弹性部署兼容性调度优化用户呈现效果开发过程中预览终端终端预览指令集全支持多指令集CPURAM灵活适配组件化设计适应不同硬件弹性部署系统类型Cortex-A/128MiB+RAMCortex-A/1MiB+RAM能力MCU/128KiB+RAM高端冰箱显示屏/智能商显/平板电脑硬件需求更高安全性、标准图形框架/视频编解码能力标准系统standardsystem支持增强交互/3DGPU/硬件合成/丰富控件小型系统smallsystem应用轻量系统minisystem智能家居连接模组/传感器/穿戴设备特征IPCamera/电子猫眼/路由器/行车记录仪支持轻量级网络协议/图形框架/丰富IOT部件多内核LiteOS-MMPU隔离/HDF驱动框架适用于百KB级内存设备MMU隔离/POSIX接口多进程适用于MB级内存设备LiteOS-ALinux5.10成熟生态/完整应用框架适用于百MB+内存设备LiteOS-M内核硬件相关层按芯片架构与编译工具链分类提供统一的HAL接口提升硬件适配能力,满足多样AIoT设备需求硬件无关层基础内核模块:核心内核功能(任务管理、通信机制、内存管理等)可选扩展组件:网络、文件系统等调测工具组件:错误处理、性能调测支持KAL(内核抽象层)提供统一内核抽象接口支持CMSIS和POSIX两套标准接口解耦应用与硬件,方便代码复用与移植LiteOS-A内核丰富的内核机制虚拟内存、多核支持、系统调用轻量级IPC(LiteIPC)自主访问控制(DAC)多进程支持,内存隔离统一驱动框架HDF提供统一驱动开发标准支持一次开发,多系统部署全面的POSIX标准接口支持提升应用开发和移植体验内核与硬件高度解耦新增单板支持,无需修改内核代码LiteOS-A内核进程管理:支持进程和线程,4GiB独立地址空间多核调度:任务亲核、绑核运行实时调度:优先级抢占和时间片轮转虚拟内存:内核空间与用户空间映射分离内核通信时间管理动态链接:ELF加载、地址随机化进程通信:LiteIPC及多种标准机制系统调用权限管理:进程粒度的访问控制文件系统:支持多种文件系统和POSIX接口网络协议:基于lwIP,支持丰富协议和APIHDF框架:统一驱动接口,实现一次开发多系统部署基于MuslC库,支持标准系统调用,增强应用可移植性和健壮性PartOpenHarmony架构02OpenHarmony系统架构分层设计系统功能层级系统>子系统>组件多设备部署特点可按需裁剪子系统和组件支持不同设备灵活部署内核层—多内核架构与驱动框架多内核架构设计适配Linux、LiteOS-A、LiteOS-M、UniProton通过内核抽象层(KAL)统一接口驱动子系统硬件驱动框架(HDF)统一外设访问与驱动管理操作系统抽象层(OSAL)屏蔽多内核差异支持“一次开发,多系统部署”系统服务层—核心能力集合系统基本能力子系统集——分布式软总线、数据管理、任务调度等基础软件服务子系统集——事件通知、多媒体、DFX等增强软件服务子系统集——智慧屏、穿戴专有业务、IoT业务硬件服务子系统集——位置服务、用户身份管理、专有硬件服务框架层与应用层提供多语言用户程序框架和Ability框架,开放多语言API接口供应用调用包含系统应用与第三方应用由FA(FeatureAbility,带UI)与PA(ParticleAbility,无UI)组成支持跨设备调度,提供一致用户体验OpenHarmony系统组成结构产品(Product):具体软件产物,基于芯片方案裁剪配置的完整操作系统子系统(Subsystem):由一个或多个组件构成的逻辑单元组件/部件(Component/Part):可裁剪、复用的功能单元,由模块组成模块(Module):最小编译单元,如静态库、动态库、可执行文件OpenHarmony产品与组件配置产品通过config.json管理,包含开发板配置、内核类型、系统版本、子系统列表等子系统目录下存放多个组件源码,组件由代码、配置文件、资源和脚本组成组件的配置文件(bundle.json)定义:组件可根据产品需求裁剪和启用不同特性(feature)名称、版本、许可、所属子系统系统能力(syscap)依赖组件及第三方库模块列表和测试用例OpenHarmony构建系统根据配置完成裁剪和编译逐级松耦合设计实现灵活的系统功能配置和差异化产品{"device_company":"device_company",#芯片厂商"product_name":"product_name",#产品名称"board":"board_name",#开发板名称"version":"3.0",#config.json的版本号,最新是3.0版本"type":"small",#系统类型,可选[mini,small,standard]"ohos_version":"OpenHarmony4.0",#选择的OS版本"kernel_type":"linux",#系统内核类型"kernel_version":"5.10",#系统内核版本"target_cpu":"arm",#目标开发板CPU的指令集架构"target_os":"ohos",#目标OS"third_party_dir":"//third_party",#依赖的三方库部署路径#开发板的编译路径"device_build_path":"device/board/device_company/board_name",#产品适配路径"product_adapter_dir":"//vendor/device_company/product_name/hals","subsystems":[#子系统列表{"subsystem":"kernel",#子系统名称"components":[#部件列表和特性配置{"component":"linux","features":[]}]},......]}config.json示例PartOpenHarmony开发实践03安装适用于Linux的Windows子系统(WSL2)步骤1:安装WSL命令

管理员PowerShell中执行:wsl--install,重启电脑步骤2:启用Linux子系统功能

管理员PowerShell执行:dism.exe/online/enable-feature/featurename:Microsoft-Windows-Subsystem-Linux/all/norestart步骤3:启用虚拟机平台功能

管理员PowerShell执行:dism.exe/online/enable-feature/featurename:VirtualMachinePlatform/all/norestart

重启电脑生效步骤4:下载并安装Linux内核更新包

下载链接:/wslblob/wsl_update_x64.msi步骤5:设置WSL2为默认版本

执行:wsl--set-default-version2步骤6:安装Linux发行版

打开MicrosoftStore,选择Ubuntu20.04等发行版安装(推荐Ubuntu20.04用于OpenHarmony开发)安装库与工具集Ubuntu默认Shell为dash,需修改为bash命令:sudodpkg-reconfiguredash弹出菜单选择“No”确认切换确认命令:ls-l/bin/sh,链接应指向/bin/bash1.修改默认Shell安装库与工具集一键安装常用依赖sudoaptupdate&&sudoaptinstall-yvimnet-toolstreesshlocales\binutilsbinutils-devgnupgflexbisongperfbuild-essentialzipunzip\curlzlib1g-devgccgcc-multilibg++g++-multiliblibc6-dev-i386\libc6-dev-amd64libstdc++6x11proto-core-devlibx11-devlib32z1-dev\ccachelibgl1-mesa-devlibxml2-devlibxml2-utilsxsltprocm4bc\gnutls-bingenext2fsdevice-tree-compilermakelibffi-deve2fsprogs\pkg-configperlopenssllibssl-devlibelf-devlibdwarf-devmtd-utils\cpiodoxygenliblz4-tooltexinfodosfstoolsmtoolsapt-utilswgettar\rsynclib32z-devgrsyncxxdlibglib2.0-devlibpixman-1-devkmod\jfsutilsreiserfsprogsxfsprogssquashfs-toolspcmciautilsquotappp\libtinfo-devlibtinfo5libncurses5libncurses5-devlib32ncurses5-devlibncursesw5如安装中断,可分批安装2.安装依赖工具安装库与工具集安装Python3.8sudoaptinstall-ypython3.8sudoln-sf/usr/bin/python3.8/usr/bin/python3sudoln-sf/usr/bin/python3/usr/bin/python安装Python依赖包和pipsudoaptinstall-ypython3-yamlpython3-cryptopython3-xlrdpython3-devpython3-pipsudopip3install--upgradepipsetuptoolskconfiglibpycryptodomesixecdsa设置pip镜像源提高速度pip3configsetglobal.trusted-hostpip3configsetglobal.index-url/repository/pypi/simplepip3configsetglobal.timeout1203.安装Python环境安装库与工具集安装Gitsudoaptinstall-ygit-coregit-lfs安装repo工具并赋权sudocurl/oschina/repo/raw/fork_flow/repo-py3-o/usr/local/bin/reposudochmoda+x/usr/local/bin/reposudopipinstall-i/simplerequests如遇权限问题,先下载至本地再移动到/usr/local/bin/$sudocurl/oschina/repo/raw/fork_flow/repo-py3>./repo$sudomvrepo/usr/local/bin/4.安装代码管理工具安装库与工具集安装SCons并验证版本sudoaptinstallsconsscons--version安装Java环境并验证版本sudoaptinstall-ydefault-jredefault-jdkca-certificates-javajava--version安装Node.js12.18.4(手动下载解压至/opt/,并修改权限)安装Gn、Ninja、gcc_riscv32,解压至指定目录设置环境变量(编辑~/.bashrc)exportNODE_HOME=/opt/node-v12.18.4-linux-x64exportPATH=$NODE_HOME/bin:$PATHexportPATH=/opt/gn:$PATHexportPATH=/opt/ninja:$PATHexportPATH=/opt/gcc_riscv32/bin:$PATH5.安装编译工具链生效配置并检查版本source~/.bashrcnode--versiongn--versionninja--versionriscv32-unknown-elf-gcc-v下载OpenHarmony源码配置Git用户信息gitconfig--global"yourname"gitconfig--globaluser.email"your-email-address"gitconfig--globalcredential.helperstore查看配置cat~/.gitconfig注册并配置码云(Gitee)SSH公钥,验证连接ssh-Tgit@获取源码cd/home/ohos/Ohos/code/repoinit-u/openharmony/manifest.git-bOpenHarmony-4.0-Release--no-repo-verifyreposync-c-j4repoforall-c'gitlfspull'获取预编译工具./build/prebuilts_download.sh注意:源码及工具下载过程较长,请耐心等待。编译OpenHarmony源码安装hb编译工具(Python环境)python-mpipinstall--userbuild/hbvim~/.bashrcexportPATH=~/.local/bin:$PATHsource~/.bashrc使用hb编译,设置产品类型

hbset提示:编译标准系统时间较长,请耐心等待轻量OpenHarmony,选择“mini”->“hisilicon”->“wifiiot_hispark_pegasus”

编译hbbuild-f

镜像文件路径://out/hispark_pegasus/wifiiot_hispark_pegasus/OHOS_Image.bin小型OpenHarmony,选择“small”->“hisilicon”->“ipcamera_hispark_taurus”或“ipcamera_hispark_taurus_linux”

编译

hbbuild-f

镜像文件路径示例:LiteOS-A:OHOS_Image.bin、rootfs_vfat.img、userfs_vfat.imgLinux:uImage_hispark_taurus_smp、rootfs_ext4.img、userfs_ext4.img标准OpenHarmony,选择“standard”->“hihope”->“rk3568”

编译hbbuild或使用脚本./build.sh--product-namerk3568--ccache

镜像文件路径示例://out/rk3568/packages/phone/images/,包含多个镜像文件。烧录轻量OpenHarmony镜像不同开发板使用不同烧录工具和方式以HI3861开发板为例,烧录轻量OpenHarmony镜像准备工作:安装USB转串口CH341驱动程序安装HiBurn烧录工具下载地址:HiSparkWi-FiIoT工具使用Type-C数据线连接开发板与PC,确保PC识别串口设备HiBurn默认界面烧录轻量OpenHarmony镜像配置串口参数与连接开发板HiBurn串口速率配置Setting”->“ComSettings界面设置“Baud”为“2000000”,提升烧录速度选择对应的COM端口号(连接开发板的串口)选择编译生成的烧录镜像文件OHOS_Image.bin勾选“Autoburn”选项点击“Connect”连接开发板HiBurn烧录配置在控制台显示“Connecting...”后,按开发板上的RST(Reset)键系统复位开始烧录,控制台打印烧录进度烧录完成后显示“ExecutionSuccessful”点击“Disconnect”断开连接烧录小型OpenHarmony镜像HiTool默认界面下载HiTool烧录工具/hihope_iot/docs/tree/master/HiSpark-AI-Camera-Developer-Kit/Software/tools使用串口线连接开发板与PC,确保PC识别串口使用网线将开发板接入PC局域网,保证能互相ping通烧录小型OpenHarmony镜像配置传输方式和参数导入分区表开始烧录HiToo烧录配置选择“网口(推荐)”传输方式配置正确的串口、服务器IP(PCIP)、板端IP地址等点击“烧写eMMC”标签导入或手动编辑分区表(参考图9-14)单击“烧写”按钮按提示断电后上电烧录过程可在控制台查看烧录成功后开发板自动重启并运行12345烧录标准OpenHarmony镜像下载并安装烧录工具与驱动下载地址:/hihope_iot/docs/tree/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97/windows安装驱动程序DriverInstall.exe打开烧录工具RKDevTool.exe默认进入Maskrom模式RKDevTool默认界面烧录标准系统镜像(RK3568开发板)烧录标准OpenHarmony镜像导入配置文件config.cfg配置文件位于编译好的rk3568产品镜像目录中修改镜像文件路径为实际存放路径准备好对应的各个镜像文件导入config.cfg文件导入配置与镜像文件烧录标准OpenHarmony镜像进入烧录模式:工具显示“发现一个LOADER设备”表示进入烧录模式点击“执行”按钮开始烧录烧录成功界面右侧显示“下载完成”烧录失败界面右侧显示红色错误信息烧录完成后,点击一次RESET键(图中1号键)复位启动开发板rk3568开发板进入烧录模式及烧录操作按住MASKROM键(图中2号键)不松按一下RESET键(图中1号键)等待几秒后松开MASKROM键进入烧写模式OpenHarmony软件开发方向应用程序开发与设备驱动开发两大方向轻量系统(MCU级):应用即设备驱动程序小型系统与标准系统:设备驱动开发:C语言编写,面向硬件驱动与系统基础服务交互界面应用(C++、JS、ArkTS)后台系统服务(C/C++)HelloWorld示例代码实现新建目录://applications/sample/camera/helloworld文件一:BUILD.gn文件二:main.c描述main.c编译成可执行文件helloworld标准C语言,打印“HelloOpenHarmony”默认10次支持通过参数指定打印次数intmain(intargc,char**argv){intcnt=10;if(argc>=2)cnt=atoi(argv[1]);for(inti=0;i<cnt;i++){printf("HelloOpenHarmony\n");sleep(1);}return0;}if(defined(ohos_lite)){import("//build/lite/config/component/lite_component.gni")executable("helloworld"){sources=["main.c",]include_dirs=[]}}BUILD.gnmain.c编译、烧录及运行验证流程修改bundle.json添加helloworld模块编译项执行命令:hbbuild-f重新编译系统镜像烧录生成

温馨提示

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

最新文档

评论

0/150

提交评论