精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

如何移植Linux內(nèi)核到I.MX6ULL開(kāi)發(fā)板上

玩轉(zhuǎn)單片機(jī) ? 來(lái)源:玩轉(zhuǎn)單片機(jī) ? 作者:noah ? 2022-10-10 14:47 ? 次閱讀

上篇講了如何移植 uboot 到 I.MX6ULL開(kāi)發(fā)板上,現(xiàn)在開(kāi)始學(xué)習(xí)如何移植 Linux 內(nèi)核。

|獲取Linux 內(nèi)核

Linux 由 Linux 基金會(huì)管理與發(fā)布,所以你想獲取最新的Linux 版本就可以在這個(gè)網(wǎng)站上下載;

32666e44-485a-11ed-a3b6-dac502259ad0.png

4.x 版本的 Linux 和 5.x 版本沒(méi)有本質(zhì)上的區(qū)別,5.x 更多的是加入了一些新的平臺(tái)、新的外設(shè)驅(qū)動(dòng)而已。

NXP 會(huì)從 https://www.kernel.org 下載某個(gè)版本的 Linux 內(nèi)核,然后將其移植到自己的 CPU上,測(cè)試成功以后就會(huì)將其開(kāi)放給 NXP 的 CPU 開(kāi)發(fā)者

開(kāi)發(fā)者下載 NXP 提供的 Linux 內(nèi)核,然后將其移植到自己的產(chǎn)品上。

NXP 提供的 Linux 源碼可以在原子公開(kāi)資料包中找到,路徑如下:

開(kāi)發(fā)板光盤(pán)->1、例程源碼->4、NXP 官方原版 Uboot和 Linux-> linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

|編譯Linux內(nèi)核

編譯內(nèi)核之前需要先在 ubuntu 上安裝 lzop 庫(kù),否則內(nèi)核編譯會(huì)失敗!命令如下:

sudo apt-get install lzop


//下面兩個(gè)庫(kù)如果沒(méi)安裝也需要安裝一下
sudoapt-getinstallbuild-essential
sudo apt-get install libncurses5-dev


// 查看是否安裝
dpkg -s build-essential
dpkg -s libncurses5-dev

32913fa2-485a-11ed-a3b6-dac502259ad0.png

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

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

解壓后的文件如下:

32b13d7a-485a-11ed-a3b6-dac502259ad0.png

編譯Linux內(nèi)核之前要先配置Linux內(nèi)核。每個(gè)板子都有其對(duì)應(yīng)的默認(rèn)配置文件,這些配置文件保存在“arch/arm/configs”目錄中。

imx_v7_defconfig和imx_v7_mfg_defconfig都可以作為NXP官方開(kāi)發(fā)板IMX6ULL EVK的默認(rèn)配置文件,但是一般都使用后者,因?yàn)楹笳呔幾g出來(lái)的zImage可以通過(guò)NXP官方提供的MfgTool工具進(jìn)行燒寫(xiě);

在目錄下新建一個(gè)腳本文件(build.sh),然后在這個(gè) shell 腳本里面輸入如下所示內(nèi)容:

#!/bin/sh
#編譯之前先清理
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean   
#配置Linux內(nèi)核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_mfg_defconfig 
#編譯Linux內(nèi)核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j16

32c69c7e-485a-11ed-a3b6-dac502259ad0.png

給予該腳本可執(zhí)行權(quán)限,命令如下:

chmod777build.sh

運(yùn)行腳本編譯內(nèi)核,命令如下:

. build.sh

32f03a52-485a-11ed-a3b6-dac502259ad0.png

編譯完成后,會(huì)得到兩個(gè)重要文件:

Linux內(nèi)核鏡像文件:
存放路徑為 arch/arm/boot/zImage


IMX6ULL EVK開(kāi)發(fā)板對(duì)應(yīng)的設(shè)備樹(shù)文件:
存放路徑為 arch/arm/boot/dts/imx6ull-14x14-evk.dtb

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

vmlinux是ELF格式的文件,是編譯出來(lái)的最原始的內(nèi)核文件,編譯出來(lá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 是沒(méi)有壓縮過(guò)的,Image保存在arch/arm/boot目錄下,其大小大概在12MB 。


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


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

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

將生成的zImage和imx6ull-14x14-evk.dtb這兩個(gè)文件下載到IMX6U開(kāi)發(fā)板上進(jìn)行測(cè)試。

首先檢查uboot中的環(huán)境變量bootargs,如果環(huán)境變量異常請(qǐng)看上一篇推文配置:

33257b0e-485a-11ed-a3b6-dac502259ad0.png

然后拷貝zImage和imx6ull-14x14-evk.dtb這兩個(gè)文件到Ubuntu的tftp目錄下:

33450474-485a-11ed-a3b6-dac502259ad0.png

最后啟動(dòng)開(kāi)發(fā)板,進(jìn)入uboot命令行模式,輸入如下命令以上兩個(gè)文件下載到開(kāi)發(fā)板中并啟動(dòng):

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

336e1e2c-485a-11ed-a3b6-dac502259ad0.png

啟動(dòng)成功,但是觸摸不能使用

|根文件系統(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,也就是說(shuō)根文件系統(tǒng)存儲(chǔ)在/dev/mmcblk1p2 中,也就是 EMMC 的分區(qū)2中。

在實(shí)際的工作中開(kāi)發(fā)一個(gè)產(chǎn)品,這個(gè)產(chǎn)品的第一版硬件出來(lái)以后我們是沒(méi)有對(duì)應(yīng)的根文件系統(tǒng)可用的,必須要自己做根文件系統(tǒng)。

在構(gòu)建出對(duì)應(yīng)的根文件系統(tǒng)之前 Linux 內(nèi)核是沒(méi)有根文件系統(tǒng)可用的,此時(shí) Linux 內(nèi)核啟動(dòng)以后會(huì)出現(xiàn)下面提示:

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
也就是提示內(nèi)核崩潰,因?yàn)?VFS(虛擬文件系統(tǒng))不能掛載根文件系統(tǒng),因?yàn)楦募到y(tǒng)目錄不存在。

即使根文件系統(tǒng)目錄存在,如果根文件系統(tǒng)目錄里面是空的依舊會(huì)提示內(nèi)核崩潰。這個(gè)就是根文件系統(tǒng)缺失導(dǎo)致的內(nèi)核崩潰,但是內(nèi)核是啟動(dòng)了的,只是根文件系統(tǒng)不存在而已。

|在 Linux 中添加自己的開(kāi)發(fā)板

通過(guò)編譯 NXP 官方 I.MX6ULL EVK 開(kāi)發(fā)板對(duì)應(yīng)的 Linux 內(nèi)核,發(fā)現(xiàn)其可以在野火的 EMMC 版本開(kāi)發(fā)板啟動(dòng),所以就參考 I.MX6ULL EVK 開(kāi)發(fā)板的設(shè)置,在 Linux 內(nèi)核中添加自己的 I.MX6U 開(kāi)發(fā)板。

先壓縮備份NXP編譯出來(lái)的內(nèi)核源碼文件,避免操作有誤重新編譯內(nèi)核,畢竟編譯一次內(nèi)核比較耗時(shí)間;

340620be-485a-11ed-a3b6-dac502259ad0.png

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

將arch/arm/configs目錄下的imx_v7_mfg_defconfig重新復(fù)制一 份, 命名 為imx_myboard_emmc_defconfig,命令如下:

cd arch/arm/configs
cp imx_v7_mfg_defconfig imx_myboard_emmc_defconfig

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

添加適合正點(diǎn)原子 EMMC 版開(kāi)發(fā)板的設(shè)備樹(shù)文件,進(jìn)入目錄 arch/arm/boot/dts 中,復(fù)制一份 imx6ull-14x14-evk.dts,然后將其重命名為 imx6ull-myboard-emmc.dts,命令如下:

cd arch/arm/boot/dts
cp imx6ull-14x14-evk.dts imx6ull-myboard-emmc.dts

.dts 是設(shè)備樹(shù)源碼文件,編譯 Linux 的時(shí)候會(huì)將其編譯為.dtb 文件。imx6ull-myboard-emmc.dts創(chuàng) 建 好 以 后還 需 要 修 改 文 件Makefile;

路徑:arch/arm/boot/dts/Makefile
找到“ dtb-$(CONFIG_SOC_IMX6ULL)”配置項(xiàng),在此配置項(xiàng)中加入“imx6ull-myboard-emmc.dtb” ,如下所示:

341ab934-485a-11ed-a3b6-dac502259ad0.png

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

添加新的腳本

新建一個(gè)腳本文件(build_myboard.sh),腳本內(nèi)容如下:

#!/bin/sh
#編譯之前先清理
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
#配置Linux內(nèi)核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_myboard_emmc_defconfig
#編譯Linux內(nèi)核
makeARCH=armCROSS_COMPILE=arm-linux-gnueabihf-all-j16

給予該腳本可執(zhí)行權(quán)限,命令如下:

chmod777build_myboard.sh

運(yùn)行腳本編譯內(nèi)核,命令如下:

. build_myboard.sh

編譯完成后,會(huì)得到兩個(gè)重要文件:

Linux內(nèi)核鏡像文件:
存放路徑為 arch/arm/boot/zImage


IMX6ULL EVK開(kāi)發(fā)板對(duì)應(yīng)的設(shè)備樹(shù)文件:
存放路徑為 arch/arm/boot/dts/imx6ull-myboard-emmc.dtb

然后下載到開(kāi)發(fā)板,啟動(dòng)內(nèi)核即可,顯示登陸提示就說(shuō)明內(nèi)核啟動(dòng)成功。





審核編輯:劉清

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

    關(guān)注

    4

    文章

    125

    瀏覽量

    28165
  • LINUX內(nèi)核
    +關(guān)注

    關(guān)注

    1

    文章

    316

    瀏覽量

    21617
  • Ubuntu系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    85

    瀏覽量

    3909

原文標(biāo)題:i.MX6ULL|移植內(nèi)核

文章出處:【微信號(hào):玩轉(zhuǎn)單片機(jī),微信公眾號(hào):玩轉(zhuǎn)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    i.MX6ULL嵌入式Linux開(kāi)發(fā)1-uboot移植初探

    本系列教程以i.MX6ULL處理器的ARM開(kāi)發(fā)板為實(shí)驗(yàn)基礎(chǔ),學(xué)習(xí)記錄嵌入式Linux開(kāi)發(fā)的各種知識(shí)與經(jīng)驗(yàn),主要內(nèi)容包括嵌入式Linux
    的頭像 發(fā)表于 03-07 08:57 ?3845次閱讀
    <b class='flag-5'>i.MX6ULL</b>嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>開(kāi)發(fā)</b>1-uboot<b class='flag-5'>移植</b>初探

    如何在嵌入式Linux開(kāi)發(fā)板配置Qt運(yùn)行環(huán)境

    本文基于I.MX6ULL芯片的Linux開(kāi)發(fā)板,介紹如何在嵌入式Linux開(kāi)發(fā)板配置Qt運(yùn)行環(huán)
    發(fā)表于 10-10 09:56 ?2560次閱讀

    使用i.MX6ULL開(kāi)發(fā)板進(jìn)行Linux根文件系統(tǒng)的完善

    一篇推文講了怎么移植根文件系統(tǒng),并在i.MX6ULL開(kāi)發(fā)板中運(yùn)行起來(lái),但是會(huì)出現(xiàn)一些提示,現(xiàn)在來(lái)進(jìn)行根文件的完善。
    發(fā)表于 10-17 11:13 ?764次閱讀

    移植NXP官方linux 5.4內(nèi)核i.MX6ULL開(kāi)發(fā)板

    本文描述移植NXP官方 linux 5.4 內(nèi)核i.MX6ULL開(kāi)發(fā)板
    發(fā)表于 12-19 11:10 ?2003次閱讀

    移植5.4內(nèi)核迅為I.MX6ULL開(kāi)發(fā)板

    編譯器的搭建,可以參考“i.mx6ull終結(jié)者開(kāi)發(fā)板使用手冊(cè)”的4.3章節(jié)“搭建交叉編譯環(huán)境”和29.1章節(jié) 安裝第三方庫(kù)。編譯內(nèi)核為了編譯方便,我們可以創(chuàng)建一個(gè)腳本,我們?cè)诿钚休斎搿皏i
    發(fā)表于 06-29 10:13

    I.MX6ULL終結(jié)者開(kāi)發(fā)板裸機(jī)仿真jlink調(diào)試

    I.MX6ULL‘終結(jié)者’開(kāi)發(fā)板預(yù)留了JTAG仿真接口,并給出了開(kāi)發(fā)文檔,可以實(shí)現(xiàn)在JLINK仿真器條件下的單步跟蹤、斷點(diǎn)調(diào)試等功能,使得開(kāi)發(fā)研究i
    發(fā)表于 07-07 10:56

    編譯IMX6ULL開(kāi)發(fā)板的Uboot和Linux內(nèi)核

    I.MX6ULL終結(jié)者開(kāi)發(fā)板對(duì)應(yīng)的Linux內(nèi)核源碼在光盤(pán)資料的“i.MX6UL終結(jié)者光盤(pán)資料5_uboot
    發(fā)表于 07-15 10:47

    i.MX6ULL開(kāi)發(fā)板硬件資源

    迅為i.MX6ULL 終結(jié)者開(kāi)發(fā)板硬件資源非常豐富,幾乎將 i.MX6ULL 芯片的所有資源都擴(kuò)展引出到底板上了,底板提供了豐富的外設(shè)接口,開(kāi)發(fā)板的尺寸是 190mm*125mm,充分
    發(fā)表于 12-29 06:18

    Linux內(nèi)核i.mx6ull中的編譯運(yùn)行

    Linux內(nèi)核i.mx6ull的編譯運(yùn)行編譯Linux Kernel需要使用lzop庫(kù),所以需要安裝,否則編譯內(nèi)核會(huì)失敗!!!sudo a
    發(fā)表于 11-05 07:14

    飛凌i.MX6ULL開(kāi)發(fā)板的評(píng)測(cè),再次進(jìn)階擁有更高的性價(jià)比

    處理器MCIMX6Y2開(kāi)發(fā)設(shè)計(jì),采用先進(jìn)的ARMCortex-A7內(nèi)核,運(yùn)行速度高達(dá)800MHz。i.MX6ULL應(yīng)用處理器包括一個(gè)集成的電源管理模塊,降低了外接電源的復(fù)雜性,并簡(jiǎn)化了
    發(fā)表于 10-27 11:55 ?1464次閱讀
    飛凌<b class='flag-5'>i.MX6ULL</b><b class='flag-5'>開(kāi)發(fā)板</b>的評(píng)測(cè),再次進(jìn)階擁有更高的性價(jià)比

    i.MX6ULL】驅(qū)動(dòng)開(kāi)發(fā)4——點(diǎn)亮LED(寄存器版)

    本篇主要介紹了如何通過(guò)操作寄存器來(lái)點(diǎn)亮i.MX6ULL開(kāi)發(fā)板的led,通過(guò)編寫(xiě)LED對(duì)應(yīng)的驅(qū)動(dòng)程序和應(yīng)用程序,實(shí)現(xiàn)程序設(shè)計(jì)的分層。
    的頭像 發(fā)表于 05-21 21:26 ?2940次閱讀
    【<b class='flag-5'>i.MX6ULL</b>】驅(qū)動(dòng)<b class='flag-5'>開(kāi)發(fā)</b>4——點(diǎn)亮LED(寄存器版)

    i.MX6ULL開(kāi)發(fā)板—無(wú)線網(wǎng)絡(luò)測(cè)試方案

    本文以幫助用戶快速熟悉產(chǎn)品、了解接口功能和測(cè)試方法為目的,主要講述飛凌i.MX6ULL開(kāi)發(fā)板WiFi接口功能的測(cè)試方法,以及使用過(guò)程中出現(xiàn)的一些問(wèn)題如何排查。
    的頭像 發(fā)表于 06-06 17:17 ?1302次閱讀
    <b class='flag-5'>i.MX6ULL</b><b class='flag-5'>開(kāi)發(fā)板</b>—無(wú)線網(wǎng)絡(luò)測(cè)試方案

    【北京迅為】i.MX6ULL開(kāi)發(fā)板移植 Debian 文件系統(tǒng)

    【北京迅為】i.MX6ULL開(kāi)發(fā)板移植 Debian 文件系統(tǒng)
    的頭像 發(fā)表于 02-10 15:34 ?1110次閱讀
    【北京迅為】<b class='flag-5'>i.MX6ULL</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>移植</b> Debian 文件系統(tǒng)

    入門(mén)級(jí)嵌入式板卡的視頻工具FFmpeg移植與測(cè)試開(kāi)發(fā)——米爾i.MX6UL/i.MX6ULL開(kāi)發(fā)板

    本篇測(cè)評(píng)由電子發(fā)燒友的優(yōu)秀測(cè)評(píng)者“ALSET”提供。電子發(fā)燒友網(wǎng)發(fā)布了一款產(chǎn)品:米爾MYD-Y6ULX-V2開(kāi)發(fā)板,基于NXPi.MX6UL/i.MX6ULL處理器,該
    的頭像 發(fā)表于 03-02 09:42 ?2809次閱讀
    入門(mén)級(jí)嵌入式板卡的視頻工具FFmpeg<b class='flag-5'>移植</b>與測(cè)試<b class='flag-5'>開(kāi)發(fā)</b>——米爾<b class='flag-5'>i.MX6</b>UL/<b class='flag-5'>i.MX6ULL</b><b class='flag-5'>開(kāi)發(fā)板</b>

    IMX6ULL開(kāi)發(fā)板

    i. MX6ULL 開(kāi)發(fā)板板載資源豐富,核心通過(guò)郵票孔將 i.MX6ULL 的所有資源幾乎全部引出,接口豐富,可以滿足各種應(yīng)用的需求。核心
    發(fā)表于 11-12 15:41 ?26次下載