我不是秋风 2024-11-08 11:47 采纳率: 93.8%
浏览 132

关于使用RT-Thread studio添加freemodbus控件的错误

请问在使用RT-Thread studio添加freemodbus组件后,示例代码没有改动过可是在向终端发送命令mb_master_samlpe,这时会报错,请问有遇到过这个问题的嘛

img

报错代码如下:
(rt_object_get_type(&event->parent.parent) == RT_Object_Class_Event) assertion failed at function:rt_event_send, line number:1968
[W/kernel.service] rt_hw_backtrace_frame_unwind is not implemented
please use: addr2line -e rtthread.elf -a -f 0x8003452[W/kernel.service] rt_hw_backtrace_frame_unwind is not implemented

翻译结果如下:
rt_object_get_type(&event->parent.parent) == RT_Object_Class_Event) 断言失败,错误发生在函数 rt_event_send 中,行号为 1968。

[W/kernel.service] rt_hw_backtrace_frame_unwind 未实现。

请使用以下命令:addr2line -e rtthread.elf -a -f 0x8003452

  • 写回答

1条回答 默认 最新

  • 小ᶻ☡꙳ᵃⁱᵍᶜ꙳ 优质创作者: 人工智能技术领域 2024-11-09 02:04
    关注

    回答引用自GPT-4o,由博主小ᶻZ࿆编写,若还有疑问可评论或留言:

    问题分析

    在RT-Thread Studio中添加freemodbus组件后,在发送命令 mb_master_sample 时出现错误。根据错误日志显示,问题发生在断言 rt_event_send 函数中。

    错误信息如下:

    (rt_object_get_type(&event->parent.parent) == RT_Object_Class_Event) assertion failed at function: rt_event_send, line number: 1968
    [W/kernel.service] rt_hw_backtrace_frame_unwind is not implemented
    please use: addr2line -e rtthread.elf -a -f 0x8003452
    

    错误原因

    根据错误信息:

    1. 断言失败 (rt_object_get_type(&event->parent.parent) == RT_Object_Class_Event) 表明可能传入的 event 对象类型不正确。
    2. rt_hw_backtrace_frame_unwind 未实现,建议使用 addr2line 命令来定位具体的错误位置。

    解决方案

    1. 检查 event 对象的初始化

      • 确保在调用 rt_event_send 之前,event 对象已经正确初始化为 RT_Object_Class_Event 类型。
      • 可以通过检查代码中 event 的定义及初始化来确认。
    2. 使用 addr2line 工具进行地址转换

      • 使用 addr2line 来解析错误地址,以便定位具体的代码位置。命令如下:
        addr2line -e rtthread.elf -a -f 0x8003452
        
      • 这条命令会将出错的内存地址转换为具体的源代码文件和行号,帮助你定位问题。
    3. **实现 rt_hw_backtrace_frame_unwind**:

      • 如果需要实现完整的堆栈回溯功能,可以参考RT-Thread的内核文档,补充 rt_hw_backtrace_frame_unwind 的实现,或者在调试中暂时忽略该警告。

    总结

    该问题的根本原因可能是event对象的初始化或使用问题。通过 addr2line 工具定位问题,并确保对象正确初始化可以帮助解决该问题。

    希望以上回答对您有所帮助!如有疑问,欢迎继续交流~

    评论

报告相同问题?

问题事件

  • 创建了问题 11月8日