女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

i.MX6ULL嵌入式Linux開發3-Kernel移植

碼農愛學習 ? 來源:碼農愛學習 ? 作者:碼農愛學習 ? 2022-03-14 08:36 ? 次閱讀

本文進行Linux內核的移植。

1 Linux內核簡介

NXP 會從linux內核官網下載某個版本,然后將其移植到自己的 CPU上,測試成功后就會將其開放給NXP的CPU開發者。開發者下載 NXP 提供的 Linux 內核,然后將其移植到自己的產品上。

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

2 Linux內核編譯

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

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

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

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

解壓完成后

進入該文件夾,新建一個build.sh腳本文件來編譯,腳本中的內容如下:

#!/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 

給予該腳本可執行權限,然后運行,編譯的時候會彈出Linux圖形配置界面, 這里不需要做任何的配置, 直接按兩下ESC鍵退出圖形界面

之后會自動開始編譯Linux內核。

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

vmlinux 、Image ,zImage 、uImage 的區別

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

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

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

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

3 Linux內核源碼結構

Linux內核編譯過程會生成一些文件,下面來看一下編譯后的內核源碼結構,可以看出多出了一些編譯文件

具體描述如下:

arch目錄

這個目錄是和架構有關的目錄,比如arm、arm64、avr32、x86等等架構。每種架構都對應一個目錄,在這些目錄中又有很多子目錄,比如boot、common、configs等等。

block目錄 block是Linux下塊設備目錄, 像SD卡、EMMC、NAND、硬盤等存儲設備就屬于塊設備,block目錄中存放著管理塊設備的相關文件。

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

Documentation目錄 此目錄里面存放著Linux相關的文檔,如果要想了解Linux某個功能模塊或驅動架構的功能,就可以在Documentation目錄中查找有沒有對應的文檔。

drivers目錄 驅動目錄文件,此目錄根據驅動類型的不同,分門別類進行整理,比如drivers/i2c就是I2C相關驅動目錄,drivers/gpio就是GPIO相關的驅動目錄,這是我們學習的重點。

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

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

4 Linux內核啟動測試

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

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

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

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

setenv bootargs 

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

saveenv

然后可以測試了,啟動開發板,串口中進入uboot命令行模式,然后輸入如下命令將zImage和imx6ull-14x14-evk.dtb下載到開發板中并啟動:

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

可以看到內核啟動了

pYYBAGIuABOALPHAAAFTAW9ilIA490.png

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

pYYBAGIuABqABpwJAAEgTQI9bnE679.png

4.1 根文件系統缺失的錯誤

Linux內核啟動以后是需要根文件系統的,根文件系統存在哪里是由uboot的bootargs環境變量指定, bootargs會傳遞給Linux內核作為命令行參數 。 比如之前設置的root=/dev/mmcblk1p2,也就是說根文件系統存儲在/dev/mmcblk1p2中,即EMMC的分區2中。

因為上一篇的測試時,EMMC的分區2中燒寫好了根文件系統,所以設置root=/dev/mmcblk1p2,并且內核正常啟動。如果我們不設置根文件系統路徑,或者說根文件系統路徑設置錯誤的話會出現什么問題?

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

setenv bootargs 'console=ttymxc0,115200' 
saveenv      

修改完成以后重新從網絡啟動,可以看到也是先啟動了內核:

pYYBAGIuACKAehbbAAEXR-f7qEU106.png

但啟動以后會有類似如下的錯誤:

poYBAGIuACiAQSkVAAE5D4JJaug678.png

最后會有下面這一行:

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

提示內核崩潰,因為VFS(虛擬文件系統)不能掛載根文件系統,目錄不存在。即使目錄存在,如果根文件系統目錄里面是空的依舊會提示內核崩潰。

5 Linux中添加自己的開發板

編譯NXP官方I.MX6ULL EVK開發板對應的Linux內核,發現其可以在野火的EMMC版本開發板啟動。為了進一步了解Linux內核,我們可以參考官方開發板的設置,在Linux內核中添加自己的開發板。

5.1 添加開發板默認配置文件

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

5.2 添加開發板對應的設備樹文件

進入arch/arm/boot/dts目錄中,復制一份imx6ull-14x14-evk.dts,然后將其重命名為imx6ull-myboard.dts

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

poYBAGIuADCAWtJ7AAGKQk_K8UM881.png

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

總結一下以上的修改主要包括:

pYYBAGIuADWAb4aVAACdByBSXsw903.png

主要就是對文件復制一份并重命名,唯一修改的是Makefile文件。

5.3 添加新的編譯腳本

新建一個build_myboard.sh,寫入如下內容:

#!/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目錄)后再次進行Linux啟動測試,可以到登錄提示,說明Linux內核啟動成功。

審核編輯:湯梓紅

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

    關注

    5141

    文章

    19537

    瀏覽量

    315030
  • Linux
    +關注

    關注

    87

    文章

    11462

    瀏覽量

    212803
  • 移植
    +關注

    關注

    1

    文章

    394

    瀏覽量

    28579
收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

    「2025恩智浦創新技術峰會」飛凌嵌入式亮相上海首站

    ,展示其在低成本人工智能、工業物聯網等領域的創新成果。此次峰會,飛凌嵌入式帶來了基于恩智浦i.MX95xx、i.MX9352、i.MX8MPlus和
    的頭像 發表于 05-15 13:38 ?473次閱讀
    「2025恩智浦創新技術峰會」飛凌<b class='flag-5'>嵌入式</b>亮相上海首站

    ECB20-PG6Y28C-I 單板機深度測評報告 ——工業級嵌入式開發的強力助手

    ECB20-PG6Y28C-I?是成都億佰特電子科技基于 i.MX6ULL 處理器推出的工業級測試底板,搭配 ECK20-6Y28C 系列核心板,專為高性能嵌入式場景設計。其核心亮點在
    的頭像 發表于 04-22 11:49 ?194次閱讀

    如何在i.MX6ULL睡眠時停止刷新LCD?

    為了更好的 EMC,我們需要在 i.MX6ULL 進入睡眠狀態時停止 LCD 刷新。 能否實現 ? 平臺: i.MX6ULL 系統: Linux
    發表于 04-03 07:14

    如何維護i.MX6ULL的安全內核?

    隨著即將出臺的 EU RED 33)def 和 EN 18031 法規,修復已知的漏洞至關重要。對于基于 i.MX 6ULL 的系統,在實踐中如何做到這一點? 我們目前
    發表于 04-01 08:28

    如何在i.MX6ULL定制板上啟用IO Expander PCA6416A的控制?

    我想知道如何在 i.MX6ULL 定制板上啟用 IO Expander PCA6416A 的控制。 我嘗試修改 imx6ul-14x14-evk.dtsi,將 pca6416 節點添加到 i
    發表于 03-26 07:10

    GoPoint嵌入式開發平臺 釋放i.MX潛力 簡化Linux開發

    地進行創新。 在快節奏的嵌入式系統時代,時間是開發人員最寶貴的資源。GoPoint (過去名為NXP Demo Experience) 重新定義了評估和探索過程,開發人員能夠快速評估i.MX
    發表于 02-28 10:07 ?494次閱讀
    GoPoint<b class='flag-5'>嵌入式開發</b>平臺 釋放<b class='flag-5'>i.MX</b>潛力 簡化<b class='flag-5'>Linux</b><b class='flag-5'>開發</b>

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-開發板適配之USB_OTG

    i.MX6ULL通過檢測TYPE C類型的插頭內的CC引腳線的高低,來判斷自己是工作在host模式還是device模式,ELF 1開發板直接將CC(TYPE C座的CC1和CC2還有檢測插入方向的功能
    發表于 02-28 09:29

    飛凌嵌入式ElfBoard ELF 1板卡-開發板適配之USB_OTG

    i.MX6ULL通過檢測TYPE C類型的插頭內的CC引腳線的高低,來判斷自己是工作在host模式還是device模式,ELF 1開發板直接將CC(TYPE C座的CC1和CC2還有檢測插入方向的功能,這里不
    發表于 02-27 09:16

    【迅為電子】i.MX6UL和i.MX6ULL芯片區別與開發板對比

    【迅為電子】i.MX6UL和i.MX6ULL芯片區別與開發板對比
    的頭像 發表于 11-28 14:31 ?1220次閱讀
    【迅為電子】<b class='flag-5'>i.MX6</b>UL和<b class='flag-5'>i.MX6ULL</b>芯片區別與<b class='flag-5'>開發</b>板對比

    【新品】i.MX6ULL工業嵌入式核心板!NXP低功耗MPU,LCD顯示

    核心板新品上市ECK20-6Y2XA系列核心板是億佰特基于NXPCortex-A7內核i.MX6ULL處理器精心設計的,采用郵票孔連接的低成本、低功耗、高性價比、高可靠性的嵌入式核心板。可廣泛應用于工業控制、HMI、IoT等領域
    的頭像 發表于 11-15 01:04 ?525次閱讀
    【新品】<b class='flag-5'>i.MX6ULL</b>工業<b class='flag-5'>嵌入式</b>核心板!NXP低功耗MPU,LCD顯示

    【北京迅為】i.mx8mm嵌入式linux開發指南第四篇 嵌入式Linux系統移植篇第六十九章uboot移植

    【北京迅為】i.mx8mm嵌入式linux開發指南第四篇 嵌入式Linux系統
    的頭像 發表于 10-22 14:46 ?1089次閱讀
    【北京迅為】<b class='flag-5'>i.mx</b>8mm<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>開發</b>指南第四篇 <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系統<b class='flag-5'>移植</b>篇第六十九章uboot<b class='flag-5'>移植</b>

    使用TPS6521815 PMIC為NXP i.MX 6ULL6UltraLite供電

    電子發燒友網站提供《使用TPS6521815 PMIC為NXP i.MX 6ULL6UltraLite供電.pdf》資料免費下載
    發表于 09-13 09:44 ?1次下載
    使用TPS6521815 PMIC為NXP <b class='flag-5'>i.MX</b> <b class='flag-5'>6ULL</b>、<b class='flag-5'>6</b>UltraLite供電

    嵌入式linux開發的基本步驟有哪些?

    嵌入式Linux開發是一個復雜的過程,涉及到硬件選擇、操作系統移植、驅動開發、應用程序開發等多個
    的頭像 發表于 09-02 09:11 ?1085次閱讀

    嵌入式linux開發板芯片的工作原理

    嵌入式Linux開發板是一種基于Linux操作系統的嵌入式系統開發平臺,它廣泛應用于工業控制、智
    的頭像 發表于 09-02 09:07 ?720次閱讀