1

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

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

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

我在 Linux 2.6.32 ARMV7 上。

4

1 回答 1

1

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

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

它在 Windows 上工作的原因是运气,如果你在 Windows 上运行测试然后重载系统它仍然工作吗?我对此表示怀疑。在适当设计的实时系统中,无论系统负载如何,它都将始终工作。

于 2013-01-13T17:52:50.883 回答