日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

嵌入式linux镜像,使用Openembedded定制嵌入式Linux镜像

發(fā)布時(shí)間:2025/3/15 linux 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式linux镜像,使用Openembedded定制嵌入式Linux镜像 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

關(guān)鍵詞:ARM,Linux,Openembedded

作者:ByToradex秦海

摘要:嵌入式設(shè)備采用Embedded Linux操作系統(tǒng)進(jìn)行開發(fā)已經(jīng)越來越成為主流,但是如何將開發(fā)完成的Linux uboot/kernel配置,以及應(yīng)用程序整合到Embedded Linux鏡像中以便在量產(chǎn)的時(shí)候更方便的更新到嵌入式設(shè)備中可能是很多嵌入式開發(fā)者面臨的挑戰(zhàn)之一,而本文就以在Embedded Linux中使用比較廣泛的Yocto project 為例,基于Openembedded開發(fā)框架定制 Embedded Linux鏡像。

1).?簡介

嵌入式設(shè)備采用Embedded Linux操作系統(tǒng)進(jìn)行開發(fā)已經(jīng)越來越成為主流,但是如何將開發(fā)完成的Linux uboot/kernel配置,以及應(yīng)用程序整合到EmbeddedLinux鏡像中以便在量產(chǎn)的時(shí)候更方便的更新到嵌入式設(shè)備中可能是很多嵌入式開發(fā)者面臨的挑戰(zhàn)之一,而本文就以在Embedded Linux中使用比較廣泛的Yocto project為例,基于Openembedded開發(fā)框架定制?Embedded Linux鏡像。

本文所演示的平臺(tái)來自于Toradex Colibri iMX6嵌入式平臺(tái),這個(gè)平臺(tái)是基于NXP iMX6系列ARM處理器,核心為Cortex-A9。同時(shí)Toradex也提供了一個(gè)完整的Ycoto project兼容的基于Openembedded發(fā)布的Embedded Linux,這樣就無需完全從頭開始配置自己的layer,只需要修改添加需要的部分即可。

2).?準(zhǔn)備

a).?ColibriiMX6 ARM核心版配合ColibriEva Board?載板,用于測(cè)試編譯好的image。

b).?配置Openembedded開發(fā)環(huán)境,請(qǐng)參考這里說明,本文測(cè)試使用LinuxImage2.7分支環(huán)境。

c).?參考這里說明下載Linux V2.7內(nèi)核和uboot源代碼,用于產(chǎn)生相應(yīng)的patch文件。

c).?本文演示的定制Embedded Linux鏡像主要添加修改以下內(nèi)容,下面會(huì)按照這個(gè)內(nèi)容逐一說明:

./?修改uboot默認(rèn)環(huán)境變量,適配演示使用的?LVDS?液晶屏

./?修改Linux Kernel增加一個(gè)設(shè)備驅(qū)動(dòng);同時(shí)修改Linux device tree文件,增加兩個(gè)串口配置

./?將演示Qt應(yīng)用程序集成到image,并配置為開機(jī)自動(dòng)啟動(dòng)

3).?創(chuàng)建定制Embedded Linux?相關(guān)配置Layer

a).?在配置下載好的OpenEmbedded環(huán)境Layer目錄下,創(chuàng)建存放本次定制image相關(guān)文件資料的Layer – meta-toradex-custom.

b).?在meta-toradex-custom目錄下創(chuàng)建?conf?目錄,并創(chuàng)建Layer配置文件?layer.conf?,這個(gè)文件內(nèi)容可以參考meta-toradex-nxp/conf/layer.conf?文件進(jìn)行修改,主要是layer名字和優(yōu)先級(jí)以及依賴部分需要注意,修改好的文件請(qǐng)見如下:

https://github.com/simonqin09/openembedded_demo/blob/master/meta-toradex-custom/conf/layer.conf

c).?在?conf?目錄下創(chuàng)建?machine?目錄,并創(chuàng)建?machine?配置文件?colibri-imx6-custom.conf ,?文件內(nèi)容同樣參考meta-toradex-nxp/conf/machine/colibri-imx6.conf?修改,本文因沒有修改devicetree名字,因此沒有修改次文件,內(nèi)容如下:

https://github.com/simonqin09/openembedded_demo/blob/master/meta-toradex-custom/conf/machine/colibri-imx6-custom.conf

4). OpenEmbedded下Uboot修改示例

a).?因?yàn)檠菔臼褂玫腖VDS液晶屏分辨率為1024x768,這里將uboot顯示環(huán)境變量默認(rèn)值修改為對(duì)應(yīng)分辨率

b).?首先進(jìn)入下載的uboot源代碼對(duì)?include/configs/colibri_imx6.h?文件進(jìn)行修改,產(chǎn)生的patch文件如下:

https://github.com/simonqin09/openembedded_demo/blob/master/meta-toradex-custom/recipes-bsp/u-boot/files/colibri_imx6_uboot_custom.patch

c).?在?meta-toradex-customlayer目錄下創(chuàng)建?recipes-bsp/u-boot目錄,并對(duì)?u-boot-toradex_2016.11.bb?文件進(jìn)行append,增加上面生成的patch內(nèi)容,如下:

https://github.com/simonqin09/openembedded_demo/blob/master/meta-toradex-custom/recipes-bsp/u-boot/u-boot-toradex_2016.11.bbappend

5). OpenEmbedded下Linux kernel?和?device tree?修改示例

a).?對(duì)Linux kernel進(jìn)行重新config,增加了如下RTL8152 USBEthernet Adapter驅(qū)動(dòng)

--------------------------------

→?Device Drivers?→?Network device support?→?USB NetworkAdapters

? Realtek RTL8152/RTL8153 Based USBEthernet Adapters

--------------------------------

生成的新的defconfig文件如下:

https://github.com/simonqin09/openembedded_demo/blob/master/meta-toradex-custom/recipes-kernel/linux/files/defconfig

b).?對(duì)?arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts文件進(jìn)行修改,增加UART4?和?UART5?連個(gè)串口支持,關(guān)于Colibri iMX6串口詳細(xì)說明請(qǐng)參考這里,修改后的?patch?文件0001-custom-devicetree.patch?請(qǐng)見如下:

https://github.com/simonqin09/openembedded_demo/blob/master/meta-toradex-custom/recipes-kernel/linux/files/0001-custom-devicetree.patch

c).?在?meta-toradex-customlayer目錄下創(chuàng)建?recipes-kernel/linux目錄,并對(duì)?linux-toradex_4.1-2.0.x.bb?文件進(jìn)行append,將上面生成的?defconfig?和?0001-custom-devicetree.patch增加進(jìn)去,如下:

https://github.com/simonqin09/openembedded_demo/blob/master/meta-toradex-custom/recipes-kernel/linux/linux-toradex_4.1-2.0.x.bbappend

然后再創(chuàng)建?files?目錄,將defconfig?和?0001-custom-devicetree.patch?兩個(gè)文件復(fù)制進(jìn)去。

另外,關(guān)于如何生成kernel patch,也可以參考下面文章:

https://www.toradex.cn/blog/patching-kernel-in-openembedded

6). OpenEmbedded下部署Qt應(yīng)用示例

a).?本文所使用的Qt?應(yīng)用demo說明請(qǐng)參考下面文章:

http://blog.sina.com.cn/s/blog_d733e5170102wyay.html

b).?配置Qt開機(jī)自啟動(dòng)需要下面兩個(gè)文件

./ Qt?程序執(zhí)行腳本,這里使用linuxfb進(jìn)行顯示

https://github.com/simonqin09/QtGPIOProject/blob/master/qtdemo.sh

./ Systemd?啟動(dòng)配置?.service文件

https://github.com/simonqin09/QtGPIOProject/blob/master/qtdemo_launch.service

c).?在?meta-toradex-customlayer目錄下創(chuàng)建?recipes-qt/qtdemo目錄,并創(chuàng)建如下?qtdemo_0.1.bb?文件用于從Qt?應(yīng)用的git地址下載應(yīng)用并編譯部署

https://github.com/simonqin09/openembedded_demo/blob/master/meta-toradex-custom/recipes-qt/qtdemo/qtdemo_0.1.bb

關(guān)于這個(gè)bb文件的詳細(xì)說明,可以參考下面文檔:

https://www.toradex.cn/blog/building-custom-embedded-linux-distributions

7). OpenEmbedded下設(shè)置自定義image鏡像編譯

a).?在?meta-toradex-customlayer目錄下創(chuàng)建?recipes-images/images目錄,將下面三個(gè)文件從?meta-toradex-demos/recipes-images/images?復(fù)制過來

--------------------------------

angstrom-qt5-x11-image.bb

tdx-extra.inc

tdx-image-fstype.inc

--------------------------------

Angstrom-qt5-x11-image.bb?文件就是生成image的bb文件,可以不做修改,也可以根據(jù)需要添加修改package設(shè)定,本文修改了angstrom-qt5-x11-image.bb文件,將默認(rèn)需要編譯的Qt demo smarthome?程序去掉了,如下:

https://github.com/simonqin09/openembedded_demo/blob/master/meta-toradex-custom/recipes-images/images/angstrom-qt5-x11-image.bb

b).?在images目錄下繼續(xù)創(chuàng)建?files/colibri-imx6-custom?目錄,將?u pdate.sh?文件從?meta-toradex-demos/recipes-images/images/files/colibri-imx6?復(fù)制過來。然后因?yàn)?machine?名字變?yōu)閏olibri-imx6-custom?了,因此要對(duì)應(yīng)修改,修改內(nèi)容如這里:

https://github.com/simonqin09/openembedded_demo/blob/master/meta-toradex-custom/recipes-images/images/update.sh.patch

c).?在colibri-imx6-custom目錄下繼續(xù)創(chuàng)建?imx_flash?目錄,將?meta-toradex-demos/recipes-images/images/files/colibri-imx6/files/imx_flash目錄下的文件復(fù)制過來。

d).?在colibri-imx6-custom目錄下繼續(xù)創(chuàng)建?colibri-imx6-custom_bin?目錄,將meta-toradex-demos/recipes-images/images/files/colibri-imx6/files/colibri-imx6_bin目錄下的所有文件復(fù)制過來。

e).?至此,meta-toradex-customlayer?的所有修改都已經(jīng)完成,下面我們進(jìn)入?OpenEmbedded編譯環(huán)境下?build/conf?目錄,?對(duì)下面兩個(gè)文件進(jìn)行修改:

./ bblayers.conf –?增加了meta-toradex-custom layer進(jìn)來,如下:

https://github.com/simonqin09/openembedded_demo/blob/master/bblayers.conf

./ local.conf –?將默認(rèn)的machine?修改為colibri-imx6-custom,?同時(shí)增加了一些包如?tslib?和?linuxfb,如下:

https://github.com/simonqin09/openembedded_demo/blob/master/local.conf

f).?在?build目錄下執(zhí)行下面命令進(jìn)行編譯,編譯成功后,可以在deploy/images/colibri-imx6-custom?目錄下找到編譯好的?image?壓縮包。

--------------------------------

$ bitbake –k angstrom-qt5-x11-image

--------------------------------

8).?在Colibri imx6模塊上面更新image并測(cè)試

a).?將上述生成好的image文件colibri-imx6-custom_Qt5-X11-Image_2.7b3-xxxxxxxx.tar.bz2?按照這里的說明更新到?Colibri iMX6?模塊上面去。

b). QT GPIO?應(yīng)用使用的管腳為SODIMM PIN 127,這里在?Colibri Evaluation Board?上面將?X10 SODIMM 127?和?X21 LED1?相連,用于測(cè)試GPIO電平情況。

c). image?更新好后,我們可以逐項(xiàng)去測(cè)試上面每一個(gè)配置

./ uboot

如下可見默認(rèn)環(huán)境變量的修改已經(jīng)生效

--------------------------------

# env default –a

# printenv

vidargs=video=mxcfb0:dev=lcd,1024x768M@60,if=RGB666video=mxcfb1:off fbmem=8M

--------------------------------

./ kernel config?修改

如下可見kernel增加的驅(qū)動(dòng)也已經(jīng)編譯進(jìn)去了

--------------------------------

root@colibri-imx6-custom:~# zcat/proc/config.gz |grep RTL8152

CONFIG_USB_RTL8152=y

--------------------------------

./ device tree?修改

如下可見,除了默認(rèn)的ttymxc0-2設(shè)備,還多了ttymxc3和ttymxc4

--------------------------------

root@colibri-imx6-custom:~# ls/dev/ttymxc*

/dev/ttymxc0 ?/dev/ttymxc1 ?/dev/ttymxc2 ?/dev/ttymxc3 ?/dev/ttymxc4

--------------------------------

./ Qt?程序自啟動(dòng)以及控制GPIO情況

如下圖片

還有一起啟動(dòng)過程的視頻如下:

http://v.youku.com/v_show/id_XMzE3MDY4NDkyNA==.html

9).?總結(jié)

本文只是簡單演示了利用?OpenEmbedded?可以非常方便的生成定制化?Embedded Linux,另外配合git,還可以很好的實(shí)現(xiàn)不同版本的管理。但是?OpenEmbedded?架構(gòu)本身也是比較復(fù)雜的,要想靈活使用還需要對(duì)其做一些深入的學(xué)習(xí)才能得心應(yīng)手。

總結(jié)

以上是生活随笔為你收集整理的嵌入式linux镜像,使用Openembedded定制嵌入式Linux镜像的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 玖玖爱国产 | 深夜福利91 | 日本精品三级 | 国产又黄又爽又色 | 免费精品在线视频 | 免费看黄在线网站 | 熟女少妇精品一区二区 | 日本高清不卡码 | 探花视频在线观看 | 夜夜躁很很躁日日躁麻豆 | 中文有码在线播放 | 亚洲成av人影院 | 日韩中文在线播放 | aaa大片十八岁禁止 中文字幕亚洲在线观看 | 中文字幕欧美专区 | 欧美专区亚洲专区 | 欧美一级做a爰片久久高潮 久热国产精品视频 | 无套内谢大学处破女www小说 | 蜜桃视频无码区在线观看 | 一级裸体片| 大陆极品少妇内射aaaaa | 欧美特级黄 | 青青色在线观看 | 欧美怡红院一区二区三区 | 国产欧美一区二区三区鸳鸯浴 | 视频一区日韩 | 欧美另类视频在线 | 国产成人午夜精品无码区久久 | 午夜视频在线看 | 天堂av中文字幕 | 久久久久久av无码免费网站下载 | 日日骚一区 | 亚洲码无人客一区二区三区 | 国产一区av在线 | 69精品久久久久久 | 美女张开腿让人桶 | 中文字幕无线精品亚洲乱码一区 | 中文字幕一区二区在线观看视频 | 蜜臀一区二区三区精品免费视频 | 成人在线高清视频 | 日皮视频免费看 | 潘金莲一级淫片aaaaa | 日韩怡红院 | 日韩在线精品强乱中文字幕 | 亚洲精品在线不卡 | 免费三级av | 婷婷丁香六月 | 我爱avav色aⅴ爱avav | 亚洲日本va中文字幕 | 制服丝袜在线播放 | 91国产免费看 | 狼人综合视频 | 亚洲一区二区免费在线观看 | 懂色av成人一区二区三区 | 福利视频免费看 | 五月婷婷丁香花 | 日本网站在线免费观看 | 午夜神马福利 | 开心激情站 | 亚洲国产精品久久久久爰性色 | 欧美成人做爰大片免费看黄石 | 天堂av最新网址 | 日韩一区二区三区中文字幕 | 怡春院视频| 久久频 | 黄色片视频免费 | 中国少妇色| 人妻体内射精一区二区三区 | 天堂va蜜桃一区 | 激情六月综合 | 亚洲不卡中文字幕 | 秋霞中文字幕 | 亚欧美精品 | 国产麻豆剧果冻传媒白晶晶 | 久久综合精品国产二区无码不卡 | 欧美黑人性xxx | 国产欧美日韩中文字幕 | 国产精品啪啪啪视频 | 国产女主播在线观看 | 无码精品人妻一区二区三区影院 | 中国免费毛片 | 中文字幕免费高清在线 | 色四月| 中文字幕欧美在线观看 | 久伊人| 亚洲综合久久久 | 黄色777| 国产伦精品一区二区三区视频免费 | 精品国产一区二区三区久久狼黑人 | 成人app在线 | 欧美色图11p | 亚洲天堂中文 | 大肉大捧一进一出好爽视频 | 午夜福利啪啪片 | av在线电影网 | 99久久精品国产亚洲 | 国产在线视视频有精品 | 成人激情视频在线 | av动漫网站 |