自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hi3861_WiFi IoT工程的一點(diǎn)理解

系統(tǒng)
文章由鴻蒙社區(qū)產(chǎn)出,想要了解更多內(nèi)容請前往:51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)https://harmonyos.51cto.com

[[395942]]

想了解更多內(nèi)容,請?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

目錄

  • 1. 關(guān)于工程本身
  • 2. ohos_bundles
  • 3.工程的目錄結(jié)構(gòu)

更新記錄:

1. 關(guān)于工程本身

老規(guī)矩,從0開始。

在Linux環(huán)境下的DevEco IDE下創(chuàng)建新工程“Hi3861_Wifiiot”,設(shè)置如下圖,點(diǎn)擊“創(chuàng)建”,會在Projs目錄生成默認(rèn)的工程。

全部文件都查看一遍,看上去只有 bundle.json 有點(diǎn)有用信息:

  1.  
  2.   "name""default"
  3.  
  4.   "version""1.0.0"
  5.  
  6.   "description""This is a default bundle"
  7.  
  8.   "publishAs""source"
  9.  
  10.   "scripts": { 
  11.  
  12.     "build""make" 
  13.  
  14.   }, 
  15.  
  16.   "dirs": { 
  17.  
  18.     "headers": [ 
  19.  
  20.       "headers/*.h" 
  21.  
  22.     ], 
  23.  
  24.     "src": [ 
  25.  
  26.       "src/*.c" 
  27.  
  28.     ], 
  29.  
  30.     ".""Makefile" 
  31.  
  32.   }, 
  33.  
  34.   ........[省略] 
  35.  
  36.   "dependencies": {}, 
  37.  
  38.   "devDependencies": {} 
  39.  

按照 README.md的提示,執(zhí)行“hpm build”,生成了 bin/hello 和 bundle-lock.json,執(zhí)行“./bin/hello”打印“Hello world”,而bundle-lock.json則是空的。

至此,看上去工程跟鴻蒙系統(tǒng)/工程沒多少關(guān)系,其他文件都可以刪掉,唯獨(dú)“bundle.json”不能刪除,要是刪除這個(gè)文件的話,下面這步就會 install 失敗。

在DevEco IDE的HPM標(biāo)簽下找到“@ohos/wifi_iot”,選擇“Install to project”/“Hi3861_Wifiiot”。

安裝完成后,就在Hi3861_Wifiiot目錄下得到了

看上去很干凈的目錄,暫不用IDE一鍵編譯,先試試命令行下的“hpm build”

  1. lkz@ubuntu:~/Work/Projs/Hi3861_Wifiiot$ hpm build 
  2.  
  3. [WARN] -  The license of @ohos/gn is gn LICENSE. Notice open-source risks. 
  4.  
  5. [WARN] -  The license of @ohos/gcc_riscv32 is GPL V2. Notice open-source risks. 
  6.  
  7. [WARN] -  The license of @ohos/wifi_iot is NA. Notice open-source risks. 
  8.  
  9. Building: default 
  10.  
  11. make: *** No targets specified and no makefile found.  Stop.  //可能是我刪掉了makefile的緣故 
  12.  
  13. Build error: Worker stopped with exit code 2 
  14.  
  15. Check error details by "/home/lkz/.hpm/log/debug/debug.2021-04-24-15-40-57.log" 
  16.  
  17.   
  18.  
  19. lkz@ubuntu:~/Work/Projs/Hi3861_Wifiiot$ ln -s build/lite/build.py build.py 
  20.  
  21. lkz@ubuntu:~/Work/Projs/Hi3861_Wifiiot$ python build.py wifiiot 
  22.  
  23. [197/197] STAMP obj/vendor/hisi/hi3861/hi3861/run_wifiiot_scons.stamp 
  24.  
  25. ohos wifiiot build success! 

out目錄下也有正常的輸出。

2. ohos_bundles

Hi3861_Wifiiot項(xiàng)目下,很明顯比鴻蒙系統(tǒng)完整代碼的目錄多了一個(gè)ohos_bundles文件夾和三個(gè)json文件,我也注意到在上一步的“Install to project”/“Hi3861_Wifiiot”時(shí),工程目錄下最先生成ohos_bundles目錄。

下面分別看看三個(gè)json文件和ohos_bundles目錄都有什么東西。

bundle.json

看上去比“Install to project”前,多了一點(diǎn)東西:

  1. "base": { 
  2.  
  3.        "name""@ohos/wifi_iot"
  4.  
  5.        "version""^1.0.3" 
  6.  
  7.    }, 

bundle-lock.json

看上去列出了本工程所有的組件共計(jì)24個(gè)壓縮包的下載地址和checksum,最后一個(gè)"@ohos/wifi_iot"還列出了這個(gè)組件依賴于上面的所有組件。

product.template.json

  1. "ohos_version""OpenHarmony 1.0"
  2.  
  3. "board""hi3861v100"
  4.  
  5. "kernel""liteos_riscv"
  6.  
  7. "compiler""gcc"
  8.  
  9. "subsystem": [], 
  10.  
  11. "vendor_adapter_dir""//vendor/hisi/hi3861/hi3861_adapter"
  12.  
  13. "third_party_dir""//vendor/hisi/hi3861/hi3861/third_party"

很明顯的信息。不過為什么要特別列出 "vendor_adapter_dir"?有什么特別的作用嗎?還不清楚。

ohos_bundles/@ohos/目錄

很明顯這是全工程24個(gè)組件的獨(dú)立目錄。

隨便進(jìn)入build看一下,熟悉的就不說了,看一下bundle.json:

  1.  
  2.     "name""@ohos/build"
  3.  
  4.     "version""1.0.1"
  5.  
  6.     "publishAs""code-segment"

"description": "編譯構(gòu)建提供了一個(gè)在GN與ninja基礎(chǔ)上的編譯構(gòu)建框架。

支持以下功能:構(gòu)建不同芯片平臺的產(chǎn)品。如:Hi3518EV300平臺的ipcamera產(chǎn)品,

Hi3516DV300平臺的ipcamera產(chǎn)品,Hi3861平臺的wifi模組產(chǎn)品。

構(gòu)建HPM包管理配置生成的自定義產(chǎn)品。",

  1. "scripts": { 
  2.  
  3.       "install""DEST_PATH=${DEP_BUNDLE_BASE}/build &&mkdir -p $DEST_PATH && cp -r ./* $DEST_PATH" 
  4.  
  5.   }, 
  6.  
  7.   "keywords": [ 
  8.  
  9.       "build" 
  10.  
  11.   ], 
  12.  
  13.   "license""Apache V2"
  14.  
  15.   "repository"""
  16.  
  17.   "homepage"""
  18.  
  19.   "tags": [ 
  20.  
  21.       "build" 
  22.  
  23.   ], 
  24.  
  25.   "ohos": { 
  26.  
  27.       "os""1.0.0"
  28.  
  29.       "kernel""liteos-a,liteos-m"
  30.  
  31.       "board""hi3516,hi3518,hi3861" 
  32.  
  33.   } 

看上去都是很直白的,就“scripts”這個(gè),看上去就是要執(zhí)行腳本命令。

DEP_BUNDLE_BASE應(yīng)該是部署bundle的base目錄,也就是項(xiàng)目Hi3861_Wifiiot目錄本身。

在Hi3861_Wifiiot/build目錄下遞歸創(chuàng)建子目錄,把當(dāng)前目錄下的所有東西全部遞歸拷貝到Hi3861_Wifiiot/build目錄下。

所以Hi3861_Wifiiot/build目錄就是 Hi3861_Wifiiot/ohos_bundles/@ohos/build 目錄的拷貝。

類似的,其他組件基本上也都是這么個(gè)情況,至于它們分別拷貝到代碼根目錄下的什么地方,請自己去仔細(xì)查看bundle.json進(jìn)行梳理。

不過三個(gè)組件有點(diǎn)例外:gcc_riscv32、gn、ninja。這三個(gè)是屬于構(gòu)建編譯系統(tǒng)的,他們的bundle.json的共同點(diǎn)都是去執(zhí)行scripts目錄下的install.sh腳本,先去倉庫地址下載壓縮包,然后解壓到同目錄下。

前面提到“@ohos/wifi_iot”是依賴于其余23個(gè)組件的,就必須要仔細(xì)看一下它的bundle.json,果然:

  1. "scripts": { 
  2.  
  3.    "dist": "export PATH=$PATH:${DEP_OHOS_gcc_riscv32}/gcc_riscv32/bin: ${DEP_OHOS_gn}/gn:${DEP_OHOS_ninja}/ninja  
  4.  
  5.          && hpm run parse && hpm run select && hpm run connect && hpm run compile", 
  6.  
  7.          "parse""node ./dist_scripts/parse_platform_hpm.js hi3861v100_liteos_riscv"
  8.  
  9.          "select""node ./dist_scripts/select_product.js"
  10.  
  11.          "connect""node ./dist_scripts/connect_subsystem.js wifiiot"
  12.  
  13.          "compile": "ln -sf ${DEP_BUNDLE_BASE}/build/lite/build.py ${DEP_BUNDLE_BASE}/build.py && 
  14.  
  15.                             cd ${DEP_BUNDLE_BASE} &&python ${DEP_BUNDLE_BASE}/build.py wifiiot", 
  16.  
  17.          "install""cp product.template.json ${DEP_BUNDLE_BASE}"
  18.  
  19.          "eco""echo $target" 
  20.  
  21.  }, 

先把三個(gè)構(gòu)建編譯工具所在目錄的bin添加到環(huán)境變量中,再執(zhí)行parse、select、connect、compile命令,前三個(gè)命令的腳本都在當(dāng)前目錄的dist_scripts內(nèi),而compile命令則是在代碼根目錄下先創(chuàng)建build.py的軟鏈接,再切換到根目錄下執(zhí)行python build.py wifiiot開始構(gòu)建和編譯。根據(jù)《鴻蒙系統(tǒng)的編譯流程及分析》一文中提到的Gn+Ninja的工作原理和步驟,會先去把它所依賴的23個(gè)組件都編譯好,最終生成用于燒錄開發(fā)板的bin文件。

這就很明白了。

3.工程的目錄結(jié)構(gòu)

我在《鴻蒙系統(tǒng)的編譯流程及分析》(Link: https://harmonyos.51cto.com/posts/4070)一文中大致整理了一下鴻蒙系統(tǒng)的build、out目錄結(jié)構(gòu),整個(gè)鴻蒙系統(tǒng)的目錄結(jié)構(gòu)太復(fù)雜了,我的理解還不到位,沒法整理出來。不過這個(gè)Hi3861_Wifiiot工程,是經(jīng)過hpm裁剪了的,總共才24個(gè)組件,內(nèi)核也簡單了很多,再加上這段時(shí)間我調(diào)試Hi3861的開發(fā)板,對工程內(nèi)文件/代碼有了一點(diǎn)點(diǎn)了解,也到了做一次整理的時(shí)候了,所以我又整理出了下面這個(gè)表格。粗淺的理解,希望能對大家有所幫助,更詳細(xì)的信息,還是需要各位自己去看README和讀代碼,能親自在開發(fā)板上調(diào)試效果會更好。

想了解更多內(nèi)容,請?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-04-29 09:52:25

鴻蒙HarmonyOS應(yīng)用

2021-04-30 09:43:27

鴻蒙HarmonyOS應(yīng)用

2020-10-16 09:50:37

Hi3861WiFi熱點(diǎn)

2021-12-31 15:07:00

鴻蒙HarmonyOS應(yīng)用

2014-09-17 10:30:25

代碼

2015-11-02 09:43:25

ASP.NET異步編程

2021-02-02 15:52:17

鴻蒙HarmonyOS應(yīng)用開發(fā)

2023-05-26 16:07:14

Hi3861Wifi模塊

2009-09-16 10:48:31

PHP正則表達(dá)式

2020-11-23 13:09:42

HI3861

2020-11-03 11:39:22

wifi小車

2010-05-20 15:29:43

優(yōu)化IIS

2020-10-30 09:41:44

鴻蒙Hi3861WiFi小車

2022-09-06 15:25:22

Wifi設(shè)備開發(fā)

2021-06-25 15:32:13

鴻蒙HarmonyOS應(yīng)用

2009-04-13 11:50:14

經(jīng)驗(yàn)交流職業(yè)分析面試

2022-03-15 15:00:59

Hi3861Pin接口鴻蒙

2009-07-09 15:09:05

JDK卸載

2012-03-27 08:49:19

Json

2009-09-14 19:44:27

LINQ To SQL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號