成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

鴻蒙輕內核Kconfig使用筆記-進階

系統
本文在前文的基礎上,再介紹下hb set、Makefile和kconfig的關系,然后介紹下如何使用Kconfig圖形化配置芯片、設備和產品方案。

[[442379]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

在《鴻蒙輕內核Kconfig使用筆記》一文介紹了Kconfig的基礎知識,和鴻蒙輕內核的圖形化配置。本文繼續介紹些進階的使用方法。本文中所涉及的源碼,均可以在開源站點https://gitee.com/openharmony/kernel_liteos_m 獲取,涉及開發板時以fnlink v200zr為例, 芯片開發板相關工程路徑如下:

  • https://gitee.com/openharmony/vendor_bestechnic
  • https://gitee.com/openharmony/device_soc_bestechnic
  • https://gitee.com/openharmony/device_board_fnlink

本文在前文的基礎上,再介紹下hb set、Makefile和kconfig的關系,然后介紹下如何使用Kconfig圖形化配置芯片、設備和產品方案。

1、 hb set、Makefile和kconfig的關系

我們知道在make menuconfig 之前,必須使用hb set設置產品解決方案,下面看下具體是如何做到的。

在kernel\liteos_m\Makefile文件中,有如下makefile片段。⑴處使用makefile foreach命令和shell sed命令循環處理hb set輸出的每一行,把“key:value”格式去掉多余的[OHOS INFO]字符,把空格轉換為下劃線,即轉換的格式為“key=value”,然后轉換為makefile的變量形式。hb env的輸出、shell命令的輸出見下文。

  1. ohos_device_path=/home/zhushy/openharmony/device/board/fnlink/v200zr/liteos_m 

⑵處判斷解析hb set獲取的ohos_kernel內核是否等于liteos_m,如果不等于,則說明未使用hb set設置產品解決解決方案,或者設置的不是liteos_m內核。設置liteos_a\linux內核時,不能在kernel\liteos_m目錄下執行make menuconfig。除了ohos_kernel,生成的變量還有ohos_product、ohos_product_path、ohos_device_path、ohos_device_company等等。

⑶處的makefile片段表明,makefile還有make help里面沒有提到的參數用法。可以使用make PRODUCT_PATH=XX_Device_Path_XXX等命令來替代使用hb set設置的產品解決方案對應的設備路徑。⑷處將這些設置導出為環境變量。在kernel\liteos_m\Kconfig文件中會使用這些環境變量。

  1.   ohos_kernel ?= liteos_m 
  2. ⑴  $(foreach line,$(shell hb env | sed 's/\[OHOS INFO\]/ohos/g;s/ /_/g;s/:_/=/g' || true),$(eval $(line))) 
  3. ⑵  ifneq ($(ohos_kernel),liteos_m) 
  4.     $(error The selected product ($(ohos_product)) is not a liteos_m kernel type product) 
  5.     endif 
  6.  
  7. ⑶  ifeq ($(PRODUCT_PATH),) 
  8.     PRODUCT_PATH:=$(ohos_product_path) 
  9.     endif 
  10.  
  11.     ifeq ($(DEVICE_PATH),) 
  12.     DEVICE_PATH:=$(ohos_device_path) 
  13.     endif 
  14.  
  15.     ifeq ($(BOARD_COMPANY),) 
  16.     BOARD_COMPANY:=$(ohos_device_company) 
  17.     endif 
  18.     ... 
  19. ⑷  export BOARD_COMPANY 
  20.     export DEVICE_PATH 
  21.     export PRODUCT_PATH 

hb env的輸出類似如下:

  1. [OHOS INFO] root path: /home/zhushy/openharmony 
  2. [OHOS INFO] board: v200zr 
  3. [OHOS INFO] kernel: liteos_m 
  4. [OHOS INFO] product: iotlink_demo 
  5. [OHOS INFO] product path: /home/zhushy/openharmony/vendor/bestechnic/iotlink_demo 
  6. [OHOS INFO] device path: /home/zhushy/openharmony/device/board/fnlink/v200zr/liteos_m 
  7. [OHOS INFO] device company: fnlink 

 執行shell命令hb env | sed 's/\[OHOS INFO\]/ohos/g;s/ /_/g;s/:_/=/g'的輸出如下:

  1. ohos_root_path=/home/zhushy/openharmony 
  2. ohos_board=v200zr 
  3. ohos_kernel=liteos_m 
  4. ohos_product=iotlink_demo 
  5. ohos_product_path=/home/zhushy/openharmony/vendor/bestechnic/iotlink_demo 
  6. ohos_device_path=/home/zhushy/openharmony/device/board/fnlink/v200zr/liteos_m 
  7. ohos_device_company=fnlink 

2、 芯片、單板、擴展板的Kconfig配置

在執行make menuconfig,進入platform配置路徑后,可以看到如下圖所示的配置界面,支持對擴展板、單板、芯片系列等配置。總體感覺這塊后續應該還需要繼續優化調整。hb set設置產品解決方案時,已經確定了芯片和開發板,這些也只能在Kconfig界面上展示,是無法配置的。擴展板倒是可以繼續選擇。后續等支持的開發板和解決方案豐富起來時,hb set設置和kconfig界面設置需要更好的來協作。比如hb set可以支持一系列開發板和解決方案,具體的選擇哪些開發板和解決方案,可以kconfig界面上來配置,hb set只提供默認值等等。

鴻蒙輕內核Kconfig使用筆記-進階-鴻蒙HarmonyOS技術社區

我們來看下對應的makefile片段,深入了解下Kconfig配置的規則。⑴處可以在開發板設備下提供下配置選項,如device\board\fnlink\v200zr\liteos_m目錄下維護Kconfig文件提供可定制的配置項。⑵處提供設備的公司名稱用來定位構建路徑等,這個配置項config SOC_COMPANY只提供string類型、prompt提示、help幫助信息等屬性。后續在SOC部分的配置里,如device\soc\bestechnic\Kconfig.liteos_m.soc,繼續提供這個配置項的默認值default信息。Kconfig里,運行對同一個config配置項多處出現。

⑶處設置擴展板shields、⑷到⑸用于配置開發板信息,⑹到⑺用于配置芯片族和芯片信息。下文分別詳細分析。

  1.     # Device Kconfig import 
  2. ⑴  osource "$(DEVICE_PATH)/Kconfig" 
  3.  
  4. ⑵  config SOC_COMPANY 
  5.         string "SoC company name to locate soc build path" 
  6.         help 
  7.         This option specifies the SoC company name, used to locate the build path for soc. This option is set by the 
  8.         SoC's Kconfig file, and should be exactly the same with SoC company path, and the user should generally avoid 
  9.         modifying it via the menu configuration. 
  10.  
  11. ⑶  orsource "../../device/board/*/Kconfig.liteos_m.shields" 
  12.  
  13. ⑷  orsource "../../device/board/$(BOARD_COMPANY)/Kconfig.liteos_m.defconfig.boards" 
  14.  
  15.     choice 
  16.         prompt "Board Selection" 
  17.  
  18.     orsource "../../device/board/$(BOARD_COMPANY)/Kconfig.liteos_m.boards" 
  19.  
  20. ⑸  endchoice 
  21.  
  22. ⑹  orsource "../../device/soc/*/Kconfig.liteos_m.defconfig" 
  23.  
  24.     choice 
  25.         prompt "SoC Series Selection" 
  26.  
  27.     orsource "../../device/soc/*/Kconfig.liteos_m.series" 
  28.  
  29.     endchoice 
  30.  
  31. ⑺  orsource "../../device/soc/*/Kconfig.liteos_m.soc" 

2.1 擴展板配置

上面的小節中"../../device/board/*/Kconfig.liteos_m.shields"用于配置擴展板信息,使用*通配符匹配所有的擴展板,可以將所有擴展板配置信息都加載進來。設計者認為不同單板廠商的擴展板可以兼容使用吧。還比較有意思的是,Kconfig文件采用liteos_m.shields作為后綴,一方面指明內核類型,又指明是擴展板的配置。fnlink的擴展板設置路徑為device\board\fnlink\Kconfig.liteos_m.shields,其內容如下。可以看到又進一步包含shields目錄下面Kconfig.liteos_m.shields。

  1. orsource "shields/Kconfig.liteos_m.shields" 

 文件device\board\fnlink\shields\Kconfig.liteos_m.shields的內容如下:⑴處為各個開發板的默認配置項取值,界面上不會顯示。⑵處用于展示,并讓開發者界面上選擇需要的開發板。選擇開發板時,對應的一些依賴配置項會被打開,可以自行參考文件device\board\fnlink\shields\v200zr-evb-t1\Kconfig.liteos_m.shield。

  1. ⑴  orsource "*/Kconfig.liteos_m.defconfig.shield" 
  2.  
  3.     choice 
  4.         prompt "shield Selection" 
  5.  
  6. ⑵      orsource "*/Kconfig.liteos_m.shield" 
  7.  
  8.     endchoice 

 下面附上fnlink擴展板目錄shields下相關的文件信息:

  1. shields 
  2. ├── BUILD.gn 
  3. ├── Kconfig.liteos_m.shields 
  4. ├── v200zr-evb-t0 
  5. │   ├── BUILD.gn 
  6. │   ├── Kconfig.liteos_m.defconfig.shield 
  7. │   ├── Kconfig.liteos_m.shield 
  8. └── v200zr-evb-t1 
  9.     ├── BUILD.gn 
  10.     ├── Kconfig.liteos_m.defconfig.shield 
  11.     ├── Kconfig.liteos_m.shield 

2.2 開發板配置

文件"../../device/board/$(BOARD_COMPANY)/Kconfig.liteos_m.defconfig.boards"提供指定公司的開發板的默認配置項信息,如文件device\board\fnlink\Kconfig.liteos_m.defconfig.boards內容如下,又進一步引入公司各個開發板的默認配置項信息,可以具體查看文件device\board\fnlink\v200zr\Kconfig.liteos_m.defconfig.board了解下公司開發板默認配置項信息。默認配置項信息不會在配置界面上進行展示。

  1. orsource "*/Kconfig.liteos_m.defconfig.board" 

 文件"../../device/board/$(BOARD_COMPANY)/Kconfig.liteos_m.boards"提供指定公司開發板的配置項信息,如文件device\board\fnlink\Kconfig.liteos_m.boards的配置項如下,又進一步引入公司各個開發板的默認配置項信息,可以具體查看文件device\board\fnlink\v200zr\Kconfig.liteos_m.board了解下公司開發板配置項信息。這些配置項用于在界面上供開發者選擇所需的開發板。因為開發板依賴SoC配置項,SoC在hb set時已經確認,這里的配置在界面上只起到展示作用,開發者并不能進行選擇配置,這塊預計后續會繼續優化。

  1. orsource "*/Kconfig.liteos_m.board" 

 device\board\fnlink\v200zr\Kconfig.liteos_m.board內容如下:

  1. config BOARD_V200ZR 
  2.     bool "select board V200Z-R" 
  3.     depends on SOC_BES2600W 

2.3 芯片配置

文件"../../device/soc/*/Kconfig.liteos_m.defconfig"提供芯片系列的默認配置項信息,如文件device\soc\bestechnic\Kconfig.liteos_m.defconfig內容如下,又進一步把各個芯片型號的默認配置信息引入進來,如device\soc\bestechnic\bes2600\Kconfig.liteos_m.defconfig.series。

  1. rsource "*/Kconfig.liteos_m.defconfig.series" 
  2.  
  3. config HALS_COMMUCATION_WIFI_LITE 
  4.     bool "WIFI LITE" 
  5.     default y 

 在"SoC Series Selection"Soc系列選擇項中,使用的"../../device/soc/*/Kconfig.liteos_m.series"會把SoC各個系列的配置項引入進來,如device\soc\bestechnic\Kconfig.liteos_m.series,文件內容如下,會進一步把文件device\soc\bestechnic\bes2600\Kconfig.liteos_m.series引入進來。細心的同學可能已經注意到,文件Kconfig.liteos_m.series在目錄bestechnic和目錄bestechnic\bes2600下都有,屬于同名文件。所以,Kconfig中的路徑通配符*只通配了一級目錄。

  1. rsource "*/Kconfig.liteos_m.series" 

 SoC和SoC Serial的配置項類似,可以自行查看。

小結

本文在前文的基礎上,先介紹下hb set、Makefile和kconfig的關系,然后介紹下如何使用Kconfig圖形化配置芯片、設備和產品方案。因為時間關系,倉促寫作,或能力限制,若有失誤之處,請各位讀者多多指正。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:姜華 來源: 鴻蒙社區
相關推薦

2021-12-22 22:32:48

鴻蒙HarmonyOS應用

2024-04-14 18:43:18

2019-08-15 16:00:21

Linux內核Kconfig

2010-05-31 17:06:35

MySQL游標

2012-05-03 08:34:15

LinuxKconfig

2010-06-01 18:47:11

Rsync 使用

2021-07-06 09:45:03

鴻蒙HarmonyOS應用

2022-03-11 20:23:14

鴻蒙源碼分析進程管理

2022-03-31 16:26:49

鴻蒙源碼分析進程管理

2022-04-13 11:02:12

鴻蒙事件模塊事件Event

2022-03-03 18:28:28

Harmony進程任務管理模塊

2020-10-09 09:21:45

鴻蒙

2022-01-10 15:31:44

鴻蒙HarmonyOS應用

2022-01-12 10:50:23

鴻蒙HarmonyOS應用

2021-06-04 09:57:49

鴻蒙HarmonyOS應用

2009-11-30 11:18:46

2021-11-05 15:00:33

鴻蒙HarmonyOS應用

2021-05-17 09:28:59

鴻蒙HarmonyOS應用

2021-06-04 14:15:10

鴻蒙HarmonyOS應用

2021-05-08 15:14:50

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕 在线观看 | 激情亚洲| 99视频网 | 久久精品中文 | 欧美精品区 | 天天干天天玩天天操 | 国产人成精品一区二区三 | 久久综合久色欧美综合狠狠 | 亚洲精品久久久久久宅男 | 成人乱人乱一区二区三区软件 | 欧美国产精品久久久 | 少妇诱惑av | 亚洲一区二区三区国产 | 亚洲国产一区二区在线 | 欧美极品在线观看 | 99资源站| 日本特黄特色aaa大片免费 | 久久久久九九九女人毛片 | 国产精品夜间视频香蕉 | 国产精品毛片一区二区在线看 | 亚洲三区在线观看 | 精品国产乱码久久久久久影片 | 成人影视网址 | 午夜成人在线视频 | 国产区在线观看 | 日日精品 | 国产福利视频在线观看 | 亚洲成人精品影院 | 日本a在线| aaaaaa大片免费看最大的 | 亚洲国产偷 | 久久久久亚洲精品 | 人人精品| 亚洲性视频网站 | 欧美一区成人 | 亚洲午夜电影 | 日本成人免费网站 | 久久免费视频网 | 成人国产精品久久 | 色噜噜色综合 | 久久免费看 |