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

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

2024/09/09
1810
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

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

1、準(zhǔn)備工作
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)添加默認(rèn)配置文件

將arch/arm/configs路徑下的imx_v7_mfg_defconfig復(fù)制一份,命名為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設(shè)備樹

將arch/arm/boot/dts路徑下的imx6ull-14x14-evk.dts復(fù)制一份,命名為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
添加以下內(nèi)容,保存退出
#!/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 *
給予腳本權(quán)限
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ chmod 777 build.sh
2、適配PWM
(1)硬件原理
開發(fā)板上控制蜂鳴器的引腳網(wǎng)絡(luò)名為PWM2,通過引腳網(wǎng)絡(luò)名可確定到其球號為M15,再通過球號確定到引腳名稱PAD NAME為GPIO1_IO09。
(2)IOMUX配置

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

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

可以看到連接器的65引腳信號名稱為GPIO1_IO09。
因?yàn)樾枰褂肞WM控制蜂鳴器,所以需要把它復(fù)用成PWM功能,在arch/arm/boot/dts/imx6ul-pinfunc.h中找到它們的宏定義,如下:
打開設(shè)備樹文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts,在&iomux節(jié)點(diǎn)下添加子節(jié)點(diǎn)pinctrl_pwm2:
pinctrl_pwm2: pwm2grp {
                        fsl,pins = <
                             MX6UL_PAD_GPIO1_IO09__PWM2_OUT   0x110b0
                        >;
                };
效果如下:
配置完P(guān)WM2之后,檢查設(shè)備樹中是否把GPIO1_IO09復(fù)用成其它功能了。在arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件中搜索引腳PAD NAME“GPIO1_IO09”,在&iomux的子節(jié)點(diǎn)pinctrl_hog_1節(jié)點(diǎn)下搜索到了GPIO1_IO09的另一個功能復(fù)用配置,將該引腳復(fù)用成了GPIO功能,用于TF卡的復(fù)位,ELF 1開發(fā)板沒有使用此功能,可以將其注釋掉。
此外,還需要注釋掉節(jié)點(diǎn)下的如下內(nèi)容

(3)設(shè)備節(jié)點(diǎn)配置

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

打開arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件,已經(jīng)存在PWM1相關(guān)節(jié)點(diǎn),PWM1是輸出給LCD的背光使用的。在&pwm1節(jié)點(diǎn)下添加節(jié)點(diǎn)&pwm2。
&pwm2 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_pwm2>;
        status = "okay";
};
效果如下:
(4)編譯

由于pwm只涉及到設(shè)備樹修改,不再使用腳本編譯,單獨(dú)編譯設(shè)備樹即可。

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設(shè)置為輸出

root@ELF1:~#:~# echo 0 > /sys/class/pwm/pwmchip1/export
使能PWM2功能

root@ELF1:~#:~# echo 1 > /sys/class/pwm/pwmchip1/pwm0/enable
設(shè)置PWM周期,單位為ns

root@ELF1:~#:~# echo 1000000 > /sys/class/pwm/pwmchip1/pwm0/period
設(shè)置PWM占空比為50%

root@ELF1:~#:~# echo 500000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle
此時可以聽到蜂鳴器響起。關(guān)閉蜂鳴器,失能PWM2功能

root@ELF1:~#:~# echo 0 > /sys/class/pwm/pwmchip1/pwm0/enable
至此,就完成了在NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板的PWM功能,期望這份詳實(shí)的指南能為正在閱讀的小伙伴帶來實(shí)質(zhì)性的助益與啟發(fā),在嵌入式開發(fā)之旅上,愿我們攜手共進(jìn),探索無限可能。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
CY62177EV30LL-55ZXI 1 Cypress Semiconductor Standard SRAM, 2MX16, 55ns, CMOS, PDSO48, 12 X 18.40 MM, 1 MM HEIGHT, LEAD FREE, MO-142, TSOP1-48

ECAD模型

下載ECAD模型
$34.25 查看
MOC3021SR2M 1 Rochester Electronics LLC 1 CHANNEL TRIAC OUTPUT OPTOCOUPLER, SURFACE MOUNT, DIP-6
$0.68 查看
TLP185(GB-TPR,SE 1 Toshiba America Electronic Components 1 CHANNEL TRANSISTOR OUTPUT OPTOCOUPLER

ECAD模型

下載ECAD模型
$0.45 查看
飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。收起

查看更多

相關(guān)推薦