《鴻蒙開發板外設控制》直播答疑(初學者必看)
想了解更多內容,請訪問:
51CTO和華為官方合作共建的鴻蒙技術社區
https://harmonyos.51cto.com
1 . 這套開發板上面可以進行其他操作系統的移植么?
答:理論上,可以在Hi3861上移植其它操作系統,只要目標操作系統適配到硬件,并且做好必要剪裁即可。Hi3861的本質是基于risc-v架構的硬件系統,所以支持這種硬件架構的操作系統均可移植。
2. GN腳本都學點什么,能快速入門。
答:gn是一種現代化的跨平臺編譯構建工具,之所以強調“現代”是因為它能做的事別的工具也能做,如:make 和 cmake。
這幾種工具從年代上看有這樣的進化關系: make->cmake->gn。
make的跨平臺不太完善,所以有了cmake,用cmake屏蔽不同平臺make的差異,cmake對于大型項目有些吃力,所以有了gn。
因此,要學好gn構建編譯,建議把make和cmake先了解了解。
對于使用gn的大型項目來說(如:鴻蒙),一般分為3大塊:
1) 整體工程入口(一次編寫,常年不改)
2) gn通用文件(一次編寫,常年不改)
3) gn源代碼工程文件(用于具體項目模塊,管理源碼文件和頭文件)
掌握以上內容,并且能編寫鴻蒙板載應用程序,就算已經入門。
官方文檔:https://gn.googlesource.com/gn/
3. 一直用MCU裸跑,對操作系統還是懵懂狀態,很想知道操作系統和硬件如何關聯起來的?
答:操作系統就是硬件系統和軟件系統的關聯層,提供各種服務幫助軟件使用硬件,建議學習一下與操作系統相關的課程(可以看看我的操作系統課程)。
4. 目前鴻蒙支持的芯片只有海思的嗎?這樣的話后期的發展空間是不是限制很多?
答:鴻蒙從設計上是一個“多內核”操作系統,理論上可以支持各種硬件設備。目前韋東山老師已經將鴻蒙移植到了IMX6ULL和STM32。
5. 電腦連著板子搞東西電腦真的不會爆炸嗎?比如板子上哪里搞得不對或者零件焊的不好啥的。。。
答:我個人經驗不會爆炸,只是可能搞不好板子成磚頭。。。如果電腦那么容易爆炸,我會第一個轉行賣相關保險。
6. 鴻蒙以后可以應用到哪些領域?相比其他操作系統有什么優勢?學習鴻蒙可以帶來就業崗位嗎?
答:鴻蒙的目標很明確:各種嵌入式設備(物聯網設備,手持設備,車載設備,等)。理論上通過“換內核”可以應用于任意領域的設備和產品。
在我個人看來,如果持續保持現在的推廣力度和社區活躍度,未來會出現一個鴻蒙相關技能需求井噴的時期。
7. 請問鴻蒙OS和華為的LiteOS區別是什么呢?
答:LiteOS是一種內核,鴻蒙可以使用這種內核(支持多種內核)。
8. 鴻蒙OS可以運行在一般的單片機中嗎?
答:物聯網領域是鴻蒙瞄準的領域之一,而物聯網設備多數為單片機設備,只需要一些移植工作,鴻蒙運行于一般單片機是可以的(如:STM32)。
9. 對鴻蒙充滿憧憬、覺得鴻蒙會在物聯網大展身手、以后物聯網會如現在的互聯網一樣發展迅猛,出現各種巨頭嗎?那現在學鴻蒙是不是搶先機?
答:物聯網的本質還是互聯網(Internet Of Things),只不過以前談到“互聯網”的時候是指把人聯系起來的網絡。現在,“把人聯系起來的網絡”應用日趨成熟,所以,下一步就是互聯網進軍設備的世界了,形成把設備聯系起來的網絡。
我個人認為,物聯網是下一片藍海,各大巨頭企業都會進軍這片藍海,建議現在的開發者提前充實自己,準備好相關技術,為自己的職業發展做好準備。
10. 鴻蒙的開發板與其他開發板對比,優勢在哪里?
答:目前我們能拿到的智能家居套件Hi3861只是首批支持鴻蒙OS的開發板之一,與其它開發板相比,功能相對單一,優勢不明顯。
11. 用鴻蒙做嵌入式開發和手機開發,開發框架和環境都是一樣的嗎?
答:鴻蒙OS嵌入式開發(設備開發)涉及到具體的交叉編譯環境,在代碼編輯和編譯上有較大的可選擇性;而鴻蒙手機開發(富應用開發)有官方提供的完整開發框架和開發環境(唯一性)。另外,語言上也不同,鴻蒙嵌入式開發主要是C語言,手機開發主要是Java/JS語言。
12. 鴻蒙 Liteos 和 ucos II 有可比性嗎?
答:兩者可以說是同類型的操作系統內核,只是鴻蒙 LiteOS 更針對物聯網領域,面向低功耗硬件進行數據采集;ucos ii 更在意實時性,是一種為實時系統而打造的操作系統內核。
13. 沒有Stm32基礎,但是有51單片機和Linux應用開發基礎學鴻蒙怎么樣?
答:有任意單片機基礎和Linux應用開發基礎,學習鴻蒙就很輕松了,趕緊上手吧。
14. 能否有針對鴻蒙內核級的講解,想系統學習一下鴻蒙應用和底層。
答:我個人有閱讀學習鴻蒙內核代碼的計劃,如果大家需要,我也會把學習筆記分享出來。
15. 華為鴻蒙開發和其他stm32或者Linux開發相比具有哪些優勢?有什么特別的亮點嗎?從技術上應該沒有,目前來看就是以前的嵌入式開發一樣的步驟不同的工具,是不是從其他非技術角度,有什么優勢?
答:如果單純的看Hi3861和之上的系統,那么就只是單片機加嵌入式操作系統,無任何亮點。然而,鴻蒙卻不只是這一點點東西!鴻蒙所瞄準的是物聯網這片藍海,所以在打造的是一個技術生態鏈,比如:數采集可能是Hi3861,采集到的數據匯總到控制中心(鴻蒙富應用),分析處理后自動做出控制決策,并通過鴻蒙手機應用通知用戶。鴻蒙的目標就是無縫銜接這個過程,包括:系統開發過程(涉及各種類型的終端),數據傳輸過程(涉及統一的協議標準),等等。
鴻蒙并不是在某個單獨的技術點上做創新和改進,而是站在更高的角度,打造物聯網開發所涉及的整個技術棧。
16. 請問如何區分button press 和button release?
答:詳見我的另一篇帖子:《實現按鍵“按下事件”和“釋放事件”的通用框架》,這個框架我會繼續打造和維護。
17. 鴻蒙現在有2個開發方向,分別是設備開發和應用開發,不知道如何選擇?老師說下各自優缺點,我們思考下。
答:設備開發所需的關鍵技術為:C/C++,交叉編譯構建(make/cmake/gn),多任務(多線程)編程,網絡編程。
應用開發所需的關鍵技術為:Java/JS,XML,界面構建(GUI),網絡編程,數據庫編程。
當然,上述列出的關鍵技術不是絕對的,而是相對使用頻率較高的技術。
在我看來設備開發和應用開發沒有本質區別,只是場景不同而已。如果非要選擇,那么可以根據自身目前已經掌握的技術“就近選擇”。
物聯網應用是一個完整的系統,同時涉及設備開發和應用開發,從系統角度看,兩者同等重要。
18. 按鍵事件中也可以收集到邊沿變化么,還是變化之后被捕獲到呢?
答:物理按鍵上的動作(如:按下事件)會導致對應引腳上電平的變化,變化的過程就是邊沿,邊沿的出現會產生外部中斷,內核接收到這個中斷后立即調用中斷服務程序(ISR),并在ISR中調用注冊的事件處理函數。從這個過程可以看出,邊沿出現后事件處理函數被調用。
想了解更多內容,請訪問:
51CTO和華為官方合作共建的鴻蒙技術社區
https://harmonyos.51cto.com