適用範囲:
- Arm Compiler 6.18
- Arm Compiler for Embedded FuSa 6.16.2
- Armv8-M Security Extension (CMSE) を使用するプロジェクト
- Keil MDK 5.37 (またはそれ以降)
質問:
FlexNet Publisher(FNP) ライセンスを使用して生成されたイメージファイルが、User-based Licensing(UBL)を使用して生成されたイメージファイルとは異なることがあります。以下の状況で発生します:
- 同一のコンパイラを使用
- 同じビルドオプションを使用
- Armv8-M Security Extension (CMSE)を有効化するコマンドラインオプションを使用
UBL を使用してビルドされたイメージが期待通りに動作しません。何が原因でしょうか?
回答:
これはArm Compiler for Embedded 6.18 およびArm Compiler for Embedded FuSa 6.16.2 においてUBLを使用した際の既知の問題です。
UBL 使用時に-mcmse オプション付きでビルドを行うと、コンパイラは誤って以下の事前定義マクロの定義に失敗します:
- __ARM_ARCH_EXT_IDIV__
- __ARM_FEATURE_DSP
- __ARM_FEATURE_FMA
- __ARM_FEATURE_FP16_SCALAR_ARITHMETIC
- __ARM_FEATURE_IDIV
- __ARM_FEATURE_LDREX
- __ARM_FEATURE_MVE
- __ARM_FEATURE_SIMD32
- __ARM_FP
- __ARM_FPV5__
- __ARM_VFPV2__
- __ARM_VFPV3__
- __ARM_VFPV4__
- __VFP_FP__
プログラムの機能的な動作がこれらの事前定義マクロの1 つ以上に依存している場合、プログラムはこの問題の影響を受ける可能性があります。
long-term maintenance や機能安全要件のないプロジェクトでこの問題を回避するには、v6.18 よりも新しいArm Compiler for Embedded のリリースにアップグレードしてください。
long-term maintenance を必要としている、あるいは機能安全の要求事項から、Arm Compiler for Embedded FuSa 6.16.2 を使用してビルドを行っているプロジェクトに対する回避策については、Support case を作成してArm に連絡し、問題について詳細なディスカッションを行ってください。
参考資料:
- Arm Compiler for Embedded 6.18 Reference Guide:
- Arm Compiler for Embedded FuSa 6.16.2 Reference Guide:
- Arm Support Hub にアクセスする際のよくある質問