トップ «前の日記(2004年02月11日) 最新 次の日記(2004年02月13日)» 編集
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|10|12|
2009|02|03|06|07|10|11|12|
2010|01|02|03|04|07|09|10|11|12|
2011|01|03|04|05|06|07|08|10|
2012|01|06|08|09|10|12|
2013|01|02|03|04|07|09|11|12|
2014|01|03|04|05|06|09|
2015|04|
2016|01|08|
ここは旧えびめもです。えびめも2に移行します(2016/12/1)

2004年02月12日

CAT709

あまりメリットは無いかもしれないがCygwin上でsh3-linuxのクロスコンパイルが出来るかもしれない。出来るようになると開発用Linux機が不要になる。あまり乗り気ではないけどやってみたら binutils-2.13 と gcc-3.0.4 は整ったし、やったらできてしまった。
ebihara@giga ~
$ sh3-linux-gcc hello.c -o hello
hello.c:5:1: warning: no newline at end of file
 
ebihara@giga ~
$ file hello.exe
hello.exe: ELF 32-bit LSB executable, Hitachi SH, version 1 (SYSV), for GNU/Linu
x 2.3.99, dynamically linked (uses shared libs), not stripped
おおすげぇ。hello.exe を CAT709に持っていったらちゃんと動いたぞ。てことは手順をまとめればCAT709のアプリケーション開発用のlinux機は不要になるなぁ。

そのあと調子に乗ってカーネルをコンパイルしようとしたら make menuconfig はおろか、startx して make xconfig まで動いてしまった。あれまぁ。すごじゃん Cygwin

make dep でエラーがでたので Makefileを修正した

#	scripts/mkdep -- `find $(FINDHPATH) \( -name SCCS -o -name .svn \) -prune -o -follow -name \*.h ! -name modversions.h -print` > .hdepend
	find $(FINDHPATH) \( -name SCCS -o -name .svn \) -prune -o -follow -name \*.h ! -name modversions.h -print| scripts/mkdep -- > .hdepend
	scripts/mkdep -- init/*.c > .depend
その後 本番のコンパイル
sh3-linux-gcc -D__ASSEMBLY__ -D__KERNEL__ -I/home/ebihara/linux-2.4.21-cat709-2003-07-22/include -ml -m3 -traditional -c head.S
sh3-linux-gcc -D__KERNEL__ -I/home/ebihara/linux-2.4.21-cat709-2003-07-22/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -ml -m3 -pipe -D__KERNEL__ -I/home/ebihara/linux-2.4.21-cat709-2003-07-22/include  -c -o misc.o misc.c
printf: $[0x80000000+0x0c000000+0x200000+0x10000]: expected a numeric value
sh3-linux-ld -EL -Ttext 0x       0 -e startup -T /home/ebihara/linux-2.4.21-cat709-2003-07-22/arch/sh/vmlinux.lds -o vmlinux head.o misc.o ../../kernel/sh_bios.o piggy.o
sh3-linux-ld: invalid hex number `0x'
make[2]: *** [vmlinux] Error 1
make[2]: Leaving directory `/home/ebihara/linux-2.4.21-cat709-2003-07-22/arch/sh/boot/compressed'
make[1]: *** [compressed/vmlinux] Error 2
make[1]: Leaving directory `/home/ebihara/linux-2.4.21-cat709-2003-07-22/arch/sh/boot'
make: *** [zImage] Error 2
 
real    4m7.229s
user    3m47.609s
sys     0m49.386s
う〜ん、惜しいな。printf コマンドが不良か。いんちきだが、リンカの -Ttext のアドレスは 0x8c210000 になることを知ってるので(A^^;;
arch/sh/boot/compress/Makefile を修正して
#ZIMAGE_OFFSET = $(shell printf "0x%8x" $$[0x80000000+0x$(CONFIG_MEMORY_START)+0x200000+0x10000])
ZIMAGE_OFFSET = 0x8c210000
make zImage したところ無事 zImage が出来上がった。すげー