第2章  システム構築


本章では,RI850V4が提供している機能を利用したシステム(ロード・モジュール)の構築手順について解説しています。

2.1 概  要

システム構築とは,RI850V4の提供媒体からユーザの開発環境(ホスト・マシン)上にインストールされたファイル群(カーネル・ライブラリなど)を用いてロード・モジュールを生成することです。

以下に,システム構築の手順を示します。

図2−1  システム構築の手順




RI850V4では,ロード・モジュールを生成する際に必要となるファイル群のサンプル・プログラムを提供しています。

サンプル・プログラムの格納先は,「RIシリーズ 起動編」を参照してください。

2.2 システム・コンフィギュレーション・ファイルの記述

RI850V4に提供するデータを保持した情報ファイル(システム情報テーブル・ファイル,システム情報ヘッダ・ファイル,エントリ・ファイル)を生成する際に必要となるシステム・コンフィギュレーション・ファイルを記述します。

備考 システム・コンフィギュレーション・ファイルについての詳細は,「第17章 システム・コンフィギュレーション・ファイル」を参照してください。

2.3 処理プログラムの記述

システムとして実現すべき処理を記述します。

なお,RI850V4では,処理プログラムを実現すべき処理の種類,および用途にあわせて以下に示した4種類に分類しています。

- タ ス ク
他の処理プログラム(周期ハンドラ,割り込みハンドラなど)とは異なり,RI850V4が提供するサービス・コールを使用して明示的に操作しない限り実行されることのない処理プログラムです。

- 周期ハンドラ
一定の時間が経過した際に起動される周期処理専用ルーチンです。
なお,RI850V4では,周期ハンドラを“タスクとは独立したもの(非タスク)”として位置づけています。このため,一定の時間が経過した際には,システム内で最高優先度を持つタスクが処理を実行中であっても,その処理は中断され,周期ハンドラに制御が移ります。


- 割り込みハンドラ
EIレベル・マスカブル割り込みが発生した際に起動される割り込み処理専用ルーチンです。
なお,RI850V4では,割り込みハンドラを“タスクとは独立したもの(非タスク)”として位置づけています。このため,EIレベル・マスカブル割り込みが発生した際には,システム内で最高優先度を持つタスクが処理を実行中であっても,その処理は中断され,割り込みハンドラに制御が移ります。


- 拡張サービス・コール・ルーチン
ユーザ定義の関数をRI850V4に登録したものであり,RI850V4が提供するサービス・コール(cal_svc,またはical_svc)を使用して明示的に呼び出さない限り実行されることのない処理プログラムです。
なお,RI850V4では,拡張サービス・コール・ルーチンを“拡張サービス・コール・ルーチンを呼び出した処理プログラムの延長線”として位置づけています。


備考 処理プログラムについての詳細は,「3.2 タ ス ク」,「9.3.3 周期ハンドラ」,「10.3 割り込みハンドラ」,「11.2 拡張サービス・コール・ルーチン」を参照してください。

2.4 ユーザ・オウン・コーディング部の記述

RI850V4では,さまざまな実行環境に対応するために,RI850V4が処理を実行するうえで必要となるハードウエア依存処理,およびRI850V4が処理を実行するうえで必要なる各種情報をユーザ・オウン・コーディング部として切り出しています。

これにより,さまざまな実行環境への移植性を向上させるとともに,カスタマイズを容易なものとしています。

なお,RI850V4では,ハードウエア依存処理として実現すべき処理の種類,および用途にあわせて以下に示した6種類に分類しています。

- オーバフロー後処理
RI850V4,および処理プログラム内でスタックがオーバフローした際に呼び出されるオーバフロー処理の後処理用にユーザ・オウン・コーディング部として切り出された後処理専用ルーチン(関数名:_kernel_stk_overflow)であり,スタックがオーバフローした際にRI850V4から呼び出されます。なお,初期起動時の割り込み受付状態は割り込み禁止状態(プログラム・ステータス・ワード(PSW)のIDフラグに1を設定)となります。

- 割り込みエントリ処理
割り込みが発生した際にCPUが強制的に制御を移すハンドラ・アドレスに対して該当処理(割り込み前処理など)への分岐処理を割り付けるためにユーザ・オウン・コーディング部として切り出されたエントリ処理専用ルーチンです。
なお,システム・コンフィギュレーション・ファイル作成時に割り込みハンドラ情報で定義されたEIレベル・マスカブル割り込みに対応した割り込みエントリ処理は,システム・コンフィギュレーション・ファイルに対してコンフィギュレータを実行することにより出力されるエントリ・ファイルに内包されています。したがって,該当EIレベル・マスカブル割り込み以外の割り込み(リセットなど)については,割り込みエントリ処理の記述が必要となります。


- 初期化ルーチン
ユーザの実行環境に依存したハードウエア(周辺コントローラなど)を初期化するためにユーザ・オウン・コーディング部として切り出された初期化処理専用ルーチンであり,カーネル初期化部から呼び出されます。

- アイドル・ルーチン
CPUが提供しているスタンバイ機能を有効活用(低消費電力システムの実現)するためにユーザ・オウン・コーディング部として切り出されたアイドル処理専用ルーチンであり,RI850V4のスケジューリング対象となるタスク(RUNNING状態,またはREADY状態のタスク)がシステム内に1つも存在しなくなった際にスケジューラから呼び出されます。

- ブート処理
RI850V4が処理を実行するうえで必要となる最低限のハードウエアを初期化するためにユーザ・オウン・コーディング部として切り出された初期化処理専用ルーチンであり,割り込みエントリ処理から呼び出されます。

- システム依存情報
システム依存情報は,RI850V4が処理を実行するうえで必要となる各種情報をユーザ・オウン・コーディング部として切り出したヘッダ・ファイル(ファイル名:userown.h)です。

備考 ユーザ・オウン・コーディング部についての詳細は,「第7章 メモリ・プール管理機能」,「第10章 割り込み管理機能」,「第12章 システム構成管理機能」,「第13章 スケジューリング機能」,「第14章 システム初期化処理」を参照してください。

2.5 トレース情報ファイル

トレース情報ファイル(ファイル名:trcinf.c)は,プロパティ パネル[タスク・アナライザ]タブ → [トレース]カテゴリ → [トレース・モードの選択]で選択されたトレース・モードに対応するための処理が記述されています。したがって,ユーザが本ファイルの内容を書き換える必要はありません。

なお,本ファイルはトレースを使用しない場合でもロード・モジュールに組み込む必要があります。GHS版の開発環境を使用する場合も本ファイルをビルドの対象としてください。



2.6 ロード・モジュールの生成

2.2 システム・コンフィギュレーション・ファイルの記述」から「2.4 ユーザ・オウン・コーディング部の記述」で作成されたファイル群,トレース情報ファイル,およびRI850V4,コンパイラ・パッケージが提供しているライブラリ・ファイルに対して,CS+上でビルドを実行し,ロード・モジュールを生成します。

1 ) プロジェクトの作成/読み込み

プロジェクトの新規作成,または既存のプロジェクトの読み込みを行います。

備考 プロジェクトの新規作成,および既存のプロジェクトの読み込みについての詳細は,「RIシリーズ 起動編」,および「CS+ 起動編」を参照してください。

2 ) ビルド対象プロジェクトの設定

ビルド対象とするプロジェクトを設定します。

備考 ビルド対象の設定についての詳細は,「CS+ RH850 ビルド編」を参照してください。

3 ) ビルド対象ファイルの設定

ビルド対象ファイルの追加/削除,依存関係の更新などを行います。

備考 ビルド対象ファイルの設定についての詳細は,「CS+ RH850 ビルド編」を参照してください。

以下に,ロード・モジュールを生成する際に必要となるファイル群の一覧を示します。

- 「2.2 システム・コンフィギュレーション・ファイルの記述」で作成されたシステム・コンフィギュレーション・ファイル

- システム・コンフィギュレーション・ファイル

備考 システム・コンフィギュレーション・ファイル名の拡張子は,“cfg”を指定してください。
拡張子が異なる場合は,“cfg”が自動的に付加されます(例:ファイル名に“aaa.c”を指定した場合は,“aaa.c.cfg”となります)。


- 「2.3 処理プログラムの記述」で作成されたC言語/アセンブリ言語ソース・ファイル

- タスク

- 周期ハンドラ

- 割り込みハンドラ

- 拡張サービス・コール・ルーチン

- 「2.4 ユーザ・オウン・コーディング部の記述」で作成されたC言語/アセンブリ言語ソース・ファイル

- オーバフロー後処理

- 割り込みエントリ処理

- 初期化ルーチン

- アイドル・ルーチン

- ブート処理

- システム依存情報

- RI850V4が提供しているトレース情報ファイル

- RI850V4が提供しているライブラリ・ファイル

- カーネル・ライブラリ

- コンパイラ・パッケージが提供しているライブラリ・ファイル

- 標準ライブラリ,数学ライブラリなど

備考1 プロジェクト・ツリー パネルにシステム・コンフィギュレーション・ファイルを追加すると,リアルタイムOS生成ファイル・ノードが表示されます。
リアルタイムOS生成ファイル・ノードには,以下の情報ファイルが表示されます。ただし,この時点では,これらのファイルは生成されません。


- システム情報テーブル・ファイル

- システム情報ヘッダ・ファイル

- エントリ・ファイル

図2−2  プロジェクト・ツリー パネル(sys.cfg追加後)



備考2 システム・コンフィギュレーション・ファイルを差し替える場合は,追加しているシステム・コンフィギュレーション・ファイルを一旦プロジェクトから外したのち,再度ファイルを追加してください。

備考3 システム・コンフィギュレーション・ファイルは,プロジェクトに複数追加することができますが,有効となるのは最初に追加したファイルです。有効なファイルをプロジェクトから外しても,追加済みのファイルは有効にならないため,再度ファイルを追加してください。

4 ) ロード・モジュール・ファイルの出力指定

生成するロード・モジュールの種類を設定します。

備考 ロード・モジュールの出力指定についての詳細は,「CS+ RH850 ビルド編」を参照してください。

5 ) 情報ファイルの出力指定

プロパティ パネル[システム・コンフィギュレーション・ファイル関連情報]タブで,情報ファイル(システム情報テーブル・ファイル,システム情報ヘッダ・ファイル,エントリ・ファイル)に関する詳細情報を設定します。

図2−3  [システム・コンフィギュレーション・ファイル情報]タブ



6 ) トレース機能の設定

プロパティ パネル[タスク・アナライザ]タブで,RI850V4が提供しているユーティリティ・ツール“タスク・アナライザ・ツール”を利用して処理プログラムの実行履歴(トレース・データ)を解析する際に必要となる情報を設定します。

図2−4  [タスク・アナライザ]タブ



7 ) ビルド・オプションの設定

コンパイラ,アセンブラ,リンカなどに対するオプションを設定します。RI850V4を組み込む場合,指定が必須のオプションがあります。詳細は 「15.4 条件コンパイル用マクロ」を参照してください

備考 ビルド・オプションの設定についての詳細は,「CS+ RH850 ビルド編」を参照してください。

8 ) ビルドの実行

ビルドを実行します。

備考 ビルドの実行についての詳細は,「CS+ RH850 ビルド編」を参照してください。

図2−5  プロジェクト・ツリー パネル(ビルド実行後)



9 ) プロジェクトの保存

プロジェクトの設定内容をプロジェクト・ファイルに保存します。

備考 プロジェクトの保存についての詳細は,「CS+ プロジェクト操作編」を参照してください。

2.7 ビルド時のオプション指定について

RI850V4を組み込んで使用する場合,ユーザ・アプリケーションに対して下記に示すオプションの指定が必須となります。また,RI850V4が提供するヘッダ・ファイルを使用する場合は「15.4 条件コンパイル用マクロ」に記載しているオプションの指定も行ってください。



-
ビルド・オプション

意味

-Xreserve_r2

r2レジスタを予約します。

-D__rel__

ルネサスエレクトロニクス製コンパイラの定義。

relの前後にアンダーバーが2つ必要です。

-Xep=callee

EPレジスタの扱い方を指定します。

CC-RH版の場合

-
ビルド・オプション

意味

-reserve_r2

r2レジスタを予約します。

-D__ghs__

Green Hills Software社製コンパイラの定義。

ghsの前後にアンダーバーが2つ必要です。

CCV850版の場合