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.

[参考译文] CC2530:ZED - HAL_ASSERT 在&#39中失败;MAC_INTERNAL_API void macCspTxRequestAckTimeoutCallback (void)'(mac_CSP_TX.c)

Guru**** 3003130 points

Other Parts Discussed in Thread: CC2530, Z-STACK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1011245/cc2530-zed---hal_assert-fails-in-mac_internal_api-void-maccsptxrequestacktimeoutcallback-void-mac_csp_tx-c

器件型号:CC2530
Thread 中讨论的其他器件: Z-stack

你(们)好

我们测试的几个器件会在一段时间后卡住。 (CC2530上采用最新 ZStack 3.0.2的 ZED 器件)。

我将 HAL_ASSERT 函数设置为无限循环来检测此类情况。

我能够重现器件卡住的情况、从而确认至少在本例中调用了 HAL_assert。

符号为0,因此 pMacPib->ackWaitDuration 为0。

发生这种情况的地方-屏幕截图显示了 MacPib 的存储器转储以及监视窗口中的变量和该位置之前的变量:

"堆"从0x0FD2开始

pMacPib 指向0x0A27、其中 macPib 被映射:

      MacPib          00000A27.     Mac_MlmeResetReq (Mac_beacon)

所有内容相等、我执行了复位、并在该位置添加了一个断点、以了解预期的存储器和变量内容。
我必须触发手动中断才能获得以下结果:

我们可以看到、macChipVersion 不为0的随机种子没有回调、表明内存的这一部分已损坏。

我进一步检查了前面的变量、我只会怀疑       dmaCfg          000005FE

相对段、地址:XDATA 000005FE - 00000A0B (0x40e 字节)、ALIGN:  

dmaCfg.uartCB 的正常值为0x105F (@0x0AEA、这是应用的回调函数、但在断言失败时不是该值。

这需要 DMA 转换中存在潜在的错误?

相关问题:

查看 uartDMACfg_t 定义,我看到“ uint16 rxBuf[HAL_UART_DMA_RX_MAX];”。
是否需要将 rxBuffer 表示为 uint16、因此占用 HAL_UART_DMA_RX_MAX 空间的两倍?  内存不足(尤其是在 ZNP 中)、这有助于释放一些内存。

注:我假设 rxBuf 的 uint16类型(不幸的是)与 DMA 硬件的工作方式有关...

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

    额外信息:在正常情况下、TX 缓冲区几乎没有数据填充(不超过32字节-数据包被发送和攻击)。
    我们可以从屏幕截图中看到、最后一个 TX 存储器位置不是0。
    神秘覆盖。

    Rx 缓冲区填充0x2700 Int16字节。

    因此、如果再次出现故障、我可以检查这些值。

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

    尝试参考 Z-Stack 3.0.2的已知问题 和修复、将所有内容修补到 Z-Stack 3.0.2以重新测试。

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

    我仅丢失了项目#24。  我认为这一点并不重要。

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

    是否对此问题有任何想法?

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

    你好、Mario、

    我对该平台上的 DMA 驱动程序没有什么经验、如果改用 HAL_UART_ISR、问题是否仍然存在?  rxbuf 指向缓冲区位置/目标地址、因此 uint16_t、也请参考 hal_dma.h 文件。  是否有办法将此问题与开箱即用固件复制在一起、如果缓冲区超过0x1FFF、是否尝试清除此缓冲区?

    此致、
    Ryan

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

    我在调试过程中未能观察到这一点、我还遇到另一个问题、导致误触发。

    dmaCfg 中包含以下字段-给定大小,我不认为 rxBuf 是指向缓冲区的指针列表。

    uint16 rxBuf[HAL_UART_DMA_RX_MAX];
    uint8 txBuf[2][HAL_UART_DMA_TX_MAX];

    如果同一问题再次出现、我将发布更多内容。

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

    在尝试重现此问题时,我发现了另一个断言例外,我在 https://e2e.ti.com/p/addpost?rt=1011245中报告了该例外 。

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

    我从6月20日开始检查了监听器日志、与此问题中的观察结果有关。
    事实证明,我使用的开放源码平台发送了一个空的写属性请求(即,没有属性)。  之后,ZED 继续发出数据请求大约70分钟,但没有报告或其他通信。

    由于 OSAL 存储器函数不是 instrumentd、缓冲区溢出的影响可能会延迟。

    因此,我的结论是,通过修复相关问题来解决此问题。https://e2e.ti.com/p/addpost?rt=1011245 。

    这是 ZED 最后一个"写入属性":

    Frame 6088: 48 bytes on wire (384 bits), 48 bytes captured (384 bits)
        Encapsulation type: IEEE 802.15.4 Wireless PAN (104)
        Arrival Time: Jun 20, 2021 16:29:30.416864000 CEST
        [Time shift for this packet: 0.000000000 seconds]
        Epoch Time: 1624199370.416864000 seconds
        [Time delta from previous captured frame: 0.007867000 seconds]
        [Time delta from previous displayed frame: 0.008510000 seconds]
        [Time since reference or first frame: 5755.053823000 seconds]
        Frame Number: 6088
        Frame Length: 48 bytes (384 bits)
        Capture Length: 48 bytes (384 bits)
        [Frame is marked: False]
        [Frame is ignored: False]
        [Protocols in frame: wpan:zbee_nwk:zbee_aps:zbee_zcl]
    IEEE 802.15.4 Data, Dst: 0xb80f, Src: 0x0000
        Frame Control Field: 0x8861, Frame Type: Data, Acknowledge Request, PAN ID Compression, Destination Addressing Mode: Short/16-bit, Frame Version: IEEE Std 802.15.4-2003, Source Addressing Mode: Short/16-bit
            .... .... .... .001 = Frame Type: Data (0x1)
            .... .... .... 0... = Security Enabled: False
            .... .... ...0 .... = Frame Pending: False
            .... .... ..1. .... = Acknowledge Request: True
            .... .... .1.. .... = PAN ID Compression: True
            .... ...0 .... .... = Sequence Number Suppression: False
            .... ..0. .... .... = Information Elements Present: False
            .... 10.. .... .... = Destination Addressing Mode: Short/16-bit (0x2)
            ..00 .... .... .... = Frame Version: IEEE Std 802.15.4-2003 (0)
            10.. .... .... .... = Source Addressing Mode: Short/16-bit (0x2)
        Sequence Number: 243
        Destination PAN: 0x880a
        Destination: 0xb80f
        Source: 0x0000
        Frame Check Sequence (TI CC24xx format): FCS OK
            RSSI: 30dB
            FCS Valid: True
            LQI Correlation Value: 108
    ZigBee Network Layer Data, Dst: 0xb80f, Src: 0x0000
        Frame Control Field: 0x0208, Frame Type: Data, Discover Route: Suppress, Security Data
            .... .... .... ..00 = Frame Type: Data (0x0)
            .... .... ..00 10.. = Protocol Version: 2
            .... .... 00.. .... = Discover Route: Suppress (0x0)
            .... ...0 .... .... = Multicast: False
            .... ..1. .... .... = Security: True
            .... .0.. .... .... = Source Route: False
            .... 0... .... .... = Destination: False
            ...0 .... .... .... = Extended Source: False
            ..0. .... .... .... = End Device Initiator: False
        Destination: 0xb80f
        Source: 0x0000
        Radius: 30
        Sequence Number: 132
        ZigBee Security Header
            Security Control Field: 0x28, Key Id: Network Key, Extended Nonce
                ...0 1... = Key Id: Network Key (0x1)
                ..1. .... = Extended Nonce: True
            Frame Counter: 482178
            Extended Source: TexasIns_00:01:6a:41:0c (00:12:4b:00:01:6a:41:0c)
            Key Sequence Number: 0
            Message Integrity Code: de59243f
            [Key: d232aca2c434309bd0e0dae5c074315c]
            [Key Origin: 4761]
    ZigBee Application Support Layer Data, Dst Endpt: 1, Src Endpt: 1
        Frame Control Field: Data (0x40)
            .... ..00 = Frame Type: Data (0x0)
            .... 00.. = Delivery Mode: Unicast (0x0)
            ..0. .... = Security: False
            .1.. .... = Acknowledgement Request: True
            0... .... = Extended Header: False
        Destination Endpoint: 1
        Cluster: Power Configuration (0x0001)
        Profile: Home Automation (0x0104)
        Source Endpoint: 1
        Counter: 40
    ZigBee Cluster Library Frame, Command: Write Attributes, Seq: 97
        Frame Control Field: Profile-wide (0x00)
            .... ..00 = Frame Type: Profile-wide (0x0)
            .... .0.. = Manufacturer Specific: False
            .... 0... = Direction: Client to Server
            ...0 .... = Disable Default Response: False
        Sequence Number: 97
        Command: Write Attributes (0x02)