鴻蒙內核Kconfig使用筆記

      網友投稿 1035 2022-05-30

      鴻蒙輕內核Kconfig使用筆記

      鴻蒙輕內核使用Kconfig進行圖形化配置,本文專門講解下鴻蒙輕內核LiteOS-M和LiteOS-A的圖形化配置方法。本文中所涉及的源碼,均可以在開源站點https://gitee.com/openharmony/kernel_liteos_a、https://gitee.com/openharmony/kernel_liteos_m 獲取。本文首先簡單介紹下kconfig的基礎知識,接著介紹下如何使用圖形化配置。

      1、 Kconfig簡介

      Kconfig語言定義了一套完整的規則來表述配置項及配置項間的關系,詳細內容可以參考Linux官方文檔Kconfig Language,此處不贅述。鴻蒙輕內核使用的是Python的開源三方庫kconfiglib(menuconfig只是其提供的命令之一,相關命令還有genconfig, savedefconfig等等),官方主頁為https://pypi.org/project/kconfiglib。

      1.1 Kconfig和.config文件

      Kconfig是配置項的描述文件,支持設置配置項及其默認值,依賴關系等等,比如kernel\liteos_a\Kconfig,該文件還會繼續依賴各個模塊的Kconfig文件。

      產品配置文件,如vendor\hisilicon\hispark_taurus\kernel_configs\debug.config,提供配置項及在產品中這些配置項的設置值,可能和內核配置項的默認取值不一致,屬于產品對內核配置項的定制。這些配置文件在BUILD.gn或makefile文件中使用。

      另外還會生成一個C語言頭文件,提供配置項的宏定義版,在C語言程序中使用。

      1.2 操作簡介

      下載OpenHarmony源代碼后,使用hb set設置產品解決方案后,然后在kernel/liteos_m或liteos_a目錄下執行make help可獲得一個總體的幫助說明,如下圖所示:

      其中與Kconfig有關的為xxconfig類目標,這類目標通過args接收額外的參數,比如:

      make menuconfig args="--help"

      通過args="–help"就可以了解xxconfig類命令的使用詳細說明。

      支持的參數有文件類型FSTYPE,版本類別TEE、RELEASE等版本,默認為DEBUG版本。還支持通過CONFIG參數指定產品配置文件路徑,該參數優先級較高。

      注意:

      OpenHarmony支持使用ninja+gn來編譯構建,內核使用的kconfig配置工具依舊使用makefile進行維護的。

      2、 配置內核

      liteos_a內核使用Kconfig方式進行配置,在內核目錄kernel/liteos_a下執行make menuconfig等命令即可。liteos_m內核類似,以liteos_a為例進行講解。

      需要注意:

      在操作前,需要使用hb set設置產品,否則會提示:The selected product (None) is not a liteos_a kernel type product. Stop。

      2.1 支持的參數

      上文,我們知道了make menuconfig支持參數,我們詳細看下代碼。文件位置在kernel/liteos_a/Makefile,代碼片段如下:

      如果指定了CONFIG參數,則使用用戶指定的產品配置文件。如果開啟了TEE,則使用TEE版本的產品配置文件。如果開啟了RELEASE,則使用release版本產品配置文件,否則使用debug版本的產品配置文件。

      ifeq ($(TEE:1=y),y) tee = _tee endif ifeq ($(RELEASE:1=y),y) CONFIG ?= $(PRODUCT_PATH)/kernel_configs/release$(tee).config else CONFIG ?= $(PRODUCT_PATH)/kernel_configs/debug$(tee).config endif KCONFIG_CONFIG ?= $(CONFIG)

      2.2 menuconfig內核配置

      使用make menuconfig進行內核配置,Makefile源碼片段如下:

      update_config menuconfig: $(HIDE)test -f "$(CONFIG)" && cp -v "$(CONFIG)" .config && menuconfig $(args) && savedefconfig --out "$(CONFIG)"

      可以看出,update_config和menuconfig這2個target效果相同,一般使用make menuconfig即可。執行的操作包含如下3個:

      判斷產品配置文件是否存在,如果存在則把配置文件復制到內核根目錄并命名為.config

      展示menuconfig用戶配置界面,供開發者進行內核配置

      保存最小配置到產品產品文件,可以使用make savedefconfig args="–help"查看命令的解釋。

      設置產品后,要修改產品的.config配置,目前可以在內核目錄下執行make menuconfig,沒有make參數的情況下該命令默認會自動找到你hb set時所選擇的產品的debug.config配置進行menuconfig配置,如果想要修改產品的release.config配置則可以使用參數RELEASE=1。前提是產品有預置release.config配置。同樣的,可以使用參數TEE=1來修改產品的tee版本的.config配置。命令如下:

      make update_config RELEASE=1 make update_config TEE=1

      另外,如果想手動指定產品配置,而不是自動使用hb set時所選擇的產品的配置,則可以使用CONFIG=/path/to/the/xx.config參數,如:

      make update_config CONFIG=../../vendor/hisilicon/hispark_aries/config/release.config

      3、Kconfig高級語法

      Kconfig大部分工程師都了解,快速介紹幾個鴻蒙輕內核中使用到的稍微高級的語法。

      osource

      我們知道kconfig使用source來引用其他kconfig文件,而osource等于optional source,表示可選的,如果osource指定的kconfig文件不存在,也不報錯。類似,makefile中的include和-include的差異。

      rsource

      rsource等于 relative source,后面引用的kconfig文件支持相對路徑。路徑相對于包含rsource語句的kconfig而言。

      orsource

      等于osource+rsource。

      kconf的幾個命令如下“

      –oldconfig

      基于提供的.config文件,根據Kconfig文件修改配置文件

      –silentoldconfig

      等同于oldconfig,靜默模式,并修改deps依賴即生成頭文件。

      –olddefconfig

      等同于silentoldconfig,對于新符號使用默認值

      鴻蒙輕內核Kconfig使用筆記

      –savedefconfig

      把當前最小的配置保持到文件

      小結

      本文介紹了Kconfig的基礎知識,和鴻蒙輕內核的圖形化配置。感謝閱讀,有什么問題,請留言。

      IoT 輕量級操作系統 LiteOS

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:華為云數據庫亮相2021PG中國技術大會并斬獲4項大獎
      下一篇:華為GaussDB數據庫推出雙分布式架構,打造金融核心智能生產交易解決方案
      相關文章
      九月丁香婷婷亚洲综合色| 亚洲精品无码你懂的| 中文字幕无码亚洲欧洲日韩| 亚洲欧洲日韩国产| 亚洲黄色在线播放| 亚洲日韩中文字幕| 亚洲国产美女精品久久| 亚洲国产精品午夜电影 | 亚洲视频精品在线观看| 亚洲精品免费在线观看| 色噜噜综合亚洲av中文无码| 亚洲四虎永久在线播放| 亚洲一区免费观看| 亚洲黄色三级视频| 亚洲国产模特在线播放| 性xxxx黑人与亚洲| 在线a亚洲老鸭窝天堂av高清| 亚洲一区AV无码少妇电影| 亚洲乱码av中文一区二区| 亚洲国产成人久久精品软件| 亚洲人成网站免费播放| 亚洲AV无码专区在线电影成人 | 亚洲精品无码久久久久YW| 亚洲s码欧洲m码吹潮| 春暖花开亚洲性无区一区二区 | 亚洲高清资源在线观看| 亚洲区视频在线观看| 亚洲色偷偷综合亚洲av78| 亚洲国产精品久久久久秋霞小| 国产成人亚洲毛片| 亚洲一级片内射网站在线观看| 亚洲熟妇无码乱子AV电影| 亚洲成Av人片乱码色午夜| 91亚洲自偷手机在线观看| 亚洲制服丝袜精品久久| 久久亚洲精品国产精品婷婷| 欧美亚洲精品一区二区| 亚洲综合另类小说色区色噜噜| 久久久久久久综合日本亚洲| 亚洲综合精品香蕉久久网97| 亚洲中文字幕在线无码一区二区|