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.
您好!
我能够从 CPU1读取 EPwm1Regs.TBCTR (加减计数器)、但从 CPU2读取同一寄存器为零。 所有其他 EPWM1寄存器在 CCS 的 CPU2寄存器窗口中也显示为零。
EPWM1时钟由 CPU1提供(CPUSEL0.EPWM1 = 1)。 那么、这是否意味着只有 CPU1可以读取 EPWM1寄存器? 或者我需要在软件中配置的其他内容?
此致
Amulrass V
您好!
访问是根据 CPUSEL 值提供的、因此如果 EPWM1的 CPUSEL 值允许从 CPU1进行访问、则 CPU2将不具有访问权限。 您需要更改 CPUSEL 的值以提供对 CPU2的访问。
此致、
Vivek Singh
您好、Vivek、
有趣 的是、对共享外设的访问是根据 CPUSEL 值提供的。 所有其他共享外设也是如此吗?
我知道大多数其他多核平台(如 PPC)不会限制任何 CPU 对共享外设的访问、即使在任何时候只有一个 CPU 可以控制或使用该外设。 这将会严重限制多核应用程序、就像我的情况一样。
我需要从两个 CPU 访问 EPWM1寄存器、并且不想在运行时更改 CPUSEL。 此问题是否有任何解决方法?
此致
Amulrass
您好!
还有一件事。 在运行时修改 CPUSEL 是否不会导致 ePWM 模块的输入时钟出现任何毛刺脉冲?
此致
Amulrass V
您好!
[报价] 所有其他共享外设也是如此吗? [/报价]
是的、所有由 CPUSEL 控制的外设都是如此。
[引用] 我知道大多数其他多核平台(如 PPC)不会限制任何 CPU 对共享外设的访问、即使在任何时候只有一个 CPU 可以控制或使用该外设。 这将会严重限制多核应用程序、就像我的情况一样。 [/报价]
您是对的、但在这种情况下、在访问之间进行仲裁、这使得时序至关重要的控制环路很难实现。
[引用] 我需要从两个 CPU 访问 EPWM1寄存器、并且我不想在运行时更改 CPUSEL。 此问题是否有任何解决方法? [/报价]
您需要从两个 CPU 访问相同的 ePWM 模块吗? 如果是、则在当前架构中不可能实现这一点。 您只需通过 IPC 传递信息。 我们有多个 ePWM 模块、如果有需要、您可以为 CPU1分配一些模块、为 CPU2分配其他模块。
[引述] 还有一件事。 在运行时修改 CPUSEL 是否不会导致 ePWM 模块的输入时钟出现任何毛刺脉冲? [/报价]
您需要禁用 ePWM 模块的时钟、并确保没有等待处理的从 CPU 到 ePWM 模块的访问来切换 CPUSEL、否则可能会导致干扰。
此致、
Vivek Singh
您好!
[引用] 例如、EPWM1模块分配给 CPU1、EPWM2模块通过 CPUSEL 分配给 CPU2。 我认为、由于所有 ePWM 模块共享公共网桥、因此在 CPU1访问和 CPU2访问之间会发生仲裁。 此外、CPU1和 CPU2访问之间的仲裁发生在连接到同一桥的不同外设之间。 [/报价]
不可以、在这种情况下、由于 CPU1和 CPU2是不同的总线、因此仲裁不会产生影响。 桥是多路复用器和其他逻辑的组合、不负责仲裁。
此致、
Vivek Singh