私はLEON2(SparcV8)プロセッサを使用するプロジェクトに取り組んでおり、他のFPGAとプロセッサを接続するPCIバスがあります。この上で実行プロセッサ並行PCIリード
我々は今、私は、プロセッサと、私は啓発のために君たちに来る理由のPCIアーキテクチャに全く慣れていないよRTEMSを使用してマルチタスクアプリケーションを持っているとC.
で書かれました。
問題は次のとおりです。PCIバス上のメモリの読み取りを実行する1つのRTEMSタスクがあるとします。私たちのボードでは、PCIアクセスはほぼ2usです。今私の同僚が問題を提起しました。そのPCIの中でRTEMSのタスクスケジューラが別のタスクが起動する時間になったと判断した場合、そしてこのタスクジョブがPCI読み取りも実行するのはどうでしょうか。 タスクの切り替え前に実行された最初のPCI読み取りは、最初のPCI読み取りが実行される前に2番目のタスクによって実行される2回目のPCI読み取りによって破損する可能性があります。
この場合は起こりますか?
私の見解では、私のためにPCI読み取りは他のメモリ読み取りと同様であるため、このような問題は起こりません。たとえば、アドレス0x4000'0000のローカルRAMを読み取るのではなく、アドレス0xA020'0000の場合、プロセッサはこれをPCIバス上のアドレスとして変換し、バスを介してこの読み出しを実行します。 この読み込みはローカルメモリの読み込みよりも長いですが、このプロセスは途中で中断できません。 私の理解は非常によく完全にオフかもしれません、その場合は私を修正する自由を感じてください!