迅為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è)級(jí)以太網(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)。
全新升級(jí)《開發(fā)板使用手冊(cè)》
率先提供在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)檢測(cè)、安規(guī)檢測(cè)、高低溫環(huán)境檢測(cè)等,確保產(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)用。
公眾號(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”可以對(duì)uboot進(jìn)行一次默認(rèn)配置,make distclean后
默認(rèn)配置就已經(jīng)清除,需要重新使用“make imx8mm_ddr4_evk_defconfig”再對(duì)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)的教程以后,我們?cè)賮砜催@個(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 為相對(duì)路徑)。 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 中的每一級(jí)界面 都是有一個(gè) Kconfig 描述的,上一級(jí)的 Kconfig 又會(huì)包含下一節(jié)的 Kconfig,這樣一級(jí)一級(jí)的組織起來。 然后我們來看 menu 到 endmenu 代碼塊里面的 config 代碼,在一個(gè) menu 到 endmenu 代碼塊里面有很多 config 條目,我們就以上圖中的給大家舉例子,剛才我們 說了,menu 到 endmenu 代碼塊就是子菜單,所以 menu 到 endmenu 代碼塊里面的 config 條目就是子菜單 中的配置選項(xiàng)。make menuconfig 中的體現(xiàn)如下圖所示: config 條目中的 config LOCALVERSION 對(duì)應(yīng)子菜單中的 Local version - append to U-Boot release,第二個(gè)依 次類推。
注意:如果配置選項(xiàng)不描述是看不到的,比如 menu 到 endmenu 代碼塊中的 BROKEN,那么我們要 怎么描述呢,比如我們?cè)?BROKEN 下面寫上 string “test”(string 表示類型是 string),然后我們打開 make menuconfig 界面,進(jìn)到 General setup 子菜單,我們就可以看到 BROKEN 選項(xiàng)了,config 條目中的 config LOCALVERSION 后面跟著的 LOCALVERSION 對(duì)應(yīng)的就是 u-boot 目錄下的.config 文 件中的 CONFIG_LOCALVERSION,由此我們可知,每一個(gè) menu 到 endmenu 代碼塊中的 config 條目,在.config 中都會(huì)有一個(gè)一個(gè)對(duì)應(yīng)的 選項(xiàng),對(duì)應(yīng)關(guān)系為 config 條目中的 config XXXX 后面跟著的 XXXX 對(duì)應(yīng).config 文件中的 CONFIG_XXXX(其中 XXXX 就是配置文件的名字,也就是例子中的 LOCALVERSION) menu 到 endmenu 代碼塊中的 config 條目除了以上內(nèi)容,還有一些其他的屬性,比如 string 代表的就是 變量類型, 變量類型可以為上圖中的 boot 或者 string,也可以為 tristate 或者 hex 和 int。其中 boot 類型倆的值有 倆種,也就是 y 和 n,也就是說,如果我們使用了這個(gè)類型,在 make menuconfig 對(duì)應(yīng)的選項(xiàng)中我們可以選 擇 y 和 n,tristate 的值類型有三種,分別是 y,n,m。如果我們使用了這個(gè)類型,在 make menuconfig 對(duì)應(yīng) 的選項(xiàng)中我們可以選擇 y 和 n 還有 m,String 就是字符串類型,如果我們使用了這個(gè)類型,在 make menuconfig 對(duì)應(yīng)的選項(xiàng)中我們可以輸入字符串,我們最常用的就是 boot 和 sting。
最后,menu 到 endmenu 代碼塊中的 config 條目的 help 代碼的就是幫助信息, 我們?cè)?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è)注 釋并不是把某一行代碼注釋的意思,而是在圖形化界面中顯示一行注釋,比如我們?cè)?u-boot 文件夾下的頂 層 Kconfig 中 config LOCALVERSION 條目下添加以下代碼 comment“test在 make menuconfig 的表現(xiàn)如下: 68.3 自定義菜單 上一小節(jié),我們了解了 uboot 中的 Kconfig 文件,那么這一小節(jié)我們就來實(shí)戰(zhàn)一下,我們?cè)?make menuconfig 中自定義一個(gè)自己選項(xiàng)。 1.在 u-boot 目錄下創(chuàng)建一個(gè)名為 toppet 的文件夾,
2.打開 u-boot 下的 Kconfig 文件,在里面加入一下代碼 source “topeet/Kconfig”3.然后進(jìn)到我們?cè)?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 在上面的代碼中,我們?cè)谥鞑藛沃刑砑恿艘粋€(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)的)
-
嵌入式
+關(guān)注
關(guān)注
5071文章
19026瀏覽量
303497 -
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
592瀏覽量
27357 -
u-boot
+關(guān)注
關(guān)注
0文章
120瀏覽量
38202
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論