ARM® コンパイラ ソフトウェア開発ガイド

バージョン 5.05


目次

序章
本書について
本書の構成
表記規則
Feedback
本製品に関するフィードバック
内容に関するフィードバック
1 ARM アーキテクチャバージョンの主な機能
1.1 ARM アーキテクチャについて
1.2 マルチプロセッサシステム
1.3 マルチプロセッサシステムに対応するソフトウェアの設計に関する注意事項
1.4 密結合メモリ
1.5 メモリ管理
1.6 Thumb-2 テクノロジ
1.7 ARM アーキテクチャプロファイル
1.8 ARM アーキテクチャ v4T
1.9 ARM アーキテクチャ v5TE
1.10 ARM アーキテクチャ v6
1.11 ARM アーキテクチャ v6-M
1.12 ARM アーキテクチャ v7-A
1.13 ARM アーキテクチャ v7-R
1.14 ARM アーキテクチャ v7-M
1.15 浮動小数点演算と浮動小数点リンケージのビルドオプション
1.16 ARMv6 以前の浮動小数点ビルドオプション
1.17 ARMv7 以降の浮動小数点ビルドオプション
2 組み込みソフトウェアの開発
2.1 組み込みソフトウェアの開発について
2.2 コンパイルツールのデフォルトの動作
2.3 C ライブラリの構造
2.4 デフォルトのメモリマップ
2.5 アプリケーションの起動
2.6 ターゲットハードウェアに合わせた C ライブラリのカスタマイズ
2.7 ターゲットハードウェアに合わせたイメージのメモリマップのカスタマイズ
2.8 スキャッタロード記述の構文について
2.9 ルート領域
2.10 スタックとヒープの配置
2.11 ランタイムメモリモデル
2.12 ビットバンドオブジェクトへのリンクを含むスキャッタファイル
2.13 リセットと初期化
2.14 ベクタテーブル
2.15 ROM および RAM のリマップ
2.16 ローカルメモリのセットアップに関する注意事項
2.17 スタックポインタの初期化
2.18 ハードウェアの初期化
2.19 実行モードに関する注意事項
2.20 ターゲットハードウェアおよびメモリマップ
2.21 実行専用メモリマップ
2.22 実行専用メモリ用のアプリケーションのビルド
3 C、C++、およびアセンブリ言語の混用
3.1 命令の組み込み関数、インラインアセンブラ、および組み込みアセンブラ
3.2 アセンブリコードから C グローバル変数へのアクセス
3.3 C++ からのシステム C ヘッダファイルのインクルード
3.4 C++ からの独自の C ヘッダファイルのインクルード
3.5 混合言語プログラミング
3.6 C、C++、およびアセンブリ言語間の呼び出しに関する規則
3.7 C およびアセンブリ言語からの C++ 関数の呼び出しに関する規則
3.8 C++ に関する情報
3.9 C からのアセンブリ言語の呼び出し
3.10 アセンブリ言語からの C の呼び出し
3.11 C++ からの C の呼び出し
3.12 C++ からのアセンブリ言語の呼び出し
3.13 C からの C++ の呼び出し
3.14 アセンブリ言語からの C++ の呼び出し
3.15 C 言語と C++ 言語間での参照の受け渡し
3.16 C 言語またはアセンブリ言語からの C++ 言語の呼び出し
4 ARM と Thumb のインターワーク
4.1 インターワークについて
4.2 インターワークに適した状況
4.3 アセンブリ言語のインターワーク
4.4 C および C++ のインターワーク
4.5 Thumb 状態の関数へのポインタ
4.6 アセンブリ言語のインターワークの例
4.7 ベニアを使用したインターワーク
4.8 C 言語と C++ 言語のインターワーク
4.9 ベニアを使用した C、C++、およびアセンブリ言語のインターワーク
5 プロセッサ例外処理
5.1 プロセッサ例外について
5.2 例外処理プロセス
5.3 ARMv6 とそれ以前、ARMv7-A、および ARMv7-R プロファイルの例外のタイプ
5.4 ARMv6 とそれ以前、ARMv7-A、および ARMv7-R プロファイルのベクタテーブル
5.5 ARMv6 とそれ以前、ARMv7-A、および ARMv7-R プロファイルのプロセッサモードおよびレジスタ
5.6 例外処理のためのシステムモードの使用
5.7 例外に対するプロセッサの応答
5.8 例外ハンドラからの復帰
5.9 リセットハンドラ
5.10 データアボートハンドラ
5.11 割り込みハンドラと外部割り込みのレベル
5.12 再入可能割り込みハンドラ
5.13 シングルチャネル DMA 転送
5.14 デュアルチャネル DMA 転送
5.15 割り込みの優先度
5.16 コンテキストスイッチ
5.17 呼び出す SVC の決定
5.18 SVC ハンドラからの命令セット状態の判別
5.19 アセンブリ言語を使用した SVC ハンドラ
5.20 C 言語およびアセンブリ言語を使用した SVC ハンドラ
5.21 スーパーバイザモードでの SVC の使用
5.22 アプリケーションからの SVC の呼び出し
5.23 アプリケーションからの動的な SVC の呼び出し
5.24 プリフェッチアボートハンドラ
5.25 未定義命令ハンドラ
5.26 ARMv6-M および ARMv7-M プロファイル
5.27 メインスタックおよびプロセススタック
5.28 マイクロコントローラプロファイルの例外のタイプ
5.29 ARMv6-M および ARMv7-M プロファイルのベクタテーブル
5.30 ベクタテーブルオフセットレジスタ(ARMv7-M のみ)
5.31 ARMv6-M および ARMv7-M プロファイルの例外テーブルの書き込み
5.32 ネストされたベクタ割り込みコントローラ
5.33 例外処理
5.34 システム制御空間レジスタの設定
5.35 個別の IRQ の設定
5.36 スーパーバイザコール
5.37 システムタイマ
5.38 SysTick の設定
6 デバッグ通信チャネル
6.1 デバッグ通信チャネルについて
6.2 ターゲットとホストデバッグツールの間の DCC 通信
6.3 割り込み駆動型デバッグ通信
6.4 Thumb 状態からのアクセス
7 セミホスティングとは
7.1 セミホスティングとは
7.2 セミホスティングインタフェース
7.3 セミホスティングオペレーションの番号の変更について
7.4 デバッグエージェントインタラクション SVC
7.5 angel_SWIreason_EnterSVC(0x17)
7.6 angel_SWIreason_ReportException(0x18)
7.7 SYS_CLOSE(0x02)
7.8 SYS_CLOCK(0x10)
7.9 SYS_ELAPSED(0x30)
7.10 SYS_ERRNO(0x13)
7.11 SYS_FLEN(0x0C)
7.12 SYS_GET_CMDLINE(0x15)
7.13 SYS_HEAPINFO(0x16)
7.14 SYS_ISERROR(0x08)
7.15 SYS_ISTTY(0x09)
7.16 SYS_OPEN(0x01)
7.17 SYS_READ(0x06)
7.18 SYS_READC(0x07)
7.19 SYS_REMOVE(0x0E)
7.20 SYS_RENAME(0x0F)
7.21 SYS_SEEK(0x0A)
7.22 SYS_SYSTEM(0x12)
7.23 SYS_TICKFREQ(0x31)
7.24 SYS_TIME(0x11)
7.25 SYS_TMPNAM(0x0D)
7.26 SYS_WRITE(0x05)
7.27 SYS_WRITEC(0x03)
7.28 SYS_WRITE0(0x04)
A 『ソフトウェア開発ガイド』の改訂
A.1 『ソフトウェア開発ガイド』に対する改訂

図の一覧

2-1 C ライブラリの構造
2-2 デフォルトのメモリマップ
2-3 リンカの配置規則
2-4 デフォルトの初期化シーケンス
2-5 C ライブラリのターゲット変更
2-6 スキャッタロード記述の構文
2-7 1 領域モデル
2-8 2 領域モデル
2-9 初期化シーケンス
5-1 例外処理
5-2 PCB のレイアウト
5-3 ARM SVC 命令
5-4 Thumb SVC 命令
5-5 スーパーバイザモードのスタックへのアクセス
6-1 ターゲットとホストデバッグツールの間の DCC 通信
7-1 セミホスティングの概要

表の一覧

1-1 主な機能
1-2 ARMv4T の便利なコマンドラインオプション
1-3 ARMv5TE の便利なコマンドラインオプション
1-4 ARMv6 の便利なコマンドラインオプション
1-5 1 バイト境界整列
1-6 ARMv6-M の便利なコマンドラインオプション
1-7 ARMv7-A の便利なコマンドラインオプション
1-8 ARMv7-R の便利なコマンドラインオプション
1-9 ARMv7-M の便利なコマンドラインオプション
1-10 割り込み組み込み関数
2-1 ARMv7-M のビットバンド領域とエイリアス
3-1 命令の組み込み、インラインアセンブラ、組み込みアセンブラの相違点
5-1 ARMv6 とそれ以前、ARMv7-A、および ARMv7-R プロファイルの優先度別の例外のタイプ
5-2 マイクロコントローラプロファイルの優先度別の例外のタイプ
5-3 SysTick の設定に使用できるレジスタ
7-1 ハードウェアベクタ要因コード
7-2 ソフトウェア要因コード
7-3 モードの値
A-1 発行 J と発行 K の相違点
A-2 発行 I と発行 J の相違点
A-3 発行 H と発行 I の相違点
A-4 発行 G と発行 H の相違点
A-5 発行 F と発行 G の相違点
A-6 発行 D と発行 F の相違点
A-7 発行 C と発行 D の相違点
A-8 発行 B と発行 C の相違点
A-9 発行 A と発行 B の相違点

リリース情報

ドキュメント履歴
発行 日付 機密保持ステータス 変更点
A 28 5 月 2010 非機密扱い ARM コンパイラ v4.1 リリース
B 30 9 月 2010 非機密扱い ARM コンパイラ v4.1 のアップデート 1
C 28 1 月 2011 非機密扱い ARM コンパイラ v4.1 パッチ 3 のアップデート 2
D 30 4 月 2011 非機密扱い ARM コンパイラ v5.0 リリース
E 29 7 月 2011 非機密扱い ARM コンパイラ v5.0 のアップデート 1
F 30 9 月 2011 非機密扱い ARM コンパイラ v5.01 リリース
G 29 2 月 2012 非機密扱い ARM コンパイラ v5.01 リリースマニュアルの更新 1
H 27 7 月 2012 非機密扱い ARM コンパイラ v5.02 リリース
I 31 1 月 2013 非機密扱い ARM コンパイラ v5.03 リリース
J 16 12 月 2013 非機密扱い ARM コンパイラ v5.04 リリース
K 10 9 月 2014 非機密扱い ARM コンパイラ v5.05 リリース

Non-Confidential Proprietary Notice

This document is protected by copyright and other related rights and the practice or implementation of the information contained in this document may be protected by one or more patents or pending patent applications. No part of this document may be reproduced in any form by any means without the express prior written permission of ARM. No license, express or implied, by estoppel or otherwise to any intellectual property rights is granted by this document unless specifically stated.
Your access to the information in this document is conditional upon your acceptance that you will not use or permit others to use the information for the purposes of determining whether implementations infringe any third party patents.
THIS DOCUMENT IS PROVIDED “AS IS”. ARM PROVIDES NO REPRESENTATIONS AND NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, NON-INFRINGEMENT OR FITNESS FOR A PARTICULAR PURPOSE WITH RESPECT TO THE DOCUMENT. For the avoidance of doubt, ARM makes no representation with respect to, and has undertaken no analysis to identify or understand the scope and content of, third party patents, copyrights, trade secrets, or other rights.
This document may include technical inaccuracies or typographical errors.
TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL ARM BE LIABLE FOR ANY DAMAGES, INCLUDING WITHOUT LIMITATION ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF ANY USE OF THIS DOCUMENT, EVEN IF ARM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
This document consists solely of commercial items. You shall be responsible for ensuring that any use, duplication or disclosure of this document complies fully with any relevant export laws and regulations to assure that this document or any portion thereof is not exported, directly or indirectly, in violation of such export laws. Use of the word “partner” in reference to ARM’s customers is not intended to create or refer to any partnership relationship with any other company. ARM may make changes to this document at any time and without notice.
If any of the provisions contained in these terms conflict with any of the provisions of any signed written agreement covering this document with ARM, then the signed written agreement prevails over and supersedes the conflicting provisions of these terms. This document may be translated into other languages for convenience, and you agree that if there is any conflict between the English version of this document and any translation, the terms of the English version of the Agreement shall prevail.
Copyright © [2010-2014], ARM Limited or its affiliates. All rights reserved.
ARM Limited. Company 02557590 registered in England.
110 Fulbourn Road, Cambridge, England CB1 9NJ.
LES-PRE-20349

非機密著作権情報

本書は、著作権などの権利により保護されており、本書に含まれる手順または実装に関する情報は 1 つ以上の特許または申請中の特許により保護されている可能性があります。本書のいかなる部分も、ARM から事前に書面による明示的な承諾なく、 何らかの形式や方法で無断複製することは許可されていません。 特に記載がない限り、明示的であるか黙示的であるかを問わず、また禁反言やその他いかなる知的財産権のライセンスを許諾するものではありません。
本書の情報には、実装により、いかなる第三者の特許も侵害されないことを確認する目的で情報を使用せず、第三者にもそれを許可しないと承諾することを条件としてアクセスすることができます。
本書は、「現状」のまま提供されます。ARM は、明示的、黙示的、または制定法上のいずれを問わず、いかなる表明も保証も行いません。これには、本書に関連した商品性、品質基準、非侵害、または特定目的への適合性に関する黙示的保証を含むが、 これに限定されません。疑義を避けるため、ARM は第三者の特許、著作権、営業機密、または他の権利の範囲および内容に関して、いかなる表明も行わず、識別や理解のための分析も行いません。
本書には、技術的に不正確な箇所および誤記が含まれる場合があります。
法により禁止されていない限りにおいて、ARM は本書の使用により生じた直接的、間接的、特別、付随的、懲罰的、または結果的損害などを含むすべての損害に対して、たとえそのような損害の可能性が事前に告知されていた場合でも、その原因および責任理論の如何に関わらず一切の責任を 負わないものとします。
本書には、商品のみが含まれています。本書の使用、複製、または開示が関連するあらゆる輸出法および輸出規制に完全に準拠し、本書が全体であれ一部であれ、該当する輸出法に違反して直接的または間接的に輸出されることがないことを保証する 責任を負うものとします。ARM のお客様に関連して「パートナー」という言葉が使用されている場合でも、他会社と提携関係を設立することや、言及することを意図するものではありません。ARM は、通知することなくいつでも本書を変更することができます。
本契約のいずれかの規定と、ARM と締結された本書の内容を含む署名済みの書面契約の間に矛盾がある場合、署名済みの書面契約を本契約の規定より優先するものとします。本書は、 便宜上、他言語に翻訳される場合がありますが、本書の英語版と翻訳との間に矛盾がある場合、契約書の英語版に含まれる規定を優先することに同意するものとします。
記号 ( ® または ™ ) が付いた言葉およびロゴは、ARM Limited や関連会社の EU またはその他の国における登録商標および商標です。All rights reserved.本書に記載されている他の製品名は、各社の所有する商標です。ARM の 商標の使用に関する次のガイドラインに従ってください。 http://www.arm.com/about/trademark-usage-guidelines.php
Copyright © [2010-2014], ARM Limited or its affiliates. All rights reserved.
ARM Limited. Company 02557590 registered in England.
110 Fulbourn Road, Cambridge, England CB1 9NJ.
LES-PRE-20349

機密保持ステータス

本書は非機密扱いであり、本書を使用、複製、および開示する権利は、ARM および ARM が本書を提供した当事者との間で締結した契約の条項に基づいたライセンスの制限により異なります。
無制限アクセスは、ARM 社内による分類です。

製品ステータス

本書の情報は最終版であり、開発済み製品に対応しています。

Web アドレス

非機密扱いPDF file icon PDF 版ARM DUI0471KJ
Copyright © 2010-2014 ARM.All rights reserved.