OpenHarmony学习笔记——南向开发环境搭建

张开发
2026/4/15 10:57:23 15 分钟阅读

分享文章

OpenHarmony学习笔记——南向开发环境搭建
文章目录前言鸿蒙操作系统举个栗子小结系统定位内核技术架构图开发环境搭建Linux开发环境搭建虚拟机安装Ubuntu传智元气派解决hb-h报错小熊派开源社区Window端环境配置传智元气派小熊派总结目录前言此系列主要是记录笔者关于OpenHarmony基于Hi3861的学习笔记此篇主要对鸿蒙做一个简介并重点介绍开发环境的搭建前面一节是对鸿蒙的一个简介感兴趣可以看看不感兴趣可以直接跳去第二节的环境搭建。鸿蒙总有 人 说鸿蒙就是套壳安卓是华为的商业炒作。不知道是为了流量和挣米而说还是真的不了解操作系统这个概念。不过有一点可以确定能说出类似言论的都不是开发人员。鸿蒙和安卓作为两个操作系统都有linux的内核Linux又是由Unix简化而来而苹果生态的IOS和MacOS则是直接在Unix的基础上开发而的。有关这几者的关系可以参照此文浅谈 UNIX、Linux、IOS、Android、鸿蒙之间的关系。Linux系统本身也拥有多个分支如下图所示在OpenHarmony的学习中我们就需要借用这之中的Ubuntu系统进行编译代码。这里可能会有小伙伴要问你这分支图也没有安卓啊关于这个问题这么说吧Linux系统包含Android系统Android系统不是Linux系统Android是在Linux内核基础上开发出来的系统。操作系统我们日常生活中接触到最多的操作系统大多是Window、 Android、IOS、MACOS等而程序开发无论是北向还是南向的开发人员都会高频使用到另外的一个操作系统——Linux操作系统开发者有一些项目是需要在Linux环境下下进行编译的。生活中使用的电脑、手机、智能手表等等这些物品都是由硬件和软件组成的操作系统就是为了很好的调度这些资源实现软件硬件资源的管理。举个栗子做北向开发的开发者开发了一个远程物联网大棚的客户端用来监控农场大棚的温度湿度那么远在大棚的温湿度是怎么获取到手机APP上的呢北向开发者在整个过程中需要调用一个温湿度的api接口来获取到想要的参数可事实上只需要这一个api函数就可以得到温湿度了吗显然不是只凭借几行代码是不可能悬空获取温湿度这样一个实实在在的物理量。获取物理量都需要有对应的传感器来实现而北向开发者在开发过程中是没有去对传感器部分进行操作的所以整个项目开发过程还需要另外一伙人——南向开发者。南向开发者需要根据需求找一款处理器以及适配的传感器然后绘制pcb板进行硬件链接然后编程验证直到实现温湿度采集功能并且还需要根据北向开发者定义的api来编写接口。整个系统不会只有温湿度读取这样一个功能客户端可能会有很多个功能这就需要北向开发者和南向开发者针对需求配置自己的软件和硬件资源众多的资源不可能同时运行和调用于是这个时候就需要有一个操作系统来实现任务的调度实现这些软件资源与硬件资源的合理支配。而OpenHarmony作为一个跨平台的操作系统可以实现万物互联能够合理地调用更多工具的跟多软硬件资源用来实现更多功能而他之所以可以实现万物互联其中一个原因就是它使用了分布式软总线对于这个分布式软总线笔者的理解是类似硬件总线中的CAN、485、SPI、IIC、UART这些有着自己需要的引脚和功能定义只不过其采用的不再是硬件连接而是使用无线的方式来实现这样只要应用平台能够使用无线传输Wifi或者蓝牙就可以接入总线从而进行控制。小结一个完整操作系统系统内核功能组件鸿蒙是一个使用了Linux内核的操作系统但是他不像安卓只有Linux内核他还有自己的特色。可以说它们是兄弟或者姐妹的关系。以下是关于二者的一些对比系统定位安卓Android是一种基于Linux内核不包含GNU组件的自由及开放源代码的操作系统。主要使用于移动设备如智能手机和平板电脑由美国Google公司和开放手机联盟领导及开发。鸿蒙HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。在传统的单设备系统能力基础上HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备提供全场景移动办公、运动健康、社交通信、媒体娱乐等业务能力。内核安卓Android基于linux的宏内核设计 宏内核包含了操作系统绝大多数的功能和模块而且这些功能和模块都具有最高的权限只要一个模块出错整个系统就会崩溃这也是安卓系统容易崩溃的原因。系统开发难度低。鸿蒙HarmonyOS基于微内核设计微内核仅包括了操作系统必要的功能模块任务管理、内存分配等处在核心地位具有最高权限其他模块不具有最高权限也就是说其他模块出现问题对于整个系统的运行是没有阻碍的。微内核稳定性很高。鸿蒙系统包含了两个内核Linux内核、LiteOS内核鸿蒙os内核Liteos起源于2012年、华为2012实验室内核子系统HarmonyOS采用多内核设计支持针对不同资源受限设备选用适合的OS内核。内核抽象层KALKernel Abstract Layer通过屏蔽多内核差异对上层提供基础的内核能力包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。驱动子系统硬件驱动框架HDF是HarmonyOS硬件生态开放的基础提供统一外设访问能力和驱动开发、管理框架。技术架构图安卓Android鸿蒙HarmonyOS对比来自此文。所以鸿蒙不是套克安卓它们不一样至于为什么他兼容安卓是因为他有KAL的内核抽象层用来把不同内核的接口抽象成一种通用接口以此来调用不同的内核实现同一功能。再说鸿蒙套壳安卓就跟说你是套壳的你哥一样。想要进一步了解鸿蒙的构架的可以参考此文。开发环境搭建笔者使用的Hi3861来实现OpenHarmony的南向开发。南向开发的源码的管理和编译是在linux环境下进行的而源码的编辑与烧录是在windows环境下进行的。这点与单片机和普通上位机开发中使用的IDE有很大区别IDE是集成开发环境可以在一个应用上完成代码编辑、编译、调试等而OpenHarmony目前还没有集成开发环境代码编辑和编译需要跨平台操作。所以既继续要在windows上进行环境配置又需要对Linux环境进行配置这里借助VMware来安装Ubuntu搭建Linux的开发环境。Linux开发环境搭建虚拟机安装Ubuntu有关虚拟机的安装有很多优秀的教程笔者在此不做赘述可以参考此博文——VMware虚拟机快速安装Ubuntu教程笔者参考此博文安装的是Ubuntu 20.04.4 LTS没有什么bug。传智元气派emmmm环境配置对于初学者来说真的不怎么友好笔者困扰了一天bug,首先是跟着B站传智教育的搭建 有关的详细步骤参考此链接。 这中间没什么bug中间的指令提示不对的话根据命令框返回的建议去输入即可。解决hb-h报错唯一一个麻烦一点的bug就是hb-h返回如下报错derder-virtual-machine:~/OpenHarmony/project$ hb-hTraceback(most recent call last):File/home/der/.local/bin/hb,line8,inmodulesys.exit(main())File/home/der/.local/lib/python3.8/site-packages/hb/__main__.py,line49,inmain topdirfind_top()File/home/der/.local/lib/python3.8/site-packages/hb/__main__.py,line37,infind_top raiseException(Please call hb utilities inside source root directory)Exception:Please call hb utilities inside source root directory derder-virtual-machine:~/OpenHarmony/project$这个问题华为开发者平台解答有解决方案原因是版本不对应需要卸载重装这里有几个点笔者在此提示一下首先需要cd到源码根目录 pip3 uninstall ohos-build pip3 install build/lite这里的源码是指genkipi的源码根目录就是genkipi的目录如下图所示目录里面是genkipi的源码。在此处右击打开终端输入命令即可完美解决“hb -h”的问题。源码的获取方法这里有两种方案方法一直接先跳过“hb- h”的问题去跟着教程继续往下操作直到获取源码后找到上图所示目录执行两条指令即可。这种方式是可以解决的而且git下载这个地方也没有什么问题跟着视频搭建即可。方法二此法为笔者自己总结这里直接去此链接下载genkipi的源码——传送门提取码x9q8下载到自己的电脑桌面或者任何一个位置都可以自己能够找到就行。然后打开虚拟机在主目录下新建一个workspace的文件夹如下图所示然后把刚刚下载的genkipi压缩包拖到workspace的文件夹下等待传输完成。然后右键这个提取这个压缩包到此处提取完毕后就可以看见目录下多了一个名为“genkipi”的文件夹。进入这个文件夹可以看这些文件然后在这个目录下参考上面的步骤右键打开终端命令在终端命令窗口输入指令重新安装hb。然后执行如下命令pip3 install build/lite显示安装成功然后输入:hb -h成功返回出版本信息到这里传智元气派的Linux开发环境就搭建好了。注意事项1.按照第二种方式安装hb后教程中的获取源码那部分可以直接跳过也就仅仅只有获取源码不用看其他还是得照做不用看直接跟着下一节编译即可。2.需要注意的是源码必须是genkipi的源码使用其他的源码会报错。笔者刚开始就是用的小熊派的bearpi源码按照这个方法处理后又出现了新问题如下所示3.目录一定要保持和下图一致不然在后面编译源码的时候会出问题。小熊派开源社区后来笔者重新尝试了用小熊派的方式安装开发环境社区为了方便初学者提供了装好环境的Ubuntu亲测好用不想被折磨的同学直接上手。传送门——BearPi-HM Nano 十分钟上手教程跟着配套视频十分钟就可以搭好环境执行编译指令“ hpm dist ”后显示编译成功当然想尝试自己配置的同学也可以参考社区的搭建视频进行操作笔者的Ubuntu 20.04.4 LTS是可以完全搭建成功的亲测有效。传送门。Window端环境配置这个就没啥难度了跟着双方的的视频都可以一步到位。传智元气派元气派Linux源码编译成功效果类似下图使用VS Code远程访问编译成功如下图示有关远程访问的笔者下一篇会详细介绍。小熊派然后是下载烧录查看串口打印Hello world!这些视频介绍都有在此不再介绍。总结关于开发环境的搭建就介绍到这中间遇到了很多的bug但好在成功了此系列主要是接着立创EDA的传智鸿蒙训练营进行记录在此感谢立创和博学谷提供的机遇。上述有不妥之处欢迎大佬指出。目录OpenHarmony学习笔记——南向开发环境搭建OpenHarmony学习笔记——编辑器访问Linux服务器进行编译OpenHarmony学习笔记——点亮你的LEDOpenHarmony学习笔记——多线程的创建OpenHarmony学习笔记——I2C驱动0.96OLED屏幕OpenHarmony学习笔记——Hi3861使用DHT11获取温湿度OpenHarmony学习笔记——Hi3861接入OneNET手把手教你OneNET数据可视化OpenHarmony学习笔记——Hi386ASR-01的语音识别助手

更多文章