製品情報 | 機能 | 仕様 | 対応CPU | VerUP | FAQ | 解説テキスト | 接続図 | GNU/gcc | ルネサスC



GNU/gccおよびKPIT使用に関する御承諾
GNU/gccおよびKPITに関するTel/Faxでのご質問に関してはお受けできませんが、メールでのご質問に関してはお答えするよう努力はします。
ただし都合によりお答えできない場合もありますので予めご了承願います。
GNU/gccおよびKPIT関連ソフトの不具合が発見された場合の対応義務はありません。また、この関連ソフトの使用方法に関する質問の回答義務もありませんので承知の上ご利用下さい。
ソースデバッグ可能にする為のツール(シンボルコンバータ)は、GNUおよびKPITより公開された資料を参考にして作成しましたが、資料に記述されていないDwarfコードもありました。弊社としては出来る限りシンボルデバッグ可能にする為、分析により対応させていますが、C記述の書式の相違により、更に資料外のDwarfコードが出力される可能性があります。この場合、当ソフトの利用ユーザはシンボル不可の部分を抽出したソース及び結合オブジェクト(*.x/*.coff/*.elf)を提出して頂く協力を希望します。
より良いデバッガにする為、解決に出来る限りの努力をしますので協力の程よろしくお願い致します。

■KPIT/GNU
(2010/11/12記述)
KPITバージョンについてのお知らせ
バージョン 備考 GCsymconv
v0702 確認済み Ver1.50Cまでの対応
v0703 確認済み Ver1.50Cまでの対応
v0801 確認済み Ver1.50Cまでの対応
v0802 確認済み Ver1.50Cまでの対応
v0803 確認済み(ELF/Dwarf2の吐き出しコードが一部変更される) Ver1.60Aからの対応(2010/11/12up)
v0903 確認済み(ELF/Dwarf2の吐き出しコードが一部変更される) Ver1.60Aからの対応(2010/11/12up)
v1002 確認済み(ELF/Dwarf2の吐き出しコードが変更されている) Ver1.70Aからの対応(2010/11/15up)
v1003 確認済み(ELF/Dwarf2の吐き出しコードが変更されている) Ver1.70Aからの対応(2010/11/15up)

KPITに関するHowTo
資料内容 Rev. 更新日 ファイル
シンボルコンバータのスイッチi説明と登録方法の説明
重複モジュール情報に対応する。
1.50 2008.04.18 SymConvHEW.pdf(323KB)
Hew2のパフォーマンス向上と安定させる設定(HowTo) 1.00 2007.01.24 Hew_Perform.pdf(96KB)
アセンブラソースでのデバッグについての説明とサンプル 1.00 2008.04.08 AsmKpit.pdf(124KB)  サンプル(H8S/2612)
アブソリュートファイル(*.x)指定でダウンロードする説明 1.20 2008.09.09 ABS_Dwnload.pdf(40KB)
Inline関数の対応についての説明 1.00 2008.04.10 Inline_Kpit.pdf(427KB)
View画面より、外部エディタJump機能を使用する。
1.00 2010.02.24 ExtEditer.pdf(244KB)
View画面より、「make.exe」を使用する。
1.00 2010.02.24 DEF_Make.pdf(203KB)

アブソリュートファイル指定方式のダウンロード
シンボルコンバータ(GCsymconv)を統合環境に登録しないタイプ
参考例 備考 Rev 更新日 ファイル
HEW4 H8/3664F
(E8仕様)
DEF6.80A追加説明 1.00 2008.03.10 KPIT3664_ABS_v0801.pdf(0.7MB)
サンプル(v0901以上使用不可) v0801 2008.03.10 KPIT3664_ABS_v0801.LZH(51KB)
H8/3048F-ONE
(E10T仕様)
DEF6.80A追加説明 1.00 2008.03.10 KPIT3048_ABS_v0801.pdf(0.8MB)
サンプル(v0901以上使用不可) v0801 2008.03.10 KPIT3048_ABS_v0801.LZH(53KB)
H8S/2612F
(ブート仕様)
DEF6.80A追加説明 1.00 2008.03.10 KPIT2612_ABS_v0801.pdf(0.7MB)
サンプル(v0901以上使用不可) v0801 2008.03.10 KPIT2612_ABS_v0801.LZH(65KB)
SH7051F
(ブート仕様)
DEF6.80A追加説明 1.00 2008.03.10 KPIT7051_ABS_v0801.pdf(0.9MB)
サンプル(v0901以上使用不可) v0801 2008.03.10 KPIT7051_ABS_v0801.LZH(83KB)

HEXファイル指定方式のダウンロード
シンボルコンバータ(GCsymconv)を統合環境に登録するタイプ
参考例 備考 Rev 更新日 ファイル
HEW4 H8/3664F
(E8仕様)
DEF6.80C追加説明 1.23 2008.04.18 KPIT3664_v0703_1.pdf(0.9MB)
サンプル(v0901以上使用不可) v0703 2008.03.07 KPIT3664_v0703_1.LZH(50KB)
H8/3048F-ONE
(E10T仕様)
DEF6.80C追加説明 1.23 2008.04.18 KPIT3048_v0703_1.pdf(0.9MB)
サンプル(v0901以上使用不可) v0703 2008.03.07 KPIT3048_v0703_1.LZH(52KB)
H8S/2612F
(ブート仕様)
DEF6.80C追加説明 1.23 2008.04.18 KPIT2612_v0703_1.pdf(0.9MB)
サンプル(v0901以上使用不可) v0703 2008.03.07 KPIT2612_v0703_1.LZH(63KB)
SH7051F
(ブート仕様)
DEF6.80C追加説明 1.23 2008.04.18 KPIT7051_v0703_1.pdf(1.0MB)
サンプル(v0901以上使用不可) v0703 2008.03.07 KPIT7051_v0703_1.LZH(81KB)
・KPITのインストール方法に関する資料は作成しておりません。 インスト−ルはKPITのホームページを御覧下さい。
・KPIT利用によりH-debuggerを使用する場合は、シンボルコンバータ「
GCsymconv」が必要です。【VerUP】よりダウンロードして下さい。
・KPIT利用によりH-debuggerを使用する場合は、DEFバージョンを「6.00A」以上にして下さい。
・KPITで作成したソフトは、構造体・ローカル変数・配列等の対応が可能になります。 シンボル対応一覧表
【注意事項】
・R8Cシリーズには対応していません。


■KPIT使用においてのHowToTOP
初期値のROM−>RAMへのコピーする設定方法が判りましたので、全説明書を改訂する。(Rev1.10)
@「char string[]="Hello"」の場合は、RAM側に割り振られる。
A「const char string[]="Hello"」の場合は、ROM側に割り振られる。
ビルド実行時に時々ライブラリが存在しているにも関わらず「NotFound」とエラー判定してしまう時がありました。
結果論的ですが、どうもWinFM等のファイラーが常駐しているとエラー判定してしまうようです。
関数内のローカル変数を参照する場合は、関数内の第一行目以降まで実行させてから参照して下さい。
関数内で2次元以上のローカル構造体を宣言するとシンボル情報が消滅する場合がありました。
例)
typedef struct {
 char dt1;
 short dt2;
} TEST;
// function
void func() {
TEST test[2][10];
 ......
}

■Cygwin/GNU
Cygwin+gccに関するHowTo&FAQ
付属CDのGNU/gccインストール方法
Cygwinについて | as(H8/300H & H8S)について | as(SH-2)について | gccについて | ldについて | makeについて | その他

弊社で用意したサービスパッケージのバージョンは、以下の通りです

号外!
SH版gcc(2.95.3)にてライン情報が正しく出力されていないことがわかりました。
製品版CDのVer2.00.A/2.00.Bをお持ちのユーザー様でお困りの方がいらっしゃいましたらcat-i@aone.co.jpまでご連絡ください。
製品版CDのgccについては、2002.10.24まで出荷していたgcc(2.95.2)に戻しました。


2002.10.24迄 2002.10.25以降 2002.11.13以降
CD
バージョン
〜Ver1.40.A Ver2.00.A
Ver2.00.B
Ver2.00.C〜
このパッケージは、
Windows xp
で動作しません。
このパッケージは、
Windows xp
で動作確認しました。
このパッケージは、
Windows xp
で動作確認しました。
Cygwin関係
Setup 2.29
Cygwin 1.3.3-2
ash 20010425
make 3.79.1-3
2.249.2.5
1.3.12-4
20020731-1
3.79.1-7
2.249.2.5
1.3.12-4
20020731-1
3.79.1-7
GNU/gcc関係
binutils 2.11.2
gcc 2.95.2
newlib 1.9.0
2.11.2
2.95.3
1.9.0
2.11.2
2.95.2
1.9.0

サービスパッケージのバージョンアップによりWindows xpでもGNU/gccを使用できるようになりました。
旧サービスパッケージをお持ちの方は、CygwinのサイトよりSetup.exe(2.249.2.5以降)をダウンロードしてCygwin1.3.12-4(またはこれ以上のバージョン)をインストールするだけでWindows xpで使用可能になります。

■CygwinTOP
Cygwinって何ですか?
H-debuggerの勉強を始めたところですが、windows XPにインストールして、使おうとしてみたのですが、makeしたときに、"Couldn't reserve space for cygwin's heap xxxxxxx"というエラーメッセージがでます。
XPにインストールして使うことはできないのでしょうか?


Cygwinって何ですか?
Cygwinは、 RedHatで行われているプロジェクトで、GNUツール(gcc等)をWindows上で動かすことを可能にするものです。
CygwinTOP

H-debuggerの勉強を始めたところですが、windows XPにインストールして、使おうとしてみたのですが、makeしたときに、"Couldn't reserve space for cygwin's heap xxxxxxx"というエラーメッセージがでます。
XPにインストールして使うことはできないのでしょうか?

ご使用の"Cygwin"のバージョンが古い為、xpに対応していないようです。
"Cygwin"のバージョンアップによりWindows xpで使用できるようになります。
Cygwin1.3.12-4(またはこれ以上のバージョン)を使用してください。
CygwinTOP
■as(H8/300H & H8S)TOP
アセンブラのソース表示デバッグは可能ですか?
ldc.w @er1,ccr をasでアセンブリると、コードがldc @er0,ccrになります。
ldmac er0,maclをasで正しくアセンブリできません。
stmac mach,er0をasで正しくアセンブリできません。


アセンブラのソース表示デバッグは可能ですか?
GNUの場合は、ラインアドレス情報を得る方法がわかりません。弊社はC言語でのインラインASMでの方法を取っています。
サンプルをご覧下さい。

asH8TOP

ldc.w @er1,ccr をasでアセンブリると、コードがldc @er0,ccrになります。
as(アセンブラ)のバグです。ソースオペランド側が@er0の場合は、問題ないのですが@er1->@er7の場合、@er0のコードを発生してしまいます。対策は、機械語を直接入力するしかありません。

word 0x0140,0x6910 ; ldc.w @er1,ccr
です。
なお、デスティネーションオペランドがexrの場合も同じ現象がでます。

asH8TOP

ldmac er0,maclをasで正しくアセンブリできません。
as(アセンブラ)のバグです。
対策は、機械語を直接入力するしかありません。


word 0x0320 ; ldmac er0,mach
です。
なお、デスティネーションオペランドがmaclの場合も同じ現象がでます。

asH8TOP

stmac mach,er0をasで正しくアセンブリできません。
as(アセンブラ)のバグです。
対策は、機械語を直接入力するしかありません。


.word 0x0220 ; stmac mach,er0
です。
なお、デスティネーションオペランドがmaclの場合も同じ現象がでます。

asH8TOP
■as(SH-2)TOP
アセンブラのソース表示デバッグは可能ですか?
mov.l r0,@(15,r1)をasで正しくアセンブリできません。
mov.l @(2,r0),r1をasで正しくアセンブリできません。


アセンブラのソース表示デバッグは可能ですか?
GNUの場合は、ラインアドレス情報を得る方法がわかりません。弊社はC言語でのインラインASMでの方法を取っています。
サンプルをご覧下さい。

asSHTOP

mov.l r0,@(15,r1)をasで正しくアセンブリできません。
as(アセンブラ)のバグです。
対策は、機械語を直接入力するしかありません。

.word 0x110f /* mov.l r0 ,@(15,r1 ) */ です。
なお、レジスタ名が違うパターンでも正しくアセンブリできません。

asSHTOP

mov.l @(2,r0),r1をasで正しくアセンブリできません。
as(アセンブラ)のバグです。
対策は、機械語を直接入力するしかありません。

.word 0x510f /* mov.l @(2,r0 ),r1 */ です。
なお、レジスタ名が違うパターンでも正しくアセンブリできません。

asSHTOP
■gccTOP
How to
H8
CPUは以下のスイッチで選択されます。

H8/300 -------> 無し
H8/300H ------> -mh

H8S ----------> -ms
浮動小数点演算は、スタックエリアを使用しています。256バイトぐらい確保して下さい。
long double/doubleで変数宣言しても4Byteのfloating pointにまとめられてしまいますので注意してください。
SH−2
CPUは以下のスイッチで選択されます。

SH-2 ------> -m2
浮動小数点演算は、スタックエリアを使用しています。512バイトぐらい確保して下さい。
long doubleで変数宣言しても8Byteのdoubleにまるめられますので注意してください。

#define文が複数行になる場合は、”\”記号でつないだ記述をしていましたが、最近OSを変えたらエラーがでます。
const Uchar S1cmd[] = {"\x02D1command\x03"};  このステートメントが正しくコンパイルできません。
関数のフレームポインタ部分を削除したいのですが、どうしたらいいですか?
C言語用に作成した"#define"のマクロ名をインラインアセンブラでも使用したいのですが、どうしたらいいですか?
ある変数を単独で、別アドレスに指定したいのですが、どうしたらいいですか?
関数と関数の間に、"nop"を4個挿入したいのですが、どうしたらいいですか?
グローバル変数を直接レジスタに割り振りたいのですがどうしたら良いですか?


#define文が複数行になる場合は、”\”記号でつないだ記述をしていましたが、最近OSを変えたらエラーがでます。
WindowsXpでこの現象がでてきました。Windows98/2000ではこの症状がでていませんでした。
対策としては、gcc(Ver2.95.2)をバージョンUPするか、下記のようにソースを書き換えて下さい。
<従来の記述>

#define disable() asm(" mov.l r0,@-r15 "); \
asm(" stc sr,r0 "); \
asm(" and #0x0f,r0 "); \
asm(" or #0xe0,r0 "); \
asm(" ldc r0,sr "); \
asm(" mov.l @r15+,r0 ")
<記述変更例>
#define disable() asm("mov.l r0,@-r15;stc sr,r0;and #0x0f,r0;or #0xe0,r0;ldc r0,sr;mov.l @r15+,r0")
gccTOP

const Uchar S1cmd[] = {"\x02D1command\x03"}; このステートメントが正しくコンパイルできません。
文字列中の¥xnnn(16進数表記)は、gccでは桁数が決めてないようです。ですから、gccは¥x02D1cまで数値化しようとします。これを防ぐ方法は、
const Uchar S1cmd[] = {"\x02""D1command\x03"};
このような記述にして下さい。

gccTOP

関数のフレームポインタ部分を削除したいのですが、どうしたらいいですか?
コンパイル時に"-fomit-frame-pointer"を指定して下さい。
gccTOP

C言語用に作成した"#define"のマクロ名をインラインアセンブラでも使用したいのですが、どうしたらいいですか?
このように記述して下さい

#define MONJMP 0x200
asm("jmp @%c0 ":: "g" (MONJMP)); /* jmp @0x200 */
になります。

gccTOP

ある変数を単独で、別アドレスに指定したいのですが、どうしたらいいですか?
その変数のセクション名を別に定義した後、ロケート用のスクリプトファイルにアドレスを定義して下さい。

const short TBL[0x20] __attribute__ ((section (".envtbl"))) =
{
};
[ロケート スクリプトファイル *.x]
.envtabl 0xffe0a0 : { *(.envtbl) _eenv = . ;}
これで、"TBL"は0xffe0a0番地に割り振られます。

gccTOP

関数と関数の間に、"nop"を4個挿入したいのですが、どうしたらいいですか?
インラインアセンブラで対応して下さい。

#define Nop4() asm("nop\n nop\n nop\n nop\n"); // Pre facth Break 対策

/********************************************************/
void Aproc {
}
Nop4();<-----------ココ
/********************************************************/
void Bproc {
}
gccTOP

グローバル変数を直接レジスタに割り振りたいのですがどうしたら良いですか?
このように宣言してください。

register long Moniter asm("r14");

これはSH−2の例ですが、Moniter変数をレジスタR14に割り振った事になります。

gccTOP
ldTOP
How to
H8
CPUのアーキテクチャの指定が必要です。

H8300 -------> OUTPUT_ARCH(h8300)
H8300s ------> OUTPUT_ARCH(h8300s)
H8300h ------> OUTPUT_ARCH(h8300h)
SH
CPUのアーキテクチャの指定が必要です。

SH-2 -------> OUTPUT_ARCH(sh)

GNU/gccでモニターエリア0x200〜0x7FF番地を空けるにはどうしたらいいですか?
link(ld)実行後の結合オブジェクトファイルをもとに、逆アセンブラ情報がほしいのですが?


GNU/gccでモニターエリア0x200〜0x7FF番地を空けるにはどうしたらいいですか?
下記ファイルは、セクションごとのグループ指定および、アドレスを指定する定義ファイルです。
このファイルは、LDコマンド(リンクエディタ)の時に使用します。

file "h8s261x.x"
1: OUTPUT_FORMAT("coff-h8300")
2: OUTPUT_ARCH(h8300S)
3:
4: SECTIONS
5: {
6: .vect 0x0 : { *(.vector) ; }
7: .rom 0x800 : { *(.text) *(.rodata) *(.string) _etext = . ; }
8: .const . : { *(.data) _edata = . ;}
9: .bss 0xffe000 : { *(.bss) *(COMMON) *(.stack) _end = . ; }
10: }
11:
このように、”.rom 0x800”と指定するだけでモニタエリアの確保ができます。
詳細説明は、弊社製”H8S用の実践解説テキスト”をお読みください。

ldTOP

link(ld)実行後の結合オブジェクトファイルをもとに、逆アセンブラ情報がほしいのですが?
GNUツールの中の”objdump”を使ってください。
例)
オブジェクトファイルを”abc.coff”
逆アセンブラファイルを”abc.uasm”としますと、
h8300-hms-coff-objdump -d -S -l abc.coff > abc.uasm
です。
ldTOP
makeTOP
makeを実行したのにMakefileを読込まない。


makeを実行したのにMakefileを読込まない。
デフォルトMakefile名は、大文字,小文字を区別して必ず"Makefile"として下さい。
makeTOP
■その他TOP
Link(ld)実行後、不必要なアドレス部分を削除する方法がありますか?


Link(ld)実行後、不必要なアドレス部分を削除する方法がありますか?
objcopyのスイッチ「-R セクション名」を指定することで実現できます。
例)
objcopy -R .bss0 -Osrec $A.coff $*.mot

この例ですと、「.bss0」セクション名(0x400000番地に割付)の部分がHEXファイルより削除されます。
その他TOP
H-デバッガAH7000のページ H-デバッガAH6000のページ バグファインダーBF3000のページ ミドルウェアとユーティリティのご紹介 川崎マイクロのKC80のサポートページ 資料請求・技術情報のお問い合わせ 関係会社へのリンク トップページ