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.
您好!
我们需要使用时间戳功能来实现 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 用例
希望这对您有所帮助。
此致、
基尔西