全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

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

时间:2024-09-10 10:00

人气:

作者:admin

导读:本次源码适配项目是在NXP i.MX6ULL EVK评估板所搭载的Linux内核源码(版本为Linux-imx_4.1.15)基础上进行的,主要目标是通过调整功能接口引脚配置,使其适应ELF 1开发板。为了深入阐述这一...

本次源码适配项目是在NXP i.MX6ULL EVK评估板所搭载的Linux内核源码(版本为Linux-imx_4.1.15)基础上进行的,主要目标是通过调整功能接口引脚配置,使其适应ELF 1开发板。为了深入阐述这一适配过程,我们将以PWM功能的适配作为具体示例,深入解析整个流程。

1、准备工作

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设备树

将arch/arm/boot/dts路径下的imx6ull-14x14-evk.dts复制一份,命名为imx6ull-elf1-emmc.dts

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

打开arch/arm/boot/dts/Makefile,找到CONFIG_SOC_IMX6ULL,将imx6ull-elf1-emmc.dts添加到Makefile中。

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

wKgZombemAuAJRPCAANOW6pgPJ8196.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

2、适配PWM

(1)硬件原理

开发板上控制蜂鸣器的引脚网络名为PWM2,通过引脚网络名可确定到其球号为M15,再通过球号确定到引脚名称PAD NAME为GPIO1_IO09。

wKgaombemOWAT3pCAAB08ml1Tm0307.pngwKgaombemPyAaPhDAAEzRRnS-b4694.png

(2)IOMUX配置

从上图可以看出PWM2连接到了连接器的65脚。接下来我们需要找到这个引脚在软件上的信号名称。

打开ELF 1开发板资料包\05-硬件资料\05-4 管脚分配表\ELF 1引脚复用对照表找到65引脚的信号名称。

wKgaombemR-AKP6CAAEJJFPm29w031.png

可以看到连接器的65引脚信号名称为GPIO1_IO09。
因为需要使用PWM控制蜂鸣器,所以需要把它复用成PWM功能,在arch/arm/boot/dts/imx6ul-pinfunc.h中找到它们的宏定义,如下:

wKgaombemXyASIXmAACnhtwzD8Q974.png

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

pinctrl_pwm2: pwm2grp { fsl,pins = < MX6UL_PAD_GPIO1_IO09__PWM2_OUT 0x110b0 >; };

效果如下:

wKgZombembSANVsCAAECA1y-pPU473.png

配置完PWM2之后,检查设备树中是否把GPIO1_IO09复用成其它功能了。在arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件中搜索引脚PAD NAME“GPIO1_IO09”,在&iomux的子节点pinctrl_hog_1节点下搜索到了GPIO1_IO09的另一个功能复用配置,将该引脚复用成了GPIO功能,用于TF卡的复位,ELF 1开发板没有使用此功能,可以将其注释掉。

wKgaombemdGAZxi0AAF476XJmMA811.png

此外,还需要注释掉节点下的如下内容

wKgZombemeqAe3V2AAFBkJQvkoY914.png

(3)设备节点配置

在设备树文件arch/arm/boot/dts/imx6ull.dtsi中已经定义好了8路PWM信号的相关节点,只需要将PWM2的时钟配置上即可,将clocks属性的IMX6UL_CLK_DUMMY更改为IMX6UL_CLK_PWM2。

wKgaombemgiAbMMkAAGdkUyV3IA895.png

打开arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件,已经存在PWM1相关节点,PWM1是输出给LCD的背光使用的。在&pwm1节点下添加节点&pwm2。

&pwm2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pwm2>; status = "okay"; };

效果如下:

wKgaombemjWAXJl6AAEGnj0Ef-s739.png

(4)编译

由于pwm只涉及到设备树修改,不再使用脚本编译,单独编译设备树即可。

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 dtbs

将编译生成的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/dts/imx6ull-elf1-emmc.dtb root@172.16.0.175:/run/media/mmcblk1p1/

保存并重启开发板

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

3、PWM测试

待开发板启动完成,将PWM2设置为输出

root@ELF1:~#:~# echo 0 > /sys/class/pwm/pwmchip1/export

使能PWM2功能

root@ELF1:~#:~# echo 1 > /sys/class/pwm/pwmchip1/pwm0/enable

设置PWM周期,单位为ns

root@ELF1:~#:~# echo 1000000 > /sys/class/pwm/pwmchip1/pwm0/period

设置PWM占空比为50%

root@ELF1:~#:~# echo 500000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle

此时可以听到蜂鸣器响起。关闭蜂鸣器,失能PWM2功能

root@ELF1:~#:~# echo 0 > /sys/class/pwm/pwmchip1/pwm0/enable

至此,就完成了在NXP源码基础上适配ELF 1开发板的PWM功能,期望这份详实的指南能为正在阅读的小伙伴带来实质性的助益与启发,在嵌入式开发之旅上,愿我们携手共进,探索无限可能。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信