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.

[参考译文] RM46L852:任务调度程序 ISR

Guru**** 2450130 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/623659/rm46l852-task-scheduler-isrs

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

您好!

我正在处理一个实时控制项目、在该项目中、我们将使用一个运行 RTI 计时器的简单任务调度程序。 定时器生成1ms 的节拍、其 ISR 递增计数器、用于使用系统软件中断触发10ms、100ms 和1s 任务。 该产品最终将用于安全关键型应用、因此我们将尝试简化操作并避免使用我们必须认证的 RTOS。

在我最近添加了在100ms 任务中运行的应用软件之前、该调度程序似乎正常工作。 这导致微控制器在从 SSI ISR 中调用的应用程序主函数返回后不久崩溃。 经过一些调查后、IRQ 堆栈似乎溢出并在其下方绑定其他堆栈。 我已经在 HALCoGen 中调整了堆栈长度、但它不会再次运行。 但是、我最终得到的 IRQ 堆栈必须与用户堆栈(0x800)一样大。

本论坛的专家认为、这是可接受的配置、还是有更好的方法来实施实时任务 ISR? 最后、我们希望速率更高的任务能够中断速率更低的任务。 这可能对我们当前的安排很困难吗?

提前感谢

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

    当您进入一个中断例程时、它将使用 IRQ 堆栈而不是正常堆栈。 我认为这是增加 IRQ 堆栈以解决问题的正确方法。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不是论坛专家。 以下是您可能需要考虑的一些主题。
    在 IRQ 电平上运行的安全器件可能无法访问硬件的某些功能、或者需要一组复杂的状态和规则逻辑处理程序。
    在 IRQ 级别运行的安全设备可能具有默认特权级别、允许错误编码或随机故障产生不良结果(不再从访问控制中受益、因为访问控制是在导致操作之前识别问题/故障的技术)。