TOP > ソフトウェア > 勝手に作成されるファイルをコントロールする
 ■ Remove Fileの作業に疲れたあなたに

 KPITのコンパイラをHEWで使うやり方を解説してきましたが、プロジェクトを作成するたびに使わないファイルを削除したり、自分で作成したincludeファイルの置いてあるパスをCompilerに教えて(設定して)あげたりと、結構面倒です。
 そこで、気持ちよく作業に入れるように設定をいじってしまおうというのが今回の企画です。それでは、そのやり方について解説していきましょう。

 ■ 警告! Warning!

 今回行うのは、HEWの設定をいじったりするというものではなく、設定ファイルの一部を消去したり、書き換えたりするというものなので、最悪動かなくなる可能性があります。
 下記の記事を実行するのは、自己責任でお願いします。また、心配な方は決して行わずに今まで紹介した方法でmotファイルを作ってください。


 ■ オリジナルはどこに?

 さて、なぜ勝手にファイルがプロジェクトフォルダで生成されたりするのか・・・?という疑問から今回の件は始まります。追加されるソースファイルやヘッダファイルは明らかにKPITで作られたものだと分かります。
 ならば、コピーされるファイルのオリジナルがどこかにあるはず。そんな訳で検索してみたところ、
C:\Program Files\Renesas\HEW30\System\Pg\KPIT GNUH8-COFF
 上記フォルダにそれらしきフォルダや設定を発見しました。さて、プロジェクト作成の手順では特に触れなかったんですが、プロジェクトタイプというものをC Applicationを選択していたんです。
 つまり、C Applicationに該当するcapp.detの設定を変更、または追加することで作成されるファイルの種類をコントロールできるわけです。では、このファイルを見ていくことにしましょう。

 ■ capp.detを編集 その1

 注目するのは、NAME=H8/300Hと書いている部分です。必要と思われる部分を下記に示します。
[NEWTYPE] NAME=H8/300H PROJECTFILES= 300H*main.c*Sample main function*standard 300H*start.asm*Start information*standard 300H*hwinit.c*Hardware initialisation*standard 300H*vects.c*Interrupt vector table*standard 300H*ioh83048f.h*I/O Registers*standard 300H*sbrk.c*sbrk routine*standard 300H*read.c*read routine*standard 300H*write.c*write routine*standard BIGE=YES BIGEDIRS=$(TCINSTALL)\h8300-coff\lib\gcc\h8300-coff\4.0-GNUH8_v0502\h8300h *$(TCINSTALL)\h8300-coff\h8300-coff\lib\h8300h BIGEFILES=m*c*gcc LITTLEE=NO INCDIR=$(TCINSTALL)\h8300-coff\include*$(TCINSTALL)\h8300-coff\h8300-coff\include *$(TCINSTALL)\h8300-coff\lib\gcc\h8300-coff\4.0-GNUH8_v0502\include DEFAULTPC=start DEFAULTSP=(EXCEPTION_VECTOR) &stack PROJECTTYPE=CAPPPROJECT CPUS= Sample H8/300H Device


 変更や追加があるのは、上記の赤い部分と青い部分です。赤い部分がプロジェクトフォルダに追加されるファイルで、青い部分がCompilerに追加されるincludeフォルダへのパスです。
 このまま書き換えても良いのですが念のために残しておき、新たに追加しようと思います。良く使うで一番上になるように、
[CPUFILEVERSION] 1.0 (←ここに入れる) [NEWTYPE] NAME=H8/300L (以下略)
 上記の部分にコピーして貼り付けます。貼り付け結果は以下の通り。
[CPUFILEVERSION] 1.0 [NEWTYPE] NAME=H8/300H PROJECTFILES= 300H*main.c*Sample main function*standard 300H*start.asm*Start information*standard 300H*hwinit.c*Hardware initialisation*standard 300H*vects.c*Interrupt vector table*standard 300H*ioh83048f.h*I/O Registers*standard 300H*sbrk.c*sbrk routine*standard 300H*read.c*read routine*standard 300H*write.c*write routine*standard BIGE=YES BIGEDIRS=$(TCINSTALL)\h8300-coff\lib\gcc\h8300-coff\4.0-GNUH8_v0502\h8300h *$(TCINSTALL)\h8300-coff\h8300-coff\lib\h8300h BIGEFILES=m*c*gcc LITTLEE=NO INCDIR=$(TCINSTALL)\h8300-coff\include*$(TCINSTALL)\h8300-coff\h8300-coff\include *$(TCINSTALL)\h8300-coff\lib\gcc\h8300-coff\4.0-GNUH8_v0502\include DEFAULTPC=start DEFAULTSP=(EXCEPTION_VECTOR) &stack PROJECTTYPE=CAPPPROJECT CPUS= Sample H8/300H Device [NEWTYPE] NAME=H8/300L (以下略)

 ■ capp.detを編集 その2

 次に、各種変更、追加の作業を行います。最初に名前を変更します。
CPUS=
Sample H8/300H Device ⇒ 3052F
 名前は何でも良いのですが、今回はCPUが3052Fなので、3052Fにしました。
 次に、追加されるファイルについて修正を加えます。青い部分が削除する部分で、赤い部分は追加する部分です。
PROJECTFILES= 300H\3052F*main.c*Sample main function*standard 300H*start.asm*Start information*standard 300H\3052F*hwinit.c*Hardware initialisation*standard 300H\3052F*vects.c*Interrupt vector table*standard 300H\3052F*interrupt.c*interrupt routines*standard 300H*ioh83048f.h*I/O Registers*standard 300H*sbrk.c*sbrk routine*standard 300H*read.c*read routine*standard 300H*write.c*write routine*standard
300Hフォルダ内に3052Fというフォルダを作成し、main.c、hwinit.c、vects.cをコピーし、3052Fフォルダに貼り付けます。interrupt.cはないので作成します。
 これらのファイルの修正方法については、のちほど解説します。修正が完了すると下記の通りになります。
PROJECTFILES= 300H\3052F*main.c*Sample main function*standard 300H*start.asm*Start information*standard 300H\3052F*hwinit.c*Hardware initialisation*standard 300H\3052F*vects.c*Interrupt vector table*standard 300H\3052F*interrupt.c*interrupt routines*standard

 ■ capp.detを編集 その3

 次に、自分で作成したincludeファイルを置いているフォルダを追加しようとおもいます。
INCDIR=$(TCINSTALL)\h8300-coff\include*$(TCINSTALL)\h8300-coff\h8300-coff\include*$(TCINSTALL)\h8300-coff\lib\gcc\h8300-coff\4.0-GNUH8_v0502\include*c:\program files\renesas\hew30\include

 上記の赤い部分が追加部分です。includeファイルへのパスの前に*(アスタリスク)をつけて追加すればOKです。他にもincludeファイルがある場合は同じように、*をつけて追加すれば問題ありません。
 これで、capp.detの編集は終了です。次は各所ソースファイル、ヘッダファイルの編集を説明します。

 ■ main.c
#include "ioh83048f.h" unsigned char string[] = "hello world"; int count; int main (void) { for (count=0; count<12; count++) string[count] = 'a' + (unsigned char) count; return (0); } // Original source file
 上記のソースファイルがオリジナルです。しかし、使わない機能がほとんどなので削除し、下記のようなスッキリした構成にしています。
#include "3052s.h" int main (void){ while(1){ } } // Custom source file

 ■ hwinit.c
#include "ioh83048f.h" void hw_initialise (void) { ABWCR = 0xFB; /* area 2 is 16-bit access */ } // Original source file
 上記のソースファイルがオリジナルです。こちらは主に、ヘッダファイルの修正と、それに応じた変更を行っています。しかし、この機能は使わないのでコメントアウトしています。
#include "3052s.h" void hw_initialise (void) { //BSC.ABWCR.BYTE = 0xFB; /* area 2 is 16-bit access */ return ; } // Custom source file
 ■ interrupt.c
 このファイルは元々存在しないので、新規に作成してください。使用目的はこちらのファイルに割り込みなどの処理をまとめるためです。
 あっちやこっちに割り込みファイルが点在していると管理しにくいので・・・。こちらは、ヘッダファイルのみ書いて終了していただいて構いません。
#include "3052s.h" // Custom source file

 ■ vects.c

 ベクタテーブルは長いので、修正後の中身を載せておきます。基本的に、修正したのはコメントアウトされている部分だけです。
void start(void); /* Startup code (in start.asm) */ typedef void (*fp) (void); #define VECT_SECT __attribute__ ((section (".vects"))) const fp HardwareVectors[] VECT_SECT = { start, /* vector 0 Reset */ (fp)(0), /* vector 1 Reserved */ (fp)(0), /* vector 2 Reserved */ (fp)(0), /* vector 3 Reserved */ (fp)(0), /* vector 4 Reserved */ (fp)(0), /* vector 5 Reserved */ (fp)(0), /* vector 6 Reserved */ (fp)(0), /* vector 7 NMI */ (fp)(0), /* vector 8 TRAP */ (fp)(0), /* vector 9 TRAP */ (fp)(0), /* vector 10 TRAP */ (fp)(0), /* vector 11 TRAP */ (fp)(0), /* vector 12 IRQ0 */ (fp)(0), /* vector 13 IRQ1 */ (fp)(0), /* vector 14 IRQ2 */ (fp)(0), /* vector 15 IRQ3 */ (fp)(0), /* vector 16 IRQ4 */ (fp)(0), /* vector 17 IRQ5 */ (fp)(0), /* vector 18 Reserved */ (fp)(0), /* vector 19 Reserved */ (fp)(0), /* vector 20 WOVI */ (fp)(0), /* vector 21 CMI */ (fp)(0), /* vector 22 Reserved */ (fp)(0), /* vector 23 Reserved */ (fp)(0), /* vector 24 IMIA0 */ (fp)(0), /* vector 25 IMIB0 */ (fp)(0), /* vector 26 OVI0 */ (fp)(0), /* vector 27 Reserved */ (fp)(0), /* vector 28 IMIA1 */ (fp)(0), /* vector 29 IMIB1 */

(fp)(0), /* vector 30 OVI1 */ (fp)(0), /* vector 31 Reserved */ (fp)(0), /* vector 32 IMIA2 */ (fp)(0), /* vector 33 IMIB2 */ (fp)(0), /* vector 34 OVI2 */ (fp)(0), /* vector 35 Reserved */ (fp)(0), /* vector 36 IMIA3 */ (fp)(0), /* vector 37 IMIB3 */ (fp)(0), /* vector 38 OVI3 */ (fp)(0), /* vector 39 Reserved */ (fp)(0), /* vector 40 IMIA4 */ (fp)(0), /* vector 41 IMIB4 */ (fp)(0), /* vector 42 OVI4 */ (fp)(0), /* vector 43 Reserved */ (fp)(0), /* vector 44 DEND0A */ (fp)(0), /* vector 45 DEND0B */ (fp)(0), /* vector 46 DEND1A */ (fp)(0), /* vector 47 DEND1B */ (fp)(0), /* vector 48 Reserved */ (fp)(0), /* vector 49 Reserved */ (fp)(0), /* vector 50 Reserved */ (fp)(0), /* vector 51 Reserved */ (fp)(0), /* vector 52 ERI0 */ (fp)(0), /* vector 53 RXI0 */ (fp)(0), /* vector 54 TXI0 */ (fp)(0), /* vector 55 TEI0 */ (fp)(0), /* vector 56 ERI1 */ (fp)(0), /* vector 57 RXI1 */ (fp)(0), /* vector 58 TXI1 */ (fp)(0), /* vector 59 TEI1 */ (fp)(0) /* vector 60 ADI */ }; // Custom source file
 ■ おわりに

 以上でcapp.detの修正は完了です。基本的に好きなファイルを設定できるので、上記のファイルではなくてもOKです。次回は、Linkerのsectionに関係のあるscapp.detについて解説します。


履歴 2005年12月17日 公開 2005年12月17日 NAME=H8/300Hを変更すると問題が発生するため、変更しないように解説 2005年12月18日 hwinit.cでreturn ;が抜けていたので追加

[TOP] [ソフトウェア] [勝手に作成されるファイルをコントロールする その2]
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送