编者按:在 OpenHarmony 生态发展过程中,涌现了大批优秀的代码贡献者,本专题旨在表彰贡献、分享经验,文中内容来自嘉宾访谈,不代表 OpenHarmony 工作委员会观点。

熊磊

华为技术有限公司

OS高级开发工程师

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 到多套开发板,是最开心的事相关推荐

  1. 首发 成功移植OpenHarmony到龙芯开发板,代码开源

    通过一周的时间,我们成功地将OpenHarmony 3.0移植到智龙开发板上,板载芯片1C300B. 1C300是龙芯基于 GS232 处理器核的高性价比单芯片系统,内置浮点处理单元,支持多种类型内存 ...

  2. LVGL的PC端移植和STM32F429阿波罗开发板移植

    LVGL 8.1_学习总结 LVGL介绍 LVGL开发环境 LVGL的GitHub的代码介绍 LVGL8.1 在F429上面的移植 准备 修改lv_port_disp.c文件中的 修改lv_port_ ...

  3. 移植安装ModBus到ARM开发板

    1.libmodbus官网 2.下载 二.交叉编译 1.解压 2.创建安装目录 3.进入解压的目录 4.配置编译选项 5.编译 6.安装 7.生成动态链接库 三.移植到ARM开发板 1.复制文件到AR ...

  4. 三星官方smdkv210 uboot移植到我的s5pv210开发板

    北京 2020-7-26 19:44 周日 昨天外面闷热 今日凉快.空调一开啥事没有!O(∩_∩)O 用了差不多两个周末蹲家里移植的.进度比较慢,算是把uboot相关的一些东西基本了解了. uboot ...

  5. QT开发环境的建立以及qte4.6.3、tislib1.4移植到博创star2410开发板

    1.首先是建立Linux开发环境 1.1.在windowsXP下安装博创公司提供的虚拟机软件VMware Workstation,版本为VMware-workstation-full-7.0.1-22 ...

  6. 移植QT5.9到嵌入式开发板(详细)

    移植QT5.9到嵌入式开发板 1.硬件平台 2.软件平台介绍 Linux操作系统 移植的要求 3.源码下载与编译 交叉编译器 4.系统烧录 制作SD卡烧录 命令行烧录 Nandflash启动OK335 ...

  7. opencv-3.4.3 交叉编译并且移植到高通820开发板(包括Qt 5.11.2部分交叉编译及移植),NEON OpenCV编译

    opencv-3.4.3 交叉编译并且移植到高通820开发板(包括Qt 5.11.2部分交叉编译及移植),NEON OpenCV编译 原文我是用有道笔记记录的,下面排版不是很好,可参看有道笔记原文:h ...

  8. linux adb arm移植,移植ubuntu core到Arm开发板

    origin: http://blog.csdn.net/kickxxx/article/details/15341079 最初是想把整个ubuntu移植到MX51开发板,因为项目不需要运行桌面系统, ...

  9. 移植u-boot-2016.11到TQ2440开发板全过程记录

    移植前的准备 获取并解压源码 SAMSUNG公司于2017年初停止了对S3C2410系列CPU的官方u-boot支持(可在最新版u-boot源码中打开doc/README.scrapyard,搜索关键 ...

最新文章

  1. Java JWT:用于Java和Android的JSON Web令牌
  2. MFC EDIT控件的使用记录
  3. WINCE6.0+S3C6410串口驱动
  4. antd 给input设置值_Antd 中 Input 组件默认值的显示
  5. python多进程关闭socket_用Python制作一个多进程UDP服务器,一个进程监听一个p
  6. IOS中的XML解析方式
  7. 【sprinb-boot】配置和lib分离打包
  8. android 发短信 调到联系人
  9. Springboot整合Quartz集群部署以及配置Druid数据源
  10. vue-cli打包后的思索--代码优化
  11. STM32H743+CubeMX-ADC+DMA采样四路AD
  12. vue 项目中当访问路由不存在的时候默认访问404页面
  13. python decimal类型转化_python的json模块,针对decimal类型直接dumps报错
  14. 关于需求跟踪矩阵的6个问题
  15. 计算机 ppt图标,史上最完整的通信计算机PPT图标及模版 (PPTshare).ppt
  16. 神通数据库导出sql脚本
  17. 大厂的安卓技术面试是酱紫的
  18. 虚拟机Linux - HTTP request sent, awaiting response... 404 Not Found
  19. LAMP平台QQ农场
  20. 图解快速排序——通俗易懂(quick sort)

热门文章

  1. mongo addShard with error “errmsg“ : “in seed list shard1 xxx does not belong to replica set“
  2. 从零开始搭建Node.js, Express, Ejs, Mongodb服务器
  3. 机器学习面试1000题 1 - 255
  4. 文华财经(第一面)HR面
  5. 全国电子设计大赛历年考题归类分析--太行山麓创客空间基地
  6. BigDecimal和DecimalFormat
  7. 《思维导图》读书笔记
  8. html压缩包用什么软件打开方式,分享一招超简单打开zip文件的方法
  9. 数据存储|信息安全技术在SSD中的应用分享
  10. 【Web3 系列开发教程——创建你的第一个 NFT(6)】为 NFT 设置价格