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

本次源码适配名目是在i.MX6ULL EVK评价板所搭载的内核源码(版本为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/wk目录下解压

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//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

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 exportS=`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 -./.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。

(2)IOMUX性能

从上图可以看出PWM2衔接到了 衔接器 的65脚。接上去咱们须要找到这个引脚在软件上的 信号 称号。

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

可以看到衔接器的65引脚信号称号为GPIO1_IO09。由于须要经常使用PWM控制蜂鸣器,所以须要把它复用成PWM性能,在arch/arm/boot/dts/imx6ul-nfunc.h中找到它们的宏定义,如下:

关上设施树文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts,在&iomux节点下减少子节点pinctrl_pwm2:

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

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

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

(3)设施节点性能

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

关上arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件,曾经存在PWM1相关节点,PWM1是输入给LCD的背光经常使用的。在&pwm1节点下减少节点&pwm2。

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

(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

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性能,希冀这份详实的指南能为正在阅读的小同伴带来实质性的助益与启示,在 嵌入式开发 之旅上,愿咱们携手共进,探求有限或许。

© 版权声明
评论 抢沙发
加载中~
每日一言
不怕万人阻挡,只怕自己投降
Not afraid of people blocking, I'm afraid their surrender