如何解决写入 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 举报,一经查实,本站将立刻删除。