Arm Compiler for Embedded 6.20.1 のリリースノート
目次
-
紹介
-
Arm Compiler for Embedded 6.20.1 コンフィギュレーション
-
Arm Compiler for Embedded 6.20.1 でサポートされたこと
-
インストール方法とIDEへの統合
-
フィードバックとサポート
-
リリース履歴と変更
-
Arm Compiler for Embedded 6.20.1 での変更点
-
Arm Compiler for Embedded 6.20 での変更点
1. 紹介
Arm Compiler for Embedded 6.20.1 は、ベアメタルソフトウェア、ファームウェア、およびリアルタイムオペレーティングシステム(RTOS) アプリケーションを開発するための、Arm の最新の組み込みC/C++コンパイルツールチェインです。
Arm Compiler for Embedded は、Arm アーキテクチャの最新のアーキテクチャ機能と拡張のために、最も早く、最も完全で、正確なサポートを提供します。開発中のものも含め、すべての最新のArm プロセッサをサポートします。
強力な最適化手法と最適化されたライブラリを通して、Arm Compiler for Embedded は組み込みシステム開発者が挑戦的なパフォーマンス目標とメモリ制約を満たすことを可能にします。
Arm Compiler for Embedded は、自動車、家電、産業、医療、ネットワーク、鉄道、ストレージ、通信など、さまざまな業界のリーディングカンパニーで使用されています。
プロジェクトに長期保守要件または機能安全要件(EN 50128、IEC 61508、IEC 62304、およびISO 26262など)がある場合、Armは、本リリースの代わりに、
LTSおよび機能安全認証版
のArm Compiler for Embedded FuSa を検討することを強く推奨します。
Arm Compiler for Embedded 6.20.1 は2023年4月現在の最新リリースであり、それ以前のリリースの置き換えとなります。
Arm Compiler for Embedded 6.20.1 のキーとなる機能は以下のサポートを含みます:
-
以下のアーキテクチャ:
-
Armv9.4-A のサポート
-
Armv8.9-A のサポート
-
Neoverse V2 プロセッサのサポート
-
追加のホスト オペレーションシステムのサポート:
-
Red Hat Enterprise Linux 9
-
Ubuntu 22.04 LTS
-
Windows Server 2022
-
Windows11
1.1 Arm Compiler for Embedded 6.20.1 コンフィギュレーション
Arm Compiler for Embedded 6.20.1 は以下を含みます:
-
ツールチェインコンポーネント:
-
armclang:
LLVMとClangテクノロジをベースとしたコンパイラおよび統合アセンブラ
-
armar:
ELFオブジェクトファイル群をまとめるアーカイバ
-
armlink:
オブジェクトやライブラリをまとめ、実行可能形式を生成するリンカ
-
fromlef:
イメージ変換ユーティリティ兼逆アセンブラ
-
armasm:
非推奨となった古いArm アーキテクチャ専用のarmasm-syntaxアセンブリコード用の旧アセンブラ。新しいアセンブリファイルではarmclang統合アセンブラを使用
-
Arm C libraries:
組込みシステム向けのランタイムサポートライブラリ
-
Arm C++ libraries:
LLVM libc++プロジェクトベースのライブラリ
-
User documentation
(Arm Compiler for Embedded 6.20 のドキュメントを参照してください):
-
User Guide:
ツールチェインの使用を助けるサンプルとガイドを提供します
-
Reference Guide:
ツールチェインの設定に役立つ情報を提供します
-
Arm C and C++ Libraries and Floating-Point Support User Guide:
Arm libraryと浮動小数点サポートに関する情報を提供します
-
Errors and Warnings Reference Guide:
Arm Compiler for Embedded に含まれるツールがレポートするエラーやワーニングのリストを提供します
-
Migration and Compatibility Guide:
Arm Compiler 5 からArm Compiler for Embedded への移行を支援する情報を提供します
-
Release notes: 最新のリリースノートは
Arm Compiler 6 ダウンロードページ
で確認できます。
ツールチェインは以下で使用できます:
-
Arm Development Studio ツールキットとともに使用
-
Keil MDK ツールキットとともに使用
-
スタンドアローンなインストレーションとして使用
これらの商品については、
代理店
にお問い合わせください。
FlexNet Publisher (FNP)ライセンス管理や、トラブルシューティングの為のリソースは
https://developer.arm.com/support/licensing
よりアクセスできます。
1.2 Arm Compiler for Embedded 6.20.1 でサポートされたこと
ライセンス条件に従い、Arm Compiler for Embedded 6.20.1 を使用して、以下のArm アーキテクチャおよびプロセッサ用のビルドが行えます:
Architecture
|
Cortex(Standard)
|
Cortex(Automotive Enhanced)
|
Neoverse
|
Other
|
Armv9.4-A |
|
|
|
|
Armv9.3-AまでのArmv9-A |
X3, X2
A715, A710, A510 |
|
V2 |
|
Armv8.9-A |
|
|
|
|
Armv8.8-AまでのArmv8-A |
X1
A78C, A78, A77, A76, A75, A73, A72
A65
A57, A55, A53
A35, A34, A32 |
A78AE, A76AE
A65AE |
V1
N2, N1
E1 |
|
Armv7-A |
A17, A15, A12
A9, A8, A7, A5 |
|
|
|
Armv8-R AArch64
(ハードウェア浮動小数点のみの実装) |
R82 |
|
|
|
Armv8-R |
R52+, R52 |
|
|
|
Armv7-R |
R8, R7, R5, R4F, R4 |
|
|
|
Armv8.1-MまでのArmv8-M |
M85, M55
M35P, M33
M23 |
|
|
STAR-MC1 |
Armv7-M |
M7, M4, M3 |
|
|
SecurCore SC300 |
Armv6-M |
M1, M0, M0+ |
|
|
SecurCore SC000 |
アーキテクチャとプロセッサのサポートレベルの詳細については、関連するIDE のドキュメントを参照してください。
[COMMUNITY], [ALPHA], および [BETA] 機能についての詳細はUser Guide内のSupport level definitionsの章を参照してください。
2. インストール方法とIDEへの統合
Arm Compiler for Embedded 6.20.1 は以下のホストアーキテクチャとホストオペレーティングシステムをサポートします:
Host architecture |
Host operating system |
Toolchain download package |
サポートされる使用方法 |
x86_64 |
Red Hat Enterprise Linux 7
Red Hat Enterprise Linux 8
Red Hat Enterprise Linux 9
Ubuntu Desktop Edition 18.04 LTS*
Ubuntu Desktop Edition 20.04 LTS |
Ubuntu Desktop Edition 22.04 LTS
x86_64 Linux |
スタンドアロン製品として使用
Arm Development Studioに統合 |
Windows Server 2012*
Windows Server 2019
Windows Server 2022
Windows 10
Windows 11 |
x86_64 Windows |
スタンドアロン製品として使用
Arm Development Studioに統合 |
x86_64 Windows for Keil MDK |
Keil MDKに統合 |
AArch64 |
Ubuntu 20.04 LTS |
AArch64 Linux |
スタンドアロン製品として使用 |
* Ubuntu 18.04 LTSのホストオペレーティングシステムのサポートは次のリリースで削除予定
注意:
-
Arm Compiler for Embedded 6.20.1 は、以下の環境での動作は期待できません
-
上記にリストされたものより古いホストオペレーティングシステムプラットフォーム
-
2.15よりも古いglibcのバージョンのLinuxホストオペレーティングシステム
-
Keil MDKライセンスを使用する場合、Arm Compiler for Embedded 6.20.1 はWindowsプラットフォームのみサポートします。
-
x86_32 ホストプラットフォームはサポートされません。
-
FlexNet Publisher フローティングライセンスを使用する場合、Armは常に最新のバージョンの
ライセンスサーバソフトウェア
をお使いいただくことを推奨します
ツールキット、例えばArm Development Studio の一部としてArm Compiler for Embedded 6.20.1 を受け取った場合、ツールキットのインストーラはインストールプロセスを実行します。
この場合、ツールキットのインストール手順に従ってください。
それ以外の場合、Arm Compiler for Embedded 6.20.1 の使用方法に応じて適切なインストール場所を選択する必要があります:
-
Arm Development Studio Bronze/Silver/Gold Edition 2021.2 以降に統合
-
Arm Development Studio Platinum Edition 2021.c 以降に統合
-
Keil MDK-Professional 5.36 以降に統合
-
スタンドアロン製品として使用
関連する手順については以下を参照してください:
3. フィードバックとサポート
お客様からのフィードバックは我々にとって重要です。
製品のいかなる側面についても、障害報告と改善に関する提案を歓迎します。
不具合修正と機能拡張は、Arm Compiler for Embedded maintenance ポリシーに従って将来のリリースに対して検討されます。
プロジェクトに長期保守要件または機能安全要件がある場合、
LTSおよび機能安全認証版
のArm Compiler for Embedded FuSa の使用を検討してください。
フィードバックあるいはサポートが必要な問題について、お仕事あるいはアカデミックなE-mailアドレスを使用してお客様の製品の購入元にご連絡をいただくか、可能であれば
caseをオープン
してください。
必要に応じて、以下の情報をお書き添えください:
-
ツールからの
--vsn
の出力
-
ツールが生成するエラーメッセージの完全な内容
-
問題を再現するのに必要なプリプロセス済みのソースコード、その他のファイル、コマンドラインオプション。プリプロセス済みのソースコードの生成方法はReference Guide 内の-E の章を参照してください。
当社へのお問い合わせは、
こちら
。
4. リリース履歴と変更
以下に、Arm Compiler for Embedded 6.20.1 シリーズのリリース日付を示します:
-
6.20.1 (2023年4月にリリースされました)
-
6.20 (2023年3月にリリースされました)
Arm Compiler for Embedded 6.20.1 はLong-Term Support (LTS) リリースではありません。Arm Compiler for Embedded maintenance ポリシーに従って、今後のリリースにおいてさらなる不具合修正と機能拡張が検討されます。
以下に、以前のリリースと比較して新しい機能と修正された不具合の概要を示します。
情報には、技術的な不正確さや誤植が含まれる場合があります。
それぞれの変更点には、ユニークな識別子SDCOMP-
が割り振られています。
もしArmへこのリリースノート内の特定の問題について連絡が必要な場合、適切な識別子を通知してください。
4.1 Arm Compiler for Embedded 6.20.1 での変更点
以下にArm Compiler 6.20 からの変更点を示します。
Arm Compiler for Embedded 6.20.1 での一般的な変更
-
[SDCOMP-63068] 英語以外のWindowsホストプラットフォームへのインストールは、次のエラーで誤って失敗する可能性があります。
-
An error occurred while applying security settings. NT AUTHORITYAuthenticated Users is not a valid user or group.
4.2Arm Compiler for Embedded 6.20 での変更点
以下にArm Compiler 6.19 からの変更点を示します。
Arm Compiler for Embedded 6.20 での一般的な変更
-
[SDCOMP-62625] AArch32 状態のA-プロファイルアーキテクチャ機能のサポートが追加されました:
機能識別子 |
機能の説明 |
-march / -mcpu +<feature> オプション |
以前のサポートレベル |
新しいサポートレベル |
FEAT_CLRBHB |
分岐履歴バリア命令のクリア |
− |
Beta |
サポート |
-march=armv9.4-a
または
-march=armv8.9-a
オプションを使用してコンパイルすると、この機能はコンパイラによってデフォルトで有効化されます。
より詳細については以下を参照してください:
-
Reference Guide 内、
-march
の章
-
Reference Guide 内、
-mcpu
の章
-
Arm Architecture Reference Manual およびReference Manual Supplement 内の各機能に関連する項目
-
[SDCOMP-62624] AArch64 状態の以下のA-プロファイル機能のサポートが追加されました:
機能識別子 |
機能の説明 |
-march / -mcpu +<feature> オプション |
以前のサポートレベル |
新しいサポートレベル |
FEAT_CHK |
機能ステータスの説明確認 |
− |
未サポート |
Alpha |
FEAT_CLRBHB |
分岐履歴バリア命令のクリア |
− |
Beta |
サポート |
FEAT_CSSC |
Common short sequence 圧縮命令 |
cssc |
Beta |
サポート |
FEAT_D128,FEAT_SYSREG128,
FEAT_SYSINSTR128 |
128-bit ページテーブル記述子 |
d128 |
Beta |
サポート |
FEAT_ITE |
Instrumentation extension |
ite |
Beta |
サポート |
FEAT_LRCPC3 |
Release Consistency Model の追加サポート |
rcpc3 |
Beta |
サポート |
FEAT_LSE128 |
128-bit atomic 命令 |
lse128 |
Beta |
サポート |
FEAT_PFAR, FEAT_RASv2 |
Reliability, Availability およびServiceability v2 |
rasv2 |
Beta |
サポート |
FEAT_PRFMSLC |
Prefetch memory system level cache 命令 |
− |
Beta |
サポート |
FEAT_RPRFM |
Range prefetch ヒント命令 |
− |
Beta |
サポート |
FEAT_SPECRES2 |
強化投機管理 |
predres2 |
Beta |
サポート |
FEAT_THE |
Translation hardening extension |
the |
Beta |
サポート |
-march=<name>
オプションを使用してコンパイルした場合、コンパイラはデフォルトでこれらの機能の以下のサブセットを有効にします:
-march=<name>option |
有効化される機能 |
armv9.4-a |
FEAT_CHK, FEAT_CLRBHB, FEAT_CSSC, FEAT_PFAR, FEAT_PRFMSLC, FEAT_RASv2, FEAT_SPECRES2 |
armv9-a およびそれ以降 |
FEAT_RPRFM |
armv8.9-a |
FEAT_CHK, FEAT_CLRBHB, FEAT_CSSC, FEAT_PFAR, FEAT_PRFMSLC, FEAT_RASv2, FEAT_SPECRES2 |
armv8-a およびそれ以降 |
FEAT_RPRFM |
より詳細については以下を参照してください:
-
Reference Guide 内、
-march
の章
-
Reference Guide 内、
-mcpu
の章
-
Arm Architecture Reference Manual およびReference Manual Supplement 内の各機能に関連する項目
-
[SDCOMP-62623] 浮動小数点式の縮小を制御する
-ffp-contract=<value>
オプションのサポートが追加されました。
詳細については、リファレンス ガイドの
-ffp-contract
セクションを参照してください。
-
[SDCOMP-61726] 以下のA-プロファイルアーキテクチャのサポートが行われました:
Architecture |
-march=
オプション |
以前のサポートレベル |
新しいサポートレベル |
Armv9.4-A |
armv9.4-a |
Beta |
サポート |
Armv8.9-A |
armv8.9-a |
Beta |
サポート |
より詳細については、Reference Guide内の-march の章を参照してください。
-
[SDCOMP-62438] 以下のサポートされている x86_64 ホストオペレーティングシステムに対しての変更:
-
追加されたホストオペレーショングシステム
-
Red Hat Enterprise Linux 9
-
Ubuntu 22.04 LTS
-
Windows Server 2022
-
Windows 11
-
削除されたホストオペレーショングシステム
-
Windows Server 2012
-
Windows Server 2016
-
Windows 8.1
Ubuntu 18.04 LTS ホスト オペレーティング システムのサポートは、次のリリースで削除されます。
-
[SDCOMP-62413] 以前、コンパイルオプション
-fsanitize=memtag
を使用して、
メモリのタグ付けサニタイザーを有効にできました。これを変更しました。
メモリのタグ付けサニタイザーを有効にするには、次のオプションでコンパイルします。
-
-fsanitize=memtag-heap,memtag-stack
さらに、
-fsanitize=memtag
を使用してコンパイルすると、コンパイラは次のエラーを報告できるようになりました。
-
Tagged symbols (-fsanitize=memtag-globals) are only supported on aarch64 + Android
詳細については以下を参照してください:
-
Reference Guide 内
-fsanitize, -fno-sanitize
の章
-
User Guide 内
Overview of memory tagging
の章
-
[SDCOMP-62131]
--sysv
でリンクする場合、以下のリンカのワーニングがリマークにダウングレードされました:
-
L6314W: No section matches pattern <pattern>
このリマークは、
--diag_error=L6314W
とリンクすることでエラーに、
または
--diag_warning=L6314W
とリンクすることで警告にアップグレードできます。
-
[SDCOMP-62037] 以前、C++ソース言語モードでコンパイルした場合、コンパイラは以下のワーニングをレポートすることがありました:
-
missing 'typename' prior to dependent type name '<name>'
この動作は変更されました。
コンパイラは、typenameキーワードを指定するための要件を緩和する C++20 拡張機能を実装するようになりました。
拡張機能は、すべての C++ソース言語モードで有効です。その後、コンパイラは以下のワーニングをレポートするようになりました:
-
missing 'typename' prior to dependent type name <name>; implicit 'typename' is a C++20 extension
このワーニングは、
-Werror=c++20-extension
sでコンパイルすることによってエラーにアップグレードできます。
詳細についてはC++ Standards Committee PapersのP0634R3を参照してください。
-
[SDCOMP-61795]Windowsホストプラットフォームのインストールパッケージ構造が変更されました。setup.exeファイルは削除されました。
ツールチェーンをインストールするには、代わりに.msiファイルを使用してください。
詳細についてはUser Guide 内の
System requirements and installation
の章を参照してください。
-
[SDCOMP-61757]デフォルトの C++ソース言語モードが gnu++14 から gnu++17 に変更されました。
詳細についてはReference Guide 内の
-std
の章を参照してください。
-
[SDCOMP-61739] 以前、fromelfユーティリティが AArch64
PRFM
(リテラル)命令のラベルオペランドをラベルまたは PC 相対オフセットとして逆アセンブルしていました。
この動作は変更されました。fromelfユーティリティは、オペランドを即時オフセットとして逆アセンブルするようになりました。
ELF形式のオブジェクトファイルを逆アセンブルする場合は、
--text -r
を使用して出力された再配置情報を手動で検査し、
AArch64
PRFM
(リテラル)命令のラベルオペランドを特定します。
-
[SDCOMP-60879] C++17標準ライブラリヘッダー
<memory_resource>
のサポートが追加されました。
-
[SDCOMP-58910] Neoverse V2 プロセッサをサポートしました。
Neoverse V2 をターゲットとするには、以下の
armclang
オプションのいずれかを使用してください:
暗号化拡張 |
オプション |
あり |
--target=aarch64-arm-none-eabi -mcpu=neoverse-v2+crypto |
なし |
--target=aarch64-arm-none-eabi -mcpu=neoverse-v2 |
-
[SDCOMP-55137]
-ffp-mode=full
でコンパイルするときの AArch64状態の浮動小数点例外のサポートが追加されました。
詳細については、Referenc Guide 内
-ffp-mode
の章を参照してください。
Arm Compiler for Embedded 6.20 での不具合修正
armclang
-
[SDCOMP-62725] 整数 MVE のみをサポートするターゲットに対して
-mfloat-abi=hard
を使用してコンパイルすると、
コンパイラはArm アーキテクチャのプロシージャ コール標準に誤って準拠しないコードを生成していました。
-
[SDCOMP-62575] M-profile Vector Extension (MVE) を使用して Armv8.1-M ターゲット用にコンパイルすると、
コンパイラはループに対して誤ったコードを生成する可能性がありました。
-
[SDCOMP-62463]
-ffp-mode=std
または
-ffp-mode=<mode>
オプションなしでコンパイルすると、コンパイラは浮動小数点式の縮小を常に無効にしていました。
浮動小数点式の縮小を制御するには、
-ffp-contract=<value>
オプションまたは
#pragma STDC FP_CONTRACT <value>
を使用します。
詳細については、Referenc Guide 内の下記の章を参照してください。
-
-ffp-contract
-
#pragma STDC FP_CONTRACT
-
[SDCOMP-62352] コンパイラと統合アセンブラは、Armv8-Mアーキテクチャのリビジョン
B.q
に従って、
VMLA.U32
または
VMLAS.U32
命令を誤って生成する可能性がありました。
コンパイラと統合アセンブラは、Armv8-Mアーキテクチャのリビジョン
B.r
VMLA.I32
または
VMLAS.I32
命令を生成するようになりました。
-
[SDCOMP-62330]
-g
または
-gdwarf-4
を指定してコンパイルすると、コンパイラはビットフィールドに対して誤ったデバッグ情報を生成する可能性がありました。
-
[SDCOMP-62123] コンパイラは、
*vdup*_*f16()
Neon intrinsicに対して誤ったコードを生成する可能性がありました。
-
[SDCOMP-61912] AArch32 状態のコンパイル時に、
_Float16
または
__fp16
型の半精度浮動小数点値に対して
t
または
w
レジスタ制約を使用するインラインアセンブリステートメントについて、
インラインアセンブラが以下のエラーのいずれかを誤ってレポートしていました。
-
couldn't allocate output register for constraint 't'
-
couldn't allocate output register for constraint 'w'
-
[SDCOMP-61413]
-mbranch-protection=<protection>
でリンク時最適化(LTO)機能を有効にしてコンパイルすると、コンパイラは分岐保護を有効にせずにコードを誤って生成していました。
-
[SDCOMP-61298] ハードウェア浮動小数点サポートのないターゲット用にコンパイルする場合、コンパイラは
__SOFTPP__
定義済みマクロの定義に誤って失敗する可能性がありました。
-
[SDCOMP-59547] AArch64状態のアセンブル時に、インラインアセンブラおよび統合アセンブラは、アクセスする特殊レジスタとして
AMCG1IDR_EL0
を指定する
MRS
命令について、以下のエラーを誤ってレポートしていました。
-
expected readable system register
armlink
-
[SDCOMP-62415] C++例外とメモリタグサニタイザーの両方を有効にしてコンパイルされた入力オブジェクトをリンクすると、リンカが以下のワーニングを間違ってレポートする可能性がありました:
-
L6860W: Unable to optimize .eh_frame sections: <object>(.eh_frame)(CIE at offset <offset>) augmentation string contains unrecognized character: G
-
[SDCOMP-62251] リンカは、ロード領域を記述する ELFプログラムヘッダーの
p_memsz
フィールドの小さすぎる値を誤って計算する可能性がありました。
-
[SDCOMP-62032] C++例外とキー
B
が有効なポインター認証の両方でコンパイルされた入力オブジェクトをリンクすると、リンカーは以下のワーニングを誤ってレポートする可能性がありました:
-
L6860W: Unable to optimize .eh_frame sections: <object>(.eh_frame)(CIE at offset <offset>) augmentation string contains unrecognized character: B
-
[SDCOMP-60491]
R_AARCH64_CONDBR19
再配置によって変更された AArch64
FEAT_HBC BC.<cond>
命令を含む入力オブジェクトをリンクすると、リンカは命令を誤って
UDF
命令に置き換える可能性がありました。
-
[SDCOMP-57199] リンカは、4 バイト境界にアラインされていない
A32
命令に分岐する
T32 BL
命令を含むプログラムのワーニングを誤ってレポートしない可能性がありました。
リンカーは、下記のワーニングをレポートするようになりました:
-
L6307W: Relocation #REL:0 in <object>(<section>) with respect to <function>. Branch to unaligned destination
fromelf
-
[SDCOMP-62644]
--emit=addresses
または
--text -a
を使用して名前のないデータアドレスを含む ELF形式の入力ファイルを処理すると、
fromelf
ユーティリティが誤ってレポートしていました:
-
ARM FromELF: Execution interrupted due to an illegal storage access
-
[SDCOMP-62217]
fromelf
ユーティリティが
LE
または
LETP
命令のラベルオペランドを、
PC
相対オフセットではなく即時オフセットとして誤って逆アセンブルしていました。
-
[SDCOMP-62000]
-g
を使用してデバッグ情報を含む ELF形式の入力ファイルを処理すると、
fromelf
ユーティリティが
.debug_loc
セクションに対して誤った出力を生成する可能性がありました。
ライブラリとシステムヘッダ
-
[SDCOMP-57673] AArch64状態の Arm Cライブラリのバリアントは、以下のように浮動小数点ユニットの構成に誤って失敗していました:
-
デフォルトの NaN プロパゲーションを有効化。
-
非正規化数のゼロへのフラッシュを有効化。