• 正文
  • 推薦器件
  • 相關推薦
申請入駐 產業(yè)圖譜

如何在NXP源碼基礎上適配ELF 1開發(fā)板的PWM功能

2024/09/09
1930
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

本次源碼適配項目是在NXP i.MX6ULL EVK評估板所搭載的Linux內核源碼(版本為Linux-imx_4.1.15)基礎上進行的,主要目標是通過調整功能接口引腳配置,使其適應ELF 1開發(fā)板。為了深入闡述這一適配過程,我們將以PWM功能的適配作為具體示例,深入解析整個流程。

1、準備工作
NXP源碼路徑:ELF1開發(fā)板資料包7-NXP 原廠資料7-1 NXP官方源碼linux-imx-imx_4.1.15_2.0.0_ga.tar.bz2
(1)將NXP源碼拷貝到開發(fā)環(huán)境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

(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)硬件原理
開發(fā)板上控制蜂鳴器的引腳網絡名為PWM2,通過引腳網絡名可確定到其球號為M15,再通過球號確定到引腳名稱PAD NAME為GPIO1_IO09。
(2)IOMUX配置

從上圖可以看出PWM2連接到了連接器的65腳。接下來我們需要找到這個引腳在軟件上的信號名稱。

打開ELF 1開發(fā)板資料包5-硬件資料5-4 管腳分配表ELF 1引腳復用對照表找到65引腳的信號名稱。

可以看到連接器的65引腳信號名稱為GPIO1_IO09。
因為需要使用PWM控制蜂鳴器,所以需要把它復用成PWM功能,在arch/arm/boot/dts/imx6ul-pinfunc.h中找到它們的宏定義,如下:
打開設備樹文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts,在&iomux節(jié)點下添加子節(jié)點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的子節(jié)點pinctrl_hog_1節(jié)點下搜索到了GPIO1_IO09的另一個功能復用配置,將該引腳復用成了GPIO功能,用于TF卡的復位,ELF 1開發(fā)板沒有使用此功能,可以將其注釋掉。
此外,還需要注釋掉節(jié)點下的如下內容

(3)設備節(jié)點配置

在設備樹文件arch/arm/boot/dts/imx6ull.dtsi中已經定義好了8路PWM信號的相關節(jié)點,只需要將PWM2的時鐘配置上即可,將clocks屬性的IMX6UL_CLK_DUMMY更改為IMX6UL_CLK_PWM2。

打開arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件,已經存在PWM1相關節(jié)點,PWM1是輸出給LCD的背光使用的。在&pwm1節(jié)點下添加節(jié)點&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開發(fā)板的/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/
保存并重啟開發(fā)板

root@ELF1~# sync
root@ELF1~# reboot
3、PWM測試

待開發(fā)板啟動完成,將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開發(fā)板的PWM功能,期望這份詳實的指南能為正在閱讀的小伙伴帶來實質性的助益與啟發(fā),在嵌入式開發(fā)之旅上,愿我們攜手共進,探索無限可能。

推薦器件

更多器件
器件型號 數量 器件廠商 器件描述 數據手冊 ECAD模型 風險等級 參考價格 更多信息
HFBR-1412TMZ 1 Foxconn Transmitter, 792nm Min, 865nm Max, 5Mbps, ST Connector, DIP, Panel Mount, Through Hole Mount, ROHS COMPLIANT PACKAGE
$27.08 查看
IL4208 1 Vishay Intertechnologies Triac Output Optocoupler, 1-Element, 5300V Isolation, DIP-6

ECAD模型

下載ECAD模型
$3.34 查看
DP83867IRRGZR 1 Texas Instruments Industrial temperature, robust gigabit Ethernet PHY transceiver 48-VQFN -40 to 85

ECAD模型

下載ECAD模型
$59.73 查看

相關推薦