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-AM57X:具有 PROCESSOR-SDK-Linux 的 ECAP

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/883743/processor-sdk-am57x-ecap-with-processor-sdk-linux

器件型号:PROCESSOR-SDK-AM57X

您好!

我们需要使用时间戳功能来实现 PLL、以便与接收频率高于200ns 的外部时钟(例如、0.1kHz)同步。 对于此类应用、pwmss 中的 ECAP 功能是预先减去的。 但是、没有内核驱动程序可用于访问此函数。 访问寄存器的一种方法是 uio 模块驱动程序。 我能够打开和访问 pruss1寄存器和内存区域(将 am57xx-idk-PRU-uio-swissQprint.dtsi 添加到 am57xx-idk.dts)。 为 pwmss 寄存器映射添加类似条目我能够打开寄存器并将其映射到存储器(根据额外驱动程序 uio-module-drv-2.2.1.0中的示例)。 但是、当读取时、我得到一个"总线错误"异常。

你有什么提示吗? 或者、您是否知道支持捕获事件的内核驱动程序?

非常感谢您的帮助、

Bernd

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

    上述异常的内核跟踪为:

    am57xx-EVM 登录名:[297.096612] --- [在此处剪切]-----
    [297.101278] 警告:CPU:0 PID:31在 drivers/bus/omap_l3_oc.c:147 L3_interrupt_handler + 0x330/0x380
    [297.110542] 44000000.OCP:L3自定义错误:主 MPU 目标 L4_PER2_P3 (读取):功能期间以用户模式访问数据
    [297.122157] 链接模块:xfrm_user xfrm4_tunnel ipcomp xfrm_ipcomp 支持4 AH4 af_key xfrm_algo rpmsg_proto xhci_plat_)
    [297.178200] CPU:0 PID:31 Comm:IRQ/23-L3-APP-I 已污染:G       W O     4.19.79-rt28-g0df36f903cba-niDirty #3.
    [297.178203] 硬件名称:通用 DRA74X (平展器件树)
    [297.178207] 背迹:
    [297.178221] [ ](dump_backtrace)从[ ](show_stack+0x18/0x1c)
    [297.178229]  r7:c0df43e4 r6:600d0113 r5:00000000 r4:c1253c9c
    [297.178239] [ ](show_stack)从[ ](dump_stack+0x90/0xa4)
    [297.178250] [ ](dump_stack)从[ ](_WARN+0xdc/0xf8)
    [297.178256]  r7:c0df43e4 r6:00000009 r5:00000000 r4:dfa4be24
    [297.178265] [ ](__warn)从[ ](warn_slowpath_fmt+0x50/0x6c)
    [297.178271]  R9:dfa25c40 R8:e0882564 r7:c0df4310 R6:c0df4250 R5:c0df43b4 R4:c1207488
    [297.178281] [ ](warn_slowpath_fmt)、来自[ ](L3_INTERRUPT_Handler+0x330/0x380)
    [297.178285]  r3:dfa24800 r2:c0df43b4
    [297.178288]  R5:00000002 R4:80080003
    [297.178298] [ ](L3_interrupt_handler)、来自[ ](IRQ_Forced_thread_fn+0x28/0xa0)
    [297.178304]  R10:00000001 R9:c0289e8c R8:00000000 r7:ffe000 R6:dfa24c24 R5:dfa24c00
    [297.178307]  R4:df877800
    [297.178315] [ ](IRQ_Forced_thread_fn)、来自[ ](IRQ_THREAD+0x140/0x22c)
    [297.178319]  r7:ffe000 r6:dfa24c24 r5:dfa24c00 r4:df877800
    [297.178328] [ ](IRQ_THread)、来自[ ](kthread+0x160/0x168)
    [297.178334]  R10:df87ba94 R9:c028a148 R8:dfa24c00 r7:dfa4a000 R6:00000000 R5:dfa24c40
    [297.178336]  R4:df9fa0c0
    [297.178344] [ ](kthread)、来自[ ](RET_FANK_F叉+0x14/0x34)
    [297.178347] 异常堆栈(0xdfa4bfb0至0xdfa4bff8)
    [297.178352] bfa0:                                    00000000 00000000 00000000
    [297.178357] bfc0:00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [297.178352] bfe0:00000000 00000000 00000000 000000000013 00000000
    [297.1783]  R10:00000000 R9:00000000 R8:00000000 r7:00000000 R6:00000000 R5:c024c084
    [297.178370]  R4:dfa24c40
    [297.178373] --[结束跟踪0000000000000005 ]--

    非常感谢您的帮助、

    Bernd

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

    当我通过启用器件树中的器件时、也会发生这种情况

    ecap0{(&E)
       状态="正常";
    };
    ehrpwm0{(&E)
       状态="正常";
    };
    epwms0{(&E)
       状态="正常";
    };

    然后使用

    omapconf 读取0x4843e200

    从控制台读取寄存器...

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

    您好、Bernd、

    正如您在 Linux 中观察到的那样
    SDK 不支持输入事件计数器件。 它仅支持 PWM 侧。
    我与 PWM 专家进行了检查、显然到目前为止还没有需要任何用例

    但是、我可以在下面找到一些非流代码:

    https://linux-arm-kernel.infradead.narkive.com/zeEA4MIa/patch-v3-0-6-iio-pulse-capture-support-for-ti-ecap

    此外、较新的 SoC 还具有一些与 ECAP 用例相关的更多文档:

    http://www.ti.com/lit/ug/spruil1a/spruil1a.pdf

    页数:11690
    12.4.1.5 ECAP 用例

    希望这对您有所帮助。


    此致、
    基尔西

x 出现错误。请重试或与管理员联系。