RT-Thread论坛
直播中

李雪

7年用户 940经验值
私信 关注

SEGGER_SYSVIEW_RTThread.c调用的个别结构体和函数不存在是怎么回事?

Build started: Project: project
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'rt-thread'
compiling SEGGER_SYSVIEW_RTThread.c...
packages\SystemView-latest\SystemView_Src\Config\SEGGER_SYSVIEW_RTThread.c(87): error:  #136: struct "rt_thread"  has no field "name"
      Info.sName = thread->name;
packages\SystemView-latest\SystemView_Src\Config\SEGGER_SYSVIEW_RTThread.c(111): error:  #136: struct "rt_thread"  has no field "list"
          thread = rt_list_entry(node, struct rt_thread, list);
packages\SystemView-latest\SystemView_Src\Config\SEGGER_SYSVIEW_RTThread.c(301): warning:  #223-D: function "rt_thread_inited_sethook" declared implicitly
      rt_thread_inited_sethook(_cb_thread_inited);
packages\SystemView-latest\SystemView_Src\Config\SEGGER_SYSVIEW_RTThread.c: 1 warning, 2 errors
".\build\keil\Obj\rt-thread.axf" - 2 Error(s), 1 Warning(s).
Target not created.
Build Time Elapsed:  00:00:00

回帖(1)

楼斌

2024-7-13 17:11:41
这个问题是因为SEGGER_SYSVIEW_RTThread.c文件中的代码尝试访问rt-thread库中的rt_thread结构体的一个不存在的字段“name”。为了解决这个问题,请按照以下步骤操作:

1. 首先,检查你的rt-thread版本是否与SEGGER_SYSVIEW兼容。如果版本不兼容,尝试升级rt-thread到一个兼容的版本。

2. 打开SEGGER_SYSVIEW_RTThread.c文件,找到报错的代码行。根据错误信息,问题出现在第87行。

3. 在报错的代码行附近,找到访问rt_thread结构体的字段“name”的地方。这可能是一个宏定义或者直接访问结构体成员的方式。

4. 检查rt-thread的rt_thread结构体定义,看看是否有一个名为“name”的字段。如果没有,你需要找到正确的字段名称,或者修改SEGGER_SYSVIEW_RTThread.c文件以使用正确的字段。

5. 如果rt_thread结构体中确实没有“name”字段,你有两个选择:
   a. 修改SEGGER_SYSVIEW_RTThread.c文件,使用rt_thread结构体中存在的字段。
   b. 如果你希望使用“name”字段,可以在rt_thread结构体中添加这个字段,并确保它在整个项目中正确使用。

6. 在修改了SEGGER_SYSVIEW_RTThread.c文件或rt_thread结构体定义后,重新编译项目。如果编译成功,问题应该已经解决。

7. 如果问题仍然存在,请检查其他可能的兼容性问题或错误。可能需要查阅SEGGER和rt-thread的文档,以获取更多关于如何正确集成它们的信息。
举报

更多回帖

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