ツールニュース
このページを印刷
ツールニュース
製品情報
ダウンロード
よくあるお問合せ FAQ
ツールユーザ登録
MAEC TOOL NEWS:
MAECT-M3T-MR32R-020901D
M3T-MR32R
ご使用上のお願い
M32Rファミリ用リアルタイムOS M3T-MR32Rの使用上の注意事項を連絡します。
tsnd_mbf, snd_mbfシステムコール使用時の注意事項
ユーザーズマニュアル 第3.5.8項「拡張同期・通信機能(メッセージバッファ)」の補足事項
tsnd_mbf, snd_mbfシステムコール使用時の注意事項
1.1 該当製品
M3T-MR32R V.3.00 Release 1 ~ M3T-MR32R V.3.40 Release 1までの全バージョン
1.2 内容
以下3点の条件をすべて満たす場合、M3T-MR32Rがバッファ用の領域を超えてデータを書き込むため、メモリを破壊します。
メモリが破壊された以降は、rcv_mbf、trcv_mbf、またはprcv_mbfシステムコール発行により、メッセージを受信した場合、不正なデータが読み出されます。
1.3 発生条件
(1)
snd_mbfまたはtsnd_mbfシステムコール発行によりタスクAが送信待ち状態に移行した。
(2)
タスクBがメッセージを受信することにより、(1)で送信待ちとなったタスクAの待ち状態が解除された。
(3)
タスクAの送信待ち状態解除にともない、送信メッセージの書き出しがバッファ終端をまたいで行われた。
[参考]
「バッファ先頭アドレス」および「次のメッセージ(サイズ情報を含む) が書き出されるバッファ先頭アドレスからのオフセット値」は以下の内容を参照することによって知ることができます。
・
バッファ先頭アドレス(4バイトデータ):
__D_MBF_BASE[ID番号-1]の内容
・
次のメッセージ(サイズ情報を含む)が書き出されるバッファ先頭アドレスからのオフセット値(4バイトデータ):
__MBF_write[ID番号-1]の内容
1.4 発生例
送信メッセージの書き出しがバッファ終端を超えた場合、バッファ先頭に戻ってメッセージを書き出さず、バッファ終端を超えた領域へ書き出してしまいます。
(補足)
以下に示す2つのケースは、条件に該当しないため問題は発生しません。
[ケース1]
メッセージの書き出しが終端で終了した場合 (次のメッセージは、正常に書き出されます。)
[ケース2]
バッファ終端の4バイト手前よりサイズ情報の書き出しが始まった場合、メッセージは、正常にバッファ先頭より書き出されます。
1.5 回避策
以下のいずれかの方法で回避してください。
(1)
メッセージバッファの終端でメッセージが終了するようにメッセージを送信する。
例えば、24バイト以下のメッセージを送信する場合、すべて24バイトのメッセージとして送信するようにします。
バッファは、(24+4(サイズ情報))* nバイト(nは、任意の値です)を確保するようにします。
n=4の場合、112バイトをバッファとして確保するように設定します。
(2)
snd_mbfまたはtsnd_mbfの代わりにpsnd_mbfを使用する。
1.6 恒久対策
本内容は、次期バージョンで改修する予定です。
ユーザーズマニュアル 第3.5.8項「拡張同期・通信機能(メッセージバッファ)」の補足事項
2.1 該当製品
M3T-MR32R V.3.00 Release 1 ~ M3T-MR32R V.3.40 Release 1までの全バージョンに付属のユーザーズマニュアル
2.2 補足内容
メッセージバッファ機能を使用し、メッセージを送信する場合、M3T-MR32Rはバッファにまず、4バイトのメッセージのサイズ情報を書き込んだ後、メッセージを書き出すようになっています。直前に送信されたメッセージの終端が4バイト境界にない場合は、次の4バイト境界よりメッセージのサイズ情報を書き出します。
そのため、ひとつのメッセージを送信すると、「アライメント調整分+サイズ情報(4バイト)+メッセージサイズ」分だけバッファを使用します。なお、受信したメッセージにメッセージのサイズ情報は含まれません。
[例]
メッセージ終端が4バイト境界にないメッセージAを送信後、12バイトのメッセージBを送信した場合、次の4バイト境界にサイズ情報が書き込まれた後、メッセージBが書き込まれます。
技術的な内容に関するお問い合わせは、
お問い合わせ先一覧
へ
ページの先頭
|
前ページ
|
ツールニュース目次
(C)2008 Renesas Technology Corp., All Rights Reserved.
個人情報の保護について
|
本サイトの留意点
|
インターネット上での個人情報の保護について