工具与软件:
您好!
我在工作一个 需要同时操作的项目时遇到意外的 TI15.4堆栈错误 蓝牙外设和 Ti15.4协调器 . 当使用蓝牙简单广播(间隔为1)且 TI15.4网络上存在某些流量的情况下较长时间运行该程序时、将触发来自 TI15.4堆栈的置位。 在置位时转储 LR 值我发现错误是在 mac_tx.c 文件内的 macTxFrame 函数中触发的-"Transmit on top of transmit"
MAC_INTERNAL_API void macTxFrame(uint8 txType) { MAC_ASSERT(!macTxActive); /* transmit on top of transmit */ MAC_ASSERT(pMacDataTx != NULL); /* must have data to transmit */ /* mark transmit as active */ macTxActive = MAC_TX_ACTIVE_INITIALIZE;
我没有特别的方法可以触发这个断言、它似乎是随机发生的。
我第一次遇到这个问题是在 SDK 版本中: simplelink_cc13xx_cc26xx_sdk_7_10_01_24
然后、我决定升级到最新的可用 SDK 版本( simplelink_cc13xx_cc26xx_sdk_7_41_00_17 )但问题似乎仍然存在、MCU 随机断言"在发送之上传输"断言。 鉴于这是一个相当低级的 MAC 函数、并且 DMM 在其之上运行、我想假设这样的同步已经存在。
问题:
- MAC 层触发此类断言的原因可能是什么?
- 怎样做才能防止这种断言? (为尽量减少出现此类错误的可能性、应满足哪些条件)