乐鑫技术交流
直播中

申换换

7年用户 1532经验值
私信 关注
[问答]

nonos sdk V2.1.0中使用混杂模式api,运行时崩溃了怎么解决?

我正在努力在 nonos sdk V2.1.0 中使用混杂模式 api,并且我*有时*在注册回调后立即崩溃。从转储中可以看出,这似乎位于 sdk 的深处,并且它正在尝试找到 128 字节缓冲区中的一个来将接收的数据包放入其中。但是,没有缓冲区,系统陷阱。

奇怪的是,当系统重新启动时,它通常会在下一次工作。

我正在使用 Nodemcu LUA 固件(我是贡献者之一),因此没有简单的复制。设置混杂模式的特定代码是

    wifi_station_set_auto_connect(0);
    os_delay_us(1000);
    wifi_set_opmode_current(1);
    os_delay_us(1000);
    wifi_promiscuous_enable(0);
    os_delay_us(1000);
    wifi_station_disconnect();
    os_delay_us(1000);
    wifi_set_promiscuous_rx_cb(wifi_rx_cb);
    wifi_set_channel(1);
    wifi_promiscuous_enable(1);

我添加了os_delay_us电话,以防万一,但它似乎没有任何区别。

两个问题:

1)有没有人看到过这种失败?

2) 以上看起来是进入混杂监视模式的合理顺序吗?

回帖(1)

乐骞添

2024-7-10 17:56:40
从您的描述来看,这个问题可能是由于内存不足或者缓冲区管理不当导致的。以下是一些建议来解决这个问题:

1. **检查内存使用情况**:首先,检查您的程序在运行时的内存使用情况。如果内存不足,可能会导致缓冲区分配失败。您可以使用一些内存分析工具来帮助您找到内存泄漏或者不必要的内存占用。

2. **增加缓冲区大小**:尝试增加缓冲区的大小,看看是否能够解决崩溃问题。这可能需要修改 Nonos SDK 的源代码,以便为接收数据包分配更多的内存。

3. **优化缓冲区管理**:检查您的程序中是否有不必要的缓冲区分配和释放操作。确保在不需要缓冲区时及时释放它们,以避免内存泄漏。

4. **使用错误处理**:在您的代码中添加错误处理逻辑,以便在遇到问题时能够及时发现并采取相应的措施。例如,当缓冲区分配失败时,您可以记录错误信息并尝试重新分配缓冲区。

5. **更新 NodeMCU LUA 固件**:您提到您是 NodeMCU LUA 固件的贡献者,可以考虑更新固件以修复可能存在的问题。同时,确保您的固件与 Nonos SDK V2.1.0 兼容。

6. **联系 Nonos SDK 开发者**:如果问题仍然存在,您可以尝试联系 Nonos SDK 的开发者,向他们报告这个问题,并提供详细的错误信息和您的代码。他们可能会提供一些解决方案或者修复这个问题。

7. **尝试其他版本**:如果可能的话,您可以尝试使用 Nonos SDK 的其他版本,看看问题是否仍然存在。有时候,问题可能是由于特定版本的 bug 导致的。

8. **使用其他库或工具**:如果问题仍然无法解决,您可以考虑使用其他库或工具来实现混杂模式的功能,或者寻找替代方案。

希望这些建议能帮助您解决问题。祝您好运!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分