ルネサスの評価ボード

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-lilox86用)

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

ブートローダliloのビルドについてはこんな感じ。