２００９年０４月２４日
Ｂｙ エーワン Ｒｅｖ１．４４

統合環境Ｈｅｗ（Ｖｅｒ３．０１）添付スタートアップ関数を使用した場合の新ワークスペースおよびプロジェクトを登録する方法（Ｈ８S 版）
ルネサスＣ言語用統合環境「Ｈｅｗ Ｖｅｒ３．０１（ｒｅｌｅａｓｅ１）」で H-debugger 用に新ワークスペース／プロジェクトを登録する手順方法を説明します。
説明を明確にするために、名前等を仮に決めて例に沿って説明を進めます。
ワークスペース名
プロジェクト名
登録モジュール名

NewWorkSpace
Project1
H8s261x.c

Ｈｅｗ添付ファイル Resetprg.c
Intprg.cDbsct.c
ＣＰＵタイプH8S/2612

Ｃファイル

メインモジュール（アプリ用）

Ｃファイル

スタートアップモジュール
割込みベクターモジュール
定数転送用セクション管理宣言

１．新ワークスペースの登録方法“HEW”起動させます。
“新規プロジェクトワークスペース”をチェックしてのＯＫをクリックする。
もしくは、キャンセル後に、[ファイル]-[新規ワークスペース]をクリックします。

ﾜｰｸｽﾍﾟｰｽ名
ﾌﾟﾛｼﾞｪｸﾄ名
ﾃﾞｨﾚｸﾄﾘCPU 種別ﾂｰﾙﾁｪｲﾝﾌﾟﾛｼﾞｪｸﾄ“NewWorkSpace”“Project1”“C:\HEW3\NewWorkSpace”“H8S,H8/300”“Hitachi H8S,H8/300 Standard”
Application

この項目を確認後、ＯＫをクリックして下さい。

CPU ｼﾘｰｽﾞを“2600”に選択する。
CPU ﾀｲﾌﾟを“2612”に選択する。
確認後、次へ＞をクリックします。

ＣＰＵスペックを確認後、次へ＞をクリックして下さい。

ここでのＨｅｗが用意したＲＯＭ化支
援関数は、使用しませんので全てのチェックを外して下さい。
main() 関数生成を”None”に選択する。
確認後、次へ＞クリックして下さい。

Ｃ言語ライブラリの選択です。この例
では、その他ライブラリを使用しません。
次へ＞クリックして下さい。

スタックボトムの設定です。
ＲＡＭ位置を示す為「H’FFEFBE」にする。
スタックサイズはデフォルト値にします。
次へ＞をクリックして下さい。

ここで明示されたＨｅｗ作成スタート
アップ関数を使用しますので、デフォルトの状態で、次へ＞をクリックして下さい。

シミュレータの設定ですが使用しませんのでチェック無しの状態で、次へ＞クリックして下さい。

ここで最終になります。
使用するＣモジュールを表示します。

この状態で完了をクリックして下さい。

確認画面が表示されますので、ＯＫをクリックして下さい。

ここまでの操作が新規プロジェクトの登録方法です。

２．プロジェクトに希望モジュール（ソースファイル）を登録する方法
準備： 作成済みのソースファイルを”C:\Hew3\NewWorkSpace\Project1”にコピーして下さい。
H8s261x.c
io261x.h(iodefine.h)
HewDebugH8.h”¥sample¥HewH8S2_0¥H8S261x¥”(左記ソースは、製品 CD の上記フォルダに入っています。)
又は、Ｈｅｗ提供のＩ／Ｏ定義ファイルを使用しても構いません。

[プロジェクト]-[ファイルの追加]をクリックします。

下記１ファイルを指定して下さい。
h8s261x.c
選択後、追加をクリックします。

この操作によりプロジェクトにモジュールが登録されました。

３．シンボルコンバータ「ＨＣｓｙｍｃｏｎｖ」を登録する。

[オプション]-[ビルドフェーズ]をクリックします。

追加をクリックします。

次へ＞をクリックします。

単一フェーズ側にチェックをします。
次へ＞をクリックします。

フェーズ：SymbolConvert
コマンド：C:¥ProgramFiles¥Aone¥DEF¥
HCsymconv.exe を選択する。
（ﾃﾞﾌｫﾙﾄ）
初期ディレクトリ：$(CONFIGDIR)
次へ＞をクリックします。

完了をクリックします。

ＯＫをクリックします。

[オプション]-[ＳｙｍｂｏｌＣｏｎｖｅｒｔ]をクリックします。

オプションに下記内容を設定する。
"$(CONFIGDIR)¥$(PROJECTNAME)" -o "$(PROJDIR)¥$(PROJECTNAME)"（入力ファイル名）（出力先名）
注意事項
１）ディレクトリ名にʻ ʼスペースを使用している場合は、“ダブルクォートで囲んで下さい。
“$(CONFIGDIR)¥$(PROJECTNAME)”-o “$(PROJDIR)¥$(PROJECTNAME)”
２）$(PROJECTNAME)の先頭に「¥」記号を挿入して下さい。
（手入力）３）オプションＳＷ「−ｏ」の両端には、スペースを入れてください。
（手入力）４）この設定例は、後説明の「*.mot」ファイルの生成されるディレクトリと同じ場所にシンボルコンバータが生成する「*.sym/*.lin」を置く為の指定です。
＜コンフィグレーション DIR＞に生成させたい場合は、“$(CONFIGDIR)¥$(PROJECTNAME)”の指定のみで構いません。
この場合は「*.mot」の生成場所を同じく＜コンフィグレーション DIR＞にして下さい。
追加事項（ＨＣｓｙｍｃｏｎｖ．ｅｘｅ スイッチ説明）
１）［−ｏ］（省略可）出力ファイル名を指定
２）［−ｒ］（省略可）モジュール毎のディレクトリ情報を作成しない。ELF 専用(Ｖｅｒ３．２ｘｘから）
３）［−ｓ］（省略可）ラインシンボル情報をソート（アドレス順）しない。(Ｖｅｒ３．２ｘｘから）
４）［−ｉ］（省略可）重複モジュール情報を削除する。(Ｖｅｒ３．３ｘｘから）
５）［−ｇ］（省略可）スタティック変数をグローバル化する。(Ｖｅｒ３．６ｘｘから）
６）［−ｍ］（省略可）重複モジュール情報を C ソースにマージする。(Ｖｅｒ３．８０Ｂから）
７）［−ｆ］（省略可）使用インクルードファイルを CView に登録する。(Ｖｅｒ３．８０Ｂから）

４．ツール（ライブラリ）の設定
ＨＥＷは、プロジェクトごとにＣ言語用ライブラリを作成する仕様になっています。
ライブラリを作成および設定の確認をします。

[オプション][H8S,H8/300Standard Toolchain]をクリックします。

「標準ライブラリ」タグをクリックする。

カテゴリのモードが「ライブラリファイル作成（オプション変更時）」指定になっている事を確認します。
この指定によりオプション変更時のみライブラリを作成する事になります。
ＯＫをクリックする。

５．ツール（リンカ）の設定[オプション][H8S,H8/300Standard Toolchain]をクリックします。

「最適化リンカ」タグをクリックする。

カテゴリの「インプット」を選択する。
オプション項目の「リロケータブルファイル／オブジェクトファイル」を選択する。
追加をクリックする。

相対パス「Configuration directory」に選択します。
サブディレクトリ「resetprg.obj」と入力します。
ＯＫをクリックします。

ファイルがセットされたのを確認します。
この指定は、“最初にこのリスト順にモジュールをリンクしなさい”との指示になります。
（DEF の C View にてアドレス順に他モジュールを表示させたい場合は、追加設定してください。
）（重要） 特に「resetprg.obj」の先頭に SP を設定するコードがありますので先頭を０ｘ８００番地にする為の設定ですが、後説明のセクション指定で「PResetPRG」の先頭番地を０ｘ８００番地にしていますので必要ありませんが、同セクション名の他モジ
ュールを追加した場合でも、必ず最初にリンクさせるための手続きです。
カテゴリの「アウトプット」を選択する。
出力形式の「Ｓタイプ（ＥＬＦ／ＤＷＡＲＦアブソリュート付き）」を選択する。
デバッグ情報の「デバッグ情報ファイル(*.dbg)出力」を選択する。
「出力ファイル／インフォメーション抑止」の変更をクリックします。
(重要)

シンボリックデバッグを可能にするために必要な設定です。相対パスを「Project directry」に設定します。
ＯＫをクリックする。
(重要)この指定は、ＨＥＸファイルをＣソースファイルのある同じディレクトリに置くための設定です。絶対条件として、「＊．ｍｏｔ／＊．ｓｙｍ／＊．ｌｉｎ」は、同じ場所に置く必要があります。
ＨＣｓｙｍｃｏｎｖで出力ファイルを「Configuration directory」にした場合は、上記の指定も「Configuration directory」にして下さい。今回の使用例は、「Projectdirectry｣になっています。

カテゴリの「セクション」を選択する。
下図のようにセクション指定をする。
0x00000800 PResetPRG
PIntPRG
0x00000C00 PC
C$DSEC
C$BSEC
D
0x00FFE040 B
R
0x00FFEDBE S
ＯＫをクリックする。

(重要)「Ｂセクション」０ｘＦＦＥ０４０（０ｘＦＦＥ０００）は、ソースブレーク使用時の例です。
（ＤＥＦバージョン ６．４０ｘまで）
６．５０ｘからソースブレーク用ワークエリアは、ＲＡＭ２を使用しますので「Ｂセクション」は、０ｘＦＦＥ０００にして下さい。なお、ソースブレークを使用する場合は、モニタワーク方式をスタック方式に選択する必要があります。

６．スタートアップおよびベクターの変更と追加
１） ＜ｒｅｓｅｔｐｒｇ．ｃ＞の変更
Main()の１行上の①set_imask_ccr(0)をコメントにします。
(理由)
ここの例ですと main()関数内で I/O初期化および割り込み許可をしていますので、ここでは割り込み禁止状態にしておきます。

２） ＜ｉｎｔｐｒｇ．ｃ＞の変更
今回使用の「H82612.c」は、TPU0 のTGIA0 割り込みを使用した例ですのでベクターを設定をします。
①「vector 32」に「Timer0();」関数を登録します。

３） コンパイラの「最適化」を外す①Toolchain の「コンパイラ」を選択②カテゴリ「最適化」を選択③「最適化」のチェックを外す。
④ＯＫをクリックする。

４）割込みモード２ ＜Ｈ８Ｓ２６１２．ｃ＞の説明 H-debugger の為
main()関数の最初に①割込みモード２にする。
SYSCR.BIT.INTM = 2; (iodefine.h)
又は、SYSCR |= 0x20; (io261x.h)②プライオリティ６以下の割り込みを禁止する。
set_imask_exr(0x6);③ソフトタイマ（推奨）SoftWait(400);④I/O および変数の初期化をする。
⑤割込みを許可する。
set_imask_exr(0);
注記 この例は、ルネサス提供の「iodefine.h」を使用したサンプルです。
「io261x.h」を使用した場合は、その定義に合わせた IO 記述の変更が必要です。
【①割込みモード２にする理由】
Ｈ８Ｓ／２６００シリーズのトレース機能を有効にする為です。
【②プライオリティ６以下の割り込みを禁止する理由】
Ｈ８Ｓ／２６００シリーズでのＰＣブレークコントローラ（ＰＢＣ）の割り込みプライオリティを７（最優先）で動作させる為です。下記方法のどちらかを都合に応じて実施して下さい。
この記述が無いとＰＢＣ割り込みを受け付けませんのでブレークさせる事が出来なくなります。
【方法①】 「set_imask_exr(0x6)」を記述する。
【方法②】 ＤＥＦ操作でのショートＰＢ「DＩ」をクリックする。
(注意)

上記②と③の記述は I/O 初期化およびメモリ初期化関数のデバッグを可能にする為の記述です。
初期化関数のデバッグが完成しましたら削除する事を推奨します。
なぜなら、初期化完了する前にプライオリティ７の割り込みが発生する可能性があるシステムの場合は、割り込みを禁止しておく必要があるからです。

５）割込みモード０の場合 H-debugger の為ブレークポイント又はトレース／ステップ実行をさせたい場合は、割込みが許可状態になった時点から有効になりますので下記方法のどちらかを都合に応じて実施して下さい。
なお、トレース／ステップはブレークポイントを利用したソフト判定での実施となります。
【方法①】 「set_imask_ccr(0)」の割込み許可を記述する。
【方法②】 ＤＥＦ操作でのショートＰＢ「ＥＩ」をクリックする。

７．ビルドの実行［ビルド］-[すべてをビルド]をクリックします。

「0 Error 0 Warnings」になり作業終了です。

８．ＤＥＦでの確認
１） ＜ｒｅｓｅｔｐｒｇ．ｃ＞の確認①８００Ｈ番地にスタックポインタの設定プログラムが確認できます。

３） ＜Ｈ８Ｓ２６１２．ｃ＞の確認（main 関数）①ブレークポイントを当て、８００H 番地から実行させブレークさせた確認画面です。

この様に「Ｈ−ｄｅｂｕｇｇｅｒ」用に設定ができたのが確認できたかと思います。

以上