我运行的串口在460800波特rate.The数据是连续发送的。串行驱动数据传递给用户空间应用程序,用户空间应用程序使用套接字将数据发送给网络应用程序。有时,我会看到串行驱动程序HW溢出,因为运行ISR或其他中断需要太长时间(我只有以太网、串行和gp_timer中断)。另外,我认为在某些情况下,以太网和串行中断都处于中断队列(我的假设),并且以太网驱动程序中断比串行驱动中断优先,同时串行驱动程序HWFIFO溢出。
当我禁用数据传输到网络应用程序时,用户空间中的所有数据都收到了良好的效果。这让我相信是以太网驱动程序导致了这个问题。
我想改变串行中断的优先级,以便在以太网驱动程序中断之前提供服务。你认为改变优先级能解决问题吗?
我在Linux2.6.32 ARMV7上。
发布于 2013-01-13 17:52:50
我不确定哪个版本的补丁会更好地尝试,我会说先应用2.6.33版本,如果应用补丁没有问题,那么就使用它,如果它们不应用,那么尝试2.6.31补丁。
这些补丁的缺点是它使linux具有可抢占性,所以您必须小心,因为您永远不知道什么时候会被替换掉。这意味着使用互斥锁来保护线程之间共享的数据。如果你明白自己在做什么,这不是什么大问题。
它在windows上工作的原因是运气好,如果您在windows上运行测试,然后沉重地加载系统,它还能工作吗?我怀疑。在设计得当的实时系统中,无论系统负载如何,它都能正常工作。
https://stackoverflow.com/questions/14285873
复制相似问题