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.

[参考译文] RM44L520:系统冻结、可能的中断配置问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1113475/rm44l520-system-freeze-possible-interrupt-config-issue

器件型号:RM44L520
主题中讨论的其他器件:HALCOGEN

大家好、我已经将其中的第一部分发布到了 FreeRTOS 论坛、这个问题可能是由于我的中断配置中的某些问题造成的。 请参阅以下内容:

我的程序有6个任务、其中4个任务将根据硬件和软件事件的组合运行、而另外2个任务将设置为定期运行。 我将在下面为他们命名、以便让我的解释更加清晰:

任务 A1 -如果在加电时在 DIP 开关上选择了模式 A、则此任务将运行。 是的
由事件组控制
任务 A2 -如果任务 A1中发生软件事件、此任务将运行。 它也通过进行控制
事件组
任务 B1 -如果在加电时在 DIP 开关上选择了模式 B、则此任务将运行。 是的
由事件组控制
任务 B2 -如果任务 A1中发生软件事件、此任务将运行。 它也是受控的
活动组
任务 WD -此任务用于控制内部看门狗。 定期运行
任务4-20 -此任务用于控制外部4-20芯片。 定期运行。

当我注释掉4-20项任务中的一项时、一切都很好、安排/执行完全符合我的预期。 如果我在模式 A 中运行并注释掉其中一个模式 B 任务、则一切都按预期工作。 如果我在模式 B 中运行并注释掉其中一个模式 A 任务、则一切都按预期工作。 当我以模式 A 或模式 B 运行并创建所有任务时、就会出现问题。 当我执行此操作时、系统将按预期运行、直到4-20任务获得一个时间片。 此时系统将冻结。 我已经从4-20任务中删除了所有任务代码,并且刚刚添加了 vTaskDelay (),以排除我在该任务中编写的导致问题的某些代码,并且系统仍然冻结。 最初、这似乎是一个内存问题、但我能够以明显小于我现在设置的堆栈大小单独运行所有这些任务、并且它们的运行方式符合预期。 我还在创建任务时添加了保护、以确保正确创建所有任务。 我还尝试用 GIO 设置函数替换4-20任务中的 vTaskDelay、但该函数工作正常。 我已附上来自 tracealyzer 的示例屏幕截图、其中显示了冻结:

我想知道中断是否存在一些问题、这些问题可能会导致上下文切换被阻止。  

请随时提出任何问题。  

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

    出于某种原因 、在 HALcogen 提供的 FreeRTOSConfig.h 文件中未定义 CONFIGMAX_SYSCALL_INTERRUPT_PRIORITY。 这是出于某种特殊原因吗?

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

    冻结似乎是由一个未定义的指令异常引起的。 当我在冻结状态下暂停调试器时、我会得到以下内核寄存器值:

    我已经检查了其他帖子中提及的许多常见问题、但没有找到任何幸运的地方。 如果有任何帮助,将不胜感激。  

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

    尊敬的 Andrew:

    是的、M[4:0]= b11011、这意味着 CPU 被切换至未定义指令模式。 R14_UND 寄存器的值是多少?

    没有与 UNDEF 异常相关的故障状态和故障地址寄存器;只有链接寄存器(R14_UND)提供相关信息。 导致 UNDEF 中止的指令位于 R14_UND–4。

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

    感谢您的回答。

    最终、分配的系统堆栈太小、导致 RTOS 在上下文切换时出现故障。 增大系统堆栈大小可以解决此问题。