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

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

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

【北京迅為】i.mx8mm嵌入式linux開發(fā)指南第四篇 嵌入式Linux系統(tǒng)移植篇第六十八章u-boot圖形化配置

北京迅為電子 ? 2024-09-11 11:32 ? 次閱讀

迅為i.mx8mm開發(fā)板特點(diǎn):

性能強(qiáng):i.MX8MM處理器采用了先進(jìn)的14LPC FinFET工藝,提供更快的速度和更高的電源效率;四核Cortex-A53,單核Cortex-M4,多達(dá)五個(gè)內(nèi)核 ,主頻高達(dá)1.8GHz,2G DDR4內(nèi)存、8G EMMC存儲(chǔ)。

PMIC:采用PCA9450A電源管理,是NXP全新研制配套iMX.8M的電源管理芯片,有六個(gè)降壓穩(wěn)壓器、五個(gè)線性穩(wěn)壓器和一個(gè)負(fù)載開關(guān),為整個(gè)系統(tǒng)的穩(wěn)定運(yùn)行提供了更可靠的保證。

接口豐富:千兆工業(yè)以太網(wǎng)、MIPI-DSI、USB HOST、WIFI/BT、4G模塊、CAN、RS485等接口一應(yīng)俱全。

編解碼:H264、VP8視頻硬編碼,H.264、H.265、VP8、VP9視頻硬解碼,并提供相關(guān)歷程。

支持音頻:8路PDM接口、5路SAI接口、2路Speaker。

系統(tǒng)支持:Android9.0、Linux4.14.78 + Qt5.10.1、Yocto、Ubuntu20、Debian9系統(tǒng)。

全新升級《開發(fā)板使用手冊》

率先提供在Android9系統(tǒng)上移植4G模塊方法,并帶大家一步步調(diào)試;

率先提供如何通過SD卡啟動(dòng)Linux鏡像,例如yocto debian ubuntu等文件系統(tǒng);教大家如何將驅(qū)動(dòng)編譯進(jìn)內(nèi)核源碼;根據(jù)IMX8MM開發(fā)板的原理圖總結(jié)了引腳信息,方便大家查閱~

售后服務(wù):提供在線技術(shù)支持答疑,并協(xié)助用戶檢查原理圖,提供詳細(xì)的硬件設(shè)計(jì)指導(dǎo)文檔等服務(wù)。

迅為品質(zhì):通過電磁兼容、電磁輻射標(biāo)準(zhǔn)檢測、安規(guī)檢測、高低溫環(huán)境檢測等,確保產(chǎn)品的可靠性。

7*24小時(shí)長期穩(wěn)定運(yùn)行。10年以上供貨周期長,批量無優(yōu)。

行業(yè)應(yīng)用:適用于智能充電樁、物聯(lián)網(wǎng)工業(yè)控制、醫(yī)療、智能交通等,可用于任何通用工業(yè)和物聯(lián)網(wǎng)應(yīng)用。

wKgaombhDhyAfgi_AAREMVJfRF8006.png

公眾號(hào):迅為電子

-----------------------------------------------

第六十八章u-boot圖形化配置

68.1 uboot圖形化配置初體驗(yàn)

不僅Linux內(nèi)核源碼有圖形化配置功能,u-boot也有自己的圖形化配置功能,它的目錄格式和編譯形式

和Linux很相似,而且部分源碼也是參考的Linux。

主要依靠Makefile,.config,Kconfig,Makefile負(fù)責(zé)管理整個(gè)工程的文件。

.config負(fù)責(zé)配置那些功能模塊編譯進(jìn)目標(biāo)文件

Kconfig負(fù)責(zé)圖形化配置菜單。在圖形化界面選中某個(gè)功能后

源碼頂層目錄的.config會(huì)增加此配置選項(xiàng)。

使用Makefile編譯u-boot鏡像時(shí)會(huì)將此功能添加到u-boot。

U-Boot使用“make imx8mm_ddr4_evk_defconfig”可以對uboot進(jìn)行一次默認(rèn)配置,make distclean后

默認(rèn)配置就已經(jīng)清除,需要重新使用“make imx8mm_ddr4_evk_defconfig”再對uboot進(jìn)行配置。

在源碼頂層目錄執(zhí)行 make menuconfig 后進(jìn)入菜單配置界面,通過鍵盤上的“↑”和“↓”鍵來選擇要 配置的菜單,按下空格可進(jìn)行選中和取消操作,按“Y”選中,菜單選項(xiàng)前顯示“《*》”為選中;使用“N” 取消,菜單選項(xiàng)前顯示“《 》”;按“M”為將相應(yīng)的代碼編譯為模塊,菜單前顯示“”。按下“Enter” 鍵進(jìn)入子菜單。配置界面下方有五個(gè)按鈕,為選中并進(jìn)入,為返回上一層或退出,幫助, 保存,加載指定的配置文件。 上一章節(jié)我們編譯完成后,Makefile會(huì)生成我們需要的工程文件,在uboot源碼下執(zhí)行make menuconfig主要的選項(xiàng)含義如下: Architecture select (ARM architecture) —》 選擇處理器架構(gòu),包含各種處理器架構(gòu)子選項(xiàng)。 ARM architecture —》 ARM 架構(gòu)子選項(xiàng)(依賴于上面的 Architecture select) General setup —》 通用的配置,包含版本號(hào),malloc 池等子選項(xiàng)。 Boot images —》 boot 鏡像 Command line interface —》 命令行接口,可以添加 uboot 命令和一些功能。 Device Tree Control —》 設(shè)備樹控制 Networking support —》 網(wǎng)絡(luò)配置 Device Drivers —》 設(shè)備驅(qū)動(dòng) File systems —》 文件系統(tǒng) Library routines —》 庫程序 選中保存圖形化配置界面,然后就將配置信息寫入到了源碼根目錄的 configs/imx8mm_ddr4_evk_defconfig,然后點(diǎn)擊“OK”“Exit”,如下圖所示: 然后將選項(xiàng)移動(dòng)到“Exit”,退出配置界面,配置好便可以編譯 uboot 源碼了。

68.2 Kconfig 語法簡介 Uboot 中的 Kconfig 語法與內(nèi)核中的 Kconfig 語法類似,所以在學(xué)習(xí)完驅(qū)動(dòng)的教程以后,我們再來看這個(gè) 語法會(huì)發(fā)現(xiàn)十分的簡單,同樣,uboot 中的 Kconfig 語法我們也不用特別的去深入研究,我們只要掌握到可 以自行往 uboot 中添加自己的配置即可。那么接下來我們就簡單的來學(xué)下下 Kconfig 語法。 我們進(jìn)到 uboot 源碼下,打開頂層 Kconfig 文件,打開完成后如下圖所示:

上圖中的第一行代碼 mainmenu 顧名思義就是主菜單,如下圖所示,也就是我們輸入完 make menuconfig 以后默認(rèn)打開的界面, mainmenu “U-Boot $UBOOTVERSION Configuration”從 這 句 代 碼 中 我 們 可 以 看 出 主 菜 單 的 名 字 為 “ U-Boot $UBOOTVERSION Configuration ” , 其 中 $UBOOTVERSION 為 2018.03,我們接著往下看這個(gè) Kconfig 文件,我們可以發(fā)現(xiàn)有很多 source “xxx/Kconfig”的代碼,source “xxx/Kconfig”的代碼的意思是調(diào)用其他目錄下的 Kconfig 文件,比如 source “arch/Kconfig”就是調(diào) 用 arch 目錄下的 Kconfig 文件(arch/Kconfig 為相對路徑)。 source “xxx/Kconfig”代碼下面是以 menu “General setup”開頭,以 endmenu 結(jié)尾的一大段代碼,如下圖 所示: 我們可以把這一大段代碼稱為 menu 到 endmenu 代碼塊。

那么這個(gè)代碼塊的作用是什么呢?其實(shí)每一 個(gè)代碼塊代表都是一個(gè)子菜單,比如上圖中的 menu 到 endmenu 代碼塊,代表的是 General setup 子菜單。 也就是 make menuconfig 中的 General setup??吹竭@里我們其實(shí)就已經(jīng)可以發(fā)現(xiàn) make menuconfig 的架構(gòu)形式了,make menuconfig 中的每一級界面 都是有一個(gè) Kconfig 描述的,上一級的 Kconfig 又會(huì)包含下一節(jié)的 Kconfig,這樣一級一級的組織起來。 然后我們來看 menu 到 endmenu 代碼塊里面的 config 代碼,在一個(gè) menu 到 endmenu 代碼塊里面有很多 config 條目,我們就以上圖中的給大家舉例子,剛才我們 說了,menu 到 endmenu 代碼塊就是子菜單,所以 menu 到 endmenu 代碼塊里面的 config 條目就是子菜單 中的配置選項(xiàng)。make menuconfig 中的體現(xiàn)如下圖所示: config 條目中的 config LOCALVERSION 對應(yīng)子菜單中的 Local version - append to U-Boot release,第二個(gè)依 次類推。

注意:如果配置選項(xiàng)不描述是看不到的,比如 menu 到 endmenu 代碼塊中的 BROKEN,那么我們要 怎么描述呢,比如我們在 BROKEN 下面寫上 string “test”(string 表示類型是 string),然后我們打開 make menuconfig 界面,進(jìn)到 General setup 子菜單,我們就可以看到 BROKEN 選項(xiàng)了,config 條目中的 config LOCALVERSION 后面跟著的 LOCALVERSION 對應(yīng)的就是 u-boot 目錄下的.config 文 件中的 CONFIG_LOCALVERSION,由此我們可知,每一個(gè) menu 到 endmenu 代碼塊中的 config 條目,在.config 中都會(huì)有一個(gè)一個(gè)對應(yīng)的 選項(xiàng),對應(yīng)關(guān)系為 config 條目中的 config XXXX 后面跟著的 XXXX 對應(yīng).config 文件中的 CONFIG_XXXX(其中 XXXX 就是配置文件的名字,也就是例子中的 LOCALVERSION) menu 到 endmenu 代碼塊中的 config 條目除了以上內(nèi)容,還有一些其他的屬性,比如 string 代表的就是 變量類型, 變量類型可以為上圖中的 boot 或者 string,也可以為 tristate 或者 hex 和 int。其中 boot 類型倆的值有 倆種,也就是 y 和 n,也就是說,如果我們使用了這個(gè)類型,在 make menuconfig 對應(yīng)的選項(xiàng)中我們可以選 擇 y 和 n,tristate 的值類型有三種,分別是 y,n,m。如果我們使用了這個(gè)類型,在 make menuconfig 對應(yīng) 的選項(xiàng)中我們可以選擇 y 和 n 還有 m,String 就是字符串類型,如果我們使用了這個(gè)類型,在 make menuconfig 對應(yīng)的選項(xiàng)中我們可以輸入字符串,我們最常用的就是 boot 和 sting。

最后,menu 到 endmenu 代碼塊中的 config 條目的 help 代碼的就是幫助信息, 我們在 make menuconfig 中使用?彈出來的就是這個(gè)信息,在 Kconfig 文件中,我們看到以下代碼:其中的 depends on 說明 FIT_SIGNATURE 要依賴于 DM,換句話說,也就是 DM 選中后 FIT_SIGNATURE 才 可以選中,select 表示反向依賴,當(dāng) FIT_SIGNATURE 被選中以后,RSA 和 CONSOLE_DISABLE_CLI 也會(huì)被選中。

除了 depends on 和 select,在 Kconfig 文件中我們也可以看到 menuconfig,的 menuconfig 是一個(gè)帶菜單的選項(xiàng),其結(jié)構(gòu)為以 menuconfig 開頭,以 endif 結(jié)尾。上圖中我們定 義了一個(gè)菜單 EXPERT,也就是說,只有我們選中了 EXPERT,if EXPERT 到 endif 的內(nèi)容才可以顯示。 在 make menuconfig 中的體現(xiàn)還有一個(gè)比較多見的就是注釋了,但是此注釋非彼注釋,Kconfig 里面 comment 用于注釋,但是這個(gè)注 釋并不是把某一行代碼注釋的意思,而是在圖形化界面中顯示一行注釋,比如我們在 u-boot 文件夾下的頂 層 Kconfig 中 config LOCALVERSION 條目下添加以下代碼 comment“test在 make menuconfig 的表現(xiàn)如下: 68.3 自定義菜單 上一小節(jié),我們了解了 uboot 中的 Kconfig 文件,那么這一小節(jié)我們就來實(shí)戰(zhàn)一下,我們在 make menuconfig 中自定義一個(gè)自己選項(xiàng)。 1.在 u-boot 目錄下創(chuàng)建一個(gè)名為 toppet 的文件夾,

2.打開 u-boot 下的 Kconfig 文件,在里面加入一下代碼 source “topeet/Kconfig”3.然后進(jìn)到我們在 u-boot 下創(chuàng)建的 topeet 文件夾,并在此文件下創(chuàng)建一個(gè) Kconfig 文件,4.我們打開創(chuàng)建好的這個(gè) Kconfig 文件,在里面填入一下代碼:menu “test menu” config TEST_CONFIG bool “test” default y help just testcomment “just test” Endmenu 在上面的代碼中,我們在主菜單中添加了一個(gè)名為 test menu 的子菜單,然后在這個(gè)子菜單里面我們添 加了一個(gè)名為 TEST_CONFIG 的配置項(xiàng),這個(gè)配置項(xiàng)變量類型為 bool,默認(rèn)配置為 Y,幫助信息為 just test, 注釋為 just test。添加完成以后在圖形化配置界面表現(xiàn)如下: 在主菜單中添加的子菜單子菜單中的配置項(xiàng),默認(rèn)為 y,注釋信息為 just test。在此界面輸入?,顯示幫助信息為 just test,然后我們打開 u-boot 下的.config 文件,我們可以在這個(gè).config 文件中找到我們添加的 TEST_CONFIG(注意,我們需要在 make menuconfig 中保 存才可以看到,否則是看不到我們添加的這個(gè)選項(xiàng)的)

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

    關(guān)注

    5052

    文章

    18906

    瀏覽量

    300699
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    588

    瀏覽量

    27262
  • u-boot
    +關(guān)注

    關(guān)注

    0

    文章

    120

    瀏覽量

    38161
收藏 人收藏

    評論

    相關(guān)推薦

    北京RK3568開發(fā)嵌入式學(xué)習(xí)之Linux驅(qū)動(dòng)全新更新-CAN+

    北京RK3568開發(fā)嵌入式學(xué)習(xí)之Linux驅(qū)動(dòng)全新更新-CAN+
    的頭像 發(fā)表于 09-04 15:29 ?278次閱讀
    <b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>為</b>RK3568<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>嵌入式</b>學(xué)習(xí)之<b class='flag-5'>Linux</b>驅(qū)動(dòng)全新更新-CAN+

    北京】《stm32mp157開發(fā)嵌入式linux開發(fā)指南》第五章 Ubuntu使用apt-get下載

    北京】《stm32mp157開發(fā)嵌入式linux開發(fā)
    的頭像 發(fā)表于 09-03 16:26 ?606次閱讀
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>為</b>】《stm32mp157<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>開發(fā)指南</b>》第五章 Ubuntu使用apt-get下載

    七大嵌入式GUI盤點(diǎn)

    嵌入式圖形用戶界面(GUI)是一種嵌入式系統(tǒng)設(shè)計(jì)的用戶界面,它可以讓用戶通過圖形化的方式與設(shè)備
    發(fā)表于 09-02 10:58

    嵌入式linux開發(fā)的基本步驟有哪些?

    嵌入式Linux開發(fā)是一個(gè)復(fù)雜的過程,涉及到硬件選擇、操作系統(tǒng)移植、驅(qū)動(dòng)開發(fā)、應(yīng)用程序
    的頭像 發(fā)表于 09-02 09:11 ?275次閱讀

    嵌入式linux開發(fā)板怎么操作

    開發(fā)板概述 嵌入式Linux開發(fā)板是一種專門嵌入式系統(tǒng)開發(fā)
    的頭像 發(fā)表于 09-02 09:09 ?266次閱讀

    嵌入式linux開發(fā)板芯片的工作原理

    嵌入式Linux開發(fā)板是一種基于Linux操作系統(tǒng)嵌入式
    的頭像 發(fā)表于 09-02 09:07 ?245次閱讀

    北京】《i.MX8MM嵌入式Linux開發(fā)指南》-第四篇 嵌入式Linux系統(tǒng)移植-第六十七章 Uboot編譯及移植

    i.MX8MM處理器采用了先進(jìn)的14LPCFinFET工藝,提供更快的速度和更高的電源效率;核Cortex-A53,單核Cortex-M4,多達(dá)五個(gè)內(nèi)核,主頻高達(dá)1.8GHz,2GDDR4內(nèi)存
    的頭像 發(fā)表于 08-07 15:08 ?343次閱讀
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>為</b>】《<b class='flag-5'>i.MX8MM</b><b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>開發(fā)指南</b>》-<b class='flag-5'>第四篇</b> <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>移植</b><b class='flag-5'>篇</b>-<b class='flag-5'>第六十</b>七章 Uboot編譯及<b class='flag-5'>移植</b>

    【出版發(fā)行】嵌入式系統(tǒng)原理與開發(fā)——基于RISC-V和Linux系統(tǒng)

    【出版發(fā)行】嵌入式系統(tǒng)原理與開發(fā)——基于RISC-V和Linux系統(tǒng)
    的頭像 發(fā)表于 07-26 08:36 ?216次閱讀
    【出版發(fā)行】<b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>原理與<b class='flag-5'>開發(fā)</b>——基于RISC-V和<b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>

    專家力薦|《嵌入式系統(tǒng)原理與開發(fā)——基于RISC-V和Linux系統(tǒng)》新書發(fā)售

    當(dāng)前,嵌入式系統(tǒng)已成為智能設(shè)備的核心之一,RISC-V+Linux的開源力量嵌入式系統(tǒng)注入強(qiáng)大
    的頭像 發(fā)表于 07-24 08:20 ?384次閱讀
    專家力薦|《<b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>原理與<b class='flag-5'>開發(fā)</b>——基于RISC-V和<b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>》新書發(fā)售

    嵌入式人工智能的就業(yè)方向有哪些?

    網(wǎng)絡(luò)編程開發(fā)及實(shí)戰(zhàn)下 數(shù)據(jù)庫開發(fā) Linux應(yīng)用開發(fā)綜合實(shí)戰(zhàn) 三:嵌入式Linux
    發(fā)表于 02-26 10:17

    嵌入式軟件開發(fā)應(yīng)該掌握哪些知識(shí)?

    兩個(gè)部分組成,其中嵌入式軟件是指在嵌入式系統(tǒng)中運(yùn)行的程序,用于控制硬件并提供特定的功能和服務(wù)。嵌入式軟件應(yīng)用廣泛,包括汽車、醫(yī)療設(shè)備、智能家居、智能穿戴、工業(yè)自動(dòng)
    發(fā)表于 02-19 11:23

    嵌入式Linux開發(fā)的三種方式

    嵌入式Linux開發(fā)主要有三種方式:裸機(jī)開發(fā)、SDK開發(fā)和驅(qū)動(dòng)開發(fā)。
    的頭像 發(fā)表于 01-22 14:22 ?865次閱讀

    恩智浦i.MX8MM核心板在便攜醫(yī)療設(shè)備產(chǎn)品中的應(yīng)用

    恩智浦i.MX8MM核心板在便攜醫(yī)療設(shè)備產(chǎn)品中的應(yīng)用-電子
    的頭像 發(fā)表于 11-15 14:37 ?468次閱讀
    恩智浦<b class='flag-5'>i.MX8MM</b>核心板在便攜<b class='flag-5'>式</b>醫(yī)療設(shè)備產(chǎn)品中的應(yīng)用

    有無操作系統(tǒng)嵌入式Linux驅(qū)動(dòng)設(shè)備有何區(qū)別?

    是將系統(tǒng)的軟件與硬件連接起來,使它們能夠相互交互。 嵌入式系統(tǒng)常使用Linux系統(tǒng)作為開發(fā)平臺(tái),
    的頭像 發(fā)表于 10-29 17:29 ?651次閱讀

    基于嵌入式Linux的數(shù)字相框設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于嵌入式Linux的數(shù)字相框設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-23 09:45 ?0次下載
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>的數(shù)字相框設(shè)計(jì)