MAEC TOOL NEWS:
MAECT-M3T-NC308WA_1-011116D
*** 重要 ***
M3T-NC308WA, M3T-NC30WA
ご使用上のお願い
|
本件は、お客様のシステムに影響を及ぼす可能性のある内容についてのご連絡です。必ずお読みくださいますようお願いいたします。コンパイラの最適化強化にともないご注意いただきたい内容です。
Cコンパイラ (アセンブラ・統合化開発環境付き) M3T-NC308WA, M3T-NC30WA の使用上の注意事項を連絡します。
- 内容
以下のCコンパイラで最適化オプションを使用する場合、ビット操作命令(BTSTC、BTSTS)に展開する可能性があります。ビット操作命令 (BTSTC、BTSTS)は、M16Cの割り込み制御レジスタを書き換える命令として使用できません。本内容は注意事項です。
(詳細は、下記4.および5.のドキュメント(抜粋) を参照してください)
該当製品を使用する場合、生成されたコードに問題がないことを、必ずご確認ください。
※ 該当製品以外では、該当する最適化オプションにより、BTSTC、BTSTSへの展開はおこなっていませんので、問題は発生しません。
- [該当製品]
- M3T-NC308WA V.3.10 Release 1 ~ V.3.10 Release 2
- M3T-NC30WA V.4.00 Release 2
- [該当最適化オプション]
- -O, -O3, -O4, -O5, -OR, -OS のいずれかを指定
- 対策
本オプションもしくは、asm関数の使用による対策後はBTSTC,BTSTS命令が生成されていないことを必ずご確認ください。
- 発生例
以下のプログラムの場合、最適化オプション (-O, -O3, -O4, -O5, -OR, -OS) のいずれかを指定した場合、最適化によりBTSTC命令を生成します。このため、割り込み要求ビットの判定が正常に行われず意図しない動作を行います。
-------------------------------------------------------------------------
#pragma ADDRESS TA0IC 0055h /* M16C/62 タイマA0割込み制御レジスタ */
struct {
char ILVL : 3;
char IR : 1; /* 割込み要求ビット */
char dmy : 4;
} TA0IC;
void wait_until_IR_is_ON(void)
{
while (TA0IC.IR == 0) /* 1 になるまで待つ */
{
;
}
TA0IC.IR = 0; /* 1 になったら 0 に戻す */
}
-------------------------------------------------------------------------
- マイコンのドキュメントに記載のある 「割り込みの注意事項」 (抜粋)
M16Cマイコンのデータシート、ユーザーズマニュアルにおける" 割り込みの注意事項" の抜粋を以下に示します。
[割り込みの注意事項]
割り込み禁止状態で、割り込み制御レジスタを書き換える命令を実行しているときに、対応する割り込みが発生した場合、命令によっては割り込み要求ビットがセットされないことがあります。このことが問題となる場合は、以下の命令を使用してレジスタを変更するようにしてください。
使用可能な命令・・・・AND, OR, BCLR, BSET
- コンパイラのドキュメントに記載のある SFR領域のレジスタをアクセスする場合の注意事項 (抜粋)
コンパイラのドキュメントには、以下の内容を記載しています。
「SFR領域のレジスタをアクセスする場合には、特定の命令を使用しなければならないことがあります。この特定の命令は機種毎に異なりますので、詳しくは各機種のユーザーズマニュアルを参照してください。
この場合asm関数を使用してプログラム中に直接命令を記述してください。」
C言語でSFR領域のレジスタへアクセスする場合は、コンパイラのバージョン、オプションの有無に関わらずasm関数で記述するのと同様の命令が生成されているか、必ず確認してください。
- [該当ドキュメント]
| NC308ユーザーズマニュアル | - 3.1.2 M16Cの機種依存部に関する注意事項 |
| NC30 ユーザーズマニュアル | - 3.1.2 M16Cの機種依存部に関する注意事項 |
| M3T-NC308WA リリースノート | - 機種依存部に関する注意事項 |
| M3T-NC30WA リリースノート | - 機種依存部に関する注意事項 |
- ※2000年以前のドキュメントには上記記述がないものがありますが、同様に注意が必要です。