如安在NXP源码基础上适配ELF 1开发板的PWM功用
本次源码适配项目是在。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/w。or。k目录下解压。
elfubuntu:~/work$ tar jvxf linux-imx-imx_4.1.15_2.0.0_ga.tar.bz2 elfubuntu:~/work$ cd linux-imx-imx_4.1.15_2.0.0_ga/ elfubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ ls。
(2)增加默许装备文件。
将arch/。arm。/configs途径下的imx_v7_mfg_defconfig仿制一份,命名为imx6ull_elf1_defconfig。
elfubuntu:~/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。
elfubuntu:~/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中。
elfubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vi arch/arm/boot/dts/Makefile。
(4)树立穿插编译脚本。
树立一个编译脚本build.sh。
elfubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vim build.sh。
增加以下内容,保存退出。
#!/bin/bash export。 CPU。S=`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 *。
给予脚本权限。
elfubuntu:~/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-。pi。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功用,用于。TF。卡的复位,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只涉及到设备树修正,不再运用脚本编译,独自编译设备树即可。
elfubuntu:~/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 elfubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ make dtbs。
将编译生成的imx6ull-elf-emmc.dtb拷贝到ELF 1开发板的/run/media/mmcblk1p1 途径下。
elfubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/dts/imx6ull-elf1-emmc.dtb root172.16.0.175:/run/media/mmcblk1p1/。
保存偏重启开发板。
rootELF1~# sync rootELF1~# reboot。
3、PWM测验。
待开发板发动完结,将PWM2设置为输出。
rootELF1:~#:~# echo 0 >/sys/class/pwm/pwmchip1/export。
使能PWM2功用。
rootELF1:~#:~# echo 1 >/sys/class/pwm/pwmchip1/pwm0/enable。
设置PWM周期,单位为ns。
rootELF1:~#:~# echo 1000000 >/sys/class/pwm/pwmchip1/pwm0/period。
设置PWM占空比为50%。
rootELF1:~#:~# echo 500000 >/sys/class/pwm/pwmchip1/pwm0/duty_cycle。
此刻能够听到蜂鸣器响起。封闭蜂鸣器,失能PWM2功用。
rootELF1:~#:~# echo 0 >/sys/class/pwm/pwmchip1/pwm0/enable。
至此,就完结了在NXP源码基础上适配ELF 1开发板的PWM功用,希望这份详实的攻略能为正在阅览的小伙伴带来实质性的助益与启示,在。嵌入式开发。之旅上,愿咱们携手共进,探究无限或许。
内容来源:https://noidia.htllogistics.vn/app-1/ts lô tô,https://chatbotjud-hml.saude.mg.gov.br/app-1/telegram-grupo-18
(责任编辑:社会)