コモンメモリ
メモリマップ
コモンメモリには、アドレス空間が独立した2つの領域があります。領域1は512ワード、領域2は8192ワードの記憶領域があり、どちらの領域も1アドレスに1ワードのデータを格納できます。(ワード=16ビット)
先頭アドレス | 最終アドレス | サイズ | |
---|---|---|---|
領域1 | 0x0000 | 0x01FF(511) | 0x200(512) |
領域2 | 0x0000 | 0x1FFF(8191) | 0x2000(8192) |
サイズはワード単位。カッコ内は10進数表記。
コモンメモリの初期化
コモンメモリは、FL-netネットワークがクローズ状態でBflOpen関数が呼ばれた時に0(ゼロ)で初期化されます。複数のユーザーアプリケーションが同じFL-netネットワークをオープンした場合は、FL-net通信エンジンが最初のオープンを受け付けた時だけコモンメモリの初期化が行われます。
付属のFL-net Utilityもユーザーアプリケーションに分類されます。FL-net Utilityをモニタ状態でユーザーアプリケーションがBflOpen関数を呼び出した場合は、最初のオープンにならないので、コモンメモリは初期化されません。
コモンメモリのアクセス
FL-net通信エンジンは、コモンメモリ全領域の最新の内容を保持しています。ユーザーアプリケーションは、BflRead/BflWrite系関数でアドレスとサイズを指定して、FL-net通信エンジンが管理しているコモンメモリを読み書きします。コモンメモリのアドレスは、絶対アドレスと相対アドレスのどちらでも指定できます。絶対アドレスで指定した場合は、コモンメモリの先頭を0(ゼロ)番地とします。相対アドレスで指定した場合は、コモンメモリの自ノードに割り付けた範囲の先頭を0(ゼロ)番地とします。
FL-net(OPCN-2)の仕様で、コモンメモリの2つの領域は同時性が保証されています。つまり、領域1と領域2に同時に書き込んだデータは、他ノードに同時に送信されます。BflRead/BflWrite系関数には、1つの領域に対して読み書きする関数と、2つの領域に対して同時に読み書きする関数があります。後者の関数を使用すると、領域1と領域2の同時性が保証されたデータの読み書きができます。