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

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

NewWorkSpace2
Project2
SH705x.c
Ｃファイル

Ｈｅｗ添付ファイル Resetprg.c
Intprg.cDbsct.c
Vecttbl.c
ＣＰＵタイプSH7051F

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

Ｃファイル

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

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

ﾜｰｸｽﾍﾟｰｽ名
ﾌﾟﾛｼﾞｪｸﾄ名
ﾃﾞｨﾚｸﾄﾘCPU 種別
ﾂｰﾙﾁｪｲﾝﾌﾟﾛｼﾞｪｸﾄ“NewWorkSpace2”“Project2”“C:\HEW3\NewWorkSpace2”“SuperH RISC engine”“Hitachi SuperH Standard”
Application

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

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

次へ＞をクリックして下さい。

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

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

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

ここで明示されたＨｅｗ作成スタート
アップ関数を使用しますので、デフォルトの状態で、次へ＞をクリックして下さい。シミュレータの設定ですが使用しませんのでチェック無しの状態で、次へ＞クリックして下さい。

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

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

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

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

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

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

下記１ファイルを指定して下さい。
Sh705x.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 に登録する。(Ｖｅｒ３．８０Ｂから）

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

[オプション]-[Hitach SuperH
RISC engine Standard Toolchain]をクリックします。

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

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

５．ツール（リンカ）の設定[オプション]-[Hitach SuperH RISC
engine Standard Toolchain]をクリックします。

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

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

相対パス「Configuration directory」に選択します。
ファイルパス「resetprg.obj」と入力します。
ＯＫをクリックします。

ファイルがセットされたのを確認します。
この指定は、“最初にこのリスト順にモジュールをリンクしなさい”との指示になります。
（DEF の C View にてアドレス順に他モジュールを表示させたい場合は、追加設定してください。
）（重要） 特に「resetprg.obj」の先頭に SP を設定するコードがありますので先頭を０ｘ１０００番地にする為の設定ですが、後説明のセクション指定で「PResetPRG」の先頭番地を０ｘ１０００番地にしていますので必要ありませんが、同セクション名の他モジュールを追加した場合でも、必ず最初にリンクさせるための手続きです。

カテゴリの「アウトプット」を選択する。
出力形式の「Ｓタイプ（ＥＬＦ／ＤＷＡ
ＲＦアブソリュート付き）」を選択する。
デバッグ情報の「デバッグ情報ファイル(*.dbg)出力」を選択する。
「出力ファイル／インフォメーション抑止」の変更をクリックします。
(重要)シンボリックデバッグを可能にするために必要な設定です。

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

カテゴリの「セクション」を選択する。
下図のようにセクション指定をする。
0x00000000 DVECTTBL
DINTTBL
0x00001000 PResetPRG
PIntPRG
0x00001800 PC
C$DSEC
C$BSECD
0xFFFFE840 B
R
0xFFFFFBFC S
ＯＫをクリックする。

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

６．スタートアップおよびベクターの変更と追加
１） ＜ｒｅｓｅｔｐｒｇ．ｃ＞の変更①SR_Init 値を「0x000000F0」で変更しません。
（備考）「resetprg.c」関数内でブレークポイン
ト及びトレース／ステップ実行をしたい場
合は、DEF 操作のショートＰＢ「ＥＩ」をクリックして下さい。
この例での割り込み許可は、「_main()」関数内に記述してあります。

①左図のようなソースを追加しますとリセット時ソフトタイマ挿入になります。
このソースを追加することにより下記メリットがあります。
②ソフトタイマが不必要な場合は「#define WAIT」をコメントにして下さい。

③ソフトタイマによるメリット
・ＤＥＦの「ＲｓｔＭｏｎ」操作時ＳＰ値が設定値のままである。
・ＤＥＦの「ＲｓｔＭｏｎ」操作時「ｍａｉｎ（）」プログラムまで走行しないため初期設定等による内部レジスタが汚れない。

①「main()」を「_main()」に変更
特に意味はありません。
SH-2 のサンプルは全て「_main()」になっているので共通化する為です。

２）ブレークおよびトレース／ステップ実行について
ＵＢＣブレーク割り込みのプライオリティは、１５になっていますのでＣＰＵのＳＲレジスタの割り込みマスクレベルを１４以下に設定する必要がありますので、下記方法のどちらかを都合に応じて実施して下さい。
なお、トレース／ステップはＵＢＣを利用したソフト判定での実施となります。
【方法①】 「set_imask(14)」を記述する。
【方法②】 ＤＥＦ操作でのショートＰＢ「ＤＩ」をクリックする。

３） ＜ｉｎｔｐｒｇ．ｃ＞の変更

今回使用の「SH705x.C」は、ATU6 のCMI6 割り込みを使用した例ですのでベクターを設定します。
①「vector 128」に「Timer6();」関数を登録します。

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

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

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

８．ＤＥＦでの確認①０番地のリセットベクター値「0x1000」が確認できます。
②４番地のスタックポインタ値「0xFFFFFFFC」が確認できます。
③レジスタ画面を確認して下さい。

①ソフトタイマの逆アセンブラ表
示です。
（参考まで）②SR 値および SP 値がリセット状態であることが確認できます。

これで「Ｈ−ｄｅｂｕｇｇｅｒ」用に設定ができたのが確認できました。

以上