微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

写入 EEPROM 时白板断言失败

如何解决写入 EEPROM 时白板断言失败

我正在尝试将在模拟器上编写的代码移植到 HR+ 传感器上,但遇到了模拟器上没有的问题。
代码尝试使用 whiteboard 的 EEPROM API 在 EEPROM 上写入一个相当大的缓冲区 (7.5KB),方法是将其拆分为 16 字节长的临时缓冲区,调用 asyncput 并忙于等待完成(onPutResult 设置一个标志)在写下一个块之前。
经过几千次迭代(它并不总是在同一次迭代中失败)执行停止并显示此消息我正在通过 RTT:860:whiteboard.cpp
我认为这是断言失败。是否有关于此错误的更多信息?我究竟做错了什么?我编写大量数据的方法是否正确?

解决方法

当传感器无法及时处理来自订阅的通知时,Whiteboard.cpp 的第 860 行上的 ASSERT 被触发。我确实注意到您的描述中有一个“危险信号”:“...并且忙于等待完成...” 这可能就是原因。

Movesense 框架是完全异步的,这意味着严格禁止任何类型的忙循环,因为它会阻止传感器的正常操作(如上述通知处理)。

为避免繁忙循环,请在 onPutResult() 回调中触发下一个 asyncPut,并确保为调用指定 AsyncRequestOptions::ForceAsync 选项。

完全披露:我为 Movesense 团队工作

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?