本次源碼適配工作是在NXP i.MX6ULL EVK評(píng)估板的Linux內(nèi)核源碼(特定版本:Linux-imx_4.1.15)基礎(chǔ)上進(jìn)行的。主要目標(biāo)是調(diào)整功能接口引腳配置,以適應(yīng)ELF 1開(kāi)發(fā)板。下面以LED適配為例,詳細(xì)說(shuō)明整個(gè)適配過(guò)程。
01準(zhǔn)備工作
NXP源碼路徑
ELF1開(kāi)發(fā)板資料包\07-NXP 原廠資料\07-1 NXP官方源碼\linux-imx-imx_4.1.15_2.0.0_ga.tar.bz2
1.將NXP源碼拷貝到開(kāi)發(fā)環(huán)境home/root/work目錄下解壓:
elf@ubuntu:~/work$ tar jvxf linux-imx-imx_4.1.15_2.0.0_ga.tar.bz2 elf@ubuntu:~/work$ cd linux-imx-imx_4.1.15_2.0.0_ga/ elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ ls
2.添加默認(rèn)配置文件
將arch/arm/configs路徑下的imx_v7_mfg_defconfig復(fù)制一份
命名為imx6ull_elf1_defconfig:
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ cp arch/arm/configs/imx_v7_mfg_defconfig arch/arm/configs/imx6ull_elf1_defconfig
3.添加ELF 1設(shè)備樹(shù)
復(fù)制一份imx6ull-14x14-evk.dts,命名為imx6ull-elf1-emmc.dts作為我們ELF 1的設(shè)備樹(shù):
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ cp arch/arm/boot/dts/imx6ull-14x14-evk.dts arch/arm/boot/dts/imx6ull-elf1-emmc.dts
將imx6ull-elf1-emmc.dts添加到Makefile,
打開(kāi)arch/arm/boot/dts/Makefile
找到CONFIG_SOC_IMX6ULL,添加我們剛剛創(chuàng)建的設(shè)備樹(shù):
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vi arch/arm/boot/dts/Makefile
![wKgZomWOJ9CALLScAARCc0VvZ-E662.png](https://file1.elecfans.com/web2/M00/B9/B8/wKgZomWOJ9CALLScAARCc0VvZ-E662.png)
4.建立交叉編譯腳本
建立一個(gè)編譯腳本build.sh:
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vim build.sh
添加以下內(nèi)容,保存退出:
#!/bin/bash export CPUS=`grep -c processor /proc/cpuinfo` source /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi make distclean make imx6ull_elf1_defconfig make -j${CPUS} rm -rf ./.tmp make modules_install INSTALL_MOD_PATH=./.tmp/rootfs/ cd .tmp/rootfs/ tar -jcvf modules.tar.bz2 *
給予腳本權(quán)限:
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ chmod 777 build.sh
02適配LED
1.在主控板原理圖中找到LED_R、LED_G、LED_Y三個(gè)小燈:
![wKgZomWOKA2AO0OwAA1jYtEp3cs677.png](https://file1.elecfans.com/web2/M00/B9/B8/wKgZomWOKA2AO0OwAA1jYtEp3cs677.png)
2.IOMUX配置
從上圖可以看出LED_Y連接到了連接器的30腳,LED_R連到了60腳,LED_G連接到了64腳,接下來(lái)需要找到這幾個(gè)引腳在軟件上的信號(hào)名稱。
打開(kāi)ELF 1開(kāi)發(fā)板資料包\05-硬件資料\05-4 管腳分配表\ELF 1引腳復(fù)用對(duì)照表-20230921找到30、60、64引腳的信號(hào)名稱。30引腳信號(hào)名稱為UART1_CTS_B;60引腳的信號(hào)名稱為JTAG_MOD;64引腳的信號(hào)名稱為GPIO1_IO00。使用這三個(gè)引腳控制LED,所以需要把它們復(fù)用成GPIO功能。
在arch/arm/boot/dts/imx6ul-pinfunc.h中找到它們的宏定義,分別如下:
![wKgaomWOKC6AFpzmAAEhXRzbIfo089.png](https://file1.elecfans.com/web2/M00/BA/4F/wKgaomWOKC6AFpzmAAEhXRzbIfo089.png)
打開(kāi)設(shè)備樹(shù)文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts,在&iomuxc節(jié)點(diǎn)下添加子節(jié)點(diǎn)
pinctrl_leds0:pinctrl_leds0:leds0grp { fsl,pins = < MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x10b0 MX6UL_PAD_JTAG_MOD__GPIO1_IO10 0x10b0 MX6UL_PAD_GPIO1_IO00__GPIO1_IO00 0x10b0 >; };
效果如下:
![wKgZomWOKFmAdMiRAADhtZmw4ck113.png](https://file1.elecfans.com/web2/M00/B9/B8/wKgZomWOKFmAdMiRAADhtZmw4ck113.png)
(注意:在IOMUX配置環(huán)節(jié),一定要確保一個(gè)引腳只被復(fù)用為一個(gè)功能,如果同一個(gè)引腳在其它地方被復(fù)用成另一個(gè)功能,很可能影響到我們期望的功能。)
3.設(shè)備節(jié)點(diǎn)配置
在設(shè)備樹(shù)中添加完IOMUX配置相關(guān)代碼之后,接下來(lái)在設(shè)備樹(shù)中添加供GPIO子系統(tǒng)使用的相關(guān)配置。在根節(jié)點(diǎn)的backlight節(jié)點(diǎn)上面添加子節(jié)點(diǎn)leds:
leds { compatible = "gpio-leds"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_leds0 >; status = "okay"; led1{ lable = "led1"; gpios = <&gpio1 10 GPIO_ACTIVE_LOW>; default-state = "off"; }; led2{ lable = "led2"; gpios = <&gpio1 0 GPIO_ACTIVE_LOW>; default-state = "on"; }; led3{ lable = "led3"; gpios = <&gpio1 18 GPIO_ACTIVE_LOW>; default-state = "on"; }; };
效果如下:
![wKgaomWOKHqAeIs_AAHMRI8y4SM940.png](https://file1.elecfans.com/web2/M00/BA/50/wKgaomWOKHqAeIs_AAHMRI8y4SM940.png)
4.配置LED驅(qū)動(dòng)編譯進(jìn)內(nèi)核
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ make imx6ull_elf1_defconfig elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ make menuconfig
搜索LEDS_GPIO,看到LEDS_GPIO [=y]說(shuō)明此驅(qū)動(dòng)已經(jīng)編譯進(jìn)內(nèi)核:
![wKgZomWOKJqATrhiAALS0Pe5XQA781.png](https://file1.elecfans.com/web2/M00/B9/B8/wKgZomWOKJqATrhiAALS0Pe5XQA781.png)
5.編譯
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ ./build.sh
將編譯生成的zImage和imx6ull-elf-emmc.dtb拷貝到ELF 1開(kāi)發(fā)板的/run/media/mmcblk1p1 路徑下:
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/zImage root@192.168.2.101:/run/media/mmcblk1p1 elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/dts/imx6ull-elf1-emmc.dtb root@192.168.2.101:/run/media/mmcblk1p1
6.開(kāi)發(fā)板保存重啟
root@ELF1~# sync root@ELF1~# reboot
重啟后可以看到開(kāi)發(fā)板上的綠色和黃色LED為點(diǎn)亮狀態(tài)。在設(shè)備樹(shù)中LED2和LED3的default-state屬性配置為on,所以這兩個(gè)LED默認(rèn)是打開(kāi)的狀態(tài)。
03LED測(cè)試
1.查看節(jié)點(diǎn),可以看到在/sys/class/leds下已經(jīng)生成了我們配置的3個(gè)LED
root@ELF1:~# ls /sys/class/leds/ led1 led2 led3 mmc0:: mmc1::
2.控制LED1亮
root@ELF1:~# echo 1 > /sys/class/leds/led1/brightness
3.控制LED1滅
root@ELF1:~# echo 0 > /sys/class/leds/led1/brightness
4.設(shè)置LED1為心跳燈
root@ELF1:~# cat /sys/class/leds/led1/trigger
默認(rèn)led1的觸發(fā)器為none,現(xiàn)在把它改為heartbeat,就可以實(shí)現(xiàn)心跳燈的效果。
root@ELF1:~# echo heartbeat > /sys/class/leds/led1/trigger
現(xiàn)在就可以看到紅色LED燈為心跳閃爍的狀態(tài)。
以上就完成了在NXP源碼基礎(chǔ)上適配ELF 1開(kāi)發(fā)板的LED功能,希望能對(duì)屏幕前的小伙伴提供幫助。
-
led
+關(guān)注
關(guān)注
242文章
23355瀏覽量
663173 -
嵌入式
+關(guān)注
關(guān)注
5092文章
19177瀏覽量
307653 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5121瀏覽量
98192
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
ELF 1技術(shù)貼|在NXP源碼基礎(chǔ)上適配開(kāi)發(fā)板的按鍵功能
![<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|<b class='flag-5'>在</b><b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎(chǔ)上</b><b class='flag-5'>適配</b><b class='flag-5'>開(kāi)發(fā)板</b>的按鍵<b class='flag-5'>功能</b>](https://file1.elecfans.com/web2/M00/C3/62/wKgZomXq0ymANr0hAABDmHpF1tQ264.png)
如何在NXP源碼基礎(chǔ)上適配ELF 1開(kāi)發(fā)板的PWM功能
![如何在<b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎(chǔ)上</b><b class='flag-5'>適配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開(kāi)發(fā)板</b>的PWM<b class='flag-5'>功能</b>](https://file1.elecfans.com/web2/M00/05/C4/wKgZombem8eAdoE_AABFKKlF4AA364.png)
ElfBoard技術(shù)貼|如何在NXP源碼基礎(chǔ)上適配ELF 1開(kāi)發(fā)板的UART功能
![ElfBoard<b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如何在<b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎(chǔ)上</b><b class='flag-5'>適配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開(kāi)發(fā)板</b>的UART<b class='flag-5'>功能</b>](https://file1.elecfans.com/web2/M00/08/D1/wKgaombzpf2ANbDaAABFevJym7M948.png)
ElfBoard技術(shù)貼|ELF 1開(kāi)發(fā)板適配攝像頭詳解
![ElfBoard<b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>適配</b>攝像頭詳解](https://file1.elecfans.com/web3/M00/04/02/wKgZO2duDgOAAHDXAAA9ZyCKWSc079.png)
嵌入式學(xué)習(xí)-ElfBoard ELF 1板卡-在nxp源碼基礎(chǔ)上適配ELF 1開(kāi)發(fā)板的LED功能
飛凌嵌入式ElfBoard ELF 1板卡-在NXP源碼基礎(chǔ)上適配ELF 1開(kāi)發(fā)板的按鍵功能
嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-在NXP源碼基礎(chǔ)上適配ELF 1開(kāi)發(fā)板的按鍵功能
關(guān)于ELF1/ELF1S開(kāi)發(fā)板的音頻接口,你需要知道的都在這!
![關(guān)于<b class='flag-5'>ELF1</b>/<b class='flag-5'>ELF1</b>S<b class='flag-5'>開(kāi)發(fā)板</b>的音頻接口,你需要知道的都在這!](https://file1.elecfans.com/web2/M00/AB/8D/wKgaomVAmk6ANFc_AAA4WGadmeE234.png)
學(xué)習(xí)筆記分享|使用C庫(kù)函數(shù)控制ELF 1開(kāi)發(fā)板的LED
![學(xué)習(xí)筆記分享|使用C庫(kù)函數(shù)控制<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開(kāi)發(fā)板</b>的<b class='flag-5'>LED</b>](https://file1.elecfans.com/web2/M00/BA/50/wKgaomWOKTKAfuWLAABArY1D4Jg940.png)
在ELF 1 開(kāi)發(fā)板上實(shí)現(xiàn)讀取攝像頭視頻進(jìn)行目標(biāo)檢測(cè)
![<b class='flag-5'>在</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b> <b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>上</b>實(shí)現(xiàn)讀取攝像頭視頻進(jìn)行目標(biāo)檢測(cè)](https://file1.elecfans.com/web2/M00/BE/FA/wKgaomWweAmAVqMyAABPqJU_Tds105.png)
ELF 1技術(shù)貼|如何將Python3.6.9移植到開(kāi)發(fā)板上
![<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如何將Python3.6.9移植到<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>上</b>](https://file1.elecfans.com/web2/M00/C0/94/wKgZomXW5EiAf1EoAABBQv84DIc700.png)
ELF技術(shù)貼|如何在開(kāi)發(fā)板上實(shí)現(xiàn)對(duì)Java的支持
![<b class='flag-5'>ELF</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如何在<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>上</b>實(shí)現(xiàn)對(duì)Java的支持](https://file1.elecfans.com/web2/M00/C5/1A/wKgaomXxaDCADbm_AAA89wQPeVU499.png)
ElfBoard技術(shù)貼|在NXP源碼基礎(chǔ)上適配ELF 1開(kāi)發(fā)板的按鍵功能
![ElfBoard<b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|<b class='flag-5'>在</b><b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎(chǔ)上</b><b class='flag-5'>適配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開(kāi)發(fā)板</b>的按鍵<b class='flag-5'>功能</b>](https://file1.elecfans.com/web2/M00/FB/88/wKgaomaN6ZaAeoxXAABAhfkiKBc281.png)
ElfBoard技術(shù)貼|如何在ELF 1開(kāi)發(fā)板上搭建流媒體服務(wù)器
![ElfBoard<b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如何在<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>上</b>搭建流媒體服務(wù)器](https://file1.elecfans.com/web2/M00/04/6E/wKgaombEPEuAU2NVAABA0p3Um-o988.png)
在NXP源碼基礎(chǔ)上如何適配ELF 1開(kāi)發(fā)板的UART功能
![<b class='flag-5'>在</b><b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎(chǔ)上</b>如何<b class='flag-5'>適配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開(kāi)發(fā)板</b>的UART<b class='flag-5'>功能</b>](https://file1.elecfans.com//web2/M00/08/8E/wKgZomb4zkiAehupAAB1WkVXQrc743.jpg)
評(píng)論