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.

[参考译文] CC3350MOD:获取 CC3350 错误事件日志时会发生缓冲区溢出

Guru**** 2753215 points

Other Parts Discussed in Thread: CC3350

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1607272/cc3350mod-a-buffer-overrun-occurs-when-getting-the-cc3350-error-event-log

器件型号: CC3350MOD
Thread 中讨论的其他器件: CC3350

您好!

int general_error_event_get_log(TFwEvent *pFwEvent)
{
    int ret = 0; 
    const size_t buffer_size = 5000;
    unsigned long end_time = osi_GetTimeMS() + CC33XX_GENERAL_ERROR_READ_TIMEOUT_MSEC;
    uint8_t isGeneralError = 0;
    uint32_t isTimeout = 0;
    
    Report("\n\rAttempting to Get FW Crash Logs.");

    while((isGeneralError != true) && (isTimeout != true))
    {

        ret = read_control_message(pFwEvent->rxTxBuffer, buffer_size);

generic_error_event_get_log() 函数将 buffer_size 设置为 5000、并调用 read_control_message() 函数。 read_control_message() 使用的 rxTxBuffer 缓冲区的大小为 4092 (RX_TX_BUFFER)、导致缓冲区溢出。

我们已确认发生错误时消息大小
 device_message_size = sizeof (nab_header_t)+ nab_extra_bytes + nab_header->len;
是 4108、这个数字大于 4092。

如何修改源代码?

此致。

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

    您好:

    如果您正在使用 RTOS MCU R8 SDK 并找到 CCS_Projects、则可以将 wifi_host_driver(您感兴趣的函数所在的位置)导入 CCS、修改代码并构建工程以获取新的库供您使用。

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

    你好

    我希望 CC3350 固件 (cc33xx_fw.bin) 会得到修复、使其不会发送大于 4092 (RX_TX_BUFFER) 字节的消息。
    将 RX_TX_BUFFER 设置为 5000 作为临时补丁是否正确?

    此致。

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

    您好、

    感谢您的耐心。 我仍在内部讨论最理想的临时修补程序。 我应该能够在下周为您提供最新更新、但如果条件发生变化、我会通知您。

    谢谢你。

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

    您好、

    这不是用作临时补丁的正确方法;最大 SPI 事务为 4092、这就是 RX_TX_BUFFER 为 4092 的原因。

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

    您好:

    感谢您的答复。
    我设法通过分配缓冲区来避免这种情况、这样即使发生缓冲区溢出、有用的数据也不会损坏。
    我正在等待发布正确的补丁。

    此致。

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

    您好、

    很高兴听到您设法避免了这个错误。 您能否详细地与我们分享您所做的事情、以便我们确保您的解决方案没有任何其他注意事项?

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

    您好:

    感谢您的答复。

    增加缓冲区未能完全解决问题、因此我们暂时跳过了错误日志分析过程。

    更改如下:

    -将 SDIO/SPI 移植层缓冲区大小从 4092 增加到 5000。

    -将 WSPI_MAX_CLUK_SIZE 从 4092 增加到 5000。

    - fw Event_Init () 中的 malloc 大小固定为 5000。
       pFwEvent->rxTxBuffer = OS_malloc (5000);

    -清除 Fw Event_Call 处理程序 () 中的 HINT_GENERAL_ERROR 以跳过一般错误分析。
      core_status->host_interrupt_status &=~hint_General_error;

    此致。

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

    尊敬的 Satoshi:

    现在跳过错误日志是正确的做法、直到它完全受支持为止。

    谢谢你。

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

    您好、

    感谢您的答复。
    我正在等待在下一个版本中修复固件。

    此致、