よくある質問(FAQ)

【ARM Cortex-Axx、ARM Cortex-Rxx】エンディアンが Big Endianのとき「不正な命令を実行しました」等のエラーが発生します。

シミュレーションエラーの回避策について

質問

【ARM Cortex-Axx、ARM Cortex-Rxx 固有】
エンディア ンが Big Endianの場合、下記のエラーメッセージが表示されてシミュ レーションが正しく実行できません。どのような原因が考えられるでしょうか?

;SEM-E:[SXG-AT7-000021] システム命令を実行しました.(pc=xxxxxxxxH)
 又は
;SEM-E:[SXG-AT7-000005] 不正な命令を実行しました.(pc=xxxxxxxxH)

回答

本エラーは、コード部分が Big Endian であるにもかかわらず、シミュレータの設定が Little Endian になっているため発生しています。

「ARM Cortex-A」及び「ARM Cortex-R」シリーズのエンディアンには、コードの Little/Big Endian とデータアクセスの Little/Big Endian の組み合わせがあります。カバッレジマスターwinAMSの「マイ コン選択 (MPU名や型番)」 で指定できる Big Endianは、データアクセスが Big Endian で、コードは Little Endian となります。コードも Big Endian に する場合は、スタートアップコマンドファイル (SS_STARTUP.txt) の先頭に 下記のコマンドを追加してください。

■追加コマンド
@cbig