性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

一口Linux
認(rèn)證:優(yōu)質(zhì)創(chuàng)作者
所在專題目錄 查看專題
100ASK_IMX6ULL arm板子如何顯示圖片、漢字、劃線、背景色
在100ASK_IMX6ULL arm板子上移植個(gè)刷卡器
apt 和 apt-get 之間有什么區(qū)別?
如何搭建鴻蒙開(kāi)發(fā)環(huán)境!手把手教你!
鴻蒙-南向輕內(nèi)核開(kāi)發(fā)實(shí)戰(zhàn)系列(一)基于小熊派鴻蒙季開(kāi)發(fā)板環(huán)境搭建
posix是什么都不知道,還好意思說(shuō)你懂Linux?
作者動(dòng)態(tài) 更多
某通信公司筆試題,你會(huì)做幾道?
3天前
10種初學(xué)者最常見(jiàn)的c語(yǔ)言段錯(cuò)誤實(shí)例及原因分析
05-30 12:13
linux系統(tǒng)監(jiān)控工具小神器:btop
05-17 17:37
有沒(méi)有權(quán)貴開(kāi)后門(mén)讓子女做軟件開(kāi)發(fā)人員?
05-10 23:36
一文包你學(xué)會(huì)網(wǎng)絡(luò)數(shù)據(jù)抓包
03-15 09:26

鴻蒙-南向輕內(nèi)核開(kāi)發(fā)實(shí)戰(zhàn)系列(一)基于小熊派鴻蒙季開(kāi)發(fā)板環(huán)境搭建

參考文章

《鴻蒙2.0都來(lái)了,快搭個(gè)環(huán)境玩起來(lái)吧!

一、前言

前一段時(shí)間,我寫(xiě)過(guò)一篇關(guān)于LiteOS-A開(kāi)發(fā)環(huán)境搭建的文章(實(shí)際上是將其作為獨(dú)立的RTOS來(lái)開(kāi)發(fā)的),今天正式講一講LiteOS作為鴻蒙內(nèi)核子系統(tǒng)該如何開(kāi)發(fā)。

對(duì)于HarmonyOS,開(kāi)發(fā)工作大致可以分為南向開(kāi)發(fā)(內(nèi)核、驅(qū)動(dòng))和北向開(kāi)發(fā)(App應(yīng)用)。我們主講南向開(kāi)發(fā)。在目前的鴻蒙2.0版本下,南向輕內(nèi)核開(kāi)發(fā)的資料相對(duì)更加完善,主要是針對(duì)LiteOS內(nèi)核。講到這里,能完整編譯到手機(jī)上運(yùn)行的鴻蒙鏡像,可能大家還要再等一等了(筆者也很期待)。

二、概述

為了幫大家理清楚鴻蒙開(kāi)發(fā)的套路,我們從頭再梳理一遍相關(guān)的脈絡(luò)。并為大家總結(jié)一些重點(diǎn)性的內(nèi)容。在介紹OpenHarmony特性前,需要大家先明確以下兩個(gè)基本概念:

子系統(tǒng)

OpenHarmony整體遵從分層設(shè)計(jì),從下向上依次為:內(nèi)核層、系統(tǒng)服務(wù)層、框架層和應(yīng)用層。系統(tǒng)功能按照“系統(tǒng) > 子系統(tǒng) > 組件”逐級(jí)展開(kāi)。子系統(tǒng)是一個(gè)邏輯概念,它具體由對(duì)應(yīng)的組件構(gòu)成。我們這一系列文章主講的南向輕內(nèi)核開(kāi)發(fā),就屬于內(nèi)核子系統(tǒng)的開(kāi)發(fā)。

組件

對(duì)子系統(tǒng)的進(jìn)一步拆分,可復(fù)用的軟件單元,它包含源碼、配置文件、資源文件和編譯腳本;能獨(dú)立構(gòu)建,以二進(jìn)制方式集成,具備獨(dú)立驗(yàn)證能力的二進(jìn)制單元。

1. 整體介紹

OpenHarmony是由開(kāi)放原子開(kāi)源基金會(huì)(OpenAtom Foundation)孵化及運(yùn)營(yíng)的開(kāi)源項(xiàng)目,目標(biāo)是面向全場(chǎng)景、全連接、全智能時(shí)代,基于開(kāi)源的方式,搭建一個(gè)智能終端設(shè)備操作系統(tǒng)的框架和平臺(tái),促進(jìn)萬(wàn)物互聯(lián)產(chǎn)業(yè)的繁榮發(fā)展。

重點(diǎn)一:開(kāi)放原子開(kāi)源基金會(huì)是由國(guó)家主導(dǎo)的。

2. 技術(shù)架構(gòu)

OpenHarmony整體遵從分層設(shè)計(jì),從下向上依次為:內(nèi)核層、系統(tǒng)服務(wù)層、框架層和應(yīng)用層。系統(tǒng)功能按照“系統(tǒng) > 子系統(tǒng) > 組件”逐級(jí)展開(kāi),在多設(shè)備部署場(chǎng)景下,支持根據(jù)實(shí)際需求裁剪某些非必要的組件。OpenHarmony技術(shù)架構(gòu)如下所示:

在這里插入圖片描述

重點(diǎn)二:可裁剪,靈活性高,適應(yīng)碎片化復(fù)雜化的物聯(lián)網(wǎng)場(chǎng)景。

1) 內(nèi)核層

內(nèi)核子系統(tǒng):采用多內(nèi)核(Linux內(nèi)核或者LiteOS)設(shè)計(jì),支持針對(duì)不同資源受限設(shè)備選用適合的OS內(nèi)核。內(nèi)核抽象層(KAL,Kernel Abstract Layer)通過(guò)屏蔽多內(nèi)核差異,對(duì)上層提供基礎(chǔ)的內(nèi)核能力,包括進(jìn)程/線程管理、內(nèi)存管理、文件系統(tǒng)、網(wǎng)絡(luò)管理和外設(shè)管理等。

驅(qū)動(dòng)子系統(tǒng):驅(qū)動(dòng)框架(HDF)是系統(tǒng)硬件生態(tài)開(kāi)放的基礎(chǔ),提供統(tǒng)一外設(shè)訪問(wèn)能力和驅(qū)動(dòng)開(kāi)發(fā)、管理框架。

重點(diǎn)三:內(nèi)核多樣化,適配不同資源的硬件平臺(tái),HDF框架,提供統(tǒng)一的生態(tài)接口。

系統(tǒng)服務(wù)層

系統(tǒng)服務(wù)層是OpenHarmony的核心能力集合,通過(guò)框架層對(duì)應(yīng)用程序提供服務(wù)。該層包含以下幾個(gè)部分:

系統(tǒng)基本能力子系統(tǒng)集:為分布式應(yīng)用在多設(shè)備上的運(yùn)行、調(diào)度、遷移等操作提供了基礎(chǔ)能力,由分布式軟總線、分布式數(shù)據(jù)管理、分布式任務(wù)調(diào)度、公共基礎(chǔ)庫(kù)、多模輸入、圖形、安全、AI等子系統(tǒng)組成。

基礎(chǔ)軟件服務(wù)子系統(tǒng)集:提供公共的、通用的軟件服務(wù),由事件通知、電話、多媒體、DFX(Design For X) 等子系統(tǒng)組成。

增強(qiáng)軟件服務(wù)子系統(tǒng)集:提供針對(duì)不同設(shè)備的、差異化的能力增強(qiáng)型軟件服務(wù),由智慧屏專有業(yè)務(wù)、穿戴專有業(yè)務(wù)、IoT專有業(yè)務(wù)等子系統(tǒng)組成。

硬件服務(wù)子系統(tǒng)集:提供硬件服務(wù),由位置服務(wù)、生物特征識(shí)別、穿戴專有硬件服務(wù)、IoT專有硬件服務(wù)等子系統(tǒng)組成。

根據(jù)不同設(shè)備形態(tài)的部署環(huán)境,基礎(chǔ)軟件服務(wù)子系統(tǒng)集、增強(qiáng)軟件服務(wù)子系統(tǒng)集、硬件服務(wù)子系統(tǒng)集內(nèi)部可以按子系統(tǒng)粒度裁剪,每個(gè)子系統(tǒng)內(nèi)部又可以按功能粒度裁剪。

重點(diǎn)四:深入細(xì)分到功能粒度級(jí)的可裁剪性。

2) 框架層

框架層為應(yīng)用開(kāi)發(fā)提供了C/C++/JS等多語(yǔ)言的用戶程序框架和Ability框架,適用于JS語(yǔ)言的JS UI框架,以及各種軟硬件服務(wù)對(duì)外開(kāi)放的多語(yǔ)言框架API。根據(jù)系統(tǒng)的組件化裁剪程度,設(shè)備支持的API也會(huì)有所不同。

重點(diǎn)五:多語(yǔ)言框架、Ability框架、UI框架的豐富框架。

3) 應(yīng)用層

應(yīng)用層包括系統(tǒng)應(yīng)用和第三方非系統(tǒng)應(yīng)用。應(yīng)用由一個(gè)或多個(gè)FA(Feature Ability)或PA(Particle Ability)組成。其中,F(xiàn)A有UI界面,提供與用戶交互的能力;而PA無(wú)UI界面,提供后臺(tái)運(yùn)行任務(wù)的能力以及統(tǒng)一的數(shù)據(jù)訪問(wèn)抽象?;贔A/PA開(kāi)發(fā)的應(yīng)用,能夠?qū)崿F(xiàn)特定的業(yè)務(wù)功能,支持跨設(shè)備調(diào)度與分發(fā),為用戶提供一致、高效的應(yīng)用體驗(yàn)。

重點(diǎn)六:FA和PA對(duì)應(yīng)用進(jìn)行抽象和歸類,以提供跨設(shè)備調(diào)度與分發(fā)的能力。

4) 技術(shù)特性

總結(jié)起來(lái),主要有以下特點(diǎn):

  • 硬件互助,資源共享
  • 一次開(kāi)發(fā),多端部署
  • 統(tǒng)一OS,彈性部署

那么實(shí)現(xiàn)出來(lái)的效果,就和鴻蒙2.0發(fā)布會(huì)上面展現(xiàn)的差不多:更低的延時(shí)、終端更智能化且更加貼合自身的場(chǎng)景、每個(gè)設(shè)備的自身優(yōu)勢(shì)被無(wú)限放大、數(shù)據(jù)的可流轉(zhuǎn)性。

3. 系統(tǒng)特征

OpenHarmony支持如下幾種系統(tǒng)類型:

1) 輕量系統(tǒng)(mini system)

面向MCU類處理器例如Arm Cortex-M、RISC-V 32位的設(shè)備,硬件資源極其有限,支持的設(shè)備最小內(nèi)存為128KiB,可以提供多種輕量級(jí)網(wǎng)絡(luò)協(xié)議,輕量級(jí)的圖形框架,以及豐富的IOT總線讀寫(xiě)部件等。可支撐的產(chǎn)品如智能家居領(lǐng)域的連接類模組、傳感器設(shè)備、穿戴類設(shè)備等。

2) 小型系統(tǒng)(small system)

面向應(yīng)用處理器例如Arm Cortex-A的設(shè)備,支持的設(shè)備最小內(nèi)存為1MiB,可以提供更高的安全能力、標(biāo)準(zhǔn)的圖形框架、視頻編解碼的多媒體能力??芍蔚漠a(chǎn)品如智能家居領(lǐng)域的IP Camera、電子貓眼、路由器以及智慧出行域的行車(chē)記錄儀等。

3) 標(biāo)準(zhǔn)系統(tǒng)(standard system)

面向應(yīng)用處理器例如Arm Cortex-A的設(shè)備,支持的設(shè)備最小內(nèi)存為128MiB,可以提供增強(qiáng)的交互能力、3D GPU以及硬件合成能力、更多控件以及動(dòng)效更豐富的圖形能力、完整的應(yīng)用框架??芍蔚漠a(chǎn)品如高端的冰箱顯示屏。

小結(jié)

目前鴻蒙OS的代碼倉(cāng)庫(kù)主要發(fā)布在gitee上的開(kāi)放原子開(kāi)源基金會(huì)中。其他平臺(tái)的代碼,是作為分發(fā)編譯源碼使用的,比如hpm倉(cāng)庫(kù),下文我們將詳細(xì)講述。

你可以點(diǎn)擊下面的鏈接,跳轉(zhuǎn)到鴻蒙的代碼倉(cāng)庫(kù),閱讀核心源代碼。

開(kāi)放原子開(kāi)源基金會(huì)Gitee倉(cāng)庫(kù)

https://gitee.com/openharmony

三、搭建開(kāi)發(fā)環(huán)境

對(duì)于LiteOS內(nèi)核開(kāi)發(fā),官方給出了非常詳細(xì)的教程,但是內(nèi)容很多,且平臺(tái)復(fù)雜,工具鏈較長(zhǎng)。在這里我會(huì)為大家做一下梳理,然后提供每一種開(kāi)發(fā)環(huán)境的官方教程鏈接,同時(shí)提供完整的編譯鏈工具下載地址。在最后,我會(huì)采用小熊派·鴻蒙季開(kāi)發(fā)板,搭建一個(gè)完整的開(kāi)發(fā)環(huán)境,供大家參考。

1. 源碼獲取

一共有三種方法,我簡(jiǎn)要列出來(lái)給大家看看。你可以通過(guò)下面的小結(jié),跳轉(zhuǎn)到官方給出的教程,進(jìn)行詳細(xì)閱讀。

1) 鏡像站下載

從鏡像站點(diǎn)下載歸檔后的發(fā)行版壓縮文件。如果要獲取舊版本的源碼,也可通過(guò)此方式獲取。

示例:LTS版本源碼 -Hi3861(二進(jìn)制 )

https://repo.huaweicloud.com/harmonyos/os/1.1.0/ipcamera_hi3518ev300-1.1.0.tar.gz

示例:編譯工具鏈https://repo.huaweicloud.com/harmonyos/os/2.0/tool_chain/

2) HPM包拉取

通過(guò)HPM包管理器獲取。在HPM網(wǎng)站,查找滿足需求的開(kāi)源發(fā)行版,直接下載(或者定制后下載),再通過(guò)hpm-cli命令工具將所需的組件及工具鏈下載、安裝到本地。

需要安裝的工具有:

工具名稱用途Node.js提供前置環(huán)境hpm獲取源碼的工具

下文將采用小熊派開(kāi)發(fā)板來(lái)具體演示HPM包管理器獲取源碼,這里暫且不表。

3) 代碼倉(cāng)庫(kù)克隆

從代碼倉(cāng)庫(kù)獲取。通過(guò)repo或git工具從代碼倉(cāng)庫(kù)中下載。

首先注冊(cè)碼云gitee賬號(hào)。再注冊(cè)碼云SSH公鑰,請(qǐng)參考碼云幫助中心。https://gitee.com/help/articles/4181

安裝git客戶端和git-lfs并配置用戶信息。

git config --global user.name "yourname"git config --global user.email "your-email-address"git config --global credential.helper store

安裝碼云repo工具,可以執(zhí)行如下命令。

curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repochmod a+x /usr/local/bin/repopip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

4)小結(jié)

關(guān)于獲取鴻蒙源碼,為了便于后續(xù)開(kāi)發(fā),選擇一種適合自己的方法最好。

三種獲取源碼的官方教程鏈接https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/%E6%BA%90%E7%A0%81%E8%8E%B7%E5%8F%96.md

2. 工具鏈獲取

官方提供了兩個(gè)開(kāi)發(fā)環(huán)境,兩個(gè)開(kāi)發(fā)工具。開(kāi)發(fā)環(huán)境主要指:基于HPM的Docker環(huán)境和獨(dú)立的Docker環(huán)境;開(kāi)發(fā)工具主要指:設(shè)備開(kāi)發(fā)工具(南向)和應(yīng)用開(kāi)發(fā)工具(北向)。

基于HPM的Docker環(huán)境:適用于使用HPM工具進(jìn)行發(fā)行版編譯的場(chǎng)景。

基于獨(dú)立Docker環(huán)境:適用于直接基于Ubuntu、Windows操作系統(tǒng)平臺(tái)進(jìn)行版本編譯的場(chǎng)景。

設(shè)備開(kāi)發(fā)工具(HUAWEI DevEco Device Tool),支持linux 和windows

點(diǎn)擊我跳轉(zhuǎn)獲取工具鏈的詳細(xì)教程

https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/%E8%8E%B7%E5%8F%96%E5%B7%A5%E5%85%B7.md#section2452141120244

除了官方介紹的,也可以自行搭建開(kāi)發(fā)環(huán)境,具體需要安裝如下工具:

Linux部分:

Ubuntu16.04及以上64位系統(tǒng)版本,Shell使用bash

開(kāi)發(fā)工具用途gcc_riscv32交叉編譯工具Python3.7+(64 bit)編譯構(gòu)建工具SCons3.0.4+編譯構(gòu)建工具bash命令處理器build-essential編譯依賴的基礎(chǔ)軟件包gn產(chǎn)生ninja編譯腳本ninja執(zhí)行ninja編譯腳本Visual Studio Code(可選)代碼編輯器

其中 gn 和ninja 由于在國(guó)外,比較難安裝,可能需要翻墻。

Windows部分

64位Windows工作臺(tái)(主機(jī)電腦)

開(kāi)發(fā)工具用途Visual Studio Code(可選)代碼編輯器MobaXterm、PuTTY(可替換)提供SSH鏈接和串口連接Hiburn代碼燒錄工具VMware(可選)虛擬機(jī)

但是大家放心,我已經(jīng)將所有的工具鏈都打包好了,可以直接下載,后臺(tái)回復(fù)鴻蒙OS,即可獲得完整的工具包,其中我提供的linux鏡像包含完整的工具鏈,可以直接使用。

四、Demo演示

1. 部署Linux環(huán)境

1.解壓百度云下載的HarmonyOSUbuntu18.4鏡像OVF.zip文件到某個(gè)目錄,建議不要放到在C盤(pán)。

2.打開(kāi)VMware Workstation工具

3.選擇第1步解壓的Ubuntu18.4鏡像OVF文件夾中,點(diǎn)擊打開(kāi)

4.導(dǎo)入鏡像到本地磁盤(pán)(選擇一個(gè)磁盤(pán)空間大小≥ 10G的盤(pán)),點(diǎn)擊導(dǎo)入。

5.點(diǎn)擊開(kāi)啟此虛擬機(jī),來(lái)開(kāi)啟虛擬機(jī)電源

6.此時(shí)虛擬機(jī)進(jìn)入登錄界面,點(diǎn)擊HarmonyOS

7.輸入密碼:bearpi,然后點(diǎn)擊登錄

8.進(jìn)入桌面后,點(diǎn)擊桌面空白處右鍵,點(diǎn)擊打開(kāi)終端(E)

9.在終端中輸入ifconfig,然后點(diǎn)擊回車(chē),除lo外,另外一個(gè)就是你的網(wǎng)卡信息,記錄你獲取到的IP地址。

10.最小化VMware Workstation,回到Windows桌面上。

注意:如果連不上網(wǎng)絡(luò)(如果主機(jī)網(wǎng)絡(luò)需要撥號(hào),如校園網(wǎng)絡(luò)、ADSL撥號(hào)等)在VMware Workstation中,點(diǎn)擊虛擬機(jī)>> 設(shè)置

然后在網(wǎng)絡(luò)適配器中,改成NAT 模式,點(diǎn)擊確定

然后再回復(fù)步驟8。

2. 部署windows環(huán)境

1.打開(kāi)MobaXterm工具,并依次點(diǎn)擊:Session,SSH 按鈕。輸入連接信息,遠(yuǎn)程地址,并點(diǎn)擊OK

2.輸入賬號(hào):bearpi,點(diǎn)擊回車(chē)

3.輸入密碼:bearpi,注意,輸入密碼的時(shí)候屏幕不會(huì)顯示,輸完之后點(diǎn)擊回車(chē)

4.在彈出的界面上,點(diǎn)擊Yes保存賬號(hào)信息,以免下次輸入

3. 映射linux文件到window

這里可以使用VMWare自帶的虛擬磁盤(pán)映射服務(wù),也可以使用RaiDrive。

1.安裝RaiDrive軟件,默認(rèn)安裝即可

2.添加鏈接信息

SFTP://______ (這個(gè)輸入獲取到的IP地址),賬戶:賬號(hào)和密碼皆為 bearpi,其他默認(rèn),點(diǎn)擊確定

查看本地映射的ubuntu文件路徑

4. 獲取源碼

1.切換到MobaXterm

2.在MobaXterm中輸入以下內(nèi)容,并回車(chē):

cd /home/bearpi

3.在MobaXterm中輸入以下內(nèi)容,并回車(chē):

mkdir project && cd project

4.在MobaXterm中輸入以下內(nèi)容,并回車(chē):

hpm init -t default

5.在MobaXterm中輸入以下內(nèi)容,并回車(chē):

hpm i @bearpi/bearpi_hm_nano

等待1-3分鐘(根據(jù)不同網(wǎng)速),當(dāng)屏幕中出現(xiàn)Installed.意味著代碼獲取完成如果卡死不動(dòng)了,就ctrl+c 退出,重新輸入一遍并回車(chē)。

5. 編譯代碼

1.在MobaXterm中輸入以下內(nèi)容,并回車(chē):

hpm dist

等待直到屏幕出現(xiàn):BUILD SUCCESS字樣,說(shuō)明編譯成功。

2.查看編譯出的固件位置

當(dāng)編譯完后,在Windows中可以直接查看到最終編譯的固件,具體路徑在:

6. 連接開(kāi)發(fā)板

1.通過(guò)TypeC數(shù)據(jù)線,把電腦與BearPi-HM Nano連接。

2.安裝CH340驅(qū)動(dòng)。

下載地址:http://www.wch.cn/search?q=ch340g&t=downloads

一般電腦自帶CH340的驅(qū)動(dòng)。

3.關(guān)閉虛擬機(jī)捕獲USB功能。(有很多開(kāi)發(fā)者都是因?yàn)樘摂M機(jī)捕獲了USB設(shè)備,導(dǎo)致本機(jī)Windows電腦看不到串口)

如果上面操作不行,直接關(guān)閉VMware Workstation,選擇掛起,然后再重新插拔USB。

7. 燒錄程序

1.在Windows打開(kāi)Hiburn工具,并點(diǎn)擊Refresh,會(huì)檢索出來(lái)COM號(hào),如果你的電腦連接了多個(gè)串口,需要你在設(shè)備管理器中查看具體的串口號(hào)是哪一個(gè)。

2.然后點(diǎn)擊Setting,并選擇 Com settings,

在Com settings中設(shè)置Baud為:921600,點(diǎn)擊確定

3.點(diǎn)擊 Hiburn工具中的Select file按鈕,在彈出的文件框中,選擇對(duì)應(yīng)的路徑,并選中:Hi3861_wifiiot_app_allinone.bin 文件。

4.勾選Auto burn復(fù)選框,然后點(diǎn)擊Connect

此時(shí)Connect按鈕變成Disconnect,等待下載,這一步要有耐心,不要著急。

5.復(fù)位開(kāi)發(fā)板RESET按鍵,開(kāi)始下載程序

直到出現(xiàn)Execution Successful字樣,程序下載完成。

下載完后,點(diǎn)擊Disconnect按鈕,便于后面調(diào)測(cè)使用。

8. 查看串口打印日志

1.打開(kāi)MobaXterm,

點(diǎn)擊:Session、Serial按鈕;設(shè)置Seral port為 Hiburn 同一個(gè)串口;設(shè)置Speed為 115200;點(diǎn)擊OK。

2.如果顯示Unable to open...等字樣,需要看一下Hiburn的鏈接狀態(tài)是否為關(guān)閉。

3.復(fù)位開(kāi)發(fā)板,此時(shí)COM打印出對(duì)應(yīng)日志信息。

4.開(kāi)發(fā)板現(xiàn)象:

9. 分析代碼

1.在windows下打開(kāi)vscode

注意:看個(gè)人需要,再?zèng)Q定是否安裝官方提供的HUAWEI DevEco Device Tool,因?yàn)檫@個(gè)插件比較大,VsCode啟動(dòng)以后,要花一定的時(shí)間加載它。所以這里我沒(méi)有裝,只是把vscode當(dāng)作一個(gè)代碼編輯器。

2.我們看內(nèi)核啟動(dòng)后的第一個(gè)入口函數(shù)。

代碼路徑如下:

vendor\hisi\hi3861\hi3861\app\wifiiot_app\src\app_main.c

app_main函數(shù),首先會(huì)打SDK的版本號(hào),在完成外設(shè)的基本初始化,最后調(diào)用HOS_SystemInit函數(shù)進(jìn)行鴻蒙系統(tǒng)的初始化。

3.按下F12跳轉(zhuǎn)到HOS_SystemInit函數(shù),具體代碼路徑如下:

base\startup\services\bootstrap_lite\source\system_init.c

同時(shí),這個(gè)函數(shù)是一個(gè)虛函數(shù),用戶可以根據(jù)自己需要來(lái)初始化鴻蒙系統(tǒng)。如果用戶不定義此函數(shù),那么將運(yùn)行系統(tǒng)默認(rèn)的函數(shù)(即原函數(shù)),原函數(shù)具體代碼和截圖如下:

void HOS_SystemInit(void){    MODULE_INIT(bsp);  // 初始化BSP板極支持包    MODULE_INIT(device);  // 初始化系統(tǒng)設(shè)備    MODULE_INIT(core);  // 初始化系統(tǒng)核心    SYS_INIT(service);  // 初始化系統(tǒng)服務(wù)    SYS_INIT(feature);  // 初始化系統(tǒng)特征段    MODULE_INIT(run);  //調(diào)用所有 RUN段的代碼    SAMGR_Bootstrap();}

這個(gè)函數(shù),完成了系統(tǒng)的基本初始化,并指向我們業(yè)務(wù)邏輯代碼。

10. 小結(jié)

總的來(lái)說(shuō),構(gòu)建這樣一個(gè)環(huán)境,還是相對(duì)比較繁瑣的。但是鴻蒙能夠在短時(shí)間內(nèi)做到這種程度,是非常值得我們肯定的。

再補(bǔ)充一些東西:

1.鴻蒙使用Ninja來(lái)組織代碼進(jìn)行編譯,相比Makefile+Kconfig 的形式,要快很多,這也是Ninja誕生的意義。

2.南向開(kāi)發(fā),相比北向開(kāi)發(fā),更加碎片化,也更加復(fù)雜和繁瑣。對(duì)比一下工具鏈就知道了,那么長(zhǎng)....

3.官方給出了比較詳細(xì)的教程,但是方法太多,結(jié)構(gòu)太散,需要自己仔細(xì)閱讀和甄別。本文相當(dāng)于幫大家梳理了一番,具體細(xì)節(jié)還得個(gè)人好好把握。

4.配置開(kāi)發(fā)環(huán)境,是一項(xiàng)體力活,技術(shù)含量不大,但是特別磨人,不過(guò)邁出了這一步,接下來(lái)的就輕松啦!

文中開(kāi)發(fā)環(huán)境,關(guān)注:一口Linux,后臺(tái)回復(fù):鴻蒙,既可以獲?。?/p>

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺(jué)得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 3
收藏 3
關(guān)注 181
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧