Short Break コーヒー
この環境で、H8のToolchain(32bit)を使ってみました。
なんか行けそうです。
簡単にいうと
http://www.laksmido.com/dev/AKI-H8_3069F/eCos/2006062301.html
を参考にしてCygwin 64bitの環境で使用します。
https://www.cygwin.com/setup-x86_64.exe

### お世話になります。###
H8MAX download center (?http://strawberry-linux.com/h8max/download.php?)から
h8300-elf-tools.cygwin.tar.bz2をダウンロードし/srcに置く。展開して/gnutoolsに置く。

$ mkdir /src
$ cd /src
$ wget http://strawberry-linux.com/h8max/down/h8300-elf-tools.cygwin.tar.bz2
$ tar xjf h8300-elf-tools.cygwin.tar.bz2
$ mkdir /gnutools
$ cp -r /src/usr/local/* /gnutools
$ rm -fr /src/usr
### ここまで ###

です。
OKの様だ!
実は、御呪いがある様で、Toolchainがなんとか動作するためには、Cygwinの32bitが、Drive C上にないといけない様です。
すなわち、
C:\cygwin\gnutools\bin

C:\cygwin\opt\ecos\ecos

以上がもともとの32bitの構成


C:\cygwin64\gnutools\bin

C:\cygwin64\opt\ecos\ecos

が、64bitの構成


それぞれのディレクトリの下にH8用のToolchainが置かれているということ

それぞれのディレクトリの下にopt\ecos\ecos置かれているということです。

恐らくなんらかの理屈があってそうなっているのだと思いますが。。。

 

64bit環境の.bash_profileの記載は、

ECOS_REPOSITORY=/opt/ecos/ecos/packages
export PATH=/opt/ecos/ecos-3.0/tools/bin:/gnutools/bin:$PATH

としてありますが、eCosのコンフィギュレーションツールは使えない。従ってライブラリも構築出来ない状態のままです。

また、eCos3.0が世に出た当時は、Cygwinは32bitが前提になっていたので、 /cyg と /cyg64を想定していなかったことが理由かな?

 

私の環境の場合Tera Termは、
C:\teraterm\cygterm+-x86_64
にあるcygterm.exeを
C:\teraterm
の直下に置きました。既存のものの上書きです。

 

あいかわらず下差しな感じですが。。。

user@Esprimo-9518OJB ~/ecos/embedded_proto
$ rm e_p.o

user@Esprimo-9518OJB ~/ecos/embedded_proto
$ SRCS=e_p.c DST=e_p ./build_Makefile ../httpd_kernel

user@Esprimo-9518OJB ~/ecos/embedded_proto
$ make
h8300-elf-gcc -c -finline-limit=7000 -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef  -g -O2 -mh -mint32 -fsigned-char -fdata-sections  -fno-exceptions   -I/home/user/ecos/httpd_kernel/install/include e_p.c
In file included from e_p.c:90:
lcd_printf.h: In function `printf':
lcd_printf.h:213: warning: dereferencing type-punned pointer will break strict-aliasing rules
lcd_printf.h: In function `sprintf':
lcd_printf.h:219: warning: dereferencing type-punned pointer will break strict-aliasing rules
h8300-elf-gcc -g -nostdlib -Wl,--gc-sections -Wl,-static -mrelax -mh -mint32 -L/home/user/ecos/httpd_kernel/install/lib -Ttarget.ld e_p.o -o e_p
      2 [main] h8300-elf-gcc (9368) C:\cygwin64\gnutools\bin\h8300-elf-gcc.exe: *** fatal error in forked process - couldn't allocate heap, Win32 error 487, base 0xF50000, top 0xFD0000, reserve_size 520192, allocsize 524288, page_const 4096
    484 [main] h8300-elf-gcc (9368) cygwin_exception::open_stackdumpfile: Dumping stack trace to h8300-elf-gcc.exe.stackdump
      0 [main] h8300-elf-gcc 1487 dofork: child -1 - forked process 9368 died unexpectedly, retry 0, exit code 0xC0000142, errno 11


user@Esprimo-9518OJB ~/ecos/embedded_proto
$ h8300-elf-objcopy -O srec e_p e_p.srec

user@Esprimo-9518OJB ~/ecos/embedded_proto
$

もちろん上記エラーメッセージ(イタリック)が出力されず、綺麗に終わる時もあります。

 

以上から想定されることですが、

Toolchainは、C:\cygwin64\gnutools\bin\h8300-elf-gcc.exe が参照される。

ビルドの対象となるプログラムは、C:\cygwin64\home\user に置かれているもの。

ビルドの際に必要となるeCosのコンテンツは、C:\cygwin\opt\ecos\ecos にあるもの。(Cygwin 32bit環境のもの)

例:$ SRCS=e_p.c DST=e_p ./build_Makefile ../httpd_kernel のhttpd_kernelですが、Cygwin 32bit環境に置かれたものが、参照されています。pathの指定は、

    C:\cygwin64\home\user\ecos\httpd_kernel

  のハズなのですが。。。不思議(迷走気味です。)

 

なぜそんな複雑なままにするか?ですが、64bit環境の方がeCosアプリをビルドする際の成功率が高いです。

 

ということで、今後はCygwin 64bitの環境で作業を進めてみます。

グッ

 

【参考】

https://ameblo.jp/kissam59/entry-12550736331.html

https://www.atmarkit.co.jp/ait/articles/1007/01/news131.html