熊磊:成功移植 OpenHarmony 到多套開發板,是最開心的事

来源:https://www.cnblogs.com/openharmony/archive/2022/05/17/16280725.html
-Advertisement-
Play Games

本期 OpenHarmony 開發者故事,我們採訪了 OpenHarmony 啟動子系統的負責人,OpenHarmony PMC 委員會推舉的“代碼貢獻月度之星”——熊磊。 ...


編者按:在 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 越來越好!

 

 

搜索

複製


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、概述 Presto是Facebook開源的MPP(Massively Parallel Processing:大規模並行處理)架構的OLAP(on-line transaction processing:聯機事務處理),完全基於記憶體的並⾏計算,可針對不同數據源,執行大容量數據集的一款分散式SQL ...
  • 書名《MySQL是怎樣運行的:從根兒上理解MySQL》。 這本書講得真的很好,建議大家想學習的去看看😊 本文是基於我的認識上將InnoDB的結構進行的回想,查缺補漏。 InnoDB記錄結構 InnoDB是以頁來存儲數據的,一個頁的大小為16KB。 InnoDB行格式有COMPACT行格式和Redu ...
  • 書名《MySQL是怎樣運行的:從根兒上理解MySQL》可自行百度 以下是知識點總結 重新認識Mysql MySQL是一個C/S架構的軟體。 在Windows安裝後首先註冊成服務,然後會在開機後自啟動。 啟動MySQL服務端。 直接在bin目錄下執行mysqld 或者在配置文件my.ini中設置一些默 ...
  • 導讀: 電商場景的搜索排序演算法根據用戶搜索請求,經過召回、粗排、精排、重排與混排等模塊將最終的結果呈現給用戶,演算法的優化目標是提升用戶轉化。傳統的有監督訓練方式,每一步迭代的過程中優化當前排序結果的即時反饋收益。但是,實際上用戶和搜索系統之間不斷交互,用戶狀態也在不斷變化,每一次交互後排序結果和用戶 ...
  • 查看PostgreSQL鎖表信息 一、查詢PG_STAT_ACTIVITY的信息 SELECT * FROM pg_stat_activity where datname='bms' and wait_event_type='Lock' 二、通過pid解鎖死鎖信息 select pg_cancel_ ...
  • 本文介紹什麼是 SQL INNER JOIN 聯結,為什麼使用聯結,如何編寫使用聯結的 SELECT 語句。並講述了一些關係資料庫設計的基本知識,包括等值聯結(也稱為內聯結)這種最常用的聯結。 一、聯結 SQL 最強大的功能之一就是能在數據查詢的執行中聯結(join)表。聯結是利用 SQL 的 SE ...
  • HMS Core 3D Engine是一款高性能、高畫質、高可靠的實時3D引擎,旨在幫助開發者製作高品質的3D應用。3D Engine將為您提供可編程渲染管線,多維粒子系統,3D角色與動畫,超大地形地貌,智能尋路導航等諸多實用功能,以及便捷高效的可視化開發工具。 3D Engine渲染效果 千萬級面 ...
  • 針對傳統記憶體方案及管理機制的不足,OpenHarmony 構建了一套完善的記憶體解決方案——ESWAP。 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文將以 C# 語言來實現一個簡單的布隆過濾器,為簡化說明,設計得很簡單,僅供學習使用。 感謝@時總百忙之中的指導。 布隆過濾器簡介 布隆過濾器(Bloom filter)是一種特殊的 Hash Table,能夠以較小的存儲空間較快地判斷出數據是否存在。常用於允許一定誤判率的數據過濾及防止緩存 ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • 「簡單有價值的事情長期堅持做」 這是成功最簡單,但也最難學的秘訣。不經過訓練,人很難意識到時間複利的威力。 仙劍奇俠傳的「十里坡劍神」和金庸群俠傳的「十級野球拳」,就是簡單的事情持之以恆反覆做,最後就有巨大的威力 唐家三少成為網文收入第一,最重要的一步是十四年從未斷日更 這樣的案例很多,一開始可能成 ...
  • 迎面走來了你的面試官,身穿格子衫,挺著啤酒肚,髮際線嚴重後移的中年男子。 手拿泡著枸杞的保溫杯,胳膊夾著MacBook,MacBook上還貼著公司標語:“我愛加班”。 面試開始,直入正題。 面試官: 看你簡歷上面寫著精通MySQL,我先問你事務的特性是什麼? 老生常談,這個還有誰不會背的嗎? 我: ...
  • 基礎知識 python是一門腳本語言,它是解釋執行的。 python使用縮進做為語法,而且python2環境下同一個py文件中不能同時存在tab和空格縮進,否則會出錯,建議在IDE中顯示縮進符。 python在聲明變數時不寫數據類型,可以type(xx)來獲取欄位的類型,然後可以int(),list ...
  • 為什麼要多線程下載 俗話說要以終為始,那麼我們首先要明確多線程下載的目標是什麼,不外乎是為了更快的下載文件。那麼問題來了,多線程下載文件相比於單線程是不是更快? 對於這個問題可以看下圖。 橫坐標是線程數,縱坐標是使用對應線程數下載對應文件時花費的時間,藍橙綠代表下載文件的大小,每個線程下載對應文件2 ...
  • 詳細講解python爬蟲代碼,爬微博搜索結果的博文數據。 爬取欄位: 頁碼、微博id、微博bid、微博作者、發佈時間、微博內容、轉發數、評論數、點贊數。 爬蟲技術: 1、requests 發送請求 2、datetime 時間格式轉換 3、jsonpath 快速解析json數據 4、re 正則表達式提... ...
  • 背景: 一般我們可以用HashMap做本地緩存,但是HashMap功能比較弱,不支持Key過期,不支持數據範圍查找等。故在此實現了一個簡易的本地緩存,取名叫fastmap。 功能: 1.支持數據過期 2.支持等值查找 3.支持範圍查找 4.支持key排序 實現思路: 1.等值查找採用HashMap2 ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • 本章是系列文章的第八章,用著色演算法進行寄存器的分配過程。 本文中的所有內容來自學習DCC888的學習筆記或者自己理解的整理,如需轉載請註明出處。周榮華@燧原科技 寄存器分配 寄存器分配是為程式處理的值找到存儲位置的問題 這些值可以存放到寄存器,也可以存放在記憶體中 寄存器更快,但數量有限 記憶體很多,但 ...