熊磊:成功移植 OpenHarmony 到多套开发板,是最开心的事
编者按:在 OpenHarmony 生态发展过程中,涌现了大批优秀的代码贡献者,本专题旨在表彰贡献、分享经验,文中内容来自嘉宾访谈,不代表 OpenHarmony 工作委员会观点。
OpenAtom OpenHarmony(以下简称“OpenHarmony”)是由开放原子开源基金会孵化及运营的开源项目,每一位开发者都可以基于 OpenHarmony 做开发。自成立以来,OpenHarmony 吸引了众多开发者的加入,现有 6 大开发者社区专区建设(CSDN、51CTO、开源中国、思否、电子发烧友、InfoQ,排名不分先后),104 个高校阵地(有组织者的高校)。发布的技术直播、视频课程、技术解读文章、开发者稿件等累计覆盖观众人数 2500 万人。
构建开源生态,需要让开发者先用起来,而这离不开各种类型、可提供各种功能需求的开发板。提供基础集成开发环境、软件源代码、硬件原理图,方便初学者快速地了解和学习 OpenHarmony 系统的硬件和软件知识,开发板是 OpenHarmony 开源生态建设中的重要一环。将 OpenHarmony 版本移植到 Hi3516DV300、rk3568 等多套开发板套件中的,正是熊磊及其团队。
本期 OpenHarmony 开发者故事,我们采访了 OpenHarmony 启动子系统的负责人,OpenHarmony PMC 委员会推举的“代码贡献月度之星”——熊磊。
熊磊和团队一起负责启动子系统的特性开发、产品定制、生态拓展和代码维护等工作。这个模块控制整个系统的启动管理,体系非常复杂,如此艰巨的任务,他们要如何完成?开发过程中,遇到典型的内存溢出难题,他们又是如何精准排查,并形成问题分析文档,后续防患于未然的?满满干货,不容错过!我们将专访内容整理如下,希望对你有所启发。
Q:OpenHarmony A=熊磊
Q1:请熊磊简要介绍下自己和所带团队
大家好,我是熊磊,目前是 OpenHarmony 启动子系统的负责人。我和我的团队负责启动子系统的特性开发、产品定制、生态拓展和代码维护等工作。我对物联网、嵌入式、操作系统有着浓厚的兴趣,从事这个行业有12年的时间了。
Q2:作为开发领域知名的技术大牛,您最初为什么会选择加入OpenHarmony生态、参与开源共建呢?您认为,OpenHarmony项目最吸引人的点在哪里?
在移动操作系统领域,不管是 iOS,还是 Android,我们始终都是追随者。先是丰富 iOS 的应用市场,后来集成 Android 系统,与全世界一起共建 Android 生态,一直都在跟随别人的脚步前行。
我几年前听说 OpenHarmony 的时候,就希望能够参与进去开发我们自己的移动操作系统。如今能够有幸参与到 OpenHarmony 的生态共建中,也算是实现了当初的愿望。
OpenHarmony 吸引我的地方很多,从定位来看,它是一个创新的移动操作系统,令人振奋;从技术架构来看,它的模块化设计,也让人眼前一亮。我相信 OpenHarmony 新服务、新硬件、新交互的设计理念,将会给大家带来全新的体验。
Q3:这次您被OpenHarmony PMC委员会推举为“代码贡献月度之星”,意味着您对OpenHarmony项目的贡献已经属于业界顶尖水平,十分了不起!加入OpenHarmony这么短的时间却达成了这样好的效果,请问您的“秘诀”是什么?您是否方便从业务角度具体介绍一下,怎么才能让开发者更加满意,把开源共建做得更好?
没有什么”秘诀“啦,我一直相信兴趣是最好的老师,也是最大的动力。
OpenHarmony 还处在起步阶段,尚有大量的工作需要完成。我非常荣幸能够在初始阶段就参加到这样一个事业中。我参与的模块,是系统的启动部分,负责整个系统的启动管理。它涉及到各子系统,而每个子系统又都有自己的诉求,整个体系非常复杂。肩负如此重要的任务,我压力不小,也动力十足。
OpenHarmony 作为一个年轻的 OS,需要吸引更多的开发者进行生态共建,才能更好地发展。项目组需要多倾听开发者的声音,了解大家的痛点和诉求,解决开发者参与共建过程中的现实问题。另外,做好 OpenHarmony 的宣传也很重要。开发者了解这个系统,对它产生兴趣了,就会愿意参与进来。
Q4:您和您的团队小伙伴,在参与OpenHarmony项目贡献的过程中,一定有一些刻骨铭心/印象深刻的经历,比如文档被转载、被committer认可、被合并代码、被授予荣誉、被开发者夸赞之类。可以给我们分享一下吗?
每一次的 master 代码提交,都是非凡的体验。看到我们的努力成果,终于要合入主线了,内心既激动,又忐忑。
有时候,一个重大特性的合入,涉及的代码量会非常大。我和团队的小伙伴们,就需要每天晚上忙活很久,确保编译通过、设备能正常启动,并关注静态检查的告警。当我们看到已合入的标签时,才会如释重负,感觉所有的辛苦都很值得。
Q5:在整个开发进程中,您和您的团队遇到过哪些技术上或其他方面的难题呢?这些难题又是如何被逐一解决的?在这些难题被解决的过程中,您总结了哪些宝贵的经验or教训呢?
首先简单介绍下 OHOS 启动,init 组件负责处理从内核加载第一个用户态进程开始,到第一个应用程序启动之间的系统服务进程的启动过程。OHOS 启动简单的逻辑框架如下图 5-1 所示,其中 init 阶段主要负责启动引导管理、服务管理,以及系统、服务的配置项的管理等。
图 5-1
我们在前期 init 提供的能力基础上,通过持续改进方案,不断增强能力、优化效率。例如增加进程频繁退出的抑制机制,增加支持应用、系统组件及芯片组件进程的沙盒运行环境,增加支持服务分组的配置、并行启动依赖的同步机制、可通过沙盒孵化的应用等,如下图 5-2 所示。
图 5-2
我们各种各样的难题都遇到过,比较典型的是一个内存问题。当时,我跟团队里面的技术专家,一整天在远程电话会议讨论这个问题。大家群策群力,提出自己的想法并逐个排查验证,最后发现问题是另外一个流程里面的 malloc 内存空间访问越界所致。两个似乎完全不相关的流程,发生了内存踩踏的情况。问题得到解决后,我们进行了内部的复盘,并输出一份问题分析文档。
内存问题一旦出现,会很难排查,关键在于预防。所以一个良好的编码规范非常重要。只要有良好的编码习惯,就能有效规避内存的越界、溢出。后期,我们不定时在团队内部进行分享、总结,就是要确保同样的错误,绝不再犯。
Q6:加入OpenHarmony生态以来,您最大的惊喜是什么?或者有哪些具体的收获?
最大的喜悦是成功将 OpenHarmony 版本移植到多套开发板套件(Hi3516DV300、rk3568 等)中,为开发者提供了方便学习的开发环境。当看到开发者能将理论付诸实践,所有人共同开发、共同贡献,OpenHarmony 系统不断完善,心中的成就感难以言表。
此外,在这个过程中结识了很多朋友,参与不同的 SIG 组,学习到了很多新的知识,这些也都是收获。
Q7:您期待未来OpenHarmony哪些方面能够得到改善、提供更多支持?
我觉得性能方面有待提高,上手体验不是特别良好。OpenHarmony 的调试手段也比较缺乏,没有 trace。
Q8:OpenHarmony目前仍处在开发探索阶段,很多共建单位和生态伙伴还不清楚开源项目的玩法,或不如该如何着手进行开发。可以请您给大家分享一条,您认为最重要或最值得分享的心得吗?
重要的是多关注社区,多参与 SIG,多交流。现在网上的 OpenHarmony 资料,确实不是特别多,但代码都是开源的。社区有各种微信群,其中的绝大多数开发者也都是中国人,大家在沟通方面不会有任何困难。我相信共建单位和生态伙伴之间多多交流,一定会有非常大的收益。
Q9:开放性问题,可以畅所欲言,请问您还有什么掏心窝的话想告诉大家?
我这一路走来,从刚开始参与 OpenHarmony 时的不知所措,到如今在 OpenHarmony 社区贡献了大量的代码,是有苦也有甜。
OpenHarmony 从一开始的几十个仓,成长为现在的庞然大物。看到有越来越多的人在关注和了解 OpenHarmony,也有越来越多的人参与到系统的开发中来,我的内心有种自豪,因为我也是其中的一员。衷心祝愿 OpenHarmony 越来越好!
搜索
复制
熊磊:成功移植 OpenHarmony 到多套开发板,是最开心的事的更多相关文章
- 成功移植SQLite3到ARM Linux开发板
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 ...
- Linux学习 :移植U-boot_2016.09到JZ2440开发板
一.下载源码:ftp://ftp.denx.de/pub/u-boot/ 二.初始化编译: ①新建一个单板: cd board/samsung/ cp smdk2410 smdk2440 -rf ...
- 移植QT5.6到嵌入式开发板(史上最详细的QT移植教程)
目前网上的大多数 QT 移植教程还都停留在 qt4.8 版本,或者还有更老的 Qtopia ,但是目前 Qt 已经发展到最新的 5.7 版本了,我个人也已经使用了很长一段时间的 qt5.6 for w ...
- 移植最新Uboot到JZ2440开发板
下载最新版U-boot,建立Source Insight工程,在建立工程的时候注意,去掉一些很明显不属于硬件的分支代码. 例如,arch目录下面的除开arm子目录之外的其他目录,都可 ...
- 利用官方的ucosiii包中测试板的工程移植到属于自己的开发板(stmf103ZE)上
ucosIII官方下载地址:https://www.micrium.com 第一:是不是ucosIII:第二,工具链是不是keil(我用的是keil,如何用的是IAR就选有IAR的):第三MCU是不是 ...
- 【转帖】迅为iTOP-iMX6开发板 Ubuntu系统下WiFi模块mt6620的移植
本文转自迅为论坛 :http://www.topeetboard.com 文档提供的文件如下. wpa_supplicant 拷贝到开发板 Ubuntu 系统的 /sbin 目录下,如何移植 wpa_ ...
- 漫谈LiteOS之开发板-LiteOS移植(基于GD32450i-EVAL)
1 为什么移植? 嵌入式设备的芯片型号和外设的差异较大,资源有限.而RTOS无法适配集成所有的驱动,因此会先适配部分开发板,然后通过移植使得适配更多的开发板. 可移植性是嵌入式操作系统与普通操作系统的 ...
- 移植BOA服务器到开发板
移植BOA 服务器到GEC210 开发板 开发平台主机:VMWare--Ubuntu 10.04 LTS开发板:GEC210 / linux-2.6.35.7编译器:arm-linux-gcc-4.5 ...
- 开源物联网通讯框架ServerSuperIO,成功移植到Windows10 IOT,在物联网和集成系统建设中降低成本。附:“物联网”交流大纲
[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 一.概述 经过一个多月晚上的时间,终于把开源物联网通讯框架ServerSuperIO成功移植到Windows10 IOT上, ...
- 物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上
在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到 ...
随机推荐
- virtualenvwrapper管理虚拟环境
安装 pip install virtualenvwrapper-win 基本使用 1.创建虚拟环境 mkvirtualenv my_env 使用这个命令,就会在你c盘的当前用户下创建一个Env的文件 ...
- Python函数每日一讲 - 一文让你彻底掌握Python中的getattr函数
引言 在 Python 中,getattr() 函数是一种强大的工具,它允许我们在运行时动态地访问对象的属性和方法.本文将介绍 getattr() 函数的基本语法.常见用法和高级技巧,帮助大家更好地理 ...
- Mysql 删除binlog日志方法
方法1 RESET MASTER; 解释: 该方法可以删除列于索引文件中的所有二进制日志,把二进制日志索引文件重新设置为空,并创建一个以.000001为后缀新的二进制日志文件. 该语法一般只用在主从环 ...
- Emqx高可用架构
目录 优化前架构 主要问题 haproxy问题 优化后架构 优化功能点 emq版本升级 linux系统调优 haproxy调优 测试工具 依赖安装 配置erl环境变量 安装压测软件 测试指令与结果展示 ...
- 【Azure 应用服务】基于Azure的CI/CD工具链部署App Service
问题描述 在中国区Azure中,App Service是否支持CI/CD工具部署呢? Windows 和Linux两个系统都是同样的方法吗? 问题解答 目前中国区Azure支持Windows 和 Li ...
- 照片也能说话了?嘴型表情全同步,AI数字人时代要来了
SadTalker是一款先进的人工智能模型,它通过从音频中学习生成3D运动系数,并使用全新的三维面部渲染器来生成头部运动,只需传入一张照片和一段音频,就能生成高质量的AI数字人视频 工作原理 1.显式 ...
- Kubernetes CKA考试之Killer Simulator(下)
写在前面 个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/ 注:学习交流使用 目录 写在前面 Question 16 | Na ...
- snipaste 替换 微信截图快捷键 F3贴图功能实在是太帅了 - 软件推荐
snipaste 替换 微信截图快捷键 这个软件很久之前就知道,一直也没觉得可以替换微信的截图功能,毕竟能懒就懒. 今天同事又推荐 用了下,觉得确实ok. https://zh.snipaste.co ...
- 用户不在 sudoers 文件中。此事将被报告
在终端,进入root模式 vim /etc/sudoers 在 sudo (ALL:ALL) ALL下 添加 用户名 (ALL:ALL) ALL
- RV1126编译过程
一.编译环境 1.目标系统:ubuntu 22.04 LTS 2.投屏器SDK下载: 链接:https://pan.baidu.com/s/1OJQafxm38FnbshMEu432Og 提取码:o6 ...