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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

uboot圖形化配置及其原理

CHANBAEK ? 來源:嵌入式攻城獅 ? 作者:安迪西 ? 2023-04-21 12:31 ? 次閱讀

uboot圖形化配置及其原理

uboot可以通過 mx6ull_xxx_defconfig和 mx6ull_xxx_emmc.h文件來配置;另外還有一種配置uboot的方法,就是圖形化配置

1.uboot圖形化配置

1.1 圖形化配置簡介

uboot或 Linux內核可以通過輸入“make menuconfig”命令來打開圖形化配置界面,menuconfig是一套圖形化的配置工具,需要 ncurses庫支持。 ncurses庫提供零一系列的 API函數供調用者生成基于文本的圖形界面,因此需要先在 Ubuntu中安裝 ncurses庫

sudo apt-get install build-essential
sudo apt-get install libncurses5-dev

menuconfig重點會用到兩個文件:“.config”和“Kconfig”,.config文件保存著uboot的配置項,使用 menuconfig配置完 uboot后該文件會被更新; Kconfig文件是圖形界面的描述文件,即描述界面應該有什么內容,很多目錄下都會有Kconfig文件

1.2 uboot圖形化配置體驗

在打開圖形化配置界面前,需要先對 uboot進行一次默認配置。 之后使用“make menuconfig”命令打開圖形化界面,打開后的界面如下示:

圖片

主界面上方的英文就是簡單的操作說明,操作方法如下:

通過向上和向下按鍵選擇要配置的菜單,“Enter"按鍵進入

選中后按"Y"鍵會將相應的代碼編譯進uboot中,菜單前面變為<*>

選中后按"N"鍵會取消編譯相應的代碼

選中后按"M"鍵會將相應的代碼編譯為模塊,菜單前面變為

按兩下"Esc"鍵退出,也就是返回到上一級

按下"?“ 鍵查看選中菜單的幫助信息

按下”/"鍵打開搜索框,可在搜索框輸入要搜索的內容

在配置界面下方有五個按鈕,其功能如下:

Select:選中按鈕,和enter按鍵功能相同

Exit:退出按鈕,和esc按鍵功能相同

Help:幫助按鈕,查看選中菜單的幫助信息

Save:保存按鈕,保存修改后的配置文件

Load:加載按鈕,加載指定的配置文件

下面以使能DNS命令為例,介紹如何通過圖形化界面來配置uboot

進入"Command line interface"配置項

圖片

進入"Network commands"網絡相關命令配置項

圖片

選中dns,按下"Y"鍵將其編譯到uboot中

圖片

按兩下esc鍵退出,如果有修改項目,在退出主界面時會提示是否需要保存

圖片

保存后可在uboot源碼中的".config"文件中發現多了"CONFIG_CMD_DNS=y"這一行

使用"make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16"命令編譯 uboot

注意:此時不能用腳本來編譯,因為腳本文件在編譯之前會清理工程,會刪除掉.config文件,導致通過圖形化界面配置的所有選項都被刪除

編譯完成燒寫到SD卡后,重啟開發板進入uboot命令模式,設置dns服務器的IP地址

setenv dnsip 114.114.114.114
saveenv

設置好后,使用dns命令即可查看百度官網的IP地址

dns www.baidu.com

圖片

2.menuconfig圖形化配置原理

2.1 make menuconfig過程分析

當輸入make menuconfig以后會匹配到頂層Makefile中的如下代碼:

%config: scripts_basic outputmakefile FORCE
    $(Q)$(MAKE) $(build)=scripts/kconfig $@
#其中build=-f ./scripts/Makefile.build obj
###將上面第二行的規則展開后:
@make -f ./scripts/Makefile.build obj=scripts/kconfig menuconfig

Makefile.build會讀取scripts/kconfig/Makefile中的內容,在scripts/kconfig/Makefile中有如下代碼:

menuconfig: $(obj)/mconf
    $< $(silent) $(Kconfig)
#silent是這是靜默編譯的
###展開后###
menuconfig: scripts/kconfig/mconf
    scripts/kconfig/mconfKconfig

目標menuconfig依賴scripts/kconfig/mconf,因此scripts/kconfig/mconf.c文件會被編譯,生成mconf可執行文件;目標menuconfig對應的規則為scripts/kconfig/mconfKconfig, 也就是說mconf會調用uboot根目錄下的Kconfig文件開始構建圖形配置界面

2.2 Kconfig語法簡介

對于Kconfig語法不需要太深入的去研究,了解其原理即可。 打開uboot根目錄下的頂層Kconfig,以這個文件為例來簡單學習一下Kconfig語法

mainmenu:主菜單

##########頂層Kconfig代碼段##########
mainmenu "U-Boot $UBOOTVERSION Configuration"

source命令調用其他目錄下的Kconfig文件

##########頂層Kconfig代碼段##########
source "arch/Kconfig"
......
source "common/Kconfig"
source "cmd/Kconfig"
source "dts/Kconfig"
source "net/Kconfig"
source "drivers/Kconfig"
source "fs/Kconfig"
source "lib/Kconfig"
source "test/Kconfig"

##以上子目錄下的Kconfig文件在主菜單中生成各自的菜單項

menu/endmenu條目:menu用于生成菜單,endmenu菜單結束標志

##########頂層Kconfig代碼段##########
menu "General setup"

config LOCALVERSION
    string "Local version - append to U-Boot release"
    help
      Append an extra string to the end of your U-Boot version.
      This will show up on your boot log, for example.
      The string you set here will be appended after the contents of
      any files with a filename matching localversion* in your
      object and source tree, in that order.  Your total string can
      be a maximum of 64 characters.
......
......
endmenu		# General setup

menu "Boot images"

config SUPPORT_SPL
    bool
......
......
endmenu		# Boot images

以上代碼中有兩個menu/endmenu代碼塊,這兩個代碼塊就是兩個子菜單

圖片

config條目:是菜單里的具體配置項

##########頂層Kconfig代碼段##########
menu "General setup"

config LOCALVERSION
    string "Local version - append to U-Boot release"
    help			
    ......
config LOCALVERSION_AUTO
    bool "Automatically append version information to the version string"
    default y	#表示該配置項默認值是y,即默認被選中
    help	#表示幫助信息,告知配置項的含義,按下h或?會彈出help的內容
    ......
config CC_OPTIMIZE_FOR_SIZE
    bool "Optimize for size"
    default y
    help
    ......
config SYS_MALLOC_F
    bool "Enable malloc() pool before relocation"
    default y if DM
    help
    ......
config SYS_MALLOC_F_LEN
    hex "Size of malloc() pool before relocation"
    depends on SYS_MALLOC_F
    default 0x400
    help
    ......
menuconfig EXPERT
    bool "Configure standard U-Boot features (expert users)"
    default y
    help
    ......
if EXPERT
    config SYS_MALLOC_CLEAR_ON_INIT
    bool "Init with zeros the memory reserved for malloc (slow)"
    default y
    help
    ......
endif
endmenu		# General setup

以上可看出,在menu/endmenu代碼塊中有大量的"config XXX"代碼塊(config條目)。 若使能了XXX功能,就會在 .config文件中生成 CONFIG_XXX

常用的三種變量類型:bool、tristate和string

– bool,有兩種值,y和n

– tristate,有三種值,y、n和m

– string,用來存儲本地字符串

圖片

depends on和select

########## arch/Kconfig代碼段 ##########
config SYS_GENERIC_BOARD
    bool
    depends on HAVE_GENERIC_BOARD
#depends on依賴:依賴項選中后,被依賴項才能被選中
choice
    prompt "Architecture select"
    default SANDBOX

config ARC
    bool "ARC architecture"
    select HAVE_PRIVATE_LIBGCC
    select HAVE_GENERIC_BOARD
    select SYS_GENERIC_BOARD
    select SUPPORT_OF_CONTROL
#select方向依賴,“ARC”被選擇后,四個select也會被選中

choice/endchoice:定義一組可選擇項,將多個類似配置項組合在一起,供用戶單選或多選

########## arch/Kconfig代碼段 ##########
choice
    prompt "Architecture select"
    default SANDBOX

config ARC
    bool "ARC architecture"
    ......
config ARM
    bool "ARM architecture"
    ......
config AVR32
    bool "AVR32 architecture"
    ......
config BLACKFIN
    bool "Blackfin architecture"
    ......
config M68K
    bool "M68000 architecture"
    ......
config MICROBLAZE
    bool "MicroBlaze architecture"
    ......
config MIPS
    bool "MIPS architecture"
    ......
config NDS32
    bool "NDS32 architecture"
    ......
config NIOS2
    bool "Nios II architecture"
    ......
config OPENRISC
    bool "OpenRISC architecture"

config PPC
    bool "PowerPC architecture"
    ......
config SANDBOX
    bool "Sandbox"
    ......
config SH
    bool "SuperH architecture"
    select HAVE_PRIVATE_LIBGCC

config SPARC
    bool "SPARC architecture"
    ......
config X86
    bool "x86 architecture"
    ......
endchoice

圖片

menuconfig:和menu類似,但是menuconfig是帶選項的菜單,其一般用法如下

menuconfig MODULES    #定義一個可選的菜單MODULES
    bool "菜單"
if MODULES	      #只有選中了,if里面的內容才會顯示
......
endif # MODULES
##########頂層Kconfig代碼段##########
menu "General setup"
......
menuconfig EXPERT
    bool "Configure standard U-Boot features (expert users)"
    default y
    help
    ......

if EXPERT
    config SYS_MALLOC_CLEAR_ON_INIT
    bool "Init with zeros the memory reserved for malloc (slow)"
    default y
    help
    ......
endif
endmenu		# General setup

以上代碼實現了一個帶選項的菜單EXPERT,只有被選中了,if/endif里的內容才會顯示出來

圖片

圖片

comment:用于在圖形化界面中顯示一行注釋

########## drviers/mtd/nand/Kconfig代碼段##########
config NAND_ARASAN
    bool "Configure Arasan Nand"
    help
      This enables Nand driver support for Arasan nand flash
      controller. This uses the hardware ECC for read and
      write operations.

comment "Generic NAND options"   #標注了一行注釋

圖片

3.添加自定義菜單

圖形化配置工具的主要工作就是在.config文件里生成前綴為“CONFIG_”變量,這些變量一般都有值(y/m/n),在uboot源碼里會根據這些變量來決定編譯哪個文件。 下面介紹如何添加一個自已的自定義菜單,自定義菜單要求:

在主界面中添加名為“My test menu”菜單項,菜單內部有一個配置項

配置項為“MY_TESTCONFIG”,處于菜單“My test menu”中

配置項的變量類型為bool,默認值為y

配置項菜單名字為“This is my test config”

配置項的幫助內容為“This is a empty config, just for testing!”

完成以上菜單要求,只需要在頂層Kconfig文件末尾加上如下代碼即可

menu "My test menu"

config MY_TESTCONFIG
    bool "This is my test config"
    default y
    help
      This is a empty config,just for test!

endmenu		#my test menu

添加完成后,打開圖形化配置界面,可見主菜單最后面出現一個名為“My test menu”的子菜單

圖片

進入子菜單如下圖示,可見配置項菜單名字

圖片

按下help按鍵打開幫助文檔,如下圖示

圖片

打開.config文件,可以發現“CONFIG_MY_TESTCONFIG=y”,如下圖示,至此在主菜單中添加自定義菜單的功能就實現了

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內核
    +關注

    關注

    3

    文章

    1384

    瀏覽量

    40442
  • Linux
    +關注

    關注

    87

    文章

    11351

    瀏覽量

    210512
  • 代碼
    +關注

    關注

    30

    文章

    4837

    瀏覽量

    69128
  • 圖形化
    +關注

    關注

    0

    文章

    57

    瀏覽量

    14246
  • Uboot
    +關注

    關注

    4

    文章

    125

    瀏覽量

    28362
收藏 人收藏

    評論

    相關推薦

    [分享]圖形化系統的設計

    圖形化系統的設計 商用現成建模平臺如前所述,由于許多設計延遲或是根本無法面市,甚至更糟;由于設計會在推出之后宣告失敗,我們必須采取行動,確保以更短的時間獲得更優質的產品。一舉兩得
    發表于 05-30 15:56

    圖形化編程

    圖形化編程語言的線型如何區分
    發表于 05-24 13:57

    labview圖形化編程分享!

    工作以來一直從事下位機的開發,對上位機了解很少。有的時候DIY時,想將下位機與上位機結合起來,但不知上位機編程怎么回事。從網上了解到一種圖形化編程語言(也叫G語言),LABVIEW就是圖形化編程
    發表于 10-20 20:15

    「正點原子Linux連載」第三十四章U-Boot圖形化配置及其原理

    mx6ull_alientek_emmc_defconfig來配置,或者通過文件mx6ull_alientek_emmc.h來配置uboot。還有另外一種配置
    發表于 03-16 16:16

    【正點原子FPGA連載】第十五章U-Boot圖形化配置及其原理-領航者ZYNQ之linux開發指南

    原子公眾號,獲取最新資料第十五章U-Boot圖形化配置及其原理在前兩章中我們知道uboot可以通過zynq_altk_defconfig來配置
    發表于 09-11 15:57

    淺析Mixly圖形化編程軟件

    Mixly 是由北師大米思齊團隊開發的圖形化編程軟件,自發布以來深受國內創客圈的喜愛。Mixly 編程軟件采用圖形化編程,不用記代碼,只需要拖拽、簡單設置,就能讓你快速完成創意電子編程。本...
    發表于 08-04 07:35

    Mixly圖形化編程軟件介紹

    Mixly 是由北師大米思齊團隊開發的圖形化編程軟件,自發布以來深受國內創客圈的喜愛。Mixly 編程軟件采用圖形化編程,不用記代碼,只需要拖拽、簡單設置,就能讓你快速完成創意電子編程。本...
    發表于 09-01 08:22

    STM32CubeMX圖形化配置軟件怎么使用?有哪些注意事項?

    STM32CubeMX圖形化配置軟件怎么使用?有哪些注意事項?
    發表于 02-14 06:13

    求openharmony圖形化的編程軟件

    學openharmony那些開發板,有圖形化的編程軟件嘛?
    發表于 05-05 07:43

    cpuview圖形化單片機編程軟件下載

    cpuview圖形化單片機編程軟件下載
    發表于 04-09 12:05 ?1095次下載

    Arduino教程_Arduino圖形化編程教程_ArduBlock

    Arduino教程_Arduino圖形化編程軟件_ArduBlock
    發表于 09-25 09:22 ?0次下載
    Arduino教程_Arduino<b class='flag-5'>圖形化</b>編程教程_ArduBlock

    怎樣才能縮短開發圖形化系統設計的時間?

    圖形化系統設計革命性地解決了設計問題,它將直觀的圖形化編程和靈活的商用現成(COTS)硬件融為一體,幫助工程師和科學家更有效地設計、建模、部署嵌入式系統。用戶通過圖形化系統設計,在設計的各個階段采用單一的環境,從而提高生產效率、
    發表于 07-19 07:32 ?738次閱讀
    怎樣才能縮短開發<b class='flag-5'>圖形化</b>系統設計的時間?

    Scratch圖形化編程軟件安裝包下載

    Scratch圖形化編程軟件安裝包下載
    發表于 06-18 09:14 ?0次下載

    STM32CubeMX圖形化配置工具的安裝教程

      STM32CubeMX是STM32芯片圖形化配置工具,通過簡單的操作便能實現相關配置,省去了我們配置各種外設的時間,支持MDK、IAR For ARM、TrueStudio等多種工
    的頭像 發表于 07-02 16:00 ?6436次閱讀
    STM32CubeMX<b class='flag-5'>圖形化</b><b class='flag-5'>配置</b>工具的安裝教程

    STM32CubeMx圖形化配置工具的主要特征與安裝教程

    STM32CubeMX 是意法半導體推出的圖形化配置工具, 通過傻瓜的操作便能實現相關配置, 最終能夠生成 C 語言代碼, 支持多種工具鏈, 比如 MDK、 IARFor ARM、
    的頭像 發表于 05-28 19:07 ?4571次閱讀
    STM32CubeMx<b class='flag-5'>圖形化</b><b class='flag-5'>配置</b>工具的主要特征與安裝教程
    主站蜘蛛池模板: 国产papa| 欧美十次| 午夜视频在线观看免费高清 | 色播视频在线观看免费 | 久久精品国产精品亚洲婷婷 | 美人岛福利 | 干干操 | 天天干天天做天天操 | 在线观看永久免费视频网站 | 99久久精品免费精品国产 | 女色窝人体色77777 | 色老头综合免费视频 | 色视频网站色视频播放 | 国产成年女一区二区三区 | 李老汉和小花的性生生活 | 夜夜草天天干 | 插插天天| 色碰人色碰人视频 | 国产或人精品日本亚洲77美色 | 午夜影视免费完整高清在线观看网站 | 成人欧美一区二区三区 | 黄色视屏免费在线观看 | 久操久操久操 | 一级毛片在线不卡直接观看 | 91视频精品 | 久久99精品久久久久久久野外 | 免费一级毛片不卡在线播放 | 天天干天天爽天天射 | 国产午夜精品视频 | 欧美一区二区三区视频在线观看 | 天堂电影免费在线资源 | 女人精69xxxxxx| 欧美色交 | 国产特黄一级一片免费 | 最新丁香六月 | 色噜噜狠狠狠综合曰曰曰 | 中文字幕xxx | 日本黄色绿像 | 在线免费观看黄色小视频 | 喷潮白浆直流在线播放 | 九九热在线精品 |