TOP > ソフトウェア > Cygwinを使ってコンパイルする。「設定編」
 ▼ crt0.s

 このファイルの設定は特に変更がないので、このままで大丈夫です。自分も理解していないので、内容が理解できたら説明しようと思います。

 ▼ linker.x

 このファイルは、H8のアドレスにベクタ、ROM、RAM、スタック等を、どこにを配置するのか。割り込みの設定はどうなのかなどを設定する場所です。ベクタ、スタック等は勉強不足なので説明ができませんが、これらのアドレスはマイコンごとに違うので設定を変更する必要があります。また、割り込み要因も種類によっては使う機能も数も違うため、これも再設定の必要があります。
 それらをいかにして、変更するのか?それは、秋月の付属CDについてきたファイルを使って修正します。秋月のCDのh8mbフォルダに、h8mb-0.1-20020506.tar.gzという圧縮ファイルがあると思います。(ファイル名は、買った時期によって若干名前が異なる可能性がありますのでご注意ください。)
 これの解凍方法は、付属CDのサンプルのコンパイル編にて説明されているので、そちらを参照してください。
 さて、それを解凍するとh8mbフォルダ中に、h8300フォルダがあります。そのフォルダ内にある、3052.ldsというファイル内を見てください。これから3052.ldsの内容を、linker.xへ移植します。
[linker.xより]

MEMORY
{
	vectors : o = 0x0000, l = 0x0034
	rom     : o = 0x0034, l = 0x7fcc
	ram     : o = 0xf780, l = 0x0600	/* 1.5Kbyte */
	stack   : o = 0xff80, l = 0x0000
}

↓こちらに変更

[3052.ldsより]

MEMORY
{
	vectors : o = 0x000000, l = 0x000ff
	rom     : o = 0x000100, l = 0x7ff00
	ram     : o = 0x0fdf10, l = 0x02000
	stack   : o = 0x0fff0e, l = 0x00002
}
 次に、割り込みの設定を移植します。
[linker.xより]

SECTIONS
{
 .vectors : {
  /*  0 */ SHORT(ABSOLUTE(_start))
  /*  1 */ SHORT(ABSOLUTE(_halt))
  /*  2 */ SHORT(ABSOLUTE(_halt))
  /*  3 */ SHORT(ABSOLUTE(_halt))
  /*  4 */ SHORT(ABSOLUTE(_halt))
  /*  5 */ SHORT(ABSOLUTE(_halt))
  /*  6 */ SHORT(ABSOLUTE(_halt))
  /*  7 */ SHORT(DEFINED(_int_nmi)?ABSOLUTE(_int_nmi):ABSOLUTE(_halt))

  /*  8 */ SHORT(DEFINED(_int_trap0)?ABSOLUTE(_int_trap0):ABSOLUTE(_halt))
  /*  9 */ SHORT(DEFINED(_int_trap1)?ABSOLUTE(_int_trap1):ABSOLUTE(_halt))
  /* 10 */ SHORT(DEFINED(_int_trap2)?ABSOLUTE(_int_trap2):ABSOLUTE(_halt))
  /* 11 */ SHORT(DEFINED(_int_trap3)?ABSOLUTE(_int_trap3):ABSOLUTE(_halt))
  /* 12 */ SHORT(DEFINED(_int_break)?ABSOLUTE(_int_break):ABSOLUTE(_halt))
  /* 13 */ SHORT(DEFINED(_int_sleep)?ABSOLUTE(_int_sleep):ABSOLUTE(_halt))
  /* 14 */ SHORT(DEFINED(_int_irq0)?ABSOLUTE(_int_irq0):ABSOLUTE(_halt))
  /* 15 */ SHORT(DEFINED(_int_irq1)?ABSOLUTE(_int_irq1):ABSOLUTE(_halt))

  /* 16 */ SHORT(DEFINED(_int_irq2)?ABSOLUTE(_int_irq2):ABSOLUTE(_halt))
  /* 17 */ SHORT(DEFINED(_int_irq3)?ABSOLUTE(_int_irq3):ABSOLUTE(_halt))
  /* 18 */ SHORT(DEFINED(_int_wkp)?ABSOLUTE(_int_wkp):ABSOLUTE(_halt))
  /* 19 */ SHORT(DEFINED(_int_timer_a)?ABSOLUTE(_int_timer_a):ABSOLUTE(_halt))
  /* 20 */ SHORT(ABSOLUTE(_halt))
  /* 21 */ SHORT(DEFINED(_int_timer_w)?ABSOLUTE(_int_timer_w):ABSOLUTE(_halt))
  /* 22 */ SHORT(DEFINED(_int_timer_v)?ABSOLUTE(_int_timer_v):ABSOLUTE(_halt))
  /* 23 */ SHORT(DEFINED(_int_sci3)?ABSOLUTE(_int_sci3):ABSOLUTE(_halt))

  /* 24 */ SHORT(DEFINED(_int_iic)?ABSOLUTE(_int_iic):ABSOLUTE(_halt))
  /* 25 */ SHORT(DEFINED(_int_adi)?ABSOLUTE(_int_adi):ABSOLUTE(_halt))
 }  > vectors

↓こちらに変更

[3052.ldsより]

SECTIONS 				
{ 					
.vectors : {
	LONG(ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(DEFINED(_int_nmi)?ABSOLUTE(_int_nmi):ABSOLUTE(_start))
	LONG(DEFINED(_int_trap0)?ABSOLUTE(_int_trap0):ABSOLUTE(_start))
	LONG(DEFINED(_int_trap1)?ABSOLUTE(_int_trap1):ABSOLUTE(_start))

	LONG(DEFINED(_int_trap2)?ABSOLUTE(_int_trap2):ABSOLUTE(_start))
	LONG(DEFINED(_int_trap3)?ABSOLUTE(_int_trap3):ABSOLUTE(_start))
	LONG(DEFINED(_int_irq0)?ABSOLUTE(_int_irq0):ABSOLUTE(_start))
	LONG(DEFINED(_int_irq1)?ABSOLUTE(_int_irq1):ABSOLUTE(_start))
	LONG(DEFINED(_int_irq2)?ABSOLUTE(_int_irq2):ABSOLUTE(_start))
	LONG(DEFINED(_int_irq3)?ABSOLUTE(_int_irq3):ABSOLUTE(_start))
	LONG(DEFINED(_int_irq4)?ABSOLUTE(_int_irq4):ABSOLUTE(_start))
	LONG(DEFINED(_int_irq5)?ABSOLUTE(_int_irq5):ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))

	LONG(DEFINED(_int_wovi)?ABSOLUTE(_int_wovi):ABSOLUTE(_start))
	LONG(DEFINED(_int_cmi)?ABSOLUTE(_int_cmi):ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(DEFINED(_int_imia0)?ABSOLUTE(_int_imia0):ABSOLUTE(_start))
	LONG(DEFINED(_int_imib0)?ABSOLUTE(_int_imib0):ABSOLUTE(_start))
	LONG(DEFINED(_int_ovi0)?ABSOLUTE(_int_ovi0):ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(DEFINED(_int_imia1)?ABSOLUTE(_int_imia1):ABSOLUTE(_start))
	LONG(DEFINED(_int_imib1)?ABSOLUTE(_int_imib1):ABSOLUTE(_start))

	LONG(DEFINED(_int_ovi1)?ABSOLUTE(_int_ovi1):ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(DEFINED(_int_imia2)?ABSOLUTE(_int_imia2):ABSOLUTE(_start))
	LONG(DEFINED(_int_imib2)?ABSOLUTE(_int_imib2):ABSOLUTE(_start))
	LONG(DEFINED(_int_ovi2)?ABSOLUTE(_int_ovi2):ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(DEFINED(_int_imia3)?ABSOLUTE(_int_imia3):ABSOLUTE(_start))
	LONG(DEFINED(_int_imib3)?ABSOLUTE(_int_imib3):ABSOLUTE(_start))
	LONG(DEFINED(_int_ovi3)?ABSOLUTE(_int_ovi3):ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))

	LONG(DEFINED(_int_imia4)?ABSOLUTE(_int_imia4):ABSOLUTE(_start))
	LONG(DEFINED(_int_imib4)?ABSOLUTE(_int_imib4):ABSOLUTE(_start))
	LONG(DEFINED(_int_ovi4)?ABSOLUTE(_int_ovi4):ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(DEFINED(_int_dend0a)?ABSOLUTE(_int_dend0a):ABSOLUTE(_start))
	LONG(DEFINED(_int_dend0b)?ABSOLUTE(_int_dend0b):ABSOLUTE(_start))
	LONG(DEFINED(_int_dend1a)?ABSOLUTE(_int_dend1a):ABSOLUTE(_start))
	LONG(DEFINED(_int_dend1b)?ABSOLUTE(_int_dend1b):ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))

	LONG(ABSOLUTE(_start))
	LONG(ABSOLUTE(_start))
	LONG(DEFINED(_int_eri0)?ABSOLUTE(_int_eri0):ABSOLUTE(_start))
	LONG(DEFINED(_int_rxi0)?ABSOLUTE(_int_rxi0):ABSOLUTE(_start))
	LONG(DEFINED(_int_txi0)?ABSOLUTE(_int_txi0):ABSOLUTE(_start))
	LONG(DEFINED(_int_tei0)?ABSOLUTE(_int_tei0):ABSOLUTE(_start))
	LONG(DEFINED(_int_eri1)?ABSOLUTE(_int_eri1):ABSOLUTE(_start))
	LONG(DEFINED(_int_rxi1)?ABSOLUTE(_int_rxi1):ABSOLUTE(_start))
	LONG(DEFINED(_int_txi1)?ABSOLUTE(_int_txi1):ABSOLUTE(_start))
	LONG(DEFINED(_int_tei1)?ABSOLUTE(_int_tei1):ABSOLUTE(_start))

	LONG(DEFINED(_int_adi)?ABSOLUTE(_int_adi):ABSOLUTE(_start))

	FILL(0xff)
        }  > vectors
 ちょっと長いですが(長すぎ)、このように変更すれば、このファイルはこれでOKです。3052Fを使う限り、この設定を変更することはありません。どの部分を変更すれば良いかどうかだけ押さえておけば良いです。

 ▼ Makefile

 さて、普段良く変更するのはこのファイルです。プログラムのファイルが多くなればそれらのファイル名を追加してやる必要があります。さらに、MOTファイルを出力したときのファイル名もMakefileにて決めることができます。では、さきほどと同じようにファイルの内容を変えていこうと思います。
 今回コンパイルするファイルは、crt0.s、main.c、Makefile、3052f.h、h8types.hの5種類です。これらを一つにするために、元々の設定を変更します。
[Makefileより]
OBJS	=	crt0.o		\
		main.o		\
		led.o		\
		sw.o		\
		#dummy

DEP	=	$(LNK)		\
		Makefile	\
		3664F.h		\
		h8types.h	\
		led.h		\
		sw.h		\
		#dummy

↓こちらに変更

[新Makefileより]

OBJS	=	crt0.o		\
		main.o		\
		#dummy

DEP	=	$(LNK)		\
		Makefile	\
		3052F.h		\
		h8types.h	\
		#dummy
 このように、拡張子が[.c]のファイルは拡張子を[.o]、ヘッダファイルの拡張子はそのままで問題ありません。これで設定は終了です。

履歴 2005年3月22日 公開

[TOP] [ソフトウェア] [準備編] [設定編] [コンパイル編]
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送