シリアル ポートを 460800 ボー レートで実行しています。データは継続的に送信されます。シリアル ドライバ データは、ソケットを使用してデータをネットワーク アプリケーションに送信するユーザー空間アプリケーションに渡されます。ときどき、ISR またはその他の割り込みの実行に時間がかかりすぎるため、シリアル ドライバーの HW Fifo オーバーランが発生します (イーサネット、シリアル、および gp_timer 割り込みのみがあります)。また、イーサネットとシリアルの両方の割り込みが割り込みキューにあり(私の推測)、シリアルドライバーの割り込みよりもイーサネットドライバーの割り込みが優先され、その間にシリアルドライバーのHWFIFOがオーバーフローする場合があると思います。
ネットワークアプリケーションへのデータ転送を無効にした瞬間、ユーザー空間のすべてのデータが正常に受信されました。それは、問題を引き起こしているのはイーサネットドライバーである可能性があると私に信じさせます。
シリアル割り込みの優先度を変更して、イーサネット ドライバーの割り込みより先に処理されるようにしたいと考えています。優先度を変更することで問題が解決すると思いますか?
Linux 2.6.32 ARMV7 を使用しています。