ルネサスの評価ボード
SH-4(SH7751R)の評価ボードをさわったのでメモ。
RTS7751R2D(ディスコン)とR0P751RLC0011RL(現行製品)がある。
Linux環境として用意すべきなのは以下。
だいたい http://www.superh-linux.org/ で揃う。
ビルド環境
とりあえずこれ → toolchain_345.tar.bz2 を展開してパスを通しておく。
ブートローダ
ipl+eth-1.0.0-normal-20060906.tar.gz
出荷時に書き込まれているので書き換える必要はないが、シリアルポート経由で「b」や「n」を打ち込まないと起動できない。
例えば「ディップスイッチSW3-1がONならCFからブートする」ようにしたければ以下のようにする。ビルドはmakeするだけ。
書き換えるときはDIP SW7-1をONにして保守モードで起動し、uコマンドでHEXファイルを転送する。
diff -Naur ipl+eth-1.0.0-normal-org/main.c ipl+eth-1.0.0-normal-new/main.c --- ipl+eth-1.0.0-normal-org/main.c 2006-06-20 15:12:19.000000000 +0900 +++ ipl+eth-1.0.0-normal-new/main.c 2008-09-30 01:07:48.000000000 +0900 @@ -467,8 +467,8 @@ #if defined(CONFIG_R0P751RLC0011RL) GETCHAR: work[0] = 0x0; - if (ethloadflag == 1){ - work[0] = 'z'; + if (p4_inw(0xA4000034) & 1){ + work[0] = 'b'; work[1] = 0x0; }else{ ret = getString(work,sizeof(work));
sh-lilo(SH-4用のクロスビルド)
# export CVSROOT=:pserver:anonymous@cvs.m17n.org:/cvs/superh
# cvs co lilo
で取ってくる。
クロスビルドする場合、そのままだとビルドできないので、ちょっとだけ変更する。
bsp7751r-kernel-2.4.18.tar.gzなどを取ってきて展開しておき、Makefileでそれをincludeする。
toolchain_345.tar.bz2のGCCには最適化のバグがあるらしく、-O2を指定すると起動できないので-O1に変更する。
なおできあがるliloはSH-4用のため、初回の書き込みには使えない。
diff -Naur lilo-org/boot.c lilo-new/boot.c --- lilo-org/boot.c 2000-12-25 13:58:51.000000000 +0900 +++ lilo-new/boot.c 2008-09-30 03:29:24.000000000 +0900 @@ -11,6 +11,7 @@ #include <errno.h> #include <a.out.h> #include <sys/stat.h> +#include <asm/page.h> #include "config.h" #include "common.h" diff -Naur lilo-org/Makefile lilo-new/Makefile --- lilo-org/Makefile 2000-12-25 13:58:51.000000000 +0900 +++ lilo-new/Makefile 2008-09-30 03:27:48.000000000 +0900 @@ -29,13 +29,13 @@ SHELL=/bin/sh -CROSS_COMPILE = sh3-linux- +CROSS_COMPILE = sh4-linux- CC =$(CROSS_COMPILE)gcc LD =$(CROSS_COMPILE)ld OBJCOPY =$(CROSS_COMPILE)objcopy STRIP =$(CROSS_COMPILE)strip -CFLAGS = -O2 -I. -pipe -fPIC $(CONFIG) -DPATH_MAX=255 +CFLAGS = -O1 -I../linux-sh7751r/include -pipe -fPIC $(CONFIG) -DPATH_MAX=255 CPP=$(CC) -E -traditional OBJS=lilo.o map.o geometry.o boot.o device.o common.o bsect.o cfg.o temp.o \ diff -Naur lilo-org/partition.c lilo-new/partition.c --- lilo-org/partition.c 2000-12-25 13:58:51.000000000 +0900 +++ lilo-new/partition.c 2008-09-30 05:06:26.000000000 +0900 @@ -24,6 +24,7 @@ /* For older kernels ... */ +/* #ifndef DOS_EXTENDED_PARTITION #define DOS_EXTENDED_PARTITION EXTENDED_PARTITION #endif @@ -31,6 +32,7 @@ #ifndef LINUX_EXTENDED_PARTITION #define LINUX_EXTENDED_PARTITION EXTENDED_PARTITION #endif +*/ void part_verify(int dev_nr,int type)
sh-lilo(x86用)
x86用のliloをビルドする場合は、2.6系カーネルだとビルドできないので、bsp7751r-kernel-2.4.18.tar.gzなどを取ってきて展開しておき、Makefileでそれをincludeする。
当然ながらboot.bはx86向けビルド環境では作れないので、クロスビルドで生成したものを使う。
ホスト向けビルドでは-fPICオプションを削除する。でないとハングアップすることがある。
diff -Naur org/Makefile new/Makefile --- org/Makefile 2008-10-07 01:16:13.000000000 +0900 +++ new/Makefile 2008-10-07 01:19:59.000000000 +0900 @@ -29,13 +29,14 @@ SHELL=/bin/sh -CROSS_COMPILE = sh3-linux- +#CROSS_COMPILE = sh3-linux- CC =$(CROSS_COMPILE)gcc LD =$(CROSS_COMPILE)ld OBJCOPY =$(CROSS_COMPILE)objcopy STRIP =$(CROSS_COMPILE)strip -CFLAGS = -O2 -I. -pipe -fPIC $(CONFIG) -DPATH_MAX=255 +#CFLAGS = -O2 -I. -pipe -fPIC $(CONFIG) -DPATH_MAX=255 +CFLAGS = -O2 -I../../Target/linux-sh7751r/include $(CONFIG) -DPATH_MAX=255 CPP=$(CC) -E -traditional OBJS=lilo.o map.o geometry.o boot.o device.o common.o bsect.o cfg.o temp.o \ @@ -43,7 +44,8 @@ .SUFFIXES: .b -all: lilo boot.b +#all: lilo boot.b +all: lilo .c.o: $(CC) -c $(CFLAGS) $*.c