第2章 システム構築
本章では,RI600V4が提供している機能を利用したシステム(ロード・モジュール)の構築手順について解説しています。
システム構築とは,RI600V4の提供媒体からユーザの開発環境(ホスト・マシン)上にインストールされたファイル群(カーネル・ライブラリなど)を用いてロード・モジュールを生成することです。
RI600V4では,ロード・モジュールを生成する際に必要となるファイル群のサンプル・プログラムを提供しています。
サンプル・プログラムは,以下のフォルダに格納されています。ソース・ファイルは,appliサブ・フォルダに格納されています。
<ri_sample> = <CubeSuite+_root>
\SampleProjects
\RX
\デバイス名_RI600V4
CubeSuite+のインストール・フォルダを表します。
デフォルトでは,“ C:
\Program Files
\Renesas Electronics
\CubeSuite+”となります。
CubeSuite+のサンプル・プロジェクト・フォルダです。
RX MCU用のサンプル・プロジェクト・フォルダです。
RI600V4のサンプル・プロジェクト・フォルダです。このフォルダに,プロジェクト・ファイルがあります。
デバイス名: サンプルを提供しているデバイス名を表しています。
なお,RI600V4では,処理プログラムを実現すべき処理の種類,および,用途にあわせて以下に示した4種類に分類しています。
-
タ ス ク
他処理プログラム(割り込みハンドラ,周期ハンドラ,およびアラーム・ハンドラ)とは異なり,RI600V4が提供するサービス・コールを使用して明示的に操作しないかぎり実行されることのない処理プログラムです。
-
周期ハンドラ
指定された周期時間毎に起動されるルーチンです。
なお,RI600V4では,周期ハンドラを“タスクとは独立したもの(非タスク)”として位置づけています。このため,一定の時間が経過した際には,システム内で最高優先度を持つタスクが処理を実行中であっても,その処理は中断され,周期ハンドラに制御が移ります。
-
アラーム・ハンドラ
指定した時間後に一度だけ起動されるルーチンです。
なお,RI600V4では,アラーム・ハンドラを“タスクとは独立したもの(非タスク)”として位置づけています。このため,一定の時間が経過した際には,システム内で最高優先度を持つタスクが処理を実行中であっても,その処理は中断され,アラーム・ハンドラに制御が移ります。
-
割り込みハンドラ
割り込みが発生した際に起動されるルーチンです。
なお,RI600V4では,割り込みハンドラを“タスクとは独立したもの(非タスク)”として位置づけています。このため,割り込みが発生した際には,システム内で最高優先度を持つタスクが処理を実行中であっても,その処理は中断され,割り込みハンドラに制御が移ります。
2.3 システム・コンフィギュレーション・ファイルの記述
RI600V4に提供するデータを保持した情報ファイルを生成する際に必要となるシステム・コンフィギュレーション・ファイルを記述します。
備考2 リアルタイムOSタスク・アナライザを「ソフトウェア・トレース・モードでトレース・チャートを取得」または「ソフトウェア・トレース・モードで長時間統計を取得」で使用する場合は,システム・コンフィギュレーション・ファイルに,ユーザ・オウン・コーディング部で作成した割り込みハンドラを定義する必要があります。詳細は,「
第15章 リアルタイムOSタスク・アナライザ」を参照してください。
-
ブート処理関数(PowerON_Reset_PC( ))
ブート処理は,リセットベクタに登録され,RI600V4が処理を実行するうえで必要となる最低限のハードウエアやソフトウエアを初期化するためにユーザ・オウン・コーディング部として切り出された初期化処理専用ルーチンです。また,cfg600が出力したROM定義ファイルとRAM定義ファイルを取り込む役割も担います。
プロジェクトの新規作成,または既存のプロジェクトの読み込みを行います。
備考 プロジェクトの新規作成,および既存のプロジェクトの読み込みについての詳細は,「RIシリーズ 起動編」,「CubeSuite+ 起動編」,および本製品のリリースノートを参照してください。
ビルドの設定や実行を行う場合は,アクティブ・プロジェクトを設定します。
なお,サブプロジェクトがない場合,プロジェクトは常にアクティブになります。
備考 アクティブ・プロジェクトの設定についての詳細は,「CubeSuite+ RXビルド編」を参照してください。
プロジェクト・ツリーでリアルタイムOSノードを選択し,
プロパティ パネルをオープンします。
[RI600V4]タブの[カーネル・バージョン]プロパティにおいて,使用するRI600V4のバージョンを確認します。
図2−2 プロパティ パネル:[RI600V4]タブ
プロジェクトへのビルド対象ファイルの追加/削除,依存関係の更新などを行います。
備考 プロジェクトへのビルド対象ファイルの追加/削除,依存関係の更新についての詳細は,「CubeSuite+ RXビルド編」を参照してください。
以下に,ロード・モジュールを生成する際に必要となるファイル群の一覧を示します。
- 処理プログラム(タスク,周期ハンドラ,アラーム・ハンドラ,割り込みハンドラ)
備考 システム・コンフィギュレーション・ファイル名の拡張子は,“cfg”を指定してください。
拡張子が異なる場合は,“cfg”が自動的に付加されます(例えば,ファイル名に“aaa.c”を指定した場合,“aaa.c.cfg”となります)。
- ユーザ・オウン・コーディング部(システム・ダウン・ルーチン,ブート処理)
- RI600V4が提供しているライブラリ・ファイル
- Cコンパイラ・パッケージが提供しているライブラリ・ファイル
備考1
プロジェクト・ツリー パネルにシステム・コンフィギュレーション・ファイルを追加すると,リアルタイムOS生成ファイル・ノードが表示されます。
リアルタイムOS生成ファイル・ノードには,以下の情報ファイルが表示されます。ただし,この時点では,これらのファイルは生成されません。
- システム情報ヘッダ・ファイル(kernel_id.h)
- サービス・コール定義ファイル(kernel_sysint.h)
- ROM定義ファイル(kernel_rom.h)
- RAM定義ファイル(kernel_ram.h)
備考2 システム・コンフィギュレーション・ファイルを差し替える場合は,追加しているシステム・コンフィギュレーション・ファイルを一旦プロジェクトから外したのち,再度ファイルを追加してください。
備考3 システム・コンフィギュレーション・ファイルは,プロジェクトに複数追加することができますが,有効となるのは最初に追加したファイルです。有効なファイルをプロジェクトから外しても,追加済みのファイルは有効にならないため,再度ファイルを追加してください。
プロジェクト・ツリーでシステム・コンフィギュレーション・ファイルを選択し,
プロパティ パネルをオープンします。
図2−4 プロパティ パネル:[システム・コンフィギュレーション・ファイル情報]タブ
ビルドの生成物として,ロード・モジュール・ファイルを出力することを設定します。
備考 ロード・モジュールの出力指定についての詳細は,「CubeSuite+ RXビルド編」を参照してください。
備考 ビルド・オプションの設定についての詳細は,「CubeSuite+ RXビルド編」を参照してください。
ビルドを実行し,ロード・モジュール・ファイルを生成します。
備考 ビルドの実行についての詳細は,「CubeSuite+ RXビルド編」を参照してください。
図2−5 プロジェクト・ツリー パネル(ビルド実行後)
プロジェクトの設定情報をプロジェクト・ファイルに保存します。
備考 プロジェクトの保存についての詳細は,「CubeSuite+ 起動編」を参照してください。
ここでは,特に留意すべきビルド・オプションについて解説します。
2.6.1 サービス・コール情報ファイルとコンパイラ・オプション“-ri600_preinit_mrc”
サービス・コール情報ファイル(mrcファイル)は,kernel.hをインクルードするファイルのコンパイルによって,オブジェクト・ファイルと同じフォルダに生成されます。
mrcファイルには,ソース中で使用しているサービス・コール名が出力されます。テーブル生成ユーティリティmkritblには,mrcファイルが格納されたパスを漏れなく指定する必要があります。漏れがある場合,アプリケーションで使用しているサービス・コール・モジュールがリンクされない場合があります。この場合,そのサービス・コールを呼び出したときにシステム・ダウンとなります。
逆に,過去に生成され,現在は無効なmrcファイルをmkritblに入力した場合は,アプリケーションで使用していないサービス・コール・モジュールがリンクされる場合があります。この場合,RI600V4の動作に問題は生じませんが,コードサイズが無駄に大きくなってしまうことになります。
また,kernel.hをインクルードするファイルのコンパイル時には,オプション“-ri600_preinit_mrc”を指定してください。本オプションを指定しなくてもRI600V4の動作に問題は生じませんが,アプリケーションで使用していないサービス・コール・モジュールがリンクされる場合があります。この場合,RI600V4の動作に問題は生じませんが,コードサイズが無駄に大きくなってしまうことになります。
アプリケーションをライブラリ化する場合は,コンパイル時に生成されたmrcファイルもmkritblに入力してください。これが難しい場合,使用しているサービス・コール名を羅列したmrcファイル(下記例を参照)を作成し,mkritblに入力してください。
なお,組み込まれていないサービス・コールを呼び出した場合は,システム・ダウンとなります。
sta_tsk
snd_mbx
rcv_mbx
prcv_mbx
|
2.6.2 ブート処理ファイルのコンパイラ・オプション
オプション“-nostuff”をブート処理ファイルのみに設定するにはブート処理ファイルの[プロパティ]パネルの[個別コンパイル・オプション]タブで,オプション“-nostuff”を全ファイルに設定するには[CC-RX(ビルド・ツール)]の[プロパティ] パネルの[コンパイル・オプション]タブで,以下のいずれかを設定してください。
1 ) [オブジェクト]カテゴリで設定する
図2−6