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/TM4C123GH6PZ:在一个 CAN 封装突发进入后、OS 任务不能被置于运行模式

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/593060/rtos-tm4c123gh6pz-os-task-can-not-be-put-into-run-mode-after-a-burst-of-can-packages-came-in

器件型号:TM4C123GH6PZ

工具/软件:TI-RTOS

您好、大师们、

我的客户正在将 SYS/BIOS 与 TM4C123GH6PZ(LM4F232H5QC) MCU 配合使用、产品是面向汽车的 T-box。 在此应用中、有2个任务、任务1用于处理 CAN 封装、任务2用于执行电源控制等其他任务。 2硬件中断在这个应用中执行、一个是 GPIO、另一个是 CAN 接口。 任务1中等待 CAN 数据包的事件正在挂起。 相关事件发布在 CAN 接口 Hwi ISR 中、以唤醒任务1以进行进一步处理。 此应用中使用了2个 CAN 通道。 问题是、当 CAN 中断以非常高的频率发生时、任务1将被卡住、操作系统无法安排运行。 我怀疑这是一个操作系统问题、并执行以下权变措施:删除 CAN Hwi 中的事件 POST 活动、替换为标志设置、 并创建另一个任务#3来检查间隔为5ms 的 CAN 封装标志、如果设置了该标志、任务#3将发布任务#1正在等待的事件、此变通办法可以很好地工作、 但是、客户仍然想知道根本原因、因为有一些项目在大规模生产中使用 Hwi 触发事件架构。

我附加了一个可以重现此问题的演示项目。 测试代码位于 pm_os.c 文件中、此项目中有7个任务和3个系统计时器。 事件挂起函数位于 TAST_APP_POWER 任务中、事件 POST 函数是从 mycan.c 文件中的 hwi_CAN1_fxn 函数中调用的。 在下面、您还可以找到此测试项目中使用的 CAN 消息格式:

要重现此问题、请使用 CAN 按摩发生器以5ms 间隔或更短间隔向此节点发送上述消息、通过执行此操作、可以在不到5分钟的测试下重现此问题。 我还附上演示项目。

请帮助支持此案例、非常感谢。

B&R

Eric

NWC FAE

e2e.ti.com/.../Demo.7z

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

    当任务1被"卡住"时,您能否查看 ROV->Tasks->Callstacks 以查看它在哪里? CAN 任务的优先级是多少? 它比任何其他任务都低。 它是否会被另一项任务所标心?

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

    我检查了任务的 ROV 数据当问题发生时、结果显示 CAN 处理任务始终处于"就绪"状态、但不会被阻止或运行。 此任务的优先级设置为5、这与其他任务相同、而其他任务可以计划为正常运行、但 CAN 任务不能运行。 此任务的堆栈大小设置为960B、ROV 提供的峰值利用率为600B。 一切似乎都受到限制、因此我怀疑它是否是由此操作系统的错误引起的。 请在本例中提供帮助。 使用的 CCS 版本为5.4.0、SYS/BIOS 版本为 SYS/BIOS 6.35.1.29。 触发 CAN Hwi 的频率越高、问题的重现就越容易。

    请提供有关调试的注释、如果需要实验、您可以在第一个帖子中找到附加的项目文件。 期待您的反馈。 您的支持对于关闭此紧急情况非常重要。

    谢谢。

    Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    正在运行什么? 它是较高优先级的任务、Swi 还是 Hwi?