ARM® コンパイラツールチェーン ARM® プロセッサをターゲットとしたソフトウェア開発

バージョン 4.1


List of Topics

表記規則とフィードバック
ARM アーキテクチャバージョンの主な機能
ARM アーキテクチャについて
マルチプロセッサシステム
マルチプロセッサシステムに対応するソフトウェアの設計に関する注意事項
密結合メモリ
メモリ管理
Thumb-2 テクノロジ
ARM および Thumb の浮動小数点ビルドオプション(ARMv6 以前)
ARM および Thumb-2 の浮動小数点ビルドオプション(ARMv7 以降)
ARM アーキテクチャ v4T
ARM アーキテクチャ v5TE
ARM アーキテクチャ v6
ARM アーキテクチャ v6-M
ARM アーキテクチャ v7-A
ARM アーキテクチャ v7-R
ARM アーキテクチャ v7-M
組み込みソフトウェアの開発
組み込みソフトウェアの開発について
コンパイルツールのデフォルトの動作
C ライブラリの構造
デフォルトのメモリマップ
アプリケーションの起動
ターゲットハードウェアに合わせた C ライブラリのカスタマイズ
ターゲットハードウェアに合わせたイメージのメモリマップのカスタマイズ
スキャッタロード記述ファイル
ルート領域
スタックとヒープの配置
ランタイムメモリモデル
ビットバンドオブジェクトへのリンクを含むスキャッタロードファイル
リセットと初期化
ベクタテーブル
ROM および RAM のリマップ
ローカルメモリのセットアップに関する注意事項
スタックポインタの初期化
ハードウェアの初期化
実行モードに関する注意事項
ターゲットハードウェアおよびメモリマップ
C、C++、およびアセンブリ言語の混用
命令の組み込み関数、インラインアセンブラ、および組み込みアセンブラ
アセンブリコードから C グローバル変数へのアクセス
C++ からのシステム C ヘッダファイルのインクルード
C++ からの独自の C ヘッダファイルのインクルード
混合言語プログラミング
C、C++、およびアセンブリ言語間の呼び出しに関する規則
C およびアセンブリ言語からの C++ 関数の呼び出しに関する規則
C++ に関する情報
言語間の呼び出しのサンプル
C からのアセンブリ言語の呼び出し
アセンブリ言語からの C の呼び出し
C++ からの C の呼び出し
C++ からのアセンブリ言語の呼び出し
C からの C++ の呼び出し
アセンブリ言語からの C++ の呼び出し
C 言語またはアセンブリ言語からの C++ 言語の呼び出し
C 言語と C++ 言語間での参照の受け渡し
ARM と Thumb のインターワーク
インターワークについて
インターワークに適した状況
アセンブリ言語のインターワーク
C および C++ のインターワーク
Thumb 状態の関数へのポインタ
同一関数の 2 つのコピーの使用
アセンブリ言語のインターワークの例
ベニアを使用したインターワーク
C 言語と C++ 言語のインターワーク
ベニアを使用した C、C++、およびアセンブリ言語のインターワーク
プロセッサ例外処理
プロセッサ例外について
例外処理プロセス
ARMv6 とそれ以前、ARMv7-A、および ARMv7-R プロファイルの例外のタイプ
ARMv6 とそれ以前、ARMv7-A、および ARMv7-R プロファイルのベクタテーブル
ARMv6 とそれ以前、ARMv7-A、および ARMv7-R プロファイルのプロセッサモードおよびレジスタ
例外処理のためのシステムモードの使用
例外に対するプロセッサの応答
例外ハンドラからの復帰
リセットハンドラ
データアボートハンドラ
割り込みハンドラと外部割り込みのレベル
再入可能割り込みハンドラ
アセンブリ言語を使用した割り込みハンドラの例
シングルチャネル DMA 転送
デュアルチャネル DMA 転送
割り込みの優先度
コンテキストスイッチ
SVC ハンドラ
呼び出す SVC の決定
アセンブリ言語を使用した SVC ハンドラ
C 言語およびアセンブリ言語を使用した SVC ハンドラ
スーパーバイザモードでの SVC の使用
アプリケーションからの SVC の呼び出し
アプリケーションからの動的な SVC の呼び出し
プリフェッチアボートハンドラ
未定義命令ハンドラ
ARMv6-M および ARMv7-M プロファイル
メインスタックおよびプロセススタック
マイクロコントローラプロファイルの例外のタイプ
ARMv6-M および ARMv7-M プロファイルのベクタテーブル
ベクタテーブルオフセットレジスタ(ARMv7-M のみ)
ARMv6-M および ARMv7-M プロファイルの例外テーブルの書き込み
ネストされたベクタ割り込みコントローラ
例外処理
システム制御空間レジスタの設定
個別の IRQ の設定
スーパーバイザコール
システムタイマ
SysTick の設定
デバッグ通信チャネル
デバッグ通信チャネルについて
ターゲットとホストデバッグツールの間の DCC 通信
割り込み駆動型デバッグ通信
Thumb 状態からのアクセス
セミホスティング
セミホスティングとは
セミホスティングインタフェース
セミホスティングオペレーションの番号の変更について
セミホスティングオペレーション
デバッグエージェントインタラクション SVC
angel_SWIreason_EnterSVC(0x17)
angel_SWIreason_ReportException(0x18)
SYS_CLOSE(0x02)
SYS_CLOCK(0x10)
SYS_ELAPSED(0x30)
SYS_ERRNO(0x13)
SYS_FLEN(0x0C)
SYS_GET_CMDLINE(0x15)
SYS_HEAPINFO(0x16)
SYS_ISERROR(0x08)
SYS_ISTTY(0x09)
SYS_OPEN(0x01)
SYS_READ(0x06)
SYS_READC(0x07)
SYS_REMOVE(0x0E)
SYS_RENAME(0x0F)
SYS_SEEK(0x0A)
SYS_SYSTEM(0x12)
SYS_TICKFREQ(0x31)
SYS_TIME(0x11)
SYS_TMPNAM(0x0D)
SYS_WRITE(0x05)
SYS_WRITEC(0x03)
SYS_WRITE0(0x04)
『ARM プロセッサをターゲットとしたソフトウェア開発』に対する改訂

著作権

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

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

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

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

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

機密保持ステータス

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

製品ステータス

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

Revision History
Revision A2010 年 5 月ARM コンパイラツールチェーン v4.1 リリース
Revision B2010 年 10 月 7 日ARM コンパイラツールチェーン v4.1 のアップデート 1
Copyright © 2010 ARM. All rights reserved.ARM DUI 0471BJ
Non-ConfidentialID011811