This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/CC2640R2F:当我在用户定义的结构中包装 Task_Structt 时出现 ROV 错误

Guru**** 2587365 points
Other Parts Discussed in Thread: CC2640

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/592550/rtos-cc2640r2f-rov-error-when-i-wrapper-a-task_struct-in-a-user-defined-struct

器件型号:CC2640R2F
主题中讨论的其他器件:CC2640

工具/软件:TI-RTOS

您好、先生、

我遇到了一个奇怪的问题。 当我在用户定义的结构中对 Task_Structt 进行换行时、ROV 将不会显示任务的信息。

下面是我在 simplelink_cc2640r2_sdk_1_30_00_25中的原始示例 multi_role 中所做的操作:

struct my_task{
  int task_id;
  INT 优先级;
  uint8_t *name;
  uint32_t stack_size;
  uint8_t *任务堆栈;
  Task_Struct* task_obj;
};

静态结构 my_task myMultiRoleTask;

void multi_role_createTask (void)

  Task_Params taskParams;

  //配置任务
  Task_Params_init (&taskParams);
  taskParams.stack = mrTaskStack;
  taskParams.STACKSIZE = MR_TASK_STACK_SIZE;
  taskParams.priority = MR_task_priority;

  myMultiRoleTask.name ="多角色";
  myMultiRoleTask.task_id = MR_task_priority;
  myMultiRoleTask.priority = MR_task_priority;
  myMultiRoleTask.stack_size = MR_task_stack_size;
  myMultiRoleTask.task_obj =&mrTask;
  Task_constructure(myMultiRoleTask.task_obj、multi_role_taskFxn、&taskParams、NULL);

步骤1:

当 cc2640在 myMultiRoleTask.task_obj =&mrTask 之前停止时 、一切都正常

但是、当执行该句子时、ROV 中存在错误

如果我使用单个 Task_StructmrTask 而不 是将其包装在结构中, 则不会出现错误:

有人能告诉我为什么?

我猜 这个错误与数据访问对齐有关系(ROM 中的接口都经过了大量优化、所以常见的4字节对齐访问可能会导致 异常)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ROV 找不到嵌入式结构。 创建对象有一个链接列表,允许 ROV 找到所有对象。 出于几个历史原因、我们没有已构造对象的链接列表、因此 ROV 解析器需要找到它们。 它可以找到全局定义的结构、但不能找到嵌入在其他结构中的结构。

    如果 ROV 在实际构造之前找到已构造的对象、则可能会在 ROV 中遇到错误。 调用构造调用时、它会消失。 我们正在努力改善这种烦恼。

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我修复了您在早期主题 中报告的错误:e2e.ti.com/.../590729
    如果您可以再次附加可执行文件、我可以研究这个新问题。
    最有可能、问题的原因是您的结构包含指向任务结构的指针、这是我们以前没有的用例。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很棒! 可能很快就会推出更新版本的 SDK?

    在这里、我附上 hex 和控制台日志、希望这些文件能为您提供帮助!e2e.ti.com/.../5430.multi_5F00_role_5F00_with_5F00_error_5F00_rov_5F00_info.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我针对您的可执行文件测试了 ROV、似乎'myMultiRoleTask'内的 Task_Struct'指针不是作为指针而是作为嵌入式结构被检测到。 这意味着包含指针的存储器位置与地址空间中它正上方的位置一起作为任务对象进行处理、而不是跟踪指针并读取实际任务对象。 因此、ROV 正在读取一些随机值、并检测到任务对象的内容已损坏。

    这可能比之前的错误多、因此可能无法对 XDCtools 3.50.2执行此操作。
    遗憾的是、我看不到这方面的好解决方法。 如果我在修复错误时弄清楚一些东西、我将更新此线程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、我明白了!

    感谢您的回复。