我有一个基于 ARM OMAP 的嵌入式系统,带有 1 GHZ 处理器,运行 Linux 2.6.33,交叉编译为 CONFIG_PREEMPT。其中一个进程(进程 1)很关键,需要每 4 或 8 毫秒运行一次,这是可配置的。还有另一个进程的(进程 2)线程将图像传输到 FTP 或任何其他配置的应用程序。为了触发时间关键过程 1,我使用高分辨率计时器作为系统中具有最高实时优先级的单独线程(FIFO,例如 60)。进程 2 的 RT 优先级 (RR 20) 低于进程 1 (RR 50)。
如果没有启用或配置图像传输,我看不到上述关键进程(进程 1)的任何超时。但是,如果我启用任何图像传输,则进程 1 将超时或图像传输由于某些错误而失败,并且其中一个进程死亡,然后其他进程运行正常。
我看到如果图像分辨率更高,那么进程 1 的超时时间会更快。使用更高分辨率的图像(比如 SXGA),NET_RX 以太网中断会长时间保持 CPU,当它放弃 CPU 时,进程 1 超时。看起来 NET_RX 中断的优先级高于用于进程 1 的定时器中断,并且它没有给 CPU。
我想确保进程运行和进程 1 都不会错过最后期限。如何调试它正在等待的系统,以便我可以删除那些等待或至少避免那些如果可能的话。
我怎样才能做到这一点?请帮忙。