工具/软件: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