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

バージョン 5.04


目次

序章
本書について
本書の構成
表記規則
Feedback
本製品に関するフィードバック
内容に関するフィードバック
1 ARM アーキテクチャバージョンの主な機能
1.1 ARM アーキテクチャについて
1.2 マルチプロセッサシステム
1.3 マルチプロセッサシステムに対応するソフトウェアの設計に関する注意事項
1.4 密結合メモリ
1.5 メモリ管理
1.6 Thumb-2 テクノロジ
1.7 ARM および Thumb の浮動小数点ビルドオプション(ARMv6 以前)
1.8 ARM および Thumb の浮動小数点ビルドオプション(ARMv7 以降)
1.9 ARM アーキテクチャプロファイル
1.10 ARM アーキテクチャ v4T
1.11 ARM アーキテクチャ v5TE
1.12 ARM アーキテクチャ v6
1.13 ARM アーキテクチャ v6-M
1.14 ARM アーキテクチャ v7-A
1.15 ARM アーキテクチャ v7-R
1.16 ARM アーキテクチャ v7-M
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 同一関数の 2 つのコピーの使用
4.7 アセンブリ言語のインターワークの例
4.8 ベニアを使用したインターワーク
4.9 C 言語と C++ 言語のインターワーク
4.10 ベニアを使用した 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 発行 I と発行 J の相違点
A-2 発行 H と発行 I の相違点
A-3 発行 G と発行 H の相違点
A-4 発行 F と発行 G の相違点
A-5 発行 D と発行 F の相違点
A-6 発行 C と発行 D の相違点
A-7 発行 B と発行 C の相違点
A-8 発行 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 リリース

著作権

® または ™ のマークが付いた言葉およびロゴは、この著作権情報で別段に規定されている場合を除き、ARM® の EU またはその他の国における登録商標および商標です。本書に記載されている他の製品名は、各社の所有する商標です。

本書に記載されている情報の全部または一部、ならびに本書で紹介する製品は、著作権所有者の文書による事前の許可を得ない限り、転用・複製することを禁じます。

本書に記載されている製品は、今後も継続的に開発・改良の対象となります。本書に含まれる製品およびその利用方法についての情報は、ARM が利用者の利益のために提供するものです。したがって当社では、製品の市販性または利用の適切性を含め、暗示的・明示的に関係なく一切の責任を負いません。

本書は、本製品の利用者をサポートすることだけを目的としています。本書に記載されている情報の使用、情報の誤りまたは省略、あるいは本製品の誤使用によって発生したいかなる損失・損傷についても、ARM は一切責任を負いません。

ARM という用語が使用されている場合、"ARM または必要に応じてその子会社" を指します。

機密保持ステータス

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

無制限アクセスは、ARM 社内による分類です。

製品ステータス

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

Web アドレス

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