如何更改串行驱动程序的中断优先级,使其优先级高于以太网中断



我以460800波特率运行串口。数据连续发送。串行驱动程序数据传递给用户空间应用程序,用户空间应用程序使用套接字向网络应用程序发送数据。不时地,我得到串行驱动程序HW Fifo溢出,因为它要么花费太长时间来运行ISR或其他中断(我只有以太网,串行和gp_timer中断)。此外,我认为在某些情况下,以太网和串行中断都在中断队列中(我的假设),以太网驱动程序中断优先于串行驱动程序中断,同时串行驱动程序HWFIFO溢出。

当我禁用数据传输到网络应用程序时,用户空间的所有数据都收到了良好的信号。这让我相信它可能是导致问题的以太网驱动程序。

我想改变串行中断的优先级,以便它在以太网驱动程序中断之前得到服务。你认为改变优先级能解决问题吗?

我不确定哪个版本的补丁会更好,我会说先应用2.6.33版本,如果补丁应用没有问题,那么就使用它,如果它们不应用,那么尝试2.6.31补丁。

补丁的缺点是它使linux可抢占,所以你必须小心,因为你永远不知道什么时候会被换出。这意味着使用互斥锁来保护线程之间共享的数据。如果你知道你在做什么,这不是一个大问题。

它在windows上工作的原因是运气,如果你在windows上运行测试,然后大量加载系统,它仍然工作吗?我很怀疑。在一个设计合理的实时系统中,无论系统负载如何,它都将始终工作。

最新更新