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.

[参考译文] CC3235MODASF:DMA 错误

Guru**** 2539500 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/921465/cc3235modasf-dma-error

器件型号:CC3235MODASF

你好。

我有这项工作:

当 GPIO 变为低电平时、我必须从 SPI 读取1024Byte 并将其传输到 UDP。

这种机制(读取 SPI -通过 UDP 传输) 必须达到高吞吐率。

我开发了第一个固件、修改 network_terminal 并添加了一些代码:

我创建了名为 "RDGxxxxstart"的新终端命令。

当用户数字"RDGxxxstart"命令时,我将 NWP 配置为 P2P 角色、客户端等...

我开始两个线程:SPI - Thread 和 WiFi - Thread。

SPI - Thread 是一个监控 GPIOx 状态的无限循环、

当该 GPIOx 为低电平并且循环缓冲器中有足够的空间(由4个 x1KB 字节缓冲器组成)时

此线程从 SPI 读取1KB (以阻塞方式)、并将此字节"放入"环的缓冲区。

此线程具有优先级2。

WiFi - Thread 是一个监视循环缓冲区的无限循环:

当新缓冲区在环中可用时、线程读取缓冲区并将其发送到 UDP (以阻塞方式)。

第二个线程 具有相同的优先级。

当我运行 终端命令"RDGxxxxstart"并将 NWP 连接到 Samsung Cellar 的 Wi-Fi Direct 时

一切正常 (建立连接并开始线程)。

当我将 GPIO 置为低电平时,SPI -线程读取 SPI 数据和 WiFi -线程通过 UDP 传输.... 但在一段时间后、DMA 发生错误。

我的 PC 计数器进入这一行代码(ti_driver_config.c 第96行):

静态空 dmaErrorFxn (uintptr_t arg)

int status = map_uDMArrorStatusGet ();

map_uDMAErrorStatusClear ();

(笑声)

状态等于1

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

    您好、Mauro、

    确保 sl_Task 是系统中的最高优先级任务。 其次、为调试版本切换 TI-RTOS 版本、然后调试代码、直到您点击此 HWI。 现在、您应该能够看到违规的函数回调、并让您了解问题是什么。

    BR、

    Vince  

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

    感谢您的支持、但是

    我意识到、有时我向 SPI_Transfer 结构馈送错误的缓冲器指针。

    在 SPI 传输期间、DMA 尝试在不可访问的位置进行读取/写入。