
	     TOPPERS/JSPͥ 桼ޥ˥奢 
		    SH3 åȰ¸

	    Release 1.0бǽ: 14-Nov-2000

------------------------------------------------------------------------ 
 TOPPERS/JSP Kernel
     Toyohashi Open Platform for Embedded Real-Time Systems/
     Just Standard Profile Kernel

 Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
                             Toyohashi Univ. of Technology, JAPAN

 嵭Ԥϡʲξ˸¤ꡤܥեȥܥ
 եȥѤΤޤࡥʲƱˤѡʣѡ
 ۡʰʲѤȸƤ֡ˤ뤳Ȥ̵ǵ롥
 (1) ܥեȥ򥽡ɤηѤˤϡ嵭
     ɽѾ浪Ӳ̵ݾڵ꤬Τޤޤηǥ
     ˴ޤޤƤ뤳ȡ
 (2) ܥեȥХʥꥳɤηޤϵȤ߹
     ѤˤϡΤ줫ξȡ
   (a) ѤȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭
       ɽѾ浪Ӳ̵ݾڵǺܤ뤳ȡ
   (b) Ѥη֤̤ˡˤäơ嵭Ԥ𤹤
       ȡ
 (3) ܥեȥѤˤľŪޤϴŪ뤤ʤ»
     ⡤嵭Ԥդ뤳ȡ

 ܥեȥϡ̵ݾڤ󶡤ƤΤǤ롥嵭Ԥϡ
 ܥեȥ˴ؤơŬѲǽޤơʤݾڤԤ
 ʤޤܥեȥѤˤľŪޤϴŪ
 ʤ»˴ؤƤ⡤Ǥʤ

 @(#) $Id: sh3.txt,v 1.1 2000/11/14 16:27:57 honda Exp $
------------------------------------------------------------------------


SH3 åȰ¸γ

1.3 åȥƥȳȯĶ

SH3åΥåȥƥȤƤϡ줾SH7708, SH7709,
SH7709AܤʲΥܡɤ򥵥ݡȤƤ롣

()EPSON CARD-E09A ܡ(CPU: SH7709A)
ɩޥ󥽥եȥ() MU200-RSH3 ܡ(CPU: SH7709)
()Ż DVE-SH7700 ܡ (CPU: SH7708)

ȯĶˤϡGCC ʤɤ GNUȯĶѤ֥ȥեե
ޥåȤ ELF ɸȤ롣

1.2 ݡȤ뵡ǽγ

SH3¸εǽȤơߥޥѹ(chg_ixxget_ixx)ȡ
ǽɾѥƥﻲȵǽ(vxget_tim)򥵥ݡȤƤ롣
ζػߤȵ(dis_intena_int)ϥݡȤƤʤ

1.3 ¾ΥåȤؤΥݡƥ

СǤϡSH7708 ȤγĥǤ SH7709,SH7709A 򥵥ݡȤ
롣߻˳װåȤ쥸ϡSH7708 Ǥ 
INVET SH7709/A Ǥɲä줿¢⥸塼γװ 
INVET2 ꤵ롣Τᡢʬ򥳥ѥץ饰ˤڤ
Ƥ롣

¾ SH ΥץåؤΥݡƥ󥰤ˤĤƤϡSH3 ȵ
SH4ˤĤƤŪưפ˥ݡƥ󥰲ǽȻפ뤬٥
ǽ SH1,SH2 ˤĤƤݤǤͽۤ롣¾Υå
ˤĤƤϡSH3¿¢⥸塼äƤ뤳Ȥ⤢ꡢ¢⥸塼
ȤʤСưפ˹ԤȻפ롣


1.4 GDB 

TOPPERS/JSP ͥ GDB ֤ȶ˻Ѥ뤳ȤˤƤ롣
Τᡢsys_putc ϥָƤӽФǼ¸ߥϥɥϥ
ͳǸƤФ롣֤ѤROMCF˥֤ͥ¹Ԥ뤿
ϡľܥꥢݡȤؤνϤ䡢VBR꤬ɬפˤʤ롣ǡ
WITH_STUB Ȥѥե饰ˤꤳεǽڤؤ롣
ROMκݤɬפʥХȥϵҤƤʤᡢ롼
˵Ҥɬפ롣줾ΥåȤ WITH_STUB Υѥ
ե饰ȤäɬפʺȤ򲼤˼롼ϥ֤Ǥε
ҤͤˤʤȻפ롣

CARD-E09A
	./config/sh3/card_e09a/Makefile.config TEXT_START_ADDRESS
	#DATA_START_ADDRESS 򥹥Ѥѹ(ȥȤƤ)
MU200-RSH3
	hardware_init_hook ˥Хơȥȥνɲá
	sys_initialize  SCIF νɲá
DVE-SH7700
	hardware_init_hook ˥Хơȥȥνɲá
	롼ϥ֤ǤεҤͤˤʤ롣



1.5 ꥢݡ

CARD-E09AMU200-RSH3ϡ֤ˤ GDB Ȥ̿ȡͥΥ
Ѥ2ĤΥꥢݡȻѤ롣DVE-SH7700 ϡꥢݡȤ1ݡ
Ȥʤᡢ ͥΥϥַͳ GDB ˽Ϥ롣
ᡢ󥽡뤫ϤԤʤΤᡢWITH_STUB ץ
դˤƥѥ뤷ơɤΤߤ򥹥֤ˤԤñΤ
¹Ԥ뤳Ȥˤꡢ󥽡Ϥǽˤˡ롣ɬפʥե
ȡŪˡ DVESH7700 ʲXXX.without_stub֤Ƥ롣


줾ѤݡȤȤΥܡ졼Ȥ򲼤˼MU200-RSH3ϥ졼
ѹǤ뤬40,16MHz 򥵥ݡȤƤꡢDVE-SH7700 ǤϡCPU
å60MHz30MHz򤬲ǽǤ롣ϡƥ¸ 
Makefile.config Ǥ롣¾ΥåѤϡ֤
ƥޡꥢݡȤͤѹɬפ롣ʤƤΥݡ
Ȥˤ ǡ: 8bit,Parity:none,Stop:1bitǤ롣


                  GDB ̿                ͥ
CARD-E09A      SCIF:115200bps         Companion Chip⥷ꥢ3:19200bps     
MU200-RSH3     SCIF:57600bps          SCI1(IrDA):57600bps
DVE-SH7700     SCI:115200bps



SH3 ץå¸εǽ

Ǥϡͥ뤪ӥƥॵӥεǽǡSH3¸ʬ
ˤĤƲ⤹롣

2.1 ǡ

int unsigned intΥ 32ӥåȤǤ롣

2.2 ߴǽȳߥϥɥ

ͥγߤȤƤϡ NMI 롣äơCPUå֤
롼ǤϡNMI ʳγߤϤ٤ƶػߤƤ롣Ūˤϡ
IPM(Interrupt Priority Mask) 16 ꤵ롣ʤ顢ܡɾ
 NMI ϤʤåȤΤᡢGDB Υ֤ۥȤΥޥ
̿뤿ΥꥢݡȤͥ٤ 16 ϿGDB  Ctrl-C 
 ߤꥹ֤椬ܤ褦ˤƤ롣εǽѤ
뤿ˤCPUå֤Ǥϡͥ٤ 15 ˤʤ褦ˤʤФʤ
ΤᡢCPUåꤵͥ٤ޥ MAX_IPM ǻꤷ
롣MAX_IPM cpu_config.h  #define Ƥ롣֤Ȥ
 15 ˥֤Ȥʤ 16 ꤷƤ롣


DEF_INH ǻꤹߥϥɥֹ(inhno)ϡSH7708 Ǥϡ߻
ݥ쥸(INTEVT)ꤵ륳ɤǤꡢSH7709/A Ǥϡ߻
ݥ쥸2(INTEVT2)ꤵ륳ɤǤ롣ǡ(INHNO) 
unsigned intƤ롣DEF_INH ǡINTEVT,INTEVT2ɤȤ
ͭǤʤͤ䡢ߤбʤֹꤷưݾڤ
ʤ

SH3¸εǽȤơSR(Status Register) ߥޥӥå(I3
I0)ͤѹ뤿Υӥ chg_ipm ȡȤ뤿Υ
 get_ipm 򥵥ݡȤƤ롣ʤߥޥӥåȤͤ
ɽǡ IPM ϡunsigned intƤ롣

ΥӥϡƥȤ CPUå֤ξ
ˤΤ߸ƤӽФȤǤ롣chg_ipm ˤ IPM  0 ʳ(ʤ
餫γߤػߤƤ)ˤǤ⡢ǥѥå϶ػߤ
줺chg_ipm ˤѹ IPM ͤϡǥѥåΥ˰
Ѥ롣㤨С륿 IPM  1 ѹ塢餫γߤ
̤ΥڤؤȡڤؤäΥǤ IPM  1 ˤ
롣

chg_ipm 򥵥ݡȤ뤿ˡߥϥɥνʤɤ˥Хإ
ɤƤ롣ǡSUPPORT_CHG_IPM ȤޥˤꡢΥ
ӥ򥵥ݡȤ뤫ɤڤؤ褦ˤƤ롣
SUPPORT_CHG_IPM ϡcpu_config.h  #define Ƥ롣

SH3¸γߥޥѹȤΤΥӥλͤϼ
̤ꡣ

(1) chg_ipm			ߥޥѹ

CAPI
	ER ercd = chg_ipm(IPM ipm);

ڥѥ᡼
	IPM	ipm		ꤹ٤ IPM 

ڥ꥿ѥ᡼
	ER	ercd		顼

ڥ顼ɡ
	E_CTX		ƥȥ顼
	E_PAR		ѥ᡼顼(ipm )

ڵǽ

IPM(Interrupt Priority Mask) ipm ǻꤵ줿ͤꤹ롣ꤷ
ͤ 06 ʳξ硢E_PAR顼Ȥʤ롣IPM  1MAX_IPM -1 ꤷ
Ǥ⡢ǥѥå϶ػߤʤޤꤷ IPM ͤϡǥ
ѥåػ߸Ѥ롣

ʤΥӥѤơIPM  MAX_IPM (٤Ƥγߤػ)
ꤹ뤳ȤϤǤʤIPM  MAX_IPM ˤˤϡloc_cpu 
Ȥ٤Ǥ롣

ΥӥϡƥȤ CPUåֲλΤ߸
ӽФȤǤ롣󥿥ƥȤ CPUå֤ǸƤӽФ
ˤϡE_CTX顼Ȥʤ롣

(2) get_ipm			ߥޥλ

CAPI
	ER ercd = get_ipm(IPM *p_ipm);

ڥѥ᡼
	ʤ

ڥ꥿ѥ᡼
	ER	ercd		顼
	IPM	ipm		ߤ IPM 

ڥ顼ɡ
	E_CTX		ƥȥ顼

ڵǽ

ߤ IPM(Interrupt Priority Mask)ͤɤ߽Фipm ֤

ΥӥϡƥȤ CPUåֲλΤ߸
ӽФȤǤ롣󥿥ƥȤ CPUå֤ǸƤӽФ
ˤϡE_CTX顼Ȥʤ롣

2.3 CPU㳰ǽCPU㳰ϥɥ

DEF_EXC ǻꤹߥϥɥֹ(excno)ϡSH3 Ǥ 㳰ݥ쥸
ꤵ㳰ֹɽΥǡ(EXCNO) unsigned int
Ƥ롣DEF_EXC ǡ㳰ֹȤͭǤʤͤ䡢
CPU㳰бʤֹꤷưݾڤʤ

2.4 ȥåץ⥸塼

SH3¸Υȥåץ⥸塼(start.S)ǤϡνԤ

(A) ץå⡼ɤνȥåݥ󥿤ν

ǽˡ٤ƤΥå̵塢å饤ȥ롼⡼
ɤꤷͭˤ롣ޤץåΥ⡼ɤø⡼ɡ쥸
Х1ꤷߥޥ MAX_IPM ꤹ롣


ˡåݥ(r15) STACKTOP ꤹ롣ǳߥ
ݥ󥿤ꤵ줿åΰϡͥ뵯ư󥿥ƥ
ѤΥåΰȤƻȤ롣STACKTOP ϡsys_config.h 
뤳ȤꤷƤ롣

(B) hardware_init_hook θƽФ

hardware_init_hook  0 Ǥʤˤϡhardware_init_hook ƤӽФ
hardware_init_hook ϡͥ뤬ư˹Ԥɬפ륿
Ȱ¸νԤѰդƤ롣hardware_init_hook ɤǤ
Ƥʤ硢󥫤ǤΥܥ 0 (󥫥
ץ˵Ҥ)

(C) bss dataν

bss򥼥ꥢ롣ޤdata롣

(D) software_init_hook θƽФ

software_init_hook  0 Ǥʤˤϡsoftware_init_hook ƤӽФ
software_init_hook ϡͥ뤬ư˹Ԥɬפ륽եȥ
Ķ(Ūˤϡ饤֥)¸νԤѰդƤ롣
software_init_hook ɤǤƤʤ硢󥫤ǤΥ
 0 (󥫥ץ˵Ҥ)

(E) ͥεư

kernel_start ʬͥư롣kernel_start ꥿
Ƥ뤳ȤꤷƤʤ


2.4 쥸Х

㳰ϥɥŪ˥쥸Х1ѤƤ롣쥸
Х1 r7 Τ㳰/ߤΥͥȲΥѤ˻ѤƤ롣
󥿥ƥȤȥƥȤȽ̤ϤΥ쥸ˤԤ
Ƥ롣ʤ֤ϥ쥸Х0r0Ѥ뤿ᡢΥ쥸
˽񤭹ǡϽѤ붲줬롣


ƥ¸εǽ

3.1 ƥ९åɥ饤(CARD-E09A,MU200-RSH3,DVE-SH7700)

ƥ९åɥ饤Ф isig_tim ƤӽФϡsys_defs.h  
TIC_NUME  TIC_DENO Ƥ(ɸ 1ߥü)
ѹ뤳Ȥǡisig_tim ƤӽФѹ뤳ȤǤ롣
ޤ٤ 1äǤ뤿ᡢ1ñ̤üˤʤͤꤷ
ˤϡisig_tim θƽФ˸뤳Ȥˤʤ롣

3.2 ǽɾѥƥﻲȵǽ(CARD-E09A,MU200-RSH3,DVE-SH7700)

SH3¸Ǥϡǽɾѥƥﻲȵǽ(vxget_tim)򥵥ݡȤ
롣ǽɾѥƥ٤ 1ñ̤Ǥ뤬ޤθ
ɤ߽Ф˰Ū˥ޤߤɬפ뤿ᡢvxget_tim 
Ƥ٤˥ƥ९åŤ٤뤳Ȥˤʤ롣ʤSYSUTIM 
UD(64ӥåȤ̵)Ƥ롣

3.3 ꥢ륤󥿥եɥ饤

CARD-E09A ꥢ륤󥿥եɥ饤ФϡCARD-E09A  Companion
Chip ¢Ƥ16550ߴΥꥢ򥵥ݡȤƤ롣MU200-RSH3 
Υꥢ륤󥿡եɥ饤ФSCI1(IrDA)򥵥ݡȤƤ롣
֤Ȥʤ˻Ѥ롢DVE-SH7700 Υꥢɥ饤ФSCI򥵥ݡ
ȤƤ롣ƱåפǾ嵭ȰۤʤݡȤѤϡ줾
hw_serial.h 򥳥ԡФ褤

3.4 ޥå

CARD-E09A
¸Ǥϡΰ 0x0c033000  0x0c122fff 1MBǡΰ 
0x0c123000  3MB󥿥ƥѤΥåΰ 
0x0c422fff ˳ݤƤ롣0x0c000000  0x0c02ffff ϡROM˥ޤ
ϥ֤ΥꥢȤʤäƤꡢѤ뤳ȤǤʤ

MU200-RSH3
¸Ǥϡΰ 0x0c001000  0x0c0fffff 1MBǡΰ 
0x0c100000  3MB󥿥ƥѤΥåΰ 
0x0c3fffff ˳ݤƤ롣0x0c000000  0x0c000fff ϡROM˥ޤ
ϥ֤ΥꥢȤʤäƤꡢѤ뤳ȤǤʤ

DVE-SH7700
¸Ǥϡΰ 0x0c001000  0x0c08ffff 0.5MBǡΰ
 0x0c080000  0.5MB󥿥ƥѤΥåΰ 
0x0c0fffff ˳ݤƤ롣0x0c000000  0x0c000fff ϡROM˥ޤ
ϥ֤ΥꥢȤʤäƤꡢѤ뤳ȤǤʤ



ȯĶι

4.1 ȯĶγ

ͥ򥤥󥹥ȡ뤹ˤϡJSPͥۥåȤ˴ޤޤʳ
ˡʲΥġ뤪ӥ饤֥꤬ɬפǤ롣

    GNUȯĶ
	GCC-CORECѥ顣ưǧ 2.95.2
	BINUTILSʥ֥顢󥫤ʤɡưǧ 2.10
	NEWLIBɸC饤֥ꡣưǧ 1.8.1
    perlưǧ 5.005
    GNU Makeưǧ 3.77

ץꥱɸC饤֥Ѥʤˤ NEWLIB ̵
褤GCC 򥤥󥹥ȡ뤹ݤ NEWLIB äԹ礬褤ᡢ
NEWLIB ޤƥ󥹥ȡ뤹ˡɸȤ롣

4.2 ȯĶιˡ

嵭γȯĶϡ٤ƥե꡼Υɤ鹽ۤ뤳ȤǤ롣
ǤϡUNIXޥưǧ Linux˾ǳȯĶۤ
롣

(1) 

ȤȤơۥȾɬפʥġ򥤥󥹥ȡ뤹롣Ūˤϡ
perl  GNU MakeʰʲǤ makeޥɤ GNU Make ǤΤ
ˤΥ󥹥ȡ뤬ɬפǤ롣ˡȯĶιۤ˻Ȥˡ
ۥȾˤǿ GCC 򥤥󥹥ȡ뤷ƤȤ˾ޤ

ʤJSPͥۥåȤ˴ޤޤ perlץȤϡperl Υץ
ब /usr/bin/perl ˤΤȲꤷƵҤƤ롣perl Υץ
ΥѥȰۤʤϡ perlץȤƬ perl 
ѥɬפ롣

(2) ǥ쥯ȥη

ȯĶۤ뤿ˡʲΥǥ쥯ȥѰդ롣

    <PREFIX>		ȯĶ򥤥󥹥ȡ뤹ǥ쥯ȥ
    <BINUTILS-SRCDIR>	BINUTILS ΥŸǥ쥯ȥ
    <BINUTILS-OBJDIR>	BITUTILS Υ֥Ȥǥ쥯ȥ
    <GCC-SRCDIR>	GCC-CORE ΥŸǥ쥯ȥ
    <GCC-OBJDIR>	GCC-CORE Υ֥Ȥǥ쥯ȥ
    <NEWLIB-SRCDIR>	NEWLIB ΥŸǥ쥯ȥ
    <NEWLIB-OBJDIR>	NEWLIB Υ֥Ȥǥ쥯ȥ

(3) BINUTILS Υ󥹥ȡ2.10

μ˽äơBINUTILS 򥤥󥹥ȡ뤹롣

    % cd <BINUTILS-OBJDIR>
    % <BINUTILS-SRCDIR>/configure \
		--target=sh-hitachi-elf \
		--prefix=<PREFIX>
    % make
    % make install

(4) GCC-CORE Υ󥹥ȡ2.95.2

μ˽äơGCC-CORE 򥤥󥹥ȡ뤹롣

    % mkdir <GCC-OBJDIR>
    % cd <GCC-OBJDIR>
    % <GCC-SRCDIR>/configure \
		--target=sh-hitachi-elf \
		--prefix=<PREFIX> \
		--with-gnu-as --with-gnu-ld --with-newlib \
		--with-headers=<NEWLIB-SRCDIR>/newlib/libc/include
    % make
    % make install

(5) NEWLIB Υ󥹥ȡ1.8.1

μ˽äơNEWLIB 򥤥󥹥ȡ뤹롣

    % mkdir <NEWLIB-OBJDIR>
    % cd <NEWLIB-OBJDIR>
    % <NEWLIB-SRCDIR>/configure \
		--target=sh-hitachi-elf \
		--prefix=<PREFIX>
    % make
    % make install

4.3 WindowsǤγȯĶ

Cygwin Ѥ뤳Ȥǡ嵭γȯĶ Windows˥󥹥ȡ뤹뤳
ȤǤ롣

(1) CygwinΥ󥹥ȡ1.1.4

Cygwin1.1 ϡhttp://sourceware.cygnus.com  Ring Server
http://www.ring.gr.jpˤʤɤɤ뤳ȤǤ롣Cygwin
򥤥󥹥ȡ뤷顢ʲΥޥɤ¹Ԥơꥢ륤󥿥ե
 RAWǥХȤƻȤ褦ˤ롣

    % mkdir /dev	
    % mount \\.\com1 /dev/com1
    % mount \\.\com2 /dev/com2

(2) perl Υ󥹥ȡ5.6.0

CygwinĶѤ perl http://cygutils.netpedia.net/V1.1 
perl-5.6.0.cygwin1.1.tar.bz2 ˤ롣ɤʲμ
ǥ󥹥ȡ뤹롣

    % cd /
    % bunzip2 perl-5.6.0.cygwin1.1.tar.bz2
    % tar xvf perl-5.6.0.cygwin1.1.tar
    % ln -s /usr/local/bin/perl /usr/bin/perl

4.4 åȤؤΥɤȼ¹

桼ޥ˥奢μˤäơJSPͥ뤪ӥץꥱ
ץबۤǤȡåȥƥإɤƼ¹Ԥ
ɬפ롣ɤȼ¹ԤˡˤϡROM˥Ѥˡȡ
gdbܥ֤Ѥˡ롣

(A) ROM˥Ѥˡ

åȥƥब ROM˥äƤˤϡХʥޤ
ȥ SΥեROM˥ΥɥޥɤȤä
ɤ¹ԥޥɤȤäƥɤϤ¹Ԥ
褤


(B) ֤Ѥˡ

JSPͥȰ˻Ȥ褦˲¤֤ΥϡJSPͥ
֥Ȥɤ뤳ȤǤ롣֤ɤ
顢READMEե˽äƥ֤ۤROM ޤϥեå
񤭹ࡣ

gdbܥ֤Ѥƥץɡ¹Ԥϼ̤ꡣ

    % sh-hitachi-elf-gdb jsp
    GNU gdb 4.18
    Copyright 1998 Free Software Foundation, Inc.
    .......... ʲå³ ..........
    (gdb) 

gdb ư顢Υޥɤ¹Ԥơåȥƥ³롣

    (gdb) set remotebaud BPS
    (gdb) target remote /dev/ttyXX

BPS/dev/ttyXX ˤϡ줾쥿åȥƥ³Ƥ륷ꥢ
ݡȤΥܡ졼ȤȡǥХ̾ꤹ롣ˡload ޥɤˤꡢ
ץɤ롣

    (gdb) load

ץμ¹Ԥϡcontinue ޥɤǹԤ

    (gdb) continue

ץμ¹˥ȥ-C Ϥȡץߤ
 gdb 椬롣߶ػ߾֤Ǥϡȥ-C 
뤳ȤϤǤʤ



.¾



