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

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

3天内不再提示

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

ElfBoard 2024-09-10 10:00 次阅读

本次源码适配项目是在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功能,期望这份详实的指南能为正在阅读的小伙伴带来实质性的助益与启发,在嵌入式开发之旅上,愿我们携手共进,探索无限可能。

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

    关注

    6020

    文章

    44349

    浏览量

    628140
  • 嵌入式
    +关注

    关注

    5042

    文章

    18797

    浏览量

    298284
  • Linux平台
    +关注

    关注

    0

    文章

    11

    浏览量

    8117
  • 开发板系统
    +关注

    关注

    0

    文章

    3

    浏览量

    4858
  • 学习开发板
    +关注

    关注

    0

    文章

    10

    浏览量

    180
收藏 人收藏

    评论

    相关推荐

    何在哪吒D1开发板适配4G模块实现4G上网

    4G上网是嵌入式设备的常见功能,本文介绍了如何在哪吒D1开发板适配4G模块实现4G上网(以EC
    发表于 08-02 09:58 1154次阅读
    如<b class='flag-5'>何在</b>哪吒D<b class='flag-5'>1</b><b class='flag-5'>开发板</b><b class='flag-5'>上</b><b class='flag-5'>适配</b>4G模块实现4G上网

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

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

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

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

    飞凌ElfBoard ELF 1板卡-如何在ELF 1开发板实现对java的支持

    Java作为一种功能强大且广泛应用的编程语言,具有广泛的适应性和实用性。在ELF 1开发板上集成Java支持,无疑将赋予嵌入式开发者更广阔的
    发表于 03-20 09:51

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

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

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

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

    ELF 1开发板试用】+ 1.开箱+前话

    前话 很荣幸参与到本次由飞凌嵌入式和电子发烧友联合举办“ELF 1开发板”的试用活动; ELF 1这款
    发表于 11-21 20:56

    ELF 1开发板试用】+常用接口功能测试

    ELF 1开发板配有多种常用接口,并可以指令的方式加以测试。 1.蜂鸣器测试 ELF1 开发板
    发表于 11-21 23:57

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

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

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

    本次源码适配工作是在NXPi.MX6ULLEVK评估的Linux内核源码(特定版本:Linux-imx_4.1.15)基础上进行的。主要目
    的头像 发表于 12-29 10:04 671次阅读
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</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>的LED<b class='flag-5'>功能</b>

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

    当前,将AI或深度学习算法(如分类、目标检测和轨迹追踪)部署到嵌入式设备,进而实现边缘计算,正成为轻量级深度学习算法发展的一个重要趋势。今天将与各位小伙伴分享一个实际案例:在ELF1开发板上成功部署
    的头像 发表于 01-24 10:38 534次阅读
    在<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开发板。在网址:https://www.python.org/ftp/python/下载Python-3.6.9.tar.xz压缩
    的头像 发表于 02-22 14:06 315次阅读
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b>技术贴|如何将Python3.6.9移植到<b class='flag-5'>开发板</b><b class='flag-5'>上</b>

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

    Java作为一种功能强大且广泛应用的编程语言,具有广泛的适应性和实用性。在ELF1开发板上集成Java支持,无疑将赋予嵌入式开发者更广阔的选择空间,今天就为各位小伙伴详细解析如
    的头像 发表于 03-13 16:47 389次阅读
    <b class='flag-5'>ELF</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 412次阅读
    ElfBoard技术贴|在<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 359次阅读
    ElfBoard技术贴|如<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>搭建流媒体服务器