0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ELF 1技术贴|在NXP源码基础上适配ELF 1开发板的LED功能

ElfBoard 2023-12-29 10:04 次阅读

本次源码适配工作是在NXP i.MX6ULL EVK评估板的Linux内核源码(特定版本:Linux-imx_4.1.15)基础上进行的。主要目标是调整功能接口引脚配置,以适应ELF 1开发板。下面以LED适配为例,详细说明整个适配过程。

01准备工作

NXP源码路径

ELF1开发板资料包\07-NXP 原厂资料\07-1 NXP官方源码\linux-imx-imx_4.1.15_2.0.0_ga.tar.bz2

1.将NXP源码拷贝到开发环境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.添加默认配置文件

将arch/arm/configs路径下的imx_v7_mfg_defconfig复制一份

命名为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设备树

复制一份imx6ull-14x14-evk.dts,命名为imx6ull-elf1-emmc.dts作为我们ELF 1的设备树:

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,

打开arch/arm/boot/dts/Makefile

找到CONFIG_SOC_IMX6ULL,添加我们刚刚创建的设备树:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vi arch/arm/boot/dts/Makefile

wKgZomWOJ9CALLScAARCc0VvZ-E662.png

4.建立交叉编译脚本

建立一个编译脚本build.sh:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vim build.sh

添加以下内容,保存退出:

#!/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 *

给予脚本权限:

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三个小灯:

wKgZomWOKA2AO0OwAA1jYtEp3cs677.png

2.IOMUX配置

从上图可以看出LED_Y连接到了连接器的30脚,LED_R连到了60脚,LED_G连接到了64脚,接下来需要找到这几个引脚在软件上的信号名称。

打开ELF 1开发板资料包\05-硬件资料\05-4 管脚分配表\ELF 1引脚复用对照表-20230921找到30、60、64引脚的信号名称。30引脚信号名称为UART1_CTS_B;60引脚的信号名称为JTAG_MOD;64引脚的信号名称为GPIO1_IO00。使用这三个引脚控制LED,所以需要把它们复用成GPIO功能。

在arch/arm/boot/dts/imx6ul-pinfunc.h中找到它们的宏定义,分别如下:

wKgaomWOKC6AFpzmAAEhXRzbIfo089.png

打开设备树文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts,在&iomuxc节点下添加子节点

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

注意:在IOMUX配置环节,一定要确保一个引脚只被复用为一个功能,如果同一个引脚在其它地方被复用成另一个功能,很可能影响到我们期望的功能。)

3.设备节点配置

在设备树中添加完IOMUX配置相关代码之后,接下来在设备树中添加供GPIO子系统使用的相关配置。在根节点的backlight节点上面添加子节点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

4.配置LED驱动编译进内核

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]说明此驱动已经编译进内核:

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开发板的/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.开发板保存重启

root@ELF1~# sync root@ELF1~# reboot

重启后可以看到开发板上的绿色和黄色LED为点亮状态。在设备树中LED2和LED3的default-state属性配置为on,所以这两个LED默认是打开的状态。

03LED测试

1.查看节点,可以看到在/sys/class/leds下已经生成了我们配置的3个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.设置LED1为心跳灯

root@ELF1:~# cat /sys/class/leds/led1/trigger

默认led1的触发器为none,现在把它改为heartbeat,就可以实现心跳灯的效果。

root@ELF1:~# echo heartbeat > /sys/class/leds/led1/trigger

现在就可以看到红色LED灯为心跳闪烁的状态。

以上就完成了在NXP源码基础上适配ELF 1开发板的LED功能,希望能对屏幕前的小伙伴提供帮助。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23347

    浏览量

    662900
  • 嵌入式
    +关注

    关注

    5092

    文章

    19176

    浏览量

    307438
  • 开发板
    +关注

    关注

    25

    文章

    5121

    浏览量

    98102
收藏 人收藏

    评论

    相关推荐

    ELF 1技术|NXP源码基础上适配开发板的按键功能

    ELF1开发板。接下来,我们将详细阐述适配过程中关于按键功能实现的完整步骤。值得一提的是,ELF1开发
    的头像 发表于 03-08 16:58 1007次阅读
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</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'>基础上</b><b class='flag-5'>适配</b><b class='flag-5'>开发板</b>的按键<b class='flag-5'>功能</b>

    如何在NXP源码基础上适配ELF 1开发板的PWM功能

    本次源码适配项目是NXP i.MX6ULL EVK评估所搭载的Linux内核源码(版本为Li
    的头像 发表于 09-10 10:00 985次阅读
    如何在<b class='flag-5'>NXP</b><b class='flag-5'>源码</b><b class='flag-5'>基础上</b><b class='flag-5'>适配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>开发板</b>的PWM<b class='flag-5'>功能</b>

    ElfBoard技术|如何在NXP源码基础上适配ELF 1开发板的UART功能

    UART即通用异步收发器,是一种支持全双工串行通信协议的接口。i.MX6ULL处理器平台上,该处理器原生支持多达8路的UART接口,提供了丰富的串行通信能力。 针对ELF 1开发板
    的头像 发表于 09-25 13:56 2417次阅读
    ElfBoard<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'>基础上</b><b class='flag-5'>适配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>开发板</b>的UART<b class='flag-5'>功能</b>

    ElfBoard技术|ELF 1开发板适配摄像头详解

    ELF1ELF1S开发板适配的OV5640摄像头,集成了CMOS图像传感器,作为一款500万像素级别的摄像头,不仅能够支持最高达2592x1944分辨率的QSXGA图像输出,帧率可达
    的头像 发表于 12-27 10:16 777次阅读
    ElfBoard<b class='flag-5'>技术</b><b class='flag-5'>贴</b>|<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>开发板</b><b class='flag-5'>适配</b>摄像头详解

    嵌入式学习-ElfBoard ELF 1板卡-nxp源码基础上适配ELF 1开发板LED功能

    源码适配即在NXP i.MX6ULL EVK评估对应的Linux内核源码(linux-imx_4.1.15 版本)
    发表于 01-05 14:35

    飞凌嵌入式ElfBoard ELF 1板卡-NXP源码基础上适配ELF 1开发板的按键功能

    的键值是103,KEY3上报的键值是108,与设备树中配置的键值一致。 至此,就完成了NXP源码基础上
    发表于 07-03 09:07

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-NXP源码基础上适配ELF 1开发板的按键功能

    的键值是103,KEY3上报的键值是108,与设备树中配置的键值一致。 至此,就完成了NXP源码基础上
    发表于 07-04 09:11

    关于ELF1/ELF1S开发板的音频接口,你需要知道的都在这!

    音乐可以将平凡的画面赋予深厚的意义,那么音频接口就是这个支点;今天就来给大家详细介绍一下ELF1/ELF1S开发板的音频接口。ELF1/ELF1
    的头像 发表于 10-31 14:10 747次阅读
    关于<b class='flag-5'>ELF1</b>/<b class='flag-5'>ELF1</b>S<b class='flag-5'>开发板</b>的音频接口,你需要知道的都在这!

    学习笔记分享|使用C库函数控制ELF 1开发板LED

    ELF1/ELF1S开发板及显示屏)嵌入式Linux系统开发中,通过编程控制硬件资源是至关重要的技能之一,今天跟各位小伙伴分享一篇专注于
    的头像 发表于 01-19 11:12 622次阅读
    学习笔记分享|使用C库函数控制<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>开发板</b>的<b class='flag-5'>LED</b>

    ELF 1 开发板实现读取摄像头视频进行目标检测

    当前,将AI或深度学习算法(如分类、目标检测和轨迹追踪)部署到嵌入式设备,进而实现边缘计算,正成为轻量级深度学习算法发展的一个重要趋势。今天将与各位小伙伴分享一个实际案例:ELF1开发板上成功部署
    的头像 发表于 01-24 10:38 755次阅读
    <b class='flag-5'>在</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b> <b class='flag-5'>开发板</b><b class='flag-5'>上</b>实现读取摄像头视频进行目标检测

    ELF 1技术|如何将Python3.6.9移植到开发板

    ELF1开发板的Linux4.1.15eMMC镜像中,默认预装了Python2.7。为了适应更多应用场景,有些小伙伴可能需要移植其他版本的Python,下面将以Python3.6.9为例详细介绍
    的头像 发表于 02-22 14:06 467次阅读
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何将Python3.6.9移植到<b class='flag-5'>开发板</b><b class='flag-5'>上</b>

    ELF技术|如何在开发板实现对Java的支持

    Java作为一种功能强大且广泛应用的编程语言,具有广泛的适应性和实用性。ELF1开发板上集成Java支持,无疑将赋予嵌入式开发者更广阔的选
    的头像 发表于 03-13 16:47 542次阅读
    <b class='flag-5'>ELF</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何在<b class='flag-5'>开发板</b><b class='flag-5'>上</b>实现对Java的支持

    ElfBoard技术|NXP源码基础上适配ELF 1开发板的按键功能

    本次源码适配工作是NXPi.MX6ULLEVK评估的Linux内核源码(特定版本:Linux-imx_4.1.15)
    的头像 发表于 07-10 09:54 684次阅读
    ElfBoard<b class='flag-5'>技术</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'>基础上</b><b class='flag-5'>适配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>开发板</b>的按键<b class='flag-5'>功能</b>

    ElfBoard技术|如何在ELF 1开发板搭建流媒体服务器

    流媒体服务器是一种专门用于传输实时数据流的服务器软件,广泛用于视频直播、视频会议、音频播放等应用场景。嵌入式开发领域,将流媒体服务器部署到开发板可以实现诸如视频监控、实时数据传输等
    的头像 发表于 08-20 14:48 626次阅读
    ElfBoard<b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何在<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>开发板</b><b class='flag-5'>上</b>搭建流媒体服务器

    NXP源码基础上如何适配ELF 1开发板的UART功能

    UART即通用异步收发器,是一种支持全双工串行通信协议的接口。i.MX6ULL处理器平台上,该处理器原生支持多达8路的UART接口,提供了丰富的串行通信能力。 针对ELF 1开发板
    的头像 发表于 09-29 11:49 422次阅读
    <b class='flag-5'>在</b><b class='flag-5'>NXP</b><b class='flag-5'>源码</b><b class='flag-5'>基础上</b>如何<b class='flag-5'>适配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>开发板</b>的UART<b class='flag-5'>功能</b>