加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 准备工作
    • 适配LED
    • LED测试
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

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

2023/12/29
1215
阅读需 11 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
本次源码适配工作是在NXP i.MX6ULL EVK评估板Linux内核源码(特定版本:Linux-imx_4.1.15)基础上进行的。主要目标是调整功能接口引脚配置,以适应ELF 1开发板。下面以LED适配为例,详细说明整个适配过程。

准备工作

NXP源码路径

ELF1开发板资料包7-NXP 原厂资料7-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

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

适配LED

1.在主控板原理图中找到LED_R、LED_G、LED_Y三个小灯:

2.IOMUX配置

从上图可以看出LED_Y连接到了连接器的30脚,LED_R连到了60脚,LED_G连接到了64脚,接下来需要找到这几个引脚在软件上的信号名称。
打开ELF 1开发板资料包5-硬件资料5-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中找到它们的宏定义,分别如下:

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

效果如下

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

3.设备节点配置

在设备树中添加完IOMUX配置相关代码之后,接下来在设备树中添加供GPIO子系统使用的相关配置。在根节点的backlight节点上面添加子节点leds:


效果如下:

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

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默认是打开的状态。

LED测试

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功能,希望能对屏幕前的小伙伴提供帮助。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
USB3320C-EZK 1 SMSC Interface Circuit, 5 X 5 MM, 0.90 MM HEIGHT, ROHS COMPLIANT, QFN-32
$2.09 查看
CSTCC4M91G53-R0 1 Murata Manufacturing Co Ltd CSTCC 4.910 MHz 2.5 X 2 mm Built-in Capacitor SMT Resonator
$0.95 查看
XLH736050.000000I 1 Integrated Device Technology Inc HCMOS Output Clock Oscillator
$1.14 查看

相关推荐

电子产业图谱