CPU-I/Oカードデータ同期問題
1248 ワード
1553B通信I/Oドライバの開発で発生した問題点をまとめます.
CPUとI/Oカード(1553 B)は、同時にデータブロックに非同期でアクセスすることができ、新旧データの混在の問題をもたらす.
I/Oチップメニュー説明は、データ同期技術(Double Buffering)を用いて上記の操作が可能であるが、メーカーが提供するソフトウェアライブラリではこれらの機能は提供されていない. の製造元に連絡したところ、リポジトリにこの機能が欠けていることがわかり、製造元は内部的な理由で変更できないとしています. の複数回の協議を経て、私たちは最終的にセキュリティプロトコルを書き、メーカーからソースコードを取得し、リポジトリを直接修正し、使用することにしました. はメーカーのソースコードを取得し、デュアルバッファ技術を採用し、Ping-Pongロジックを直接実施し、以下に示すように、お客様に信頼できるデバイスドライバを提供します.
もんだいげんしょう
CPUとI/Oカード(1553 B)は、同時にデータブロックに非同期でアクセスすることができ、新旧データの混在の問題をもたらす.
プロセス
Before
dwDataBlkAddr = pNode->U.DataBlock.pMemNode->U.MemBlock.dwAceAddr;
After
dwOldDataBlkAddr = FLEXMEMREAD(DevNum, (pMsgNode->U.Message.pMemNode->U.MemBlock.dwAceAddr + 2));
if (dwOldDataBlkAddr == pDataNode->U.DataBlock.pMemNode->U.MemBlock.dwAceAddr)
{
dwNewDataBlkAddr = pDataNode->U.DataBlock.pMemNode->U.MemBlock.dwAceAddr + BC_DUAL_MSG_SIZE;
}
else
{
dwNewDataBlkAddr = pDataNode->U.DataBlock.pMemNode->U.MemBlock.dwAceAddr;
}
Reference
この問題について(CPU-I/Oカードデータ同期問題), 我々は、より多くの情報をここで見つけました https://velog.io/@joosing/CPU-IO-카드-데이터-동기화-문제テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol