中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MDK(Keil)實(shí)現(xiàn)Kconfig圖形化配置

        MDK(Keil)實(shí)現(xiàn)Kconfig圖形化配置

        作者:嵌入式筆記v 時(shí)間:2025-03-26 來源:今日頭條 收藏

        背景

        在嵌入式開發(fā)中通常使用.h頭文件宏定義配置各種參數(shù),來適配各種應(yīng)用場景,以及統(tǒng)一修改工程中使用到的參數(shù),避免漏改引起的程序bug。在一個(gè)相對比較復(fù)雜的項(xiàng)目中,往往需要配置各種各樣的參數(shù), 不同功能的模塊對應(yīng)不同.h,而有效配置項(xiàng)目是具有關(guān)聯(lián)性,比如A模塊依賴B模塊,如果模塊B關(guān)閉(如#define MODULE_B 0)時(shí),那么就不應(yīng)該啟用模塊A,當(dāng)依賴層級比較多時(shí),容易出現(xiàn)修改這忘了改那,尤其隨著時(shí)間拉長,對項(xiàng)目沒有之前那么熟悉的情況,依靠記憶配置存在隱患。

        本文引用地址:http://www.antipu.com.cn/article/202503/468636.htm

        參考linux開發(fā),使用make menuconfig命令調(diào)用Kconfig進(jìn)行配置,不僅可以管理如此龐大的工程,同時(shí)又顯得非常直觀,高大上~, 剛好手上項(xiàng)目是基于GD32 MDK開發(fā)的,因?yàn)槭嵌嗳藚⑴c的項(xiàng)目,需要考慮團(tuán)隊(duì)適應(yīng),因此不方便移植到linux平臺上(menuconfig本身的linux kernel量身打造的,在linux中搭建環(huán)境更加方便),于是萌生了搭建WIndows中MDK使用Kconfig環(huán)境想法,開干~

        Windows中menuconfig

        安裝依賴

        menuconfig(KConfig)圖形化依賴ncurses和kconfiglib庫,python已經(jīng)幫我們實(shí)現(xiàn)了,因此我們這里使用python來安裝。這里我以python3為例子(python安裝這里就不介紹了,并且需要將python添加到系統(tǒng)環(huán)境變量中)

        檢測python是否安裝成功

        這里我們使用pyhton 的pip來安裝。

        1. 安裝windows-curses

        python -m pip install windows-curses

        安裝windows-curses庫

        出現(xiàn)”Successfully installed windows-curses-xxx“ 表示安裝成功。

        另外如果安裝失敗,有可能是你的pip版本太低, 根據(jù)提示更新:

        python -m pip install --upgrade pip
        1. 安裝kconfiglib

        python -m pip install kconfiglib

        安裝kconfiglib庫

        出現(xiàn)”Successfully installed kconfiglib-xxx“ 表示安裝成功。

        至此依賴庫已安裝好,根據(jù)自己電腦上安裝的python路徑查看是否真的生成我們所要的文件:

        python3Libsite-packagesgenconfig.py //作用將menuconfig生成的.config文件轉(zhuǎn)成.h頭文件


        python3Scriptsmenuconfig.exe


        1. 嘗試menuconfig

        首先我們需要一個(gè)Kconfig,關(guān)于Kconfig語法,這篇文章不過多介紹。這里摘用網(wǎng)上一個(gè)簡單的例子:

        mainmenu "Kconfig Demo"

        menu "Test Params setting"
        config TEST_ENABLE
           bool "Enable test work"
           default n    help
               Will print debug information if enable.

        config TEST_SHOW_STRING    string "The show string info"
           default "Test 123"config TEST_SHOW_INT    int "The show int info"
           range 0 255
           default 123config TEST_TOP_ENABLE    bool "Test Top Func"
           default n    help
               Function Test Top

        config TEST_SUB_0_ENABLE    bool "Test Sub 0 Func"
           default n    help
               Function Test Sub 0config TEST_SUB_1_ENABLE    bool "Test Sub 1 Func"
           default n
           depends on TEST_TOP_ENABLE    help
               Function Test Sub 1config TEST_SHOW_SUB_INT    int
           default 456 if TEST_SUB_0_ENABLE && TEST_SUB_1_ENABLE    default 123endmenu
        • 使用cmd命令行

        使用win+R打開cmd, 并切到測試Kconfig所在路徑,并輸入:menuconfig


        如出現(xiàn)以下圖片,表示成功了:

        cmd執(zhí)行menuconfig成功

        • 使用powershll命令行


        執(zhí)行也是正常,結(jié)果跟cmd一致,這里就不重復(fù)貼圖了。

        • 使用git bash命令行

        git bash執(zhí)行失敗

        發(fā)現(xiàn)執(zhí)行出錯(cuò),提示:Redirection is not supported 重定向不支持。個(gè)人猜測是git bash命令行是類linux shell的,而我們使用的menuconfig是基于windows的,2者系統(tǒng)重定向符合不一致,導(dǎo)致無法執(zhí)行(如果讀者有更準(zhǔn)確的答案,歡迎留言分享)。

        在MDK中使用

        好了,我們的重點(diǎn)來了,如何在mdk如何使用menconfig呢?

        1. 將Kconfig添加到Keil工程中

        這里我們隨便拿一個(gè)原子簡單的例程,只要能編譯即可(即使編譯錯(cuò)誤也行不影響)。我們將Kconfig拷貝到工程目錄下:

        工程示例

        1. 配置工程

        點(diǎn)擊”魔術(shù)棒" 工程配置,選擇User欄:

        配置keil工程

        在Before Build/Rebuild(編譯/重新編譯前執(zhí)行)欄填入:menuconfig,并勾選

        配置Befort Build/Rebuild

        然后OK保存,嘗試編譯,在Keil的Build Output編譯輸出欄中又出現(xiàn)錯(cuò)誤:Redirection is not supported

        執(zhí)行menuconfig報(bào)錯(cuò)

        懷疑是MDK的終端也是重定向符合不匹配的問題,這里我嘗試了好幾次方法,嘗試通過指定cmd和powershell執(zhí)行menuconfig,發(fā)現(xiàn)還是不行。

        1. 解決重定向

        因?yàn)槲覀冊诘谌揭呀?jīng)驗(yàn)證通過cmd和powershell是能夠正常運(yùn)行menuconfig,解決思路就是通過它們間距來執(zhí)行。

        于是通過編寫python腳本config.py來實(shí)現(xiàn)(這里參考了網(wǎng)友,表示感謝~),具體如下:

        import osimport sysfrom kconfiglib import Kconfigfrom menuconfig import menuconfigdef project_menuconfig(config='.config', file='Kconfig'):
           os.environ['MENUCONFIG_STYLE'] = 'default path=fg:black,bg:white separator=fg:white,bg:blue,bold selection=fg:white,bg:red,bold help=path'
           os.environ['KCONFIG_CONFIG_HEADER'] = '#n# Automatically generated file: Do not edit !!!n#n'
           os.environ['KCONFIG_CONFIG'] = config    
           # 判斷是否在Windows下執(zhí)行, 若是則啟動(dòng)一個(gè)獨(dú)立的命令行提示符窗口來執(zhí)行menuconfig
           if sys.platform.startswith('win'):
               os.system('start /wait cmd.exe /c menuconfig.exe %s' % file)    else:
               menuconfig(Kconfig(filename=file))if __name__ == '__main__':
           project_menuconfig()

        簡單介紹下腳本作用:定義個(gè)project_menuconfig函數(shù)用于區(qū)分當(dāng)前環(huán)境是否為windows,如果是,則執(zhí)行命令:

        'start /wait cmd.exe /c menuconfig.exe %s' % file

        其中:

        start:: 啟動(dòng)一個(gè)新的命令行

        /wait: 與start命令一起使用,表示在啟動(dòng)新程序或命令后,當(dāng)前命令行等待執(zhí)行完 成在繼續(xù)執(zhí)行后續(xù)命令

        cmd.exe:指定使用cmd命令行

        menuconfig:就是我們要執(zhí)行的命令

        %s file:其中file函數(shù)未傳參,使用默認(rèn)值Kconfig

        并放到工程目錄下:

        將config.py添加到工程中

        接著,修改MDK工程User配置:


        再次嘗試編譯,正常出現(xiàn)圖形化界面,即成功解決~


        4.生成配置頭文件

        使用menuconfig解析Kconfig文件,在其路徑生成.config(默認(rèn)名,文件名稱可修改)

        menuconfig生成.config文件

        我們打開.config看下其內(nèi)容:

        .

        接下來我們還需要依據(jù).config生成我們最終所需的.h頭文件,這里我們就需要用到genconfig.py腳本文件(在第二步驟安裝依賴庫時(shí)),并在MDK中添加以下命令,使其自動(dòng)生成。

        python D:Mysoftworkpython3Libsite-packagesgenconfig.py --header-path myconfig.h


        其中:

        D:Mysoftworkpython3Libsite-packagesgenconfig.py 根據(jù)自己實(shí)際python安裝路徑

        --header-path 指定輸出頭文件名,如果不指定,則默認(rèn)生成config.h,其他選項(xiàng)可--help查看

        myconfig.h 我們指定生成的頭文件名

        接著再次編譯,發(fā)現(xiàn)工程路徑下成功生成了myconfig.h配置頭文件


        myconfig.h內(nèi)容

        至此,我們成功實(shí)現(xiàn)了在Window中MDK使用menuconfig-Kconfig實(shí)現(xiàn)。

        Kconfig語法

        環(huán)境搭建成功,后面就是運(yùn)用于實(shí)際項(xiàng)目中,關(guān)于kconfig語法本篇沒有過多介紹,相關(guān)介紹,可以參看:

        Kconfig官網(wǎng):
        https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html

        RTT-Thread介紹:
        https://www.rt-thread.org/document/site/#/development-tools/build-config-system/Kconfig

        結(jié)語

        綜上所述,關(guān)于Windows如何使用menuconfig-Kconfig介紹,相信大家有了一定了解,可以運(yùn)用于自己的實(shí)際項(xiàng)目哦。如果有任何疑問,歡迎點(diǎn)贊轉(zhuǎn)發(fā),以及留言討論, 另外喜歡嵌入式技術(shù)的小伙伴,可以關(guān)注走一波哈。好了,今天的分享到此咯,下次再見~



        關(guān)鍵詞: 圖形化配置

        評論


        技術(shù)專區(qū)

        關(guān)閉