CMSISと IAR Embedded Workbench for ARM 6.20
テクニカル・ノート 75890
アーキテクチャ:
ARM
コンポーネント:
compiler
更新日:
2020/04/08 6:42
はじめに
古いバージョンのCMSISとIAR Embedded Workbench for ARMバージョン6.20.1以降は、相性がよくありません。そのため、それらを組み合わせて使用するとCMSISのプロジェクトでビルドエラーが発生します。
例えば、"Error[Pe147]"や"Error[Pe337]"などのエラーが発生します。
このエラーは、ほとんどの場合、CMSISのcore_cm3.hという名前のヘッダファイル(または同様の名前のヘッダファイル)に起因します。
解決方法
解決方法1
最新版のCMSISベースのプロジェクトをコピーし、アプリケーションを追加したいプロジェクトのベースとしてそのプロジェクトを使用してください。
解決方法2
IAR C/C++コンパイラバージョン6.20.1のリリースノートを参照してください。
「A special note on CMSIS integration」の章を参照してください。特に、「However, ...」で始まる部分をよくお読みください。
なお、サンプルプロジェクトからCMSISファイルを除外すると、サンプルで必要とされるいくつかの関数が見えなくなります。この場合、単にインクルードパスを変更し、一部のソースファイルを除外するだけでは、問題は解決しません。そのため、ビルドしたいプロジェクトに含まれるソースに、除外したファイル(system_stm32f10x.cなど)から関数を移動する必要があります。
背景
IAR Embedded Workbench for ARM 6.20.1以降に付属のコンパイラについては、それまでのバージョンと比べてより多くの組込み関数がサポートされています。そのため、プロジェクトにCMSISのソースコードが含まれている場合、互換性の問題が発生します。
リリースノートで提案されている修正方法の要点は、プロジェクトに含まれているCMSISのソースコードを「削除」し、IAR Embedded Workbench for ARMでインストールされたCMSISのソースコード(arm\CMSISディレクトリにあるソースコード)を使用するというものです。プロジェクト(Project) > オプション(Options...) > 一般オプション(General Options) > ライブラリ設定(Library Configuration) > CMSISを使用する(Use CMSIS)を選択し、CMSISの使用を有効にしてください。
上記の問題によって、IAR Embedded Workbench for ARM 6.20.1に付属している一部のCMSISサンプルプロジェクトが影響を受けます。この問題は、新しいバージョンでは修正されています。
全ての製品名は、それぞれの所有者の商標または登録商標です。