国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

IMX6ULLPRO單獨(dú)編譯kernel+dtb內(nèi)核模塊以及uboot

這篇具有很好參考價(jià)值的文章主要介紹了IMX6ULLPRO單獨(dú)編譯kernel+dtb內(nèi)核模塊以及uboot。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

linux開(kāi)發(fā)板啟動(dòng)流程

為什么編譯驅(qū)動(dòng)程序之前要先編譯內(nèi)核?

驅(qū)動(dòng)程序要用到內(nèi)核文件:

編譯內(nèi)核

編譯安裝內(nèi)核模塊

編譯內(nèi)核模塊

安裝內(nèi)核模塊到 Ubuntu 某個(gè)目錄下備用

?安裝內(nèi)核和模塊到開(kāi)發(fā)板上

?Bootloader 介紹

編譯 u-boot 鏡像


linux開(kāi)發(fā)板啟動(dòng)流程

編譯自己的dtb文件,arm開(kāi)發(fā),linux,運(yùn)維

Reset-->ROM-->bootloader-->kernel+dtb-->rootfs-->APP

為什么編譯驅(qū)動(dòng)程序之前要先編譯內(nèi)核?

驅(qū)動(dòng)程序要用到內(nèi)核文件:

比如驅(qū)動(dòng)程序中這樣包含頭文件: #include <asm/io.h> ,其中的 asm 是 一個(gè)鏈接文件,指向 asm-arm asm-mips ,這需要先配置、編譯內(nèi)核才會(huì)生成 asm 這個(gè)鏈接文件。
? 編譯驅(qū)動(dòng)時(shí)用的內(nèi)核、開(kāi)發(fā)板上運(yùn)行到內(nèi)核,要一致:
開(kāi)發(fā)板上運(yùn)行到內(nèi)核是出廠時(shí)燒錄的,你編譯驅(qū)動(dòng)時(shí)用的內(nèi)核是你自己編譯 的,這兩個(gè)內(nèi)核不一致時(shí)會(huì)導(dǎo)致一些問(wèn)題。所以我們編譯驅(qū)動(dòng)程序前,要把自己 編譯出來(lái)到內(nèi)核放到板子上去,替代原來(lái)的內(nèi)核。
? 更換板子上的內(nèi)核后,板子上的其他驅(qū)動(dòng)也要更換:
板子使用新編譯出來(lái)的內(nèi)核時(shí),板子上原來(lái)的其他驅(qū)動(dòng)也要更換為新編譯出 來(lái)的。所以在編譯我們自己的第 1 個(gè)驅(qū)動(dòng)程序之前,要先編譯內(nèi)核、模塊,并且放到板子上去。

編譯內(nèi)核

不 同 的 開(kāi) 發(fā) 板 對(duì) 應(yīng) 不 同 的 配 置 文 件 , 配 置 文 件 位 于 內(nèi) 核 源 碼 arch/arm/configs/目錄。 kernel 的編譯過(guò)程如下:
make mrproper
make 100ask_imx6ull_defconfig
make zImage -j4
make dtbs

cp arch/arm/boot/zImage /home/book/nfs_rootfs

cp arch/arm/boot/dts/100ask_imx6ull-14x14.dtb  /home/book/nfs_rootfs
編譯完成 zImage 后才可編譯設(shè)備樹(shù)文件。 編譯自己的dtb文件,arm開(kāi)發(fā),linux,運(yùn)維
編譯完成后生成的文件如圖 5.2 所示:
編譯自己的dtb文件,arm開(kāi)發(fā),linux,運(yùn)維
編譯完成后,在 arch/arm/boot 目錄下生成 zImage 內(nèi)核文件 , 在 arch/arm/boot/dts 目錄下生成設(shè)備樹(shù)的二進(jìn)制文件 100ask_imx6ull- 14x14.dtb 。把這 2 個(gè)文件復(fù)制到 /home/book/nfs_rootfs 目錄下備用,如圖 5.3:
編譯自己的dtb文件,arm開(kāi)發(fā),linux,運(yùn)維

編譯安裝內(nèi)核模塊

編譯內(nèi)核模塊

進(jìn)入內(nèi)核源碼目錄后,就可以編譯內(nèi)核模塊了
make ARCH=arm CROSS_COMPILE-arm=buildroot-linux-gnueabihf-modulese
內(nèi)核模塊編譯完成后如圖
編譯自己的dtb文件,arm開(kāi)發(fā),linux,運(yùn)維

安裝內(nèi)核模塊到 Ubuntu 某個(gè)目錄下備用

可以先把內(nèi)核模塊安裝到 nfs 目錄 (/home/book/nfs_rootfs)
執(zhí)行以下命令安裝模塊:
sudo make ARCH=arm INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install
把模塊安裝在 nfs 目錄“ /home/book/nfs_rootfs/ ”下:
編譯自己的dtb文件,arm開(kāi)發(fā),linux,運(yùn)維

?安裝好驅(qū)動(dòng)后的/home/book/nfs_rootfs/目錄結(jié)構(gòu)如圖 5.6 所示:

編譯自己的dtb文件,arm開(kāi)發(fā),linux,運(yùn)維

?安裝內(nèi)核和模塊到開(kāi)發(fā)板上

假設(shè):在 Ubuntu /home/book/nfs_rootfs 目錄下,已經(jīng)有了 zImage 、 dtb 文件,并且有 lib/modules 子目錄 ( 里面含有各種模塊 )
接下來(lái)要把這些文件復(fù)制到開(kāi)發(fā)板上。假設(shè) Ubuntu IP 192.168.5.11 , 在開(kāi)發(fā)板上執(zhí)行以下命令:
mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs/ /mnt
cp /mnt/zImage /boot
cp /mnt/100ask_imx6ull-14x14.dtb /boot
cp /mnt/lib/modules /lib -rfd
sync //同步
lsmod //查看內(nèi)核模塊

編譯自己的dtb文件,arm開(kāi)發(fā),linux,運(yùn)維

?Bootloader 介紹

Bootloader 是在操作系統(tǒng)運(yùn)行之前運(yùn)行的一段代碼,用于引導(dǎo)操作系統(tǒng)。
通常每個(gè)操作系統(tǒng)都有一組專屬的引導(dǎo)加載程序。引導(dǎo)加載程序通??梢酝ㄟ^(guò)多
種方式引導(dǎo)操作系統(tǒng)內(nèi)核,還有各種命令用于調(diào)試或修改內(nèi)核運(yùn)行環(huán)境。
U-Boot 是一個(gè)開(kāi)源的主引導(dǎo)加載程序,用于引導(dǎo)設(shè)備的操作系統(tǒng)內(nèi)核,并
含有多種命令以便調(diào)試系統(tǒng)。它適用于多種計(jì)算機(jī)體系結(jié)構(gòu),包括 68k , ARM ,
Blackfin , MicroBlaze MIPS , Nios SuperH , PPC RISC-V x86 。
U-boot 官網(wǎng):
https://www.denx.de/wiki/U-Boot
源碼下載頁(yè)面:
http://ftp.denx.de/pub/u-boot/
NXP 官方 uboot 源碼 Git 地址:
https://source.codeaurora.org/external/imx/uboot-imx
本開(kāi)發(fā)使用的 U-boot 位于 Git 倉(cāng)庫(kù),地址為:
https://e.coding.net/weidongshan/imx-uboot2017.03.git
注意 我們使用的版本針對(duì)板子進(jìn)行過(guò)修改, u-boot 官網(wǎng)下載的源碼不能直接使用。

編譯 u-boot 鏡像

不同的開(kāi)發(fā)板對(duì)應(yīng)不同的配置文件,配置文件位于 u-boot 源碼的 “configs/ ”目錄。對(duì)于 IMX6ULL Pro 版, u-boot 的編譯過(guò)程如下 ( 編譯 uboot 前必須先配置好工具鏈等開(kāi)發(fā)環(huán)境)
cd /home/book/100ask_imx6ull-sdk
book@100ask: ~/100ask_imx6ull-sdk$cd Uboot-2017.03
book@100ask: ~/100ask_imx6ull-sdk/Uboot-2017.03$ make distclean
book@100ask: ~/100ask_imx6ull-sdk/Uboot-2017.03$ make mx6ull_14x14_evk_defconfig 
book@100ask: ~/100ask_imx6ull-sdk/Uboot-2017.03$ make -j4
6.1 編譯鏡像文件為具體的執(zhí)行步驟:
編譯自己的dtb文件,arm開(kāi)發(fā),linux,運(yùn)維

編譯完成后生成的文件如圖 6.2 所示。

編譯自己的dtb文件,arm開(kāi)發(fā),linux,運(yùn)維?編譯完成之后生成 u-boot-dtb.imx,可以燒在 TF 卡、EMMC 上。以下命令是將

u-boot-dtb.imx 文件燒寫(xiě)到 EMMC 上:
cp u-boot-dtb.imx /home/book/nfs_rootfs
 cp /mnt/u-boot-dtb.imx  .
echo 0 > /sys/block/mmcblk1boot0/force_ro //取消讀寫(xiě)保護(hù)
dd if=u-boot-dtb.imx of=/dev/mmcblk1boot0 bs=512 seek=2
echo 1 > /sys/block/mmcblk1boot0/force_ro //恢復(fù)讀寫(xiě)保護(hù)

編譯自己的dtb文件,arm開(kāi)發(fā),linux,運(yùn)維文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-815727.html

到了這里,關(guān)于IMX6ULLPRO單獨(dú)編譯kernel+dtb內(nèi)核模塊以及uboot的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • OpenCV交叉編譯—arm(imx6ull,Cortex-A7)

    OpenCV交叉編譯—arm(imx6ull,Cortex-A7)

    opencv - 4.2.0(opencv4.5.4版本在交叉編譯時(shí)會(huì)報(bào)錯(cuò)) Ubuntu - 20.04 64位 gcc version 4.9.4 (Linaro GCC 4.9-2017.01) arm板:imx6ull, Cortex - A7 內(nèi)核掛載:nfs+SecureCRT 1、下載 2、選擇路徑 根據(jù)自己Ubuntu來(lái)下載,下載完以后復(fù)制到自己要安裝的路徑,也可以不移動(dòng)。 完成以后使用命令解壓: 3、解壓

    2024年02月06日
    瀏覽(24)
  • imx6ull開(kāi)發(fā)板環(huán)境配置 - libusb、libudev、eudev交叉編譯

    imx6ull開(kāi)發(fā)板環(huán)境配置 - libusb、libudev、eudev交叉編譯

    目錄 零、前言 一、libusb交叉編譯 1.0 前言 1.1 交叉編譯 二、usbutils交叉編譯 2.0 前言 2.1 交叉編譯 三、libudev交叉編譯 3.0 前言 3.1 交叉編譯 3.2 錯(cuò)誤處理-沒(méi)找到usbutils 3.3 錯(cuò)誤處理-沒(méi)找到pci.ids?(pci.ids not found) 3.3.0 前言 3.3.1 查找pci.ids 3.3.2 繼續(xù)編譯 3.4 錯(cuò)誤處理-沒(méi)找到gperf?(

    2024年02月10日
    瀏覽(70)
  • iMX6ULL 庫(kù)移植 | Libgpiod 庫(kù)的交叉編譯及使用指南(linux)

    iMX6ULL 庫(kù)移植 | Libgpiod 庫(kù)的交叉編譯及使用指南(linux)

    GPIO口的操作,是很常見(jiàn)的功能。傳統(tǒng)的GPIO sysfs接口已被棄用。自Linux 4.8起,內(nèi)核提供了全新的操作gpio的方式libgpiod(C library and tools for interacting with the linux GPIO character device),當(dāng)然也更高效,推薦使用。 libgpiod - 用于與Linux GPIO字符設(shè)備進(jìn)行交互的C庫(kù)和工具(gpiod代表GPIO設(shè)備

    2024年02月10日
    瀏覽(21)
  • 【IMX6ULL驅(qū)動(dòng)開(kāi)發(fā)學(xué)習(xí)】02.IMX6ULL燒寫(xiě)Linux系統(tǒng)

    【IMX6ULL驅(qū)動(dòng)開(kāi)發(fā)學(xué)習(xí)】02.IMX6ULL燒寫(xiě)Linux系統(tǒng)

    由于我買的是正點(diǎn)原子的IMX6ULL阿爾法開(kāi)發(fā)板,但是我是看韋東山老師視頻學(xué)習(xí)的驅(qū)動(dòng) 所以這里我燒錄的方法是按照韋東山老師的課程來(lái)的 這里給出燒寫(xiě)Linux系統(tǒng)用到的工具 鏈接:https://pan.baidu.com/s/1bD-xxn3K8xQAVkJSaJmTzQ 提取碼:af6w 下載解壓后,可以看到燒寫(xiě)工具 燒寫(xiě)Linux系統(tǒng)

    2024年02月13日
    瀏覽(24)
  • iMX6ULL驅(qū)動(dòng)開(kāi)發(fā) | 讓imx6ull開(kāi)發(fā)板支持usb接口FC游戲手柄

    iMX6ULL驅(qū)動(dòng)開(kāi)發(fā) | 讓imx6ull開(kāi)發(fā)板支持usb接口FC游戲手柄

    手邊有一閑置的linux開(kāi)發(fā)板iMX6ULL一直在吃灰,不用來(lái)搞點(diǎn)事情,總覺(jué)得對(duì)不住它。業(yè)余打發(fā)時(shí)間就玩起來(lái)吧,總比刷某音強(qiáng)。從某多多上買來(lái)一個(gè)usb接口的游戲手柄,讓開(kāi)發(fā)板支持以下它,后續(xù)就可以接著在上面玩童年經(jīng)典游戲啦。 ?我使用的是正點(diǎn)原子的I.MX6U-ALPHA 開(kāi)發(fā)板,

    2024年02月14日
    瀏覽(39)
  • 【IMX6ULL驅(qū)動(dòng)開(kāi)發(fā)學(xué)習(xí)】08.IMX6ULL通過(guò)GPIO子系統(tǒng)函數(shù)點(diǎn)亮LED

    【IMX6ULL驅(qū)動(dòng)開(kāi)發(fā)學(xué)習(xí)】08.IMX6ULL通過(guò)GPIO子系統(tǒng)函數(shù)點(diǎn)亮LED

    通過(guò)GPIO子系統(tǒng)函數(shù)點(diǎn)亮LED 1、GPIO子系統(tǒng)函數(shù) 1.1 確定 led 的GPIO標(biāo)號(hào),查看內(nèi)核中的gpiochip 查看 gpiochip ,以正點(diǎn)原子的IMX6ULL阿爾法開(kāi)發(fā)板為例 查看原理圖,發(fā)現(xiàn)led接的引腳是 GPIO1_IO3,對(duì)應(yīng) /sys/kernel/debug/gpio 中的 gpiochip0 組,gpiochip0 組從0開(kāi)始算起, 所以 GPIO1_IO3 對(duì)應(yīng)的標(biāo)號(hào)就

    2024年02月10日
    瀏覽(25)
  • 【IMX6ULL驅(qū)動(dòng)開(kāi)發(fā)學(xué)習(xí)】22.IMX6ULL開(kāi)發(fā)板讀取ADC(以MQ-135為例)

    【IMX6ULL驅(qū)動(dòng)開(kāi)發(fā)學(xué)習(xí)】22.IMX6ULL開(kāi)發(fā)板讀取ADC(以MQ-135為例)

    IMX6ULL一共有兩個(gè)ADC,每個(gè)ADC都有八個(gè)通道,但他們共用一個(gè)ADC控制器 在imx6ull.dtsi文件中已經(jīng)幫我們定義好了adc1的節(jié)點(diǎn)部分信息 注意 num-channels = 2; ,這個(gè)表示指定使用ADC1的兩個(gè)通道,即通道1和通道2 如果你要使用多個(gè)ADC通道,修改這個(gè)值即可 配置ADC引腳的 pinctrl ,在自己的

    2024年02月12日
    瀏覽(63)
  • 【IMX6ULL驅(qū)動(dòng)開(kāi)發(fā)學(xué)習(xí)】05.IMX6ULL驅(qū)動(dòng)開(kāi)發(fā)_編寫(xiě)第一個(gè)hello驅(qū)動(dòng)【熬夜肝】

    【IMX6ULL驅(qū)動(dòng)開(kāi)發(fā)學(xué)習(xí)】05.IMX6ULL驅(qū)動(dòng)開(kāi)發(fā)_編寫(xiě)第一個(gè)hello驅(qū)動(dòng)【熬夜肝】

    經(jīng)過(guò)以下四個(gè)步驟,終于可以開(kāi)始驅(qū)動(dòng)開(kāi)發(fā)了 01.安裝交叉編譯環(huán)境【附下載地址】 02.IMX6ULL燒寫(xiě)Linux系統(tǒng) 03.設(shè)置IMX6ULL開(kāi)發(fā)板與虛擬機(jī)在同一網(wǎng)段 04.IMX6ULL開(kāi)發(fā)板與虛擬機(jī)互傳文件 一、獲取內(nèi)核、編譯內(nèi)核 二、創(chuàng)建vscode工作區(qū),添加內(nèi)核目錄和個(gè)人目錄 三、了解驅(qū)動(dòng)程序編寫(xiě)

    2024年02月06日
    瀏覽(18)
  • IMX6LL|內(nèi)核模塊

    IMX6LL|內(nèi)核模塊

    作用 解決linux內(nèi)核可擴(kuò)展性和可維護(hù)性相對(duì)較差的缺陷 現(xiàn)代內(nèi)核派系 宏內(nèi)核:關(guān)鍵功能和服務(wù)功能均在內(nèi)核空間提供 運(yùn)行效率高 擴(kuò)展性較差 微內(nèi)核:內(nèi)核空間只提供關(guān)鍵功能,服務(wù)功能在用戶空間提供 運(yùn)行效率較低 安全性、擴(kuò)展性較高 內(nèi)核模塊加載/卸載 使用insmod命令加

    2024年01月20日
    瀏覽(42)
  • IMX6LL|時(shí)鐘控制

    IMX6LL|時(shí)鐘控制

    4個(gè)層次配置芯片時(shí)鐘 晶振時(shí)鐘 PLL與PFD時(shí)鐘 PLL選擇時(shí)鐘 根時(shí)鐘/外設(shè)時(shí)鐘 系統(tǒng)時(shí)鐘來(lái)源 RTC時(shí)鐘源:32.768KHz,連接RTC模塊,進(jìn)行時(shí)間計(jì)算。 系統(tǒng)時(shí)鐘:24MHz,芯片主晶振 7路鎖相環(huán)電路 ARM_PLL:驅(qū)動(dòng) ARM 內(nèi)核 528_PLL:倍頻參數(shù)固定為22,系統(tǒng)總線時(shí)鐘 USB1_PLL:驅(qū)動(dòng)第一個(gè) USB 物理

    2024年01月19日
    瀏覽(9)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包