This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3358:BeagleBone Black PWM 输出配置

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/735142/linux-am3358-beaglebone-black-pwm-output-configuration

器件型号:AM3358

工具/软件:Linux

您好!

我尝试配置 BeagleBone Black EHRPWM0、EHRPWM1、EHRPWM2将 PWM 信号输出到 P8、P9。 我在关注这个线程 https://e2e.ti.com/support/processors/f/791/t/677964、但是、在我的 Linux 内核 DTS 目录中、我找不到相关的引脚名称。

我修改的文件是 Linux 内核源代码下的 arch/arm/boot/dts/am33xx.dtsi。 下面显示了与 PWM 相关的片段(以 epwms0为例):

epwms0:epwmss@48300000{
       兼容="ti、am33xx-pwms";
       REG =<0x48300000 0x10>;
       ti、hwmonds ="epwmss0";
       (笑声)
       状态="正常";

       ecap0:ECAP@48300100{
               兼容="ti、am3352-ecap"、
                            "TI、am33xx-ECAP";
               (笑声)
               状态="正常";
       };

       ehrpwm0:PWM@48300200{
               兼容="ti、am3352-ehrpwm"、
                            "TI、am33xx-ehrpwm";
               (笑声)
               状态="正常";
       };
};

我将状态从"禁用"更改为"确定"。 将填充/sys/class/pwm 下的目录结构。 但 P9 EHRPWM1A 和其他引脚上没有输出信号。

root@AM335x-EVM://# ls -l /sys/class/pwm
(笑声)
lrwxrwxrwx   1 root    root root            用户0 Jan 1 1970 pwmchip3 ->../../devices/platform/ocp/48302000.epwmss/48302100.ecap/pwm/pwmchip3
lrwxrwxrwx   1 root    root 用户            0 Jan 1 1970 pwmchip4 ->../../devices/platform/ocp/48302000.epwmss/48302200.pwm/pwm/pwmchip4
(笑声)

作为 Linux 器件树和 PWM 新手、我有以下一些问题:

配置中仍然缺少哪些内容? 我在 Linux 内核源代码下的任何.dts 或 dtsi 中都没有看到这些代码段。 我怀疑需要添加这些内容。 但是、我在哪里添加它们呢?

(笑声)

ehrpwm2a_pins:pinmux_ehrpwm2a_pins{
   pinctrl-single、pins =<
      AM33XX_IOPAD (0x820、PIN_OUTPUT | MUX_Mode4)/* GPMC_ad8.ehrpwm2A *
   >;
};

(笑声)
请解释我的理解是否不正确、或者还有更多需要做的事情。

2.我使用的构建系统是 Yocto。 我想我只需要修改.dts (或.dtsi)文件并生成器件树的补丁、然后构建内核。 这是正确的、还是需要通过其他方式来实现?

我使用的 poky 和 meta-ti 标签分别为"Rocko-18.0.3"和"ti2018.03"。  Linux 内核版本为:

root@AM335x-EVM:// uname -a
Linux AM335x-EVM 4.14.67-g735eec7413

非常感谢您的帮助!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Matt、您好!

    您使用的是软件的开发前沿(ti2018.03用于制造 Processor SDK 5.1、这可能不会再有一周左右的时间)、因此您的情况可能与我们迄今记录的情况有所不同。 例如、可能添加了设备树覆盖文件(dtso)文件、这些文件会改变情况。

    *我不建议在 am33xx.dtsi 中进行更改-而是在"最后一个"dts 文件中进行更改。 DTS 文件会覆盖包含的 DTS 或 dtsi 文件中的设置,因此您的设置可能会在以后被 DTS 文件覆盖。

    *在 DTS 文件或 AM335x 的 uboot 中可能会出现 Pinmuxing -这是另一个值得关注的地方。

    如果这些信息足以让您了解情况、请告诉我-否则、我将很快对此进行更详细的介绍。 如果我在一天左右的时间内没有响应、请随时 ping 这个主题。

    此致、
    Nick
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nick、

    感谢您的回答。 我通过修改 AM335x-bonebblack.dts 实现了这一目标-我认为这是您对"last" dts 文件的定义。 如果情况并非如此、请告诉我。

    感谢你的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Matt、您好!

    很高兴您能正常工作! 是的、这就是我所说的"last (最后)"DTS 文件。

    此致、

    Nick