打印
[应用相关]

在N32上同时运行FreeRTOS和LwIP时,如何解决以太网中断与任务调度冲突?

[复制链接]
264|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 我喜欢打游戏 于 2025-2-26 09:11 编辑

  • 在MM32上同时运行FreeRTOS和LwIP时,如何解决以太网中断与任务调度冲突?

使用特权

评论回复
沙发
classroom| | 2025-2-26 16:38 | 只看该作者
考虑优先级管理、中断处理策略、任务调度与中断同步以及硬件与软件协同优化等方面

使用特权

评论回复
板凳
地瓜patch| | 2025-2-27 09:33 | 只看该作者
处理好优先级很重要,最近也面临一个任务杯中断的棘手问题

使用特权

评论回复
地板
su1yirg| | 2025-3-4 16:37 | 只看该作者
在 MM32 微控制器上同时运行 FreeRTOS 和 LwIP 时,以太网中断与任务调度冲突是一个常见问题。这种冲突可能导致系统不稳定、数据丢失或任务调度延迟

使用特权

评论回复
5
p0gon9y| | 2025-3-4 17:43 | 只看该作者
以太网中断优先级设置不当可能导致高优先级中断抢占任务调度,影响系统实时性。将以太网中断优先级设置为中等优先级,确保其不会抢占 FreeRTOS 的任务调度器(如 PendSV 中断)。

使用特权

评论回复
6
lamanius| | 2025-3-4 18:54 | 只看该作者
在 FreeRTOS 中,任务调度器的优先级通常是最低的(如 PendSV 中断优先级为 15),因此以太网中断优先级应低于 PendSV。

使用特权

评论回复
7
kaif2n9j| | 2025-3-4 21:19 | 只看该作者
以太网中断处理函数中执行过多操作可能导致任务调度延迟。在以太网中断中仅执行必要的操作(如接收数据包并放入队列),将复杂的数据处理操作放到任务中执行。

使用特权

评论回复
8
l1uyn9b| | 2025-3-4 22:30 | 只看该作者
使用 FreeRTOS 的队列或信号量,在中断中将数据传递给任务进行处理。

使用特权

评论回复
9
cen9ce| | 2025-3-5 08:57 | 只看该作者
传统的信号量或队列操作在中断中可能引入较高的延迟。使用 FreeRTOS 的任务通知机制,在以太网中断中直接通知任务处理数据。

使用特权

评论回复
10
b5z1giu| | 2025-3-5 10:06 | 只看该作者
任务通知比信号量或队列更高效,适合在中断中使用

使用特权

评论回复
11
g0d5xs| | 2025-3-5 11:22 | 只看该作者
LwIP 的接收处理函数可能占用较多 CPU 时间,影响任务调度。一般想要解决的话,就是在以太网中断中仅将数据包放入接收队列,在任务中调用 LwIP 的接收处理函数(如 ethernetif_input)。

使用特权

评论回复
12
lix1yr| | 2025-3-5 13:01 | 只看该作者
建议使用 FreeRTOS 的任务定期检查接收队列并处理数据包。

使用特权

评论回复
13
d1ng2x| | 2025-3-5 16:05 | 只看该作者
如果以太网数据接收使用轮询方式,可能占用大量 CPU 时间。启用以太网的 DMA 接收功能,将数据直接存储到缓冲区中,减少 CPU 开销。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

80

主题

627

帖子

0

粉丝