您好!
我的客户面临 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