国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

如何移植Linux內核到I.MX6ULL開發板上

玩轉單片機 ? 來源:玩轉單片機 ? 作者:noah ? 2022-10-10 14:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

上篇講了如何移植 uboot 到 I.MX6ULL開發板上,現在開始學習如何移植 Linux 內核。

|獲取Linux 內核

Linux 由 Linux 基金會管理與發布,所以你想獲取最新的Linux 版本就可以在這個網站上下載;

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

4.x 版本的 Linux 和 5.x 版本沒有本質上的區別,5.x 更多的是加入了一些新的平臺、新的外設驅動而已。

NXP 會從 https://www.kernel.org 下載某個版本的 Linux 內核,然后將其移植到自己的 CPU上,測試成功以后就會將其開放給 NXP 的 CPU 開發者

開發者下載 NXP 提供的 Linux 內核,然后將其移植到自己的產品上。

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

開發板光盤->1、例程源碼->4、NXP 官方原版 Uboot和 Linux-> linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

|編譯Linux內核

編譯內核之前需要先在 ubuntu 上安裝 lzop 庫,否則內核編譯會失敗!命令如下:

sudo apt-get install lzop


//下面兩個庫如果沒安裝也需要安裝一下
sudoapt-getinstallbuild-essential
sudo apt-get install libncurses5-dev


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

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

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

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

解壓后的文件如下:

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

編譯Linux內核之前要先配置Linux內核。每個板子都有其對應的默認配置文件,這些配置文件保存在“arch/arm/configs”目錄中。

imx_v7_defconfig和imx_v7_mfg_defconfig都可以作為NXP官方開發板IMX6ULL EVK的默認配置文件,但是一般都使用后者,因為后者編譯出來的zImage可以通過NXP官方提供的MfgTool工具進行燒寫;

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

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

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

給予該腳本可執行權限,命令如下:

chmod777build.sh

運行腳本編譯內核,命令如下:

. build.sh

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

編譯完成后,會得到兩個重要文件:

Linux內核鏡像文件:
存放路徑為 arch/arm/boot/zImage


IMX6ULL EVK開發板對應的設備樹文件:
存放路徑為 arch/arm/boot/dts/imx6ull-14x14-evk.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了

|內核啟動測試

將生成的zImage和imx6ull-14x14-evk.dtb這兩個文件下載到IMX6U開發板上進行測試。

首先檢查uboot中的環境變量bootargs,如果環境變量異常請看上一篇推文配置:

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

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

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

最后啟動開發板,進入uboot命令行模式,輸入如下命令以上兩個文件下載到開發板中并啟動:

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

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

啟動成功,但是觸摸不能使用

|根文件系統缺失錯誤

Linux內核啟動以后是需要根文件系統的,根文件系統存在哪里是由uboot的 bootargs環境變量指定,bootargs會傳遞給Linux內核作為命令行參數 。

上一篇推文設置root=/dev/mmcblk1p2,也就是說根文件系統存儲在/dev/mmcblk1p2 中,也就是 EMMC 的分區2中。

在實際的工作中開發一個產品,這個產品的第一版硬件出來以后我們是沒有對應的根文件系統可用的,必須要自己做根文件系統。

在構建出對應的根文件系統之前 Linux 內核是沒有根文件系統可用的,此時 Linux 內核啟動以后會出現下面提示:

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
也就是提示內核崩潰,因為 VFS(虛擬文件系統)不能掛載根文件系統,因為根文件系統目錄不存在。

即使根文件系統目錄存在,如果根文件系統目錄里面是空的依舊會提示內核崩潰。這個就是根文件系統缺失導致的內核崩潰,但是內核是啟動了的,只是根文件系統不存在而已。

|在 Linux 中添加自己的開發板

通過編譯 NXP 官方 I.MX6ULL EVK 開發板對應的 Linux 內核,發現其可以在野火的 EMMC 版本開發板啟動,所以就參考 I.MX6ULL EVK 開發板的設置,在 Linux 內核中添加自己的 I.MX6U 開發板。

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

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

添加開發板默認配置文件

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

cd arch/arm/configs
cp imx_v7_mfg_defconfig imx_myboard_emmc_defconfig

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

添加適合正點原子 EMMC 版開發板的設備樹文件,進入目錄 arch/arm/boot/dts 中,復制一份 imx6ull-14x14-evk.dts,然后將其重命名為 imx6ull-myboard-emmc.dts,命令如下:

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

.dts 是設備樹源碼文件,編譯 Linux 的時候會將其編譯為.dtb 文件。imx6ull-myboard-emmc.dts創 建 好 以 后還 需 要 修 改 文 件Makefile;

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

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

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

添加新的腳本

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

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

給予該腳本可執行權限,命令如下:

chmod777build_myboard.sh

運行腳本編譯內核,命令如下:

. build_myboard.sh

編譯完成后,會得到兩個重要文件:

Linux內核鏡像文件:
存放路徑為 arch/arm/boot/zImage


IMX6ULL EVK開發板對應的設備樹文件:
存放路徑為 arch/arm/boot/dts/imx6ull-myboard-emmc.dtb

然后下載到開發板,啟動內核即可,顯示登陸提示就說明內核啟動成功。





審核編輯:劉清

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

    關注

    4

    文章

    131

    瀏覽量

    29940
  • LINUX內核
    +關注

    關注

    1

    文章

    321

    瀏覽量

    23206
  • Ubuntu系統
    +關注

    關注

    0

    文章

    93

    瀏覽量

    4620

原文標題:i.MX6ULL|移植內核

文章出處:【微信號:玩轉單片機,微信公眾號:玩轉單片機】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    i.MX6ULL嵌入式Linux開發1-uboot移植初探

    本系列教程以i.MX6ULL處理器的ARM開發板為實驗基礎,學習記錄嵌入式Linux開發的各種知識與經驗,主要內容包括嵌入式Linux
    的頭像 發表于 03-07 08:57 ?5319次閱讀
    <b class='flag-5'>i.MX6ULL</b>嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>開發</b>1-uboot<b class='flag-5'>移植</b>初探

    如何在嵌入式Linux開發板配置Qt運行環境

    本文基于I.MX6ULL芯片的Linux開發板,介紹如何在嵌入式Linux開發板配置Qt運行環
    發表于 10-10 09:56 ?3269次閱讀

    使用i.MX6ULL開發板進行Linux根文件系統的完善

    一篇推文講了怎么移植根文件系統,并在i.MX6ULL開發板中運行起來,但是會出現一些提示,現在來進行根文件的完善。
    發表于 10-17 11:13 ?1242次閱讀

    移植NXP官方linux 5.4內核i.MX6ULL開發板

    本文描述移植NXP官方 linux 5.4 內核i.MX6ULL開發板
    發表于 12-19 11:10 ?2708次閱讀

    移植5.4內核迅為I.MX6ULL開發板

    編譯器的搭建,可以參考“i.mx6ull終結者開發板使用手冊”的4.3章節“搭建交叉編譯環境”和29.1章節 安裝第三方庫。編譯內核為了編譯方便,我們可以創建一個腳本,我們在命令行輸入“vi
    發表于 06-29 10:13

    I.MX6ULL終結者開發板裸機仿真jlink調試

    I.MX6ULL‘終結者’開發板預留了JTAG仿真接口,并給出了開發文檔,可以實現在JLINK仿真器條件下的單步跟蹤、斷點調試等功能,使得開發研究i
    發表于 07-07 10:56

    i.MX6ULL開發板硬件資源

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

    Linux內核i.mx6ull中的編譯運行

    Linux內核i.mx6ull的編譯運行編譯Linux Kernel需要使用lzop庫,所以需要安裝,否則編譯內核會失敗!!!sudo a
    發表于 11-05 07:14

    飛凌i.MX6ULL開發板的評測,再次進階擁有更高的性價比

    處理器MCIMX6Y2開發設計,采用先進的ARMCortex-A7內核,運行速度高達800MHz。i.MX6ULL應用處理器包括一個集成的電源管理模塊,降低了外接電源的復雜性,并簡化了
    發表于 10-27 11:55 ?1886次閱讀
    飛凌<b class='flag-5'>i.MX6ULL</b><b class='flag-5'>開發板</b>的評測,再次進階擁有更高的性價比

    i.MX6ULL】驅動開發4——點亮LED(寄存器版)

    本篇主要介紹了如何通過操作寄存器來點亮i.MX6ULL開發板的led,通過編寫LED對應的驅動程序和應用程序,實現程序設計的分層。
    的頭像 發表于 05-21 21:26 ?4142次閱讀
    【<b class='flag-5'>i.MX6ULL</b>】驅動<b class='flag-5'>開發</b>4——點亮LED(寄存器版)

    i.MX6ULL開發板—無線網絡測試方案

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

    【北京迅為】i.MX6ULL開發板移植 Debian 文件系統

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

    入門級嵌入式板卡的視頻工具FFmpeg移植與測試開發——米爾i.MX6UL/i.MX6ULL開發板

    本篇測評由電子發燒友的優秀測評者“ALSET”提供。電子發燒友網發布了一款產品:米爾MYD-Y6ULX-V2開發板,基于NXPi.MX6UL/i.MX6ULL處理器,該
    的頭像 發表于 03-02 09:42 ?4851次閱讀
    入門級嵌入式板卡的視頻工具FFmpeg<b class='flag-5'>移植</b>與測試<b class='flag-5'>開發</b>——米爾<b class='flag-5'>i.MX6</b>UL/<b class='flag-5'>i.MX6ULL</b><b class='flag-5'>開發板</b>

    IMX6ULL開發板

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

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

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