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.

[参考译文] PROCESSOR-SDK-J721E:"未处理外部中止"访问 TDA4VM/J721E 上的 ECAP 寄存器时

Guru**** 2539500 points
Other Parts Discussed in Thread: TDA4VM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1429172/processor-sdk-j721e-unhandled-external-abort-when-accessing-ecap-registers-on-tda4vm-j721e

器件型号:PROCESSOR-SDK-J721E
主题中讨论的其他器件:TDA4VM

工具与软件:

您好!

我正在使用一个与 J721E EVM 板(TDA4VM)非常相似的板、并尝试将 ECAP 用作 APWM (作为风扇 PWM 控制器)。

1.首先我尝试使用 Linux 中的 devmem 简单地访问地址0x03100000的寄存器。 它给了我一个例外、所以我假设存储器受到保护或未正确映射。

2.然后、我按照兼容的 AM65x DTS 文件中的说明、使用 ECAP 和 FAN-PWM 更新 DTS。
这确实为我提供了 sysfs 中的 PWM 设备、可以使用以下命令将其导出:

echo 0 >/sys/devices/platform/bus@100000/3100000.pwm/pwmchip0/export

但是、尝试在 /sys/devices/platform/bus@100000/3100000.pwm/pwmchip0/pwm0/中写入任何参数也会导致相同的异常、因此相同的错误会持续存在。

输出电容损耗:

错误:在0x80000000上从 S-EL1接收到未处理的外部中止
错误:异常原因=0综合征=0xbf000000
EL1中未处理的异常

后跟寄存器转储

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

    您好!  

    即使是最新的 SDK 10.0、目前也不支持 ECAP。

    此过程未生效。

    此致、

    基尔西  

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

    好的、但肯定硬件已经过验证、有办法访问它呢?

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

    如果我使用"cat /proc/iomem 检查内存映射、我发现它正在映射

    03100000-0310005f : 3100000.PWM@3100000

    我可以访问 I2C 控制器、它们的显示方式也相同

    02000000-020000ff : 2000000.i2c i2c@2000000

    对于 cat /proc/vmallocinfo、我看到类似情况:

    0x000000000e66f092-0x00000000f819812e 8192  _devm_ioremap+0x100/0x118 phys=0x0000000003100000 ioremap

    0x00000000a89775ab-0x000000007c091c3d  8192 __devm_ioremap+0x100/0x118 phys=0x0000000002000000 ioremap

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

    尊敬的 Andres:

    您能否检查探头是否成功? 另外、如果在 Linux 中启用了 runtime_pm、则可以尝试在驱动程序中禁用该功能。
    我没有试过自己。

    -基尔西

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

    昨晚我设法使它工作,它似乎是与时钟和电源有关。
    我从 AM654 EVM 复制的 DTS 器件的时钟和电源域具有错误的 ID、这是导致我出现问题的原因。

    我在此处找到了正确的 ID:
    https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/j721e/clocks.html

    在 cbass_main 中、我的当前 DTS 器件:

    ecap0:PWM@3100000{
      Compatible ="ti、am654-ECAP"、"ti、am3352-ECAP";
       #pwm-cells =<3>;
       REG =<0x0 0x03100000 0x0 0x100>;
       电源域=<&K3_PDS 80 TI_SCI_PD_Exclusive>;
       时钟=<&K3_CLKS 80 0>;
       时钟名称="FCK";
    };

    我还添加了热阈值警报、这些警报应该使用风扇 PWM 器件来控制 PWM、但这似乎不起作用。

    但我可以手动控制 PWM:

    echo 0 >/sys/devices/platform/bus@100000/3100000.pwm/pwmchip0/export
    echo 100000 >/sys/devices/platform/bus@100000/3100000.pwm/pwm/pwmchip0/pwm0/period
    echo 0 >/sys/devices/platform/bus@100000/3100000.pwm/pwmchip0/pwm0/duty_cycle
    echo 1 >/sys/devices/platform/bus@100000/3100000.pwm/pwm/pwmchip0/pwm0/enable
    echo 50000 >/sys/devices/platform/bus@100000/3100000.pwm/pwm/pwmchip0/pwm0/duty_cycle

    似乎需要将占空比设置为0才能启动、然后设置预期占空比

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

    好的,谢谢分享这个。  

    此致、

    基尔西