日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

i.MX6ULL嵌入式Linux開發(fā)3-Kernel移植

碼農(nóng)愛學(xué)習(xí) ? 來源:碼農(nóng)愛學(xué)習(xí) ? 作者:碼農(nóng)愛學(xué)習(xí) ? 2022-03-14 08:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文進(jìn)行Linux內(nèi)核的移植。

1 Linux內(nèi)核簡(jiǎn)介

NXP 會(huì)從linux內(nèi)核官網(wǎng)下載某個(gè)版本,然后將其移植到自己的 CPU上,測(cè)試成功后就會(huì)將其開放給NXP的CPU開發(fā)者。開發(fā)者下載 NXP 提供的 Linux 內(nèi)核,然后將其移植到自己的產(chǎn)品上。

本文我們就使用NXP提供的Linux源碼,文件名為:linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

2 Linux內(nèi)核編譯

編譯內(nèi)核之前需要先在ubuntu上安裝lzop庫(kù),另外,圖形化配置工具還需要ncurses庫(kù)支持,安裝命令為:

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

在Ubuntu中新建一個(gè)文件夾,然后將linux內(nèi)核壓縮包拷貝到文件夾中并解壓,解壓命令為:

tar -vxf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

解壓完成后

進(jìn)入該文件夾,新建一個(gè)build.sh腳本文件來編譯,腳本中的內(nèi)容如下:

#!/bin/sh 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_mfg_defconfig 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j8 

給予該腳本可執(zhí)行權(quán)限,然后運(yùn)行,編譯的時(shí)候會(huì)彈出Linux圖形配置界面, 這里不需要做任何的配置, 直接按兩下ESC鍵退出圖形界面

之后會(huì)自動(dòng)開始編譯Linux內(nèi)核。

編譯完成以后就會(huì)在arch/arm/boot這個(gè)目錄下生成一個(gè)zImage文件,該文件就是要用的Linux鏡像文件。另外也會(huì)在arch/arm/boot/dts下生成很多.dtb 文件,這些.dtb 就是設(shè)備樹文件。

vmlinux 、Image ,zImage 、uImage 的區(qū)別

vmlinux是ELF格式的文件,是編譯出來的最原始的內(nèi)核文件,編譯出來 差不多有16MB,是未壓縮的。在實(shí)際中我們不會(huì)使用vmlinux,而是使用zImage或uImage這樣的 Linux 內(nèi)核鏡像文件。

Image是Linux內(nèi)核鏡像文件,但是Image僅包含可執(zhí)行的二進(jìn)制數(shù)據(jù)。Image就是使用objcopy取消掉vmlinux中的一些其他信息,比如符號(hào)表什么的。但是 Image 是沒有壓縮過的,Image保存在arch/arm/boot目錄下,其大小大概在12MB 。

zImage是經(jīng)過gzip壓縮后的Image,經(jīng)過壓縮以后其大小大概在6MB左右。

uImage是老版本uboot專用的鏡像文件,uImag是在zImage前面加了一個(gè)長(zhǎng)度為 64字節(jié)的“頭” ,這個(gè)頭信息描述了該鏡像文件的類型、加載位置、生成時(shí)間、大小等信息。但是新的uboot已經(jīng)支持了 zImage 啟動(dòng)! 所以已經(jīng)很少用到uImage了。

3 Linux內(nèi)核源碼結(jié)構(gòu)

Linux內(nèi)核編譯過程會(huì)生成一些文件,下面來看一下編譯后的內(nèi)核源碼結(jié)構(gòu),可以看出多出了一些編譯文件

具體描述如下:

arch目錄

這個(gè)目錄是和架構(gòu)有關(guān)的目錄,比如arm、arm64、avr32、x86等等架構(gòu)。每種架構(gòu)都對(duì)應(yīng)一個(gè)目錄,在這些目錄中又有很多子目錄,比如boot、common、configs等等。

block目錄 block是Linux下塊設(shè)備目錄, 像SD卡、EMMC、NAND、硬盤等存儲(chǔ)設(shè)備就屬于塊設(shè)備,block目錄中存放著管理塊設(shè)備的相關(guān)文件。

crypto目錄 crypto目錄里面存放著加密文件,比如常見的crc、crc32、md4、md5、hash等加密算法。

Documentation目錄 此目錄里面存放著Linux相關(guān)的文檔,如果要想了解Linux某個(gè)功能模塊或驅(qū)動(dòng)架構(gòu)的功能,就可以在Documentation目錄中查找有沒有對(duì)應(yīng)的文檔。

drivers目錄 驅(qū)動(dòng)目錄文件,此目錄根據(jù)驅(qū)動(dòng)類型的不同,分門別類進(jìn)行整理,比如drivers/i2c就是I2C相關(guān)驅(qū)動(dòng)目錄,drivers/gpio就是GPIO相關(guān)的驅(qū)動(dòng)目錄,這是我們學(xué)習(xí)的重點(diǎn)。

firmware 目錄 此目錄用于存放固件。

fs目錄 此目錄存放文件系統(tǒng),比如fs/ext2、fs/ext4、fs/f2fs等,分別是ext2、ext4 和 f2fs等文件系統(tǒng)。

4 Linux內(nèi)核啟動(dòng)測(cè)試

將編譯出來的zImage和imx6ull-14x14-evk.dtb復(fù)制到Ubuntu中的tftp目錄下,之后會(huì)通過uboot 的tftp命令將其下載到開發(fā)板中。

在測(cè)試之前確保uboot中的環(huán)境變量bootargs內(nèi)容如下(使用print指令查看):

console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw

如果不是的話,可以使用如下指令設(shè)置一下:

setenv bootargs 

'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'

saveenv

然后可以測(cè)試了,啟動(dòng)開發(fā)板,串口中進(jìn)入uboot命令行模式,然后輸入如下命令將zImage和imx6ull-14x14-evk.dtb下載到開發(fā)板中并啟動(dòng):

tftp 80800000 zImage   
tftp 83000000 imx6ull-14x14-evk.dtb 
bootz 80800000 - 83000000  

可以看到內(nèi)核啟動(dòng)了

pYYBAGIuABOALPHAAAFTAW9ilIA490.png

最后到了系統(tǒng)登錄處,說明Linux系統(tǒng)正常啟動(dòng)了(這次LCD上沒有了野火的圖形界面,可能是某些固件不匹配吧,先忽略)

pYYBAGIuABqABpwJAAEgTQI9bnE679.png

4.1 根文件系統(tǒng)缺失的錯(cuò)誤

Linux內(nèi)核啟動(dòng)以后是需要根文件系統(tǒng)的,根文件系統(tǒng)存在哪里是由uboot的bootargs環(huán)境變量指定, bootargs會(huì)傳遞給Linux內(nèi)核作為命令行參數(shù) 。 比如之前設(shè)置的root=/dev/mmcblk1p2,也就是說根文件系統(tǒng)存儲(chǔ)在/dev/mmcblk1p2中,即EMMC的分區(qū)2中。

因?yàn)樯弦黄臏y(cè)試時(shí),EMMC的分區(qū)2中燒寫好了根文件系統(tǒng),所以設(shè)置root=/dev/mmcblk1p2,并且內(nèi)核正常啟動(dòng)。如果我們不設(shè)置根文件系統(tǒng)路徑,或者說根文件系統(tǒng)路徑設(shè)置錯(cuò)誤的話會(huì)出現(xiàn)什么問題?

我們將uboot中的bootargs環(huán)境變量改為“console=ttymxc0,115200” ,也就是不填寫root的內(nèi)容了,命令如下:

setenv bootargs 'console=ttymxc0,115200' 
saveenv      

修改完成以后重新從網(wǎng)絡(luò)啟動(dòng),可以看到也是先啟動(dòng)了內(nèi)核:

pYYBAGIuACKAehbbAAEXR-f7qEU106.png

但啟動(dòng)以后會(huì)有類似如下的錯(cuò)誤:

poYBAGIuACiAQSkVAAE5D4JJaug678.png

最后會(huì)有下面這一行:

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) 

提示內(nèi)核崩潰,因?yàn)閂FS(虛擬文件系統(tǒng))不能掛載根文件系統(tǒng),目錄不存在。即使目錄存在,如果根文件系統(tǒng)目錄里面是空的依舊會(huì)提示內(nèi)核崩潰。

5 Linux中添加自己的開發(fā)板

編譯NXP官方I.MX6ULL EVK開發(fā)板對(duì)應(yīng)的Linux內(nèi)核,發(fā)現(xiàn)其可以在野火的EMMC版本開發(fā)板啟動(dòng)。為了進(jìn)一步了解Linux內(nèi)核,我們可以參考官方開發(fā)板的設(shè)置,在Linux內(nèi)核中添加自己的開發(fā)板。

5.1 添加開發(fā)板默認(rèn)配置文件

arch/arm/configs目錄下的imx_v7_mfg_defconfig重新復(fù)制一份 , 命名為自己開發(fā)板,如imx_myboard_defconfig。

5.2 添加開發(fā)板對(duì)應(yīng)的設(shè)備樹文件

進(jìn)入arch/arm/boot/dts目錄中,復(fù)制一份imx6ull-14x14-evk.dts,然后將其重命名為imx6ull-myboard.dts。

然后還需要修改文件arch/arm/boot/dts/Makefile,找到 dtb-$(CONFIG_SOC_IMX6ULL)配置項(xiàng),在此配置項(xiàng)中加入“imx6ull-myboard.dtb” :

poYBAGIuADCAWtJ7AAGKQk_K8UM881.png

這樣編譯Linux的時(shí)候就可以從imx6ull-myboard.dts 編譯出 imx6ull-myboard.dtb 文件了。

總結(jié)一下以上的修改主要包括:

pYYBAGIuADWAb4aVAACdByBSXsw903.png

主要就是對(duì)文件復(fù)制一份并重命名,唯一修改的是Makefile文件。

5.3 添加新的編譯腳本

新建一個(gè)build_myboard.sh,寫入如下內(nèi)容:

#!/bin/sh 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_myboard_defconfig 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j8

編譯出zImage(arch/arm/boot目錄)和imx6ull-myboard.dtb (arch/arm/boot/dts目錄)后再次進(jìn)行Linux啟動(dòng)測(cè)試,可以到登錄提示,說明Linux內(nèi)核啟動(dòng)成功。

審核編輯:湯梓紅

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

    關(guān)注

    5210

    文章

    20680

    瀏覽量

    337403
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11822

    瀏覽量

    219604
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    417

    瀏覽量

    29541
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    i.MX6ULL能否接受來自外部振蕩器的直接50 MHz輸入?

    我們正在將 LAN8710A-EZK PHY 與 RMII 模式下的 i.MX6ULL 集成,需要澄清有關(guān) 50 MHz 參考時(shí)鐘的信息。 由于RMII需要50 MHz時(shí)鐘,i.MX6ULL能否接受
    發(fā)表于 04-17 06:05

    開發(fā)一個(gè)基于運(yùn)行 Yocto 的 i.MX6ULL 的定制板,如何減少啟動(dòng)時(shí)間?

    我正在開發(fā)一個(gè)基于運(yùn)行 Yocto 的 i.MX6ULL 的定制板,我想盡可能減少啟動(dòng)時(shí)間。 到目前為止,我已經(jīng): 禁用內(nèi)核中所有不必要的選項(xiàng) (menuconfig) 將 Yocto 圖像減少到
    發(fā)表于 04-16 08:26

    嵌入式驅(qū)動(dòng)開發(fā),需要掌握哪些技能?

    嵌入式驅(qū)動(dòng)開發(fā)中,方便設(shè)備管理、驅(qū)動(dòng)移植等,所以,需要掌握一定的數(shù)據(jù)結(jié)構(gòu)。 3、 操作系統(tǒng)知識(shí)如果基于Linux、RTOS等操作系統(tǒng)設(shè)
    發(fā)表于 01-20 16:46

    探索Renesas AIK - RA6M3:開啟嵌入式開發(fā)新旅程

    探索Renesas AIK - RA6M3:開啟嵌入式開發(fā)新旅程 在嵌入式開發(fā)的廣闊領(lǐng)域中,Renesas的AIK - RA6M3套件猶如一顆璀璨的新星,為
    的頭像 發(fā)表于 12-29 10:05 ?559次閱讀

    Linux嵌入式和單片機(jī)嵌入式的區(qū)別?

    ,開發(fā)工具包括GCC、Makefile等。 3.操作系統(tǒng) : 單片機(jī)嵌入式 :一般不使用完整的操作系統(tǒng),或者使用簡(jiǎn)單的實(shí)時(shí)操作系統(tǒng)(RTOS),如FreeRTOS。 Linux
    發(fā)表于 06-20 09:46

    瑞芯微RK3506 vs NXP i.MX6ULL

    NXPi.MX6ULL核心板進(jìn)行多方面對(duì)比。性能與能效對(duì)比性能優(yōu)勢(shì)對(duì)比:RK3506在接口方面比i.MX6ULL少2個(gè)UART,其他性能方面,RK3506以三核A7(1.
    的頭像 發(fā)表于 06-19 16:26 ?1581次閱讀
    瑞芯微RK3506 vs NXP <b class='flag-5'>i.MX6ULL</b>

    5分鐘學(xué)會(huì)網(wǎng)絡(luò)服務(wù)搭建!飛凌i.MX9352開發(fā)板 + Linux 6.1實(shí)戰(zhàn)示例

    本文就將以飛凌嵌入式OK-MX9352-C開發(fā)板(搭載了在工業(yè)物聯(lián)網(wǎng)領(lǐng)域廣泛應(yīng)用的NXP i.MX9352處理器)為平臺(tái),介紹如何在Linux
    的頭像 發(fā)表于 06-13 16:42 ?1593次閱讀
    5分鐘學(xué)會(huì)網(wǎng)絡(luò)服務(wù)搭建!飛凌<b class='flag-5'>i.MX</b>9352<b class='flag-5'>開發(fā)</b>板 + <b class='flag-5'>Linux</b> 6.1實(shí)戰(zhàn)示例

    618盛夏狂歡,米爾電子攜手恩智浦開啟年度技術(shù)盛宴!

    即日起-2025.06.30,米爾恩智浦多系列開發(fā)板限時(shí)折扣!米爾基于i.MX91、i.MX93、i.MX8MPlus、i.MX6UL/
    的頭像 發(fā)表于 06-13 08:03 ?1044次閱讀
    618盛夏狂歡,米爾電子攜手恩智浦開啟年度技術(shù)盛宴!

    米爾NXP i.MX 91核心板發(fā)布,助力新一代入門級(jí)Linux應(yīng)用開發(fā)

    本帖最后由 blingbling111 于 2025-5-30 16:17 編輯 米爾電子基于與NXP長(zhǎng)期合作的嵌入式處理器開發(fā)經(jīng)驗(yàn),在i.MX 6
    發(fā)表于 05-30 11:20

    5分鐘學(xué)會(huì)網(wǎng)絡(luò)服務(wù)搭建,飛凌i.MX9352 + Linux 6.1實(shí)戰(zhàn)示例

    本文將以飛凌嵌入式OK-MX9352-C開發(fā)板(搭載了在工業(yè)物聯(lián)網(wǎng)領(lǐng)域廣泛應(yīng)用的NXP i.MX9352處理器)為平臺(tái),介紹如何在Linux
    的頭像 發(fā)表于 05-30 11:08 ?2543次閱讀
    5分鐘學(xué)會(huì)網(wǎng)絡(luò)服務(wù)搭建,飛凌<b class='flag-5'>i.MX</b>9352 + <b class='flag-5'>Linux</b> 6.1實(shí)戰(zhàn)示例

    飛凌嵌入式ElfBoard ELF 1板卡-uboot移植之IOMUX介紹

    本章節(jié)主要講,如何將NXP官方i.MX6ULL EVK評(píng)估板的uboot源碼移植適配到ELF 1開發(fā)板。本身uboot的作用就是啟動(dòng)內(nèi)核,只要能成功啟動(dòng)內(nèi)核,uboot使命便已完成。但是從開發(fā)
    發(fā)表于 05-30 09:28

    新品!米爾NXP i.MX 91核心板,賦能新一代入門級(jí)Linux應(yīng)用

    米爾電子基于與NXP長(zhǎng)期合作的嵌入式處理器開發(fā)經(jīng)驗(yàn),在i.MX6i.MX8系列核心板領(lǐng)域已形成完整產(chǎn)品矩陣,米爾累計(jì)推出5個(gè)平臺(tái)共計(jì)二十余款NXP核心板,涵蓋工業(yè)物聯(lián)網(wǎng)、新能源、醫(yī)療
    的頭像 發(fā)表于 05-29 08:01 ?3111次閱讀
    新品!米爾NXP <b class='flag-5'>i.MX</b> 91核心板,賦能新一代入門級(jí)<b class='flag-5'>Linux</b>應(yīng)用

    飛凌嵌入式ElfBoard ELF 1板卡-uboot配置詳解

    都是uboot可以支持的不同平臺(tái)的配置文件。我們只關(guān)心跟i.MX6ULL相關(guān)的_defconfig,輸入命令:elf@ubuntu:~/work
    發(fā)表于 05-22 11:14

    飛凌嵌入式ElfBoard ELF 1板卡-Uboot

    /SourceCode下載。不過我們目前使用的uboot源碼不是在這個(gè)網(wǎng)站下載的,而是由NXP公司提供的。NXP公司在推廣i.MX6ULL芯片時(shí),會(huì)開發(fā)出一套i.MX6ULL EVK評(píng)估板給客戶進(jìn)行評(píng)估,同時(shí)也有
    發(fā)表于 05-22 10:44

    「2025恩智浦創(chuàng)新技術(shù)峰會(huì)」飛凌嵌入式亮相上海首站

    ,展示其在低成本人工智能、工業(yè)物聯(lián)網(wǎng)等領(lǐng)域的創(chuàng)新成果。此次峰會(huì),飛凌嵌入式帶來了基于恩智浦i.MX95xx、i.MX9352、i.MX8MPlus和
    的頭像 發(fā)表于 05-15 13:38 ?1655次閱讀
    「2025恩智浦創(chuàng)新技術(shù)峰會(huì)」飛凌<b class='flag-5'>嵌入式</b>亮相上海首站
    淳安县| 石林| 栾川县| 韩城市| 舟曲县| 奉化市| 天等县| 普兰店市| 孟村| 吉木萨尔县| 县级市| 三原县| 凤山市| 德安县| 通州区| 南华县| 金阳县| 荆门市| 深水埗区| 石景山区| 建德市| 二连浩特市| 菏泽市| 西乌珠穆沁旗| 石狮市| 宜丰县| 建德市| 黑水县| 辽宁省| 广昌县| 溆浦县| 莱州市| 博罗县| 崇文区| 平遥县| 赤水市| 武宁县| 武乡县| 定陶县| 雅江县| 盐城市|