Skip to main content

IAR Embedded Workbench for Arm 9.70.x

用語集

このセクションの内容:

これは、組み込みシステムのプログラミングに関連する用語の一般的な用語集です。一部の用語は、お使いのIAR Embedded Workbench®バージョンには適用されません。

用語集

A

AEABI

Arm Limitedが定義するEmbedded Application Binary Interface for Arm。

Ar

アーカイブ、つまりライブラリを作成、変更、抽出するためのGNUバイナリユーティリティ。

Iarchive参照

アーカイブ

ライブラリ参照

アーキテクチャ

コンピュータ設計者が複雑な情報処理システムの構造を示すために使用する用語。これには、使用される命令やデータの種類、メモリの構成やアドレス指定方法、およびシステムの実装方法などが含まれます。プロセッサ設計で使用される 2 つの主なアーキテクチャタイプは、 ハーバード型および フォン・ノイマン型 と呼ばれます。

ハーバードアーキテクチャ, フォンノイマン型アーキテクチャ参照

アセンブラオプション

アセンブラのデフォルトの動作を変更するためのパラメータ。

アセンブラディレクティブ

アセンブラの動作方法を制御するコマンドのセット。

アセンブラ言語

ターゲットプロセッサと入力または出力レジスタまたはデータ領域への操作を指定するために使用されるマシン固有のニーモニックセット。アセンブラ言語は、メモリを節約したり、アプリケーションの実行速度を高めたりするために、C/C++ よりも優先される場合があります。

アドレス式

値としてアドレスを持つ式。

アプリケーション

IAR ツールキットのユーザーが開発したプログラムで、ターゲットプロセッサ上で組込みアプリケーションとして実行される。

自動変数

この用語は、変数が宣言されている関数が呼び出されるたびに、変数の新しいインスタンスが自動的に作成されることを指します。これは、関数が再帰的に呼び出された場合でも、ローカル変数が 1 つのインスタンスにのみ存在する静的オーバーレイを使用するシステムのローカル変数の挙動と比較できます。ローカル変数とも呼ばれます。

レジスタ変数参照

絶対アドレス

リンカによってオブジェクトにアドレスが割り当てられるのではなく、ソースコードで指定されたオブジェクトの特定のメモリアドレス

属性

セクション属性参照

B

バックトレース

IAR C-SPY®デバッガが関数から正しく戻れるように、コールフレーム情報を最新の状態に保つための情報。

コールフレーム情報参照

バッチファイル

コマンドラインインタプリタによって実行されるオペレーティングシステムコマンドを含むテキストファイル。Unixでは、コマンドラインインタプリタがUnixシェルに含まれているため、「シェルスクリプト」と呼ばれます。バッチファイルは、既存のコマンドを組み合わせ、新しいコマンドとして実行することができる簡単な方法として使用できます。

バンク

メモリバンク参照

バンクコード

複数のメモリバンクに分散したコード。各関数は 1 つのバンクにのみ存在する必要があります。

バンクデータ

複数のメモリバンクに分散したデータ。各データオブジェクトは 1 つのメモリバンク内に収まる必要があります。

バンクメモリ

同じアドレスに複数の格納場所があるメモリ。

メモリバンク参照

バンク切替え

異なるメモリバンク間の切替え。このソフトウェア技術は、異なるメモリが同じアドレス空間を占有できるようにすることで、コンピュータの使用可能なメモリを増やします。

バンク切替えルーチン

メモリバンクを選択するコード。

ビットフィールド

1単位としてみなされるビットのグループ。

ブレークポイント
  1. コード ブレークポイント。そこに到達すると、デバッグプロセスに役立つ特別な動作をトリガーするプログラムのポイント。一般的に、ブレークポイントはプログラムの実行を停止したり、プログラム変数の一部または全部の値をダンプしたりするために使用されます。ブレークポイントは、プログラム自体の一部として設定することも、プログラムの実行を精査するためのデバッグツールを使用したインタラクティブセッションの一部としてプログラマが設定することもできます。

  2. データブレークポイント。アクセスすると、デバッグプロセスに役立つ特別な動作をトリガするメモリ内のポイント。一般的に、データブレークポイントは、読み取り操作または書き込み操作のいずれかによって、あるアドレスの場所にアクセスされたときにプログラムの実行を停止するために使用されます。

  3. イミディエイトブレークポイント。アクセスすると、デバッグプロセスで役立つ特別な動作をトリガするメモリ内のポイント。イミディエイトブレークポイントは、一般的に、ユーザー指定のアクションを実行しながら、メモリアクセス命令の途中でプログラムの実行を停止するために使用されます (アクセスタイプによっては、実際のメモリアクセスの前または後)。その後、実行が再開されます。この機能は、C-SPYのシミュレータバージョンでのみ使用できます。

ブロック(リンカ設定ファイル内)

連続したコードまたはデータ。ブロック、オーバーレイ、セクションのいずれかで構成され、空の場合もあります。ブロックには名前があり、ブロックの開始アドレスと終了アドレスはアプリケーションから参照できます。最大サイズ、特定のサイズ、最小アライメントなどの属性を指定できます。内容の順序は固定または任意です。

C

C-SPYオプション

IAR C-SPYデバッガのデフォルトの動作を変更するために指定できるパラメータ。

CRC (巡回冗長検査)

バイナリ多項式と初期値に基づくチェックサムアルゴリズム。CRCアルゴリズムは、単純な算術チェックサムアルゴリズムよりも複雑で、エラー検出能力が高くなっています。現在広く使用されているチェックサム計算アルゴリズムのほとんどはCRCに基づいています。

チェックサム参照

Cstartup

アプリケーションが実行を開始する前にシステムをセットアップするコード。

Cスタイルのプリプロセッサ

プリプロセッサは、スタンドアロンのアプリケーションか、コンパイラに統合された機能のいずれかで、実際のコンパイルが実行される前に入力ストリームの前処理を実行します。Cスタイルのプリプロセッサは、標準Cで設定されたルールに従い、 #define#if#includeなどのテキストマクロ置換、条件付きコンパイル、および他のファイルのインクルードなどを処理するためのコマンドが実装されています。

コードセクション

コードを含む読み取り専用のセクション

セクション参照

コードバンキング

バンクコード参照

コードポインタ

コードポインタは関数ポインタです。多くのマイクロコントローラは複数の異なる方法で関数を呼び出せるため、組込みシステム用のコンパイラでは通常これらの方法をすべて使用できます。

コードポインタとデータポインタを混同しないでください。

コードモデル

コードモデルは、アプリケーションのコードの生成方法を制御します。通常、コードモデルは、関数の呼び出し方法や、どのコードセグメント /セクションに関数が配置されるかなどの動作を制御します。アプリケーションのすべてのオブジェクトファイルは、同じコードモデルを使用してコンパイルする必要があります。

コールフレーム情報

IAR C-SPY®デバッガが、プログラムカウンタの位置に関係なく、コンパイルされた C 関数からのコードの場合に限り、実行時のパフォーマンス低下なしに関数呼び出しの完全なスタック—コールスタック—を表示するための情報。

バックトレース参照

コンテキストメニュー

ユーザーインターフェースを右クリックすると表示されるメニュー。コンテキスト固有のメニューコマンドが提供されます。

コンパイラオプション

コンパイラのデフォルトの動作を変更するためのパラメータ。

コンパイルユニット

翻訳単位参照

チェックサム

転送または保存中に発生した可能性のあるエラーを検出するために、大きなデータブロックから計算された小さなデータ。

CRC (巡回冗長検査)参照

呼び出し規約

呼び出し規約は、プログラム内の 1 つの関数が別の関数を呼び出す方法を規定したもの。これには、レジスタパラメータの処理方法、戻り値の返却方法、呼び出された関数によって保持されるレジスタが含まれます。コンパイラは、すべての C および C++ 関数に対してこれを自動的に処理します。アセンブラ言語で書かれたすべてのコードは、Cまたは C++から呼び出すことができるように、呼び出し規約の規則に準拠している必要があります。C呼び出し規約とC++呼び出し規約は必ずしも同じではありません。

D

DWARF

ソースレベルでのデバッグをサポートする、業界標準のデバッグフォーマット。IAR ILINKリンカがオブジェクトのデバッグ情報を表現するために使用するフォーマットです。

データバンキング

バンクデータ参照

データポインタ

多くのコアには、異なるメモリタイプまたはアドレス空間にアクセスするための異なるアドレス指定モードがあります。組込みシステム用のコンパイラは、通常、利用可能なメモリに効率的にアクセスできるように、さまざまなデータポインタタイプのセットを持っています。

データモデル

データモデルは、デフォルトのメモリタイプを指定します。つまり、データモデルは通常、次を制御します。静的およびグローバル変数、動的に割り当てられたデータ、およびランタイムスタックにアクセスするために使用されるメソッドと生成されるコード。また、デフォルトのポインタタイプと、静的変数とグローバル変数が配置されるデータセクションも制御します。プロジェクトは一度に 1 つのデータモデルのみ使用でき、プロジェクト内のすべてのユーザーモジュールとすべてのライブラリモジュールで同じモデルを使用する必要があります。

データ表現

さまざまなデータ型がメモリ内でどのように配置され、どのような値の範囲を表すか。

デジタルシグナルプロセッサ (DSP)

マイクロプロセッサに類似したデバイスですが、内部CPUが離散時間信号処理を含むアプリケーションでの使用に最適化されています。デジタルシグナルプロセッサは、マイクロプロセッサの標準的な命令に加えて、一般的な信号処理計算を高速に実行するための一連の複雑な命令セットをサポートしています。

デバイスドライバ

特定の周辺機器に対して高レベルのプログラムインターフェースを提供するソフトウェア。

デバイス記述ファイル

C-SPYが使用するファイルで、I/Oレジスタ (SFR) の定義、割り込みベクタ、制御レジスタの定義など、デバイス固有のさまざまな情報が含まれています。

デマングリング

マングル化された名前を、より一般的なC/C++ 名に復元すること。

マングリング参照

逆アセンブリウインドウ

メモリの内容を逆アセンブルしてマシン命令に変換し、対応する C ソースコード (利用可能な場合) が挿入されて表示されるC-SPYウィンドウ。

宣言

オブジェクト、変数、または関数が存在することをコンパイラに明示すること。オブジェクト自体は、正確に1つの翻訳単位 (ソースファイル) だけで定義する必要があります。オブジェクトは、使用する前に宣言または定義する必要があります。通常、多くのファイルで使用されるオブジェクトは、1 つのソースファイルで定義されます。宣言は通常、オブジェクトを使用するファイルに含まれるヘッダファイルに配置されます。以下に例を示します。

/* Variable "a" exists somewhere. Function
 "b" takes two int parameters and returns an
 int. */

extern int a; 
int b(int, int);
定義

変数または関数そのもの。アプリケーション内に変数または関数の定義は一つずつしか存在できません。

仮定義参照

以下に例を示します。

int a;
int b(int x, int y)
{
   return x + y;
}
動的オブジェクト

実行時で割当て、作成、破棄、解放されるオブジェクト。動的オブジェクトは、ほとんどの場合、動的に割り当てられたメモリに格納されます。

静的オブジェクト参照

動的メモリ割当て

変数を格納するには、リンク時に静的に行う方法と、実行時に動的に行う方法の 2 つの主な方法があります。動的メモリ割当ては、多くの場合ヒープから実行されます。ヒープサイズによって動的オブジェクトや変数に使用できるメモリの量が決まります。動的メモリ割当ての利点は、同時に使用されない複数の変数やオブジェクトを同じメモリに格納できるため、アプリケーションで必要なメモリ量を削減できることです。

ヒープメモリ参照

動的初期化

C言語で記述されたプログラム内の変数は、main関数が呼び出される前の実行の初期段階で初期化されます。これらの変数はコンパイル時またはリンク時に決定される静的な値で初期化されます。これを静的初期化と呼びます。C++では、グローバルオブジェクトのコンストラクタや動的メモリ割当てなどのコードを実行することで、変数の初期化が必要な場合があります。

E

EEPROM

電気的に消去可能でプログラム可能な読み取り専用メモリ(Electrically Erasable, Programmable Read-Only Memory)。電子的に消去して書き換えることが可能な ROM。

ELF

Executable and Linking Format、業界標準のオブジェクトファイルフォーマット。IAR ILINKリンカが使用するフォーマットです。デバッグ情報はDWARFを使用してフォーマットされます。

EPROM

消去可能でプログラム可能な読み取り専用メモリ(Erasable, Programmable Read-Only Memory)。紫外線の照射により消去でき、その後書き換えることが可能なROM。

Embedded C++

組込みシステムのプログラミング用に設計されたC++ プログラミング言語のサブセット。組込みシステムの開発では、パフォーマンスと移植性が特に重要であることを考慮して、この言語が設計されています。

Enea OSE Loadモジュールフォーマット

OSEオペレーティングシステムによってロード可能な特別のELFフォーマット。

ELF参照

エミュレータ

プロセッサファミリの 1 つ以上の派生品のエミュレーションを実行するハードウェアデバイス。エミュレータは、実際のコアの代わりに使用できることが多く、接続装置を介して、コアが接続されていたプリント基板に直接接続します。エミュレータは常にエミュレートするプロセッサとまったく同じように動作し、デバッグにすべてのシステムアクチュエータが必要な場合や、デバイスドライバのデバッグ時に使用されます。

拡張キーワード

CおよびC++の非標準キーワード。これらは通常、オブジェクト (データと関数) の定義と宣言を制御します。

キーワード参照

実行可能イメージ

実行可能なイメージを含みます。いくつかの再配置可能なオブジェクトファイルおよびライブラリをリンクした結果です。オブジェクトファイルに使用されるファイル形式は、デバッグ情報用の DWARFを組み込んだELFです。

組込みシステム

特定の目的のために設計されたハードウェアとソフトウェアの組み合わせ。組込みシステムは、多くの場合、より大きなシステムや製品の一部として組み込まれています。

例外

例外とは、プロセッサハードウェア、またはプロセッサと密接に結合したハードウェア (メモリ管理ユニット (MMU) など) によって発生される割り込みです。この例外は、アーキテクチャのルール違反 (保護されたメモリへのアクセス) または極端なエラー状態 (ゼロ除算) を通知します。この用語を、C++言語 (Embedded C++ は除く) で使用される例外という用語と混同しないでください。

列挙型

定義にそのタイプの変数の可能な値の包括的なリストを含むタイプ。一般的な例としては、[true、false] のリストから値を取るBooleanや、[Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] の値を取るday-of-weekがあります。列挙型は、CやAdaなどの型付き言語の機能です。文字、固定サイズの整数、さらには浮動小数点型も (大きな意味では) 列挙型と見なされる場合があります(通常は列挙型には属さない)。

F

フィル

実行可能イメージ内のセクションの間に存在するバイトを、特定のフィルパターンで埋める方法。これらのバイトはセクションのアライメント要件のために存在します。

フォーマット指定子

printfなどのライブラリ関数によって送信される文字列の形式を指定するために使用します。次の例では、関数呼び出しには 1 つのフォーマット文字列と1つのフォーマット指定子%cが含まれており、aの値を単一のASCII文字として出力します。

printf("a = %c", a);

G

一般オプション

IDEに含まれるすべてのツールのデフォルトの動作を変更するパラメータ。

汎用ポインタ

ハーバードアーキテクチャベースのコアなどで、すべての異なるメモリタイプを指すことができるポインタ。

H

ハーバードアーキテクチャ

ハーバードアーキテクチャに基づくコアは、独立したデータバスと命令バスを備えています。これにより、並行して実行することができます。命令のフェッチ中に、現在の命令がデータバス上で実行されます。現在の命令が完了すると、次の命令をすぐに実行できます。これにより、理論的にはフォンノイマンアーキテクチャよりもはるかに高速に実行が可能になりますが、回路は複雑になります。

フォンノイマン型アーキテクチャ参照

ヒープサイズ

動的に割り当てることができるメモリの合計サイズ。

ヒープメモリ

ヒープは、動的メモリ割り当て用に予約されているシステム内のメモリプールです。アプリケーションは、ヒープの一部を独自に使用できるよう要求できます。ヒープからメモリが割り当てられると、アプリケーションによってヒープに明示的にリリースされるまでメモリは有効なままになります。このタイプのメモリは、アプリケーションが実行されるまでオブジェクトの数がわからない場合に便利です。

このタイプのメモリは、メモリ容量が限られているシステムや、非常に長時間動作することが予想されるシステムでの使用は危険であることにご注意ください。

ホスト

ターゲットプロセッサと通信するコンピュータ。この用語は、デバッガが実行されているコンピュータと、開発した組込みアプリケーションが実行されているコアを区別するために使用されます。

I

IDE (統合開発環境)

必要なすべてのツールが 1 つのアプリケーションに統合されたプログラミング環境。

絶対出力をELF/DWARF形式で生成するIAR ILINKリンカ。

ILINK設定

利用可能な物理メモリの定義と、それらのメモリへのセクション(コードとデータ)の配置を行う設定。ILINKは、実行可能イメージをビルドするために設定が必要です。

Iarchive

アーカイブ(ライブラリ)を作成するためのIARユーティリティ。IarchiveはIAR Embedded Workbenchに付属しています。

Ielfdumparm

ELFの再配置可能イメージまたは実行可能イメージの内容をテキスト表示するIARユーティリティ。

Ielftool

フィル、チェックサム、フォーマット変換など、 ELF実行可能イメージでさまざまな変換を実行するためのIARユーティリティ。

Intrinsic

ネイティブコンパイラオブジェクト、プロパティ、イベント、メソッドを説明する形容詞。

Iobjmanip

ELFオブジェクトファイルの低レベル操作を実行するためのIARユーティリティ。

イメージ

実行可能イメージ参照

インクルードファイル

ソースファイルにインクルードされるテキストファイル。これは多くの場合、プリプロセッサによって行われます。

インラインアセンブラ

C言語の文の間に直接挿入するアセンブラ言語コード。

インライン化

関数呼出しを呼び出した関数の本文に置き換える最適化。この最適化により、実行速度が向上し、生成されたコードのサイズを縮小することもできます。

リンカ設定ファイルの初期化設定

RAMセクションをイニシャライザで初期化する方法を定義します。通常、定数ではなくnoinitでもない変数のみが初期化されますが、たとえば、コードの一部も初期化できます。

割込み

組込みシステムでは、割込みは、タイマーのオーバーフローやボタンの押下など、外部イベントを即座に検出する方法として使用されます。割込みは、通常の処理を中断し、「割込みハンドラ」ルーチンに制御フローを一時的に渡す非同期イベントです。割込みは、ハードウェア (入出力、タイマ、マシンチェック) とソフトウェア (スーパーバイザー、システムコール、トラップ命令) の両方によって引き起こされる可能性があります。

トラップ参照

割込みベクタ

割込みが発生したときに実行される小さなコード、または実行されるコードを指すポインタ。

割込みベクタテーブル

割込みタイプ別に割込みベクトルがインデックス化されたテーブル。このテーブルには、割込みと割込みサービスルーチン間のプロセッサのマッピングが含まれており、プログラマによって初期化する必要があります。

初期化されたセクション

起動時に特定の値で初期化すべき読み取り/書き込み可能なセクション

セクション参照

組み込み関数

1. 特定のマシンコードシーケンスに直接展開される関数呼び出し。2. コンパイラによって内部的な目的のために呼び出される関数 (浮動小数点演算など)。

命令ニーモニック

アセンブラ言語でマシン命令を表現するために使用される語または接頭語。プロセッサによって命令セットが異なるため、 ADDBR(分岐)、 BLT(値が小さい場合に分岐)、 MOVELDR(レジスタにロード) などの命令を表現するニーモニックセットも異なります。

K

キーカスタマイズ

IDEで使用されるメニューコマンドのキーショートカット。

キーワード

プログラミング言語の構文に組み込まれた固定シンボルセット。言語で使用されるキーワードはすべて予約されています。識別子 (変数やプロシージャなどのユーザー定義オブジェクト) として使用することはできません。

拡張キーワード参照

L

L-value

代入文の左辺にある値で、変更することができます。これには、プレーンな変数や逆参照されたポインタが含まれます。(x + 10) のような式には新しい値を代入することができないため、L-valueではありません。

ライブラリ

ランタイムライブラリ参照

ライブラリ設定ファイル

ランタイムライブラリの設定が記述されたファイル。ファイルには、ランタイム環境の一部となる機能に関する情報が含まれています。このファイルは、ランタイムライブラリのビルドをカスタマイズするために使用されます。

ランタイムライブラリ参照

IAR ILINKリンカが実行可能イメージをビルドする際に使用する設定を含むファイル。

ILINK設定参照

ローカル変数

自動変数参照

ロケーションカウンタ

プログラムロケーションカウンタ (PLC)参照

言語拡張

ターゲット固有のC言語拡張。

論理アドレス

仮想アドレス (論理アドレス)参照

M

MAC (積和演算)

加算とともに乗算を実行する特殊な命令、またはオンチップデバイス。これは、多くのフィルタと変換が次の形式を持つ信号処理を実行する場合に非常に便利です。

MAC_glossary_01.png

MACのアキュムレータは通常、通常のレジスタよりも高い精度 (より多くのビット数) となっています。

デジタルシグナルプロセッサ (DSP)参照

マイクロコントローラ

組込みシステムとして動作することを目的とした単一集積回路上のマイクロプロセッサ。マイクロコントローラには通常、CPUに加えて、少容量のRAM、PROM、タイマ、および I/Oポートが含まれています。

マイクロプロセッサ

1つ (または数個) の集積回路に内蔵されたCPU。シングルチップマイクロプロセッサには、メモリ、メモリ管理、キャッシュ、浮動小数点演算ユニット、I/O ポート、タイマーなどの他のコンポーネントが含まれる場合があります。そのようなデバイスは、マイクロコントローラとも呼ばれます。

マクロ
  1. アセンブラマクロは、ユーザー定義のアセンブラ行のセットで、指定されたマクロ名を参照してソースファイル内で後で展開できます。参照されている場合、パラメータは置換されます。

  2. Cマクロ。ソースファイルの前処理中に使用されるテキスト置換メカニズム。マクロは#defineプリプロセッサディレクティブを使用して定義されます。各マクロの置換テキストは、翻訳単位の残りの部分でマクロ名が発生した場合に置換されます。

  3. C-SPYマクロは、C-SPYの機能を強化するためにユーザが記述できるプログラムです。C-SPYマクロの典型的な用途は、ブレークポイントに関連付けることです。ブレークポイントに到達するとマクロが実行され、周辺デバイスのシミュレーション、複雑な条件の評価、トレースの出力などに使用できます。

C-SPYマクロ言語は、C言語に似たシンプルな言語ですが、型に関してはそれほど厳密ではありません。

マングリング

マングリングは、複雑なC/C++名をシンプルな名前にマッピングするために使用される技術です。ILINKメッセージのC/C++シンボルには、マングル化した名前とデマングル化した名前の両方を生成できます。

メールボックス

RTOSでのメールボックスとは、複数のタスク間の通信拠点です。1 つのタスクは、メッセージを別のタスクのメールボックスに配置することで、別のタスクにメッセージを送信できます。メールボックスは、メッセージキューまたはメッセージポートとも呼ばれます。

メモリ、リンカ設定ファイル内

物理メモリ。含まれるユニット数とユニットのビット数は、リンカ設定ファイルで定義されます。メモリは常に0x0からsize -1 までアドレス指定可能です。

メモリエリア

メモリの領域。

メモリバンク

バンクメモリ内の連続メモリの最小単位。コアの物理アドレス空間で、一度に認識できるメモリバンクは一つです。

メモリマップ

コアで使用可能なさまざまなメモリエリアのマップ。

メモリモデル

メモリ階層や、システムが処理できるメモリ容量を示します。アプリケーションは一度に 1 つのメモリモデルのみを使用し、すべてのユーザモジュールとすべてのライブラリモジュールで同じモデルを使用する必要があります。

モジュール

オブジェクト。オブジェクトファイルにはモジュールが含まれており、ライブラリには 1 つ以上のオブジェクトが含まれています。リンクの基本単位です。モジュールには、シンボル の定義 (エクスポート)と、外部シンボル への参照 (インポート)が含まれています。C/C++をコンパイルすると、各翻訳単位ごとに1つのモジュールが生成されます。

複数ファイルのコンパイル

コンパイラが複数のソースファイルを 1 つのコンパイル単位としてコンパイルする技術で、コンパイル単位内の複数のソースファイルに対して、インライン化、クロスコール、クロスジャンプなどのプロシージャ間の最適化を行うことができます。

N

NOP

No operation(無動作命令)の略。これは何も実行しない命令ですが、遅延を作成するために使用されます。パイプライン アーキテクチャでは、パイプラインの同期にNOP命令を使用できます。

パイプライン参照

ネスト割込み

ある割り込みが別の割り込みによって中断されるシステムでは、ネスト割込み機能があると言います。

非バンクメモリ

コアの物理アドレス空間内の各メモリアドレスに対して一つの格納場所があること。

非初期化セクション

起動時に初期化されないRead-write セクション

セクション参照

非初期化メモリ

リセット時に任意の値を保持できるメモリ、またはソフトリセットの場合には、リセット前の値を記憶できるメモリ。

不揮発性ストレージ

バッテリーバックアップRAM、ROM、磁気テープ、磁気ディスクなどの、電源がオフになってもデータを保持できるメモリデバイス。

揮発性ストレージ参照

O

Objcopy

ELF形式の絶対オブジェクトファイルを、たとえばMotorola-stdまたはIntel-std形式の絶対オブジェクトファイルに変換するためのGNUバイナリ ユーティリティ。

Ielftool参照

オーバーレイ、リンカ設定ファイル内

ブロックに似ていますが、複数のオーバーレイされたエンティティが含まれており、各エンティティはブロック、オーバーレイ、セクションで構成されています。オーバーレイのサイズは、その最大構成要素によって決まります。オーバーレイされたメモリエリア内のコードは、C-SPYデバッガではデバッグできません。

オブジェクト

オブジェクトファイルまたはライブラリメンバ。

オブジェクトファイル、再配置可能

ソースファイルのコンパイルまたはアセンブルの結果。オブジェクトファイルに使用されるファイル形式は、デバッグ情報用の DWARFを組み込んだELFです。

オブジェクトファイル、絶対

実行可能イメージ参照

オプション

コンパイラやリンカなど、ツールの動作を制御するコマンドのセット。オプションは、コマンドラインまたは IDE で指定できます。

演算子

関数として使用されるシンボルで、引数が2つある場合は中置記法(+ など)、1つしかない場合は前置記法(ビット否定の ~など)となります。多くの言語では、算術や論理などの組込み関数に演算子を使用します。

演算子の優先順位

各演算子には、演算子とそのオペランドが評価される順序を決定する優先順位番号が割り当てられています。最も優先度の高い演算子が最初に評価されます。括弧を使用して演算子とオペランドをグループ化し、式の評価順序を制御します。

出力イメージ

実行可能イメージ参照

P

#pragma

C/C++プログラムのコンパイル中、#pragmaプリプロセッサディレクティブにより、コンパイラは実装定義の方法で動作します。これには、コンソールでの出力生成、後続オブジェクトの宣言の変更、最適化レベルの変更、言語拡張の有効/無効の切り替えなどが含まれます。

PROM

プログラム可能な読み取り専用メモリ(Programmable Read-Only Memory)。1 回のみプログラムできるタイプの ROM。

パイプライン

命令の処理工程が一連の複数のステージからなる構造。パイプラインの中で他の処理がすでに進行中であっても、パイプラインの先頭で新しい処理を開始できます。

パラメータの受け渡し

呼び出し規約参照

プリエンプティブマルチタスク

RTOSタスクは、優先度の高いプロセスが有効になるまで実行できます。割り込みの結果、優先度の高いタスクがアクティブになる可能性があります。プリエンプティブという用語は、タスクが所定の時間 (タイムスライス) を実行するように割り当てられているにもかかわらず、いつでもプロセッサの使用権を失う可能性があることを示します。割り込みが発生するたびに、タスク スケジューラはそのときに有効なタスクの中で優先順位の高いタスクを検索し、そのタスクに切り替えます。割り込みの前に実行されていたタスクとは異なるタスクが見つかった場合、前のタスクは割り込み時点の状態で一時停止されます。

ラウンドロビン参照

プリプロセッサ

Cスタイルのプリプロセッサ参照

プリプロセッサディレクティブ

実際のコードの解析が開始される前に実行される一連のディレクティブ。

プログラムカウンタ (PC)

命令のアドレス指定に使用される特殊なプロセッサレジスタ。

プログラムロケーションカウンタ (PLC)参照

プログラムロケーションカウンタ (PLC)

IARアセンブラで使用され、現在の命令のコードアドレスを示します。PLCは、算術式で使用できる特別なシンボル (通常は $) で表されます。ロケーションカウンタ (LC) とも呼ばれます。

プロジェクト

ユーザーアプリケーション開発プロジェクト。

プロジェクトオプション

アプリケーションを実行するターゲットプロセッサなど、プロジェクト全体に適用される一般的なオプション。

プロセッサ選択

コンパイラがサポートするさまざまなチップ構成。

ポインタ

指定された型の別のオブジェクトのアドレスを格納するオブジェクト。

周辺ユニット

プロセッサ以外のハードウェアコンポーネント、例えばメモリまたはI/Oデバイスなど。

配置、リンカ設定ファイル内

ブロック、オーバーレイ、セクションを領域に配置する方法。コードとデータが実際に使用可能な物理メモリにどのように配置されるかを決定します。

R

R-value

代入文の右辺に指定可能な値。単純に値だけがこれに該当します。

L-value参照

ROMモニタ

デバッグツールとして使用するために特別に設計された組込みソフトウェア。評価ボードチップのROMにあり、シリアルポートまたはネットワーク接続を介してデバッガと通信します。ROMモニタは、メモリ位置とレジスタの表示と変更、ブレークポイントの作成と削除、アプリケーションの実行を行う一連の基本コマンドを提供します。デバッガはこれらのプリミティブを組み合わせて、プログラムのダウンロードやシングルステップなどのより高いレベルの要求を満たします。

RTOS

リアルタイムオペレーティングシステム (RTOS)参照

ラウンドロビン

オペレーティング システムのタスク スケジューリング。すべてのタスクの優先度が同じで、順番に実行されます。

プリエンプティブマルチタスク参照

ランタイムモデル属性

互換性のないモジュールがアプリケーションにリンクされるのを防ぐように設計されたメカニズム。ランタイム属性は、名前付きキーと対応する値のペアで構成されます。

ILINKは、ライブラリを自動的に選択する際にランタイムモデル属性を使用して、正しいライブラリが使用されていることを確認します。

ランタイムライブラリ

オブジェクトファイルから参照された場合にのみ実行可能イメージに含まれる、つまり条件付きでリンクされる再配置可能なオブジェクトファイルのコレクション。

リードオンリーセクション

コードまたは定数を含むセクションを指します。

セクション参照

リアルタイム システム

プロセスが時間に敏感なコンピュータシステム。

リアルタイムオペレーティングシステム (RTOS)参照

リアルタイムオペレーティングシステム (RTOS)

割り込みがトリガされてから割り込みハンドラが開始するまでの遅延と、タスクのスケジュール方法を保証するオペレーティングシステム。RTOSは通常、通常のデスクトップオペレーティングシステムよりもはるかに小さくなっています。

リアルタイム システム参照

リセット

リセットとは、システムの初期状態からの再起動すること。リセットはハードウェア (ハードリセット) またはソフトウェア (ソフトリセット) から実行できます。通常、ハードリセットは電源投入と区別できませんが、ソフトリセットは区別できます。

リレー

ベニヤ参照

レジスタ

小さいオンチップメモリユニット。通常はわずか 1 バイトまたは数バイトのサイズで、アクセスが特に高速であるため、プログラム実行中に一時的な記憶エリアとして確保されています

レジスタロック

レジスタロックとは、通常のコード生成中に一部のプロセッサレジスタを使用しないようコンパイラに指示できることを意味します。これは多くの状況で役立ちます。たとえば、システムの一部は、スピードを上げるためにアセンブラ言語で書かれている場合があります。これらの部分には、専用のプロセッサレジスタが割り当てられる場合があります。または、レジスタはオペレーティングシステムや他のサードパーティ製ソフトウェアによって使用される場合があります。

レジスタ定数

レジスタ定数は、システムが初期化されたときに専用プロセッサレジスタに読み込まれる値。コンパイラは、定数が専用レジスタに存在することを前提にコードを生成できます。

レジスタ変数

通常、レジスタ変数は、関数の (スタック) フレームではなくレジスタに格納されるローカル変数です。レジスタ変数は、メモリアクセスが不要で、コンパイラでレジスタ変数を使用することで命令の実行時間を短縮できるため、他の変数よりもはるかに高速です。

自動変数参照

再配置可能セクション

リンク前にメモリ内に固定の位置がないいセクションを指します。

範囲、リンカ設定ファイル内

メモリ内の連続するアドレスの範囲。領域は範囲で構成されます。

領域、リンカ設定ファイル内

重複しない範囲のセット。範囲は 1 つ以上のメモリに存在する場合があります。ブロック、オーバーレイ、およびセクションは、リンカ設定ファイルの領域に配置されます。

領域リテラル、リンカ設定ファイル内

メモリ内の 1 つ以上の重複しない範囲のセットを定義するリテラル。

領域式、リンカ設定ファイル内

領域リテラル、領域、リンカ設定ファイルで可能な共通のセット操作から構築された領域。

S

シグナル

シグナルは、タスク間のイベントベースの通信を提供します。タスクは、他のタスクからの 1 つ以上のシグナルを待つことができます。タスクが待っているシグナルを受信すると、実行が続行されます。RTOSでは、シグナルを待つタスクは処理時間を費やさないため、他のタスクを実行できます。

シミュレータ

ホスト上で実行され、ターゲットプロセッサと可能な限り同一に動作するデバッグツール。シミュレータは、ハードウェアが利用できない場合、またはデバッグにハードウェアが不要な場合に、アプリケーションをデバッグするのに使用します。シミュレータは通常、物理的な周辺機器に接続されていません。シミュレートされたプロセッサは、多くの場合、実際のハードウェアよりも(場合によっては大幅に)遅くなります。

ショートアドレッシング

コアの多くは、内部RAMとメモリマッピングされたI/Oに効率的にアクセスするための特別なアドレス指定モードを備えています。したがって、多くのコンパイラは、組込みシステム用の拡張機能としてショートアドレス指定を提供しています。

データポインタ参照

シンボル位置

正確なアドレスが不明なため、シンボリックな名前を使用する場所。

スケジューラー

RTOSのタスク切り替えを行う部分。また、実行を許可するタスクの選択も担当します。多くのスケジューリング アルゴリズムが存在しますが、そのほとんどは静的スケジューリング (コンパイル時に実行) または動的スケジューリング (次に実行するタスクを、タスク切り替え時のシステムの状態に応じて実行時に選択) のいずれかです。ほとんどのリアルタイムシステムでは、システムがリアルタイム要件に違反しないことを証明できるため、静的スケジューリングが使用されています。

スケルトンコード

ユーザーがコードを特定用途に使用できるようにする、未完成のコードフレームワーク。

スコープ

関数または変数を名前で参照できるアプリケーションのセクション。項目のスコープは、ファイル、関数、ブロックのいずれかに制限されることがあります。

スタックセクション

スタック用のメモリ領域を確保するセクション。ほとんどのプロセッサは呼び出しとパラメータで同一のスタックを使用しますが、一部のプロセッサでは個別のスタックを持つものもあります。

スタックフレーム

データオブジェクト(保持レジスタ、ローカル変数、および特定のスコープ に対して一時的に保存する必要がある他のデータオブジェクトなど)を含むデータ構造(通常は関数) 。以前のコンパイラでは、通常、完全な関数全体にわたってスタックフレーム上のサイズとレイアウトが固定されていましたが、最近のコンパイラでは、関数内の任意の箇所/時間で動的にレイアウトとサイズを変更できる場合があります。

ステップ実行

デバッガで一度に 1 つの命令または 1 つの C ステートメントを実行することを指します。

セクション

データまたはテキストを含むエンティティ。通常、1 つ以上の変数または関数です。セクションは、リンク可能な最小単位です。

セクション フラグメント

セクションの一部で、通常は変数または関数です。

セクションの選択

リンカ設定ファイルで、セクションセレクタを使用してセクションのセットを定義します。セクションが複数の選択の一部となることができる場合、セクションは最も制限の厳しいセクションセレクタに属します。セレクタには、セクション属性(セクションの内容で選択)、セクション名(セクション名で選択)、およびオブジェクト名(特定のオブジェクトから選択) の3種類があり、これらは個別に使用したり、組み合わせて使用して、セクションのセットを選択することができます。

セクション属性

各セクションには名前と属性があります。属性は、セクションの内容を定義します。すなわち、セクションの内容が、リードオンリー、リード/ライト、コード、データなどです。

セマフォ

セマフォは、リソースへの排他的アクセスを保証するために使用されるフラグの一種です。リソースは、ハードウェアポート、構成メモリ、または変数のセットです。複数のタスクが同じリソースにアクセスする必要がある場合は、リソースにアクセスするコードの部分 (重要なセクション) をすべてのタスクに対して排他的にする必要があります。これには、そのリソースを保護するセマフォを取得して、他のすべてのタスクをブロックすることによって行われます。別のタスクがリソースを使用したい場合は、そのタスクもセマフォを取得する必要があります。セマフォがすでに使用されている場合、2 番目のタスクはセマフォがリリースされるまで待つ必要があります。セマフォが解放されると、2 番目のタスクが実行を許可され、独自の排他的アクセスのためにセマフォを取得できます。

共有

複数の方法でアドレス指定できる物理メモリ。これはリンカ設定ファイルで定義されます。

構造体値

構造体および共用体の集合名。構造体は、メモリに連続して配置されるデータオブジェクトの集合体です (場合によっては、それらの間にパッドバイトを挿入されています)。共用体とは、同じメモリ場所を共有するデータの集合です。

重要度

アセンブラ、コンパイラ、またはデバッガが何らかの問題を検出した時の診断応答の深刻度レベル。通常、深刻度レベルは、リマーク、ワーニング、エラー、致命的なエラーです。リマークは問題の可能性を示すだけですが、致命的なエラーはプログラミングツールが処理の完了前に終了したことを意味します。

静的オーバーレイ

パラメータと自動変数に動的割り当て方式を使用する代わりに、リンク時にパラメータと自動変数にスペースを割り当てます。これにより、スタックの使用効率は最悪になりますが、高価なスタックアクセスがある、またはスタックアクセスがまったくない小型チップには、適している場合があります。

静的オブジェクト

リンク時にメモリが割り当てられ、システム起動時 (または初回使用時) に作成されるオブジェクト。

動的オブジェクト参照

静的割当てメモリ

この種類のメモリは、リンク時に一度のみ割り当てられ、アプリケーションの実行中は有効なままです。グローバル変数またはstaticとして宣言された変数は、このように割り当てられます。

特殊機能レジスタ (SFR)

コアのハードウェアコンポーネントの読み取りおよび書き込みに使用されるレジスタ。

標準ライブラリ

CおよびC++ライブラリは、CおよびC++規格で指定されているように機能し、浮動小数点ルーチンなどのコンパイラのルーチンをサポートします。

副作用

CまたはC++の式は、システムの状態を変更する場合、副作用があると言われます。たとえば、変数への割り当てや、ポストインクリメント演算子を使用する変数の使用があげられます。CおよびC++規格では、副作用のある変数は、式で複数回使用してはいけないと規定しています。たとえば、次の文はこの規則に違反しています。

*d++ = *d;
飽和演算

すべてではないにしても、ほとんどのCおよびC++の実装では、オーバーフロー時に定義域で値がラップされる、mod-2Nの2の補数ベースの演算を使用します。つまり、(127 + 1)= -128となります。一方、飽和演算では、定義域でのラップが許可されていません。例えば、127が上限である場合、(127 + 1)= 127 です。飽和演算は、値のラップが許容されている場合にオーバーフローが発生すると致命的な結果となる信号処理でよく使用されます。

T

ターゲット
  1. アーキテクチャ。

  2. ハードウェアの一部。アプリケーション開発対象の組込みシステムを指します。この用語は通常、システムとホストシステムを区別するために使用されます。

ターミナル I/O

C-SPY のシミュレートされたターミナルウィンドウ。

タイマ

プログラムの実行とは無関係にカウントされる周辺機器。

タイムスライス

RTOSがタスクスケジューリングアルゴリズムを実行せずにタスクを実行できる (最長) 時間。タスクは、タスク切り替えまでに、複数の連続したタイム スライスで実行が許可される場合があります。また、プリエンプティブ システムで割込みによって優先度の高いタスクが有効化された場合など、タスクはタイム スライス全体を使用できない場合があります。

タスク (スレッド)

タスクはシステム内の実行スレッドです。多くのタスクが並行して実行されるシステムは、マルチタスクシステムと呼ばれます。プロセッサは一度に1つの命令ストリームのみを実行するため、ほとんどのシステムは、一種のタスクスイッチメカニズム (コンテキストスイッチと呼ばれることが多い) を実装し、すべてのタスクに処理時間の配分します。次に実行を許可するタスクを決定するプロセスは、スケジューリングと呼ばれます。一般的なスケジューリング方法として、プリエンプティブ マルチタスクラウンドロビンがあります。

プリエンプティブマルチタスク, ラウンドロビン参照

トラップ

トラップとは、命令ストリームに特別な命令を挿入することによって開始される割込みです。多くのシステムでは、トラップを使用してオペレーティングシステム関数を呼び出します。ソフトウェア割込みとも呼びます。

仮定義

定義が同じで絶対変数である場合、複数のファイルで定義できる変数。

型修飾子

標準C/C++では、 constまたはvolatile。IARコンパイラは通常、メモリやその他の型属性に対してターゲット固有の型修飾子を追加します。

翻訳単位

プリプロセッサディレクティブ #includeによってインクルードされたすべてのヘッダーファイルおよびソースファイルを含むソースファイル。ただし、#if#ifdefなどの条件付きプリプロセッサ指令によってスキップされた行は除きます。

U

UBROF (Universal Binary Relocatable Object Format)

製品パッケージにXLINKリンカが含まれている場合、一部のIARプログラミングツールによって生成されるファイル形式。

V

フォンノイマン型アーキテクチャ

命令とデータの両方が共通のデータチャネルを介して転送されるコンピュータアーキテクチャ。

ハーバードアーキテクチャ参照

ベニヤ

モードの不一致 (ArmとThumbなど)や、呼び出し命令が宛先に到達しない場合などに、呼び出し元と呼び出し先との間にスプリングボードとして挿入される小さなコード。

仮想アドレス (論理アドレス)

使用前にコンパイラ、リンカ、またはランタイムシステムによって物理メモリアドレスに変換される必要があるアドレス。仮想アドレスは、アプリケーションで認識されるアドレスであり、システムの他の部分で認識されるアドレスとは異なる場合があります。

仮想空間

IAR Embedded Workbench のエディタ機能により、実際の文字がある領域の外側に挿入点を配置できます。

揮発性ストレージ

揮発性ストレージデバイスに保存されたデータは、デバイスの電源を切った場合は保持されません。電源を切った後もデータを保持するには、不揮発性ストレージに保存する必要があります。Cキーワードvolatileと混同しないでください。

不揮発性ストレージ参照

値式、リンカ設定ファイル内

C式に似た構文を持つ式から構築できる定数です。

W

ウォッチポイント

ウォッチポイントは、アプリケーションの実行中にC-SPYウォッチウィンドウでC変数または式の値をトレースします。

X

XAR

UBROF形式のアーカイブ (ライブラリ) を作成するIARツール。

XLIB

UBROF形式のアーカイブ (ライブラリ) を作成したり、オブジェクトコードのリスト化、絶対オブジェクトファイルを別のフォーマットの絶対オブジェクトファイルに変換するIARツール。

UBROF出力形式を使用するIAR XLINKリンカ。

Z

ゼロオーバーヘッドループ

ループ条件(ループ開始地点へ戻る分岐を含む)の処理に、まったく時間を要しないループ。これは通常、プロセッサの特別なハードウェア機能として実装されており、すべてのアーキテクチャで利用できるわけではありません。

ゼロ初期化セクション

起動時にゼロに初期化する必要があるセクションを指します。

セクション参照

ゾーン

プロセッサによって、メモリアーキテクチャは大きく異なります。ゾーンは、C-SPYが名前付きメモリエリアに使用する用語です。たとえば、コードメモリとデータメモリが別々にアドレス指定可能なプロセッサでは、少なくとも 2 つのゾーンが存在することになります。複雑なバンクメモリ方式を採用したプロセッサには、複数のゾーンが搭載されている場合があります。