在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ZephyrOS中對于Kconfig的介紹

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2021-10-11 10:17 ? 次閱讀

這次小編為大家?guī)淼氖荶ephyrOS系列文章的第五篇,將為大家介紹Kconfig。

這次小編緊接著上篇給大家?guī)鞿ephyrOS中對于Kconfig的介紹。

簡單的來說,Kconfig就是Zephyr的配置系統(tǒng),Zephyr內(nèi)核可以在構(gòu)建階段,根據(jù)不同的配置,包含特定的應(yīng)用和平臺。而這個(gè)配置過程正是通過Kconfig實(shí)現(xiàn)的,其也與Linux內(nèi)核配置所使用的Kconfig完全一致。設(shè)計(jì)目標(biāo)就是讓我們無需修改源代碼就可以完成Zephyr的配置工作,包括內(nèi)核,硬件,子系統(tǒng)等。通常配置項(xiàng)(也被稱作symbol)是在Kconfig文件中定義的。當(dāng)然不同的配置項(xiàng)之間也是可以存在依賴關(guān)系的,比如定義一個(gè)符號A,它依賴于B,那么只有當(dāng)B被使能之后,A才是有效的。同時(shí),所有的符號可以被合并到一個(gè)叫做menu/sub-menu的組里面,便于圖形化管理。在正式開篇之前,小編先給大家推薦一個(gè)小工具,叫做menuconfig,他是一個(gè)可選的圖形化工具,可以用來查看和修改Kconfig設(shè)置:

當(dāng)然默認(rèn)是不會打開的,即默認(rèn)使用west構(gòu)建工程是不支持menuconfig的,需要傳入-t menuconfig參數(shù)

west build –t menuconfig –b mimxrt1060_evksampleshello_world

最終,所有配置項(xiàng)會被生成到一個(gè)叫做autoconf.h的文件中,沒有用到的代碼就不會再被編譯系統(tǒng)所編譯,以節(jié)省代碼空間。

下面,介紹Kconfig中的一個(gè)比較重要的概念,visible和invisible符號。

首先說visible符號,也就是那些可以在menuconfig窗口中見到的,這些符號,通常都有一個(gè)prompt屬性,即一個(gè)字符串來進(jìn)行描述,例如:

config FPU bool “Support floating point operations” depends on HAS_FPU

然后,我們就可以在menuconfig界面中找到他:

[ ] Support floating pointoperations

Invisible符號則與之相對,一般沒有prompt屬性,即字符串來說明,例如:

config CPU_HAS_FPU

bool

help

This symbol is y if the CPU has a hardwarefloating point unit.

他的特殊性在于,這些符號對于用戶是不可見的,即不能通過menuconfig提供的圖形化工具來配置,只能通過其他手段來修改其的值。

例如,通過Kconfig.defconfig文件設(shè)置下面這個(gè)符號的值為32:

config FOO_WIDTH

int

我們就可以在Kconfig.defconfig文件中定義:

config FOO_WIDTH

default 32

endif

這樣一來,我們就修改了FOO_WIDTH的默認(rèn)值為32。

要注意的是,Kconfig.defconfig中所定義的默認(rèn)值會覆蓋掉起始值,且優(yōu)先級比較高。

我們再舉一個(gè)choice的例子,比起上面我們定義的config形式的變量,choice類似于一種單選框,當(dāng)有多個(gè)配置存在時(shí),只能一個(gè)配置項(xiàng)有效,這樣一來,達(dá)到一個(gè)互斥的效果。要如何操作呢?假定有一個(gè)choice叫做FOO,他有兩個(gè)配置項(xiàng)A和B,初始默認(rèn)值是B:

choice FOO

bool “Foo choice”

default B

config A

bool “A”

config B

bool “B”

endchoice

下面我們把他的默認(rèn)值修改為A,完成這個(gè)操作,除了在Kconfig.defconfig中修改外,我們還可以在prj.conf中添加:

choice FOO

default A

endchoice

當(dāng)然,這里要注意,如果我們定義了一個(gè)invisible的choice變量FOO的話,就只能通過Kconfig.defconfig來修改了。

那么在Zephyr工程中,都有哪些修改默認(rèn)配置的地方呢?如果只考慮板級(即Zephyr所支持的開發(fā)板)+ 應(yīng)用這一層,大致分為三類:

板子相關(guān)的配置文件,一般名為:boards/《ARCH》/《BOARD》/《BOARD》_defconfig

任意的CMake cache文件,以CONFIG_開頭

應(yīng)用配置:

a) 默認(rèn)prj.conf

b) 通過-DCONF_FILE=《conf_file》指定,進(jìn)行重載

c) 通過-DOVERLAY_CONFIG=《conf_file》指定,進(jìn)行擴(kuò)展

d) 通過prj_《BOARD》.conf進(jìn)行重載

e) 通過boards/《BOARD》.conf進(jìn)行擴(kuò)展

那么小編就不再擴(kuò)展Kconfig的其他語法了,大家可以參考這里來了解更多。

至此,Zephyr所使用的兩大配置系統(tǒng)就大致講完了,那么有朋友可能會問了,我們什么時(shí)候要用DeviceTree什么時(shí)候要用Kconfig呢?小編在這里簡單總結(jié)一下:

使用設(shè)備樹來描述硬件和啟動(dòng)配置,例如板載外設(shè)和設(shè)置啟動(dòng)時(shí)系統(tǒng)時(shí)鐘頻率等

使用Kconfig來配置哪些源代碼將要被放到最終的鏡像中,例如是否添加網(wǎng)絡(luò)的支持,哪個(gè)驅(qū)動(dòng)是需要的。

通俗點(diǎn)講,DeviceTree負(fù)責(zé)管理那些硬件資源,Kconfig負(fù)責(zé)管理軟件資源。

舉個(gè)例子,有個(gè)設(shè)備同時(shí)擁有2.4GHz,multi-protocol radio; 藍(lán)牙和802.15.4,那么設(shè)備樹就用來描述:

是否有radio硬件存在

兼容性驅(qū)動(dòng)

啟動(dòng)階段配置,比如TX power in dBm

Kconfig文件決定哪個(gè)軟件包需要被構(gòu)建,是選擇BLE還是選擇802.15.4協(xié)議棧。

聊到這里,結(jié)合上一篇關(guān)于DeviceTree的文章,小編就將DeviceTree和Kconfig的一

些知識點(diǎn)分享給大家了,不過,限于篇幅,都只是一些比較簡單的介紹,大家可以自行深入探索。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17353

    瀏覽量

    352785
  • Zephyr
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    6001

原文標(biāo)題:清風(fēng)徐來——Zephyr實(shí)戰(zhàn)篇(4)之Kconfig

文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之Kconfig介紹

    Kconfig作用 之前章節(jié),講解了使用make menuconfig圖形化界面來配置內(nèi)核,而界面這些選項(xiàng)菜單列表主要是由arch/arm/下Kconfig輸出給menuconfi
    發(fā)表于 01-06 10:02

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之Kconfig介紹

    Kconfig作用之前章節(jié),講解了使用make menuconfig圖形化界面來配置內(nèi)核,而界面這些選項(xiàng)菜單列表主要是由arch/arm/下Kconfig輸出給menuconfig
    發(fā)表于 01-04 10:18

    電子成像的耦合介紹

    本文介紹了直接耦合、間接耦合、反射耦合和光學(xué)耦合這幾種電子成像的耦合方式,并介紹了它們各自的適用場景以及優(yōu)缺點(diǎn)。 在電子成像的閃爍體耦合學(xué)習(xí)過程,我們經(jīng)??吹健榜詈稀薄ⅰ伴W爍體”、
    的頭像 發(fā)表于 12-17 14:25 ?240次閱讀

    CIM系統(tǒng)的定義、組成和對于FAB廠的重要性

    ? 本文介紹了CIM(Computer Integrated Manufacturing)系統(tǒng)的定義、組成和對于FAB廠的重要性。 CIM(Computer Integrated
    的頭像 發(fā)表于 12-16 16:30 ?506次閱讀

    電流傳感器在電機(jī)應(yīng)用介紹

    電流傳感器在電機(jī)應(yīng)用介紹
    的頭像 發(fā)表于 10-31 17:17 ?385次閱讀
    電流傳感器在電機(jī)應(yīng)用<b class='flag-5'>中</b>的<b class='flag-5'>介紹</b>

    對于TLV320AIC23B datasheetMicrophone Input輸入的問題求解答

    對于TLV320AIC23B datasheetMicrophone Input輸入的問題: 對于給出的圖,如果AVDD=3.3v,那么VMID=1.65v,VADC=1.65v。 但是根據(jù)
    發(fā)表于 10-25 16:26

    對于多級放大電路板,在PCB布局,電源擺放的位置應(yīng)該注意什么?

    對于多級放大電路板,在PCB布局,電源擺放的位置應(yīng)該注意什么,我在一些資料上看到過:多級放大電路,布線時(shí)考慮信號流向,防止級間干擾,且電源靠近后級,防止各級形成共阻。但我還是不太理解,所以想請教TI的老師給我解答?就是除此
    發(fā)表于 09-20 08:25

    有源濾波器對于運(yùn)放帶寬有什么要求?

    請問下有源濾波器對于運(yùn)放帶寬有什么要求,謝謝。
    發(fā)表于 09-20 06:38

    windows使用env軟件沒辦法使用menuconfig指令怎么處理?

    \\stm32f407-atk-explorer $ menuconfig Kconfig:3:warning: ignoring unsupported character \':\' Kconfig:4
    發(fā)表于 07-09 06:16

    ESP8266 ESP-AT環(huán)境搭好之后,打不開menuconfig怎么解決?

    /module_esp8266_1mb/sdkconfig.defaults... /home/esp/esp-at/main/interface/hspi/Kconfig:10: syntax
    發(fā)表于 06-27 06:57

    按照ESP32-IDF的編程指南操作,運(yùn)行idf.py menuconfig后,運(yùn)行報(bào)錯(cuò)怎么解決?

    /esp-idf/components/bt/Kconfig:386: undefined variable \"$IDF_PATH/components/bt/host/bluedroid
    發(fā)表于 06-25 06:32

    在MSYS32上面搭建IDF2.1版本,在hello_world文件夾輸入命令make menuconfig報(bào)錯(cuò)了,為什么?

    想要在MSYS32上面搭建IDF2.1版本,在hello_world文件夾輸入命令make menuconfig,發(fā)現(xiàn)報(bào)錯(cuò)了,我應(yīng)該在哪里下載wordexp這個(gè)文件? 6.# make
    發(fā)表于 06-21 15:56

    電路的串聯(lián)與并聯(lián)介紹

    串聯(lián)和并聯(lián)是兩種基本的連接方式,它們決定了電路組件之間的電流和電壓分布。了解串聯(lián)與并聯(lián)的概念對于理解電路的工作原理和進(jìn)行電路設(shè)計(jì)至關(guān)重要。 串聯(lián)(Series) 在串聯(lián)的連接方式,電路的總電阻
    的頭像 發(fā)表于 05-02 16:28 ?4508次閱讀

    在e2 studio安裝QE的流程介紹

    在e2 studio安裝QE的流程介紹
    的頭像 發(fā)表于 04-04 08:05 ?651次閱讀
    在e2 studio<b class='flag-5'>中</b>安裝QE的流程<b class='flag-5'>介紹</b>

    AT89S51文資料介紹

    電子發(fā)燒友網(wǎng)站提供《AT89S51文資料介紹.pdf》資料免費(fèi)下載
    發(fā)表于 02-20 09:24 ?13次下載
    主站蜘蛛池模板: 国产高清在线播放免费观看 | 成人网中文字幕色 | 色综合888| 午夜免费理论片在线看 | 爽好舒服快小柔小说 | free性欧美video69 | 午夜骚片| 黄网站在线观看视频 | 日本亚洲黄色 | 一级黄a | 欧美性猛交ⅹxxx乱大交免费 | 夜夜骑日日操 | 黄视频在线播放 | 五月激情视频 | 欧美高清成人 | 婷婷开心六月久久综合丁香 | 天天翘夜夜洗澡天天做 | 农村妇女高清毛片一级 | 中文字幕一二三区 | 国内精品伊人久久大香线焦 | 日本精品视频一视频高清 | 国产精品亚洲一区二区三区在线播放 | 欧美透逼视频 | 国产精品久久久久久免费播放 | 视频高清正版在线观看 | 天堂资源中文在线 | 免费操人视频 | 国产精品伦理一区二区三区 | 拍拍拍拍拍拍拍无挡大全免费 | 国产在线欧美精品卡通动漫 | 久久伊人成人网 | 天天做天天干 | 制服丝袜中文字幕第一页 | 人人干视频在线观看 | 天天干天天舔天天操 | 欧美在线视频看看 | 黄色在线播放网址 | 午夜视频在线免费看 | 欧美日韩性高爱潮视频 | 免费一区二区 | 欧美成人一区二区三区在线电影 |