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.

[参考译文] AM5728:SPI 的 RTOS 问题

Guru**** 2604785 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/651588/am5728-rtos-issues-with-spi

器件型号:AM5728

您好!

我的客户面临 AM5728 SPI 问题、过去已部分解决。

他们向我报告以下情况:

其中一个附带主题是 AM57xx CPU 的软件问题、我们需要在这些问题上积累经验、这两个问题已经解决、而且仍然悬而未决。

我将向您简要总结一下我们在这里介绍的内容。

 

简而言之:a) SPI 驱动程序中的 RTOS 错误已由 Brno 快速修复-供参考、不再是问题。

b) 在 TI 的 PDK 代码库中找到了 c66x 内核的一个古老 CSL SPI 代码示例... TI 仍然希望能够解决此问题、以便我们可以将其重复用于我们的目的

c)(b 的扩展) TI 还需要扩展 c66x 代码的 CSL SPI 代码示例、以便演示 SPI4的 DMA 交叉开关的使用。

D)发送 UDP 数据包流时、以太网驱动程序在不通知用户的情况下丢弃数据包也存在问题;但是、由于我们已经开发出了一种变通办法、这种做法的优先级并不是很重要。 我现在也不会发送有关此内容的任何详细信息。


我还随附了一些支持文档。 如果您需要更多信息、请随时咨询。

有一点要澄清:我们已经更正的器件位于从基于 TI-RTOS 的项目调用的驱动程序中、即存在线程同步基元、存在软 IRQ 和其他 RTOS 绑定组件。

 

现在、我们需要一个更像裸机的示例、它不依赖于任何 TI-RTOS 组件、因此我们可以直接控制所有组件。 此外、我们需要它不仅适用于 ARM、还适用于作为我们目标内核的 DSP。 我们在 CSL (芯片支持库、也是处理器 SDK 的一部分)下找到了这样一个示例-这是我们在发送给您的文档中讨论的示例。 但是、由于该示例中使用了一些旧 API 调用、并且软件包的其余部分不再支持该示例、因此该示例当前不是为 DSP 构建的-很明显、该示例的这一部分已被长时间未维护。 这就是我在最后一封电子邮件的 b)点所说的内容。


更确切地说、如果您在$pdk_install/ti/CSL/example/mcspi/mcspiMasterSlave/mcspiMasterSlave_SPI1_SPI2.c 中找到源文件、并找到 EDMA3IntConfigure 的函数定义、您可以只查看几个起始代码行:


/*
**此函数将 AINTC 配置为接收 EDMA3中断。
*
静态空 EDMA3内部配置(空)

#ifdef _TMS320C6x
   /*初始化 DSP 中断控制器并启用中断*/
   IntDSPINTCMINIT();
   IntGlobalEnable();

   /*将 EDMA 事件映射到 DSP 中断*/
   IntRegister (4、Edma3ComplHandlerIsr);
   IntEventMap (4、SYS_INT_EDMACOMPINT);
   内部使能(4);

   IntRegister (5、Edma3ErrorHandlerIsr);
   IntEventMap (5、SYS_INT_EDMAERRINT);
   内部使能(5);
其他

 

(笑声) 现在,尝试在 _TMS320C6x 条件编译块下查找这些函数中的任何函数的定义,例如 IntCSPINTTCInit()、IntGlobalEnable()。 在处理器 SDK 的其余部分、您将找不到任何东西。 以前的 SDK 版本更新可能不会出现这种情况。
我们作为 DSP 编程人员、旨在使用这些过时的 API 调用的合适替代产品。 这就是我们现在很高兴从 TI 获得的结果-这是一个也适用于 c66x 内核的最新示例。
此外、我们很高兴看到此示例的扩展、该扩展还将演示如何配置 DMA 交叉开关、以便我们也可以使用 SPI4 (在本示例中、仅使用 SPI1、2、2、无需依赖 DMA 交叉开关)

另请参阅随附的 PDF 以供参考。

谢谢、此致、

Alberto

e2e.ti.com/.../Issue-description.pdf

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    C66x 没有维护 mcspi 的 CSL 代码、我们将研究是否有任何简单的方法来实现这些函数。

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

    对于这些 DSP 函数的错误,它看起来它们位于 EDMA3IntConfigure()函数内。 这是为了配置两个到 DSP 的 EDMA 中断。 对于 C66x、您可以参考 CSL\examples\cpintc 中的代码。 还有一个 wiki 介绍了中断的工作原理: processors.wiki.ti.com/.../Configuring_Interrupts_on_Keystone_Devices

    此致、Eric