设置imx6ull GPIO扩展板PWM7/8中的pwm0/period后卡死

查看原理图可知扩展板可用PWM7,PWM8,对应着GPIO4_IO19,GPIO4_IO20.



所以100ask_imx6ull-14x14.dts下的iomuxc设置如下:
pinctrl_pwm7: pwm7grp{ /*!< Function assigned for the core: Cortex-A7[ca7] */
fsl,pins = <
MX6UL_PAD_CSI_VSYNC__PWM7_OUT 0x000010B0
>;
};
pinctrl_pwm8: pwm8grp{
fsl,pins = <
MX6UL_PAD_CSI_HSYNC__PWM8_OUT 0x000010B0
>;
};

然后make dtbs 编译dtb文件并烧入开发板。
测试PWM8,这里PWM8对应着/sys/class/pwm/pwmchip7,
接着执行如下操作:
1.cd /sys/class/pwm/pwmchip7
2.echo 0 > export
3.echo 1000000 > pwm0/period
在执行第三步的时候就卡死,如下图
image

所以,想问下这到底是什么原因?我试了PWM7也是会卡死

1 个赞

这个问题难道没人遇到过吗?

我也遇到了,不知道 咋回事

clocks中pwm7/pwm8的值默认都是 IMX6UL_CLK_DUMMY,需要设置成IMX6UL_CLK_PWM8和IMX6UL_CLK_PWM8

imx6ull.dtsi中修改pwm7/pwm8

好的 ,我试试呢 感谢

我修改了 还是不行呢

可以看这篇博客:https://blog.csdn.net/m0_74712453/article/details/139957676,我把解决过程写在上面了,你要进入设备树目录修改100ask_imx6ull-14x14.dts和imx6ull.dtsi文件,
100ask_imx6ull-14x14.dts文件:添加两部分:
(1)
&pwm7 {
pinctrl-names = “default”;
pinctrl-0 = <&pinctrl_pwm7>;
status = “okay”;
};

&pwm8 {
pinctrl-names = “default”;
pinctrl-0 = <&pinctrl_pwm8>;
status = “okay”;
};
(2)
pinctrl_pwm7: pwm7grp {
fsl,pins = <
MX6UL_PAD_CSI_VSYNC__PWM7_OUT 0x000010B0
>;

    };

pinctrl_pwm8: pwm8grp {
fsl,pins = <
MX6UL_PAD_CSI_HSYNC__PWM8_OUT 0x000010B0
>;

    };

imx6ull.dtsi文件:将pwm7中的时钟配置改成 CLK_PWM7, 将pwm8中的时钟配置改成 CLK_PWM8
然后重新编译设备树,上传到开发板,就可以解决了

1 个赞

你好,我想请问下你用的内核版本是多少?目前我下载用的是最新BSP下载的Linux-4.9.88,这里面imx6ull.dtsi里本身对pwm7和pwm8就设置了CLK_PWM7和CLK_PWM8,我试了下还是会卡死的