
	     TOPPERS/JSPJ[l [UY}jA 
    		       iH8S ^[Qbgˑj

	    iRelease 1.4.1 ΉCŏIXV: 18-OCT-2004j

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

 Copyright (C) 2000-2004 by Embedded and Real-Time Systems Laboratory
                             Toyohashi Univ. of Technology, JAPAN
 Copyright (C) 2001-2004 by Dep. of Computer Science and Engineering
                    Tomakomai National College of Technology, JAPAN
 Copyright (C) 2001-2004 by Industrial Technology Institute,
                             Miyagi Prefectural Government, JAPAN

 L쌠҂́CFree Software Foundation ɂČ\Ă
 GNU General Public License  Version 2 ɋLqĂC
 (1)`(4)̏𖞂ꍇɌC{\tgEFAi{\tgEF
 Aς̂܂ށDȉjgpEEρEĔzziȉC
 pƌĂԁj邱Ƃ𖳏ŋD
 (1) {\tgEFA\[XR[ȟ`ŗpꍇɂ́CL̒
     \C̗pщL̖ۏ؋K肪Ĉ܂܂̌`Ń\[
     XR[hɊ܂܂Ă邱ƁD
 (2) {\tgEFAėp\ȃoCiR[hiP[^uIu
     WFNgt@C⃉CuȂǁǰ`ŗpꍇɂ́Cp
     ɔhLgip҃}jAȂǁjɁCL̒쌠\C
     ̗pщL̖ۏ؋Kfڂ邱ƁD
 (3) {\tgEFAėps\ȃoCiR[ȟ`܂͋@ɑg
     ݍ񂾌`ŗpꍇɂ́Ĉꂩ̏𖞂ƁD
   (a) pɔhLgip҃}jAȂǁjɁCL̒
       \C̗pщL̖ۏ؋Kfڂ邱ƁD
   (b) p̌`ԂCʂɒ߂@ɂāCL쌠҂ɕ񍐂
       ƁD
 (4) {\tgEFA̗pɂ蒼ړI܂͊ԐړIɐ邢Ȃ鑹
     QCL쌠҂Ɛӂ邱ƁD

 {\tgEFÁCۏ؂Œ񋟂Ă̂łDL쌠҂́C
 {\tgEFAɊւāC̓Kp\܂߂āCȂۏ؂s
 ȂD܂C{\tgEFA̗pɂ蒼ړI܂͊ԐړIɐ
 Ȃ鑹QɊւĂC̐ӔC𕉂ȂD
------------------------------------------------------------------------

PDH8S^[Qbgˑ̊Tv

1.1 ^[QbgVXeƊJ

H8St@~[̃vZbTT|[gĂBH8St@~[́AC^
tF[XȂǂ̈ႢȂǂɂAlXȃvZbTBSĂɁAΉ
\Ȃ悤ɐ݌vsB

̎ɂăT|[gƂ^[Qbg{[h́AȉłB

      EЃ~X| H8S/2350 ]{[h (H8S/2350)

Jɂ́AGCC Ȃǂ GNUJpAIuWFNgt@CtH[}b
g coff WƂB

1.2 T|[g@\̊Tv

H8S^[Qbgˑɂ@\ƂẮA
      E݃}XN̕ύXEQ(chg_ipmAget_ipm)
      E\]pVXeQƋ@\(vxget_tim)
T|[gĂB܂A
      E݂̋֎~Ƌ(dis_intAena_int)
̓T|[gĂȂB(2.2.4y3.2QƁB)

1.3 ̃^[Qbgւ̃|[eBO

H8St@~[ł΁A|[eBO͗eՂɏoBȂAJ@ނ
֌WAH8S/2350ȊOł̃eXgsĂȂB
iȂÅJ@ނ̊֌WALɂĂH8S/2350ł̏󋵂z肵
  BAĴ́AH8St@~[ŜɗLȓełBj

1.4 GDB X^u

݂ TOPPERS/JSP J[l H8S łROMT|[gĂB

܂AGDBX^u֑ΉĂB̂́Aʓr₢킹B
ȂAfobOƂĂICE𐄏B

1.5 VA|[g(SCI)

H8St@~[̑SẴvZbTAQ`lȏ̃VA|[g
ĂBŁÂAJ[l̃Oo͗pɂPgpB
VA|[g̐ݒ
      E8rbg
      EpeBȂ
      EXgbvrbgF1rbg
      E{[[gF38400 bps
łB

ȂA{[[gɂẮABAUD_RATE}NɂĒ`Ă̂ŕKvɉ
ύX邱ƂłB
(sys_config.h)

(H8S/2350͂Q`l̃VA|[gĂB́Asys_config.h
 ɒ`ĂNUM_PORTɂT|[g|[g܂B݂̎ł́A
 Q`lT|[gĂB
 ܂AJSPJ[l̃Oo͗pɂ́ASCI0gpĂB)

QDH8S^[Qbgˑ̋@\

2.1 f[^^

int^ unsigned int^̃TCY 32rbgłB

2.2 ݊Ǘ@\Ɗ݃nh

J[lǗO݂̊ NMI ݂̂łBCPUbNԂ⏉[`ł
NMI ȊO݂̊͑Sċ֎~B̓Iɂ́A݃}XNVɐݒ肳B

݃nh̓o^ɊւẮARtBOt@Cɑ΂ÓIAPI̋LqƁA
xN^e[uւ̋LqƂ́A̋LqsȂ΂ȂȂB
̃xN^e[uւ̋LqɂẮAqB
iÓIAPIɂLqɂA݃nhiݏo܂ށjA
  OxN^e[uɓo^邱ƂŁÅ݃nhĂяoBj

2.2.1 ݐ䃂[h

H8St@~[́A[hOƃ[hQ̂Q̊ݐ䃂[h̑I\
B̎ł́A[hQT|[gĂB

2.2.2 xN^e[űLq@

݃nhĂяo߂ɂ́AOxN^e[uɓo^KvB
̂ƂAH8St@~[́AROM̈ɗOxN^e[uzuĂ߁A
xN^e[u͎s͌ŒƂȂB

̂߁ARpCOɁAexception_vector.S ɋLڂĂxN^e[uɁA
݃nh̓̃x𒼐ڋLqKvB

̂ƂɋLqAO̓̃x́Cȉ̂悤ɐݒ肷B

      EÔbꃋ[`    F *******
      EO̓̃xF_*******_entry
        (ŁAx"_"tĂ̂́Abꃋ[`foo()ɑ΂
         AZuƁA_fooƂxΉt邽߂łB)

      jSCI(VAR~jP[VC^[tF[Xj̊
        Ôbꃋ[`    F serial_in_handler
        O̓̃xF_serial_in_handler_entry

ȂÃ[ɏ]x𐶐A_INT_ENTRY}N`Ă̂ŁA
pĂB

      jSCI(VAR~jP[VC^[tF[Xj̊
        Ôbꃋ[`    F serial_in_handler
        O̓̃xF
          _INT_ENTRY(serial_in_handler) -> _serial_in_handler_entry 𐶐

ȂÃ}NAexception_vector.S ŗpĂ̂ŁAQlɂĂB

2.2.3 ݃}XN^ݗDx

݃}XN^ݗDx̂߂́A`EAPI͈ȉ̒ʂłB

(1)IPM^
݃}XN̒lf[^^łB݃}XŃAEXRiGNXehW
X^j̊݃}XNrbg(I2-0)̒lłB̂߁AEXR̂PoCg
悢̂ŁAUB^Œ`ĂB

(2)icu_set_ilv			݃x̐ݒ

yCAPIz
        icu_set_ilv( IPR, MASK, LEVEL )

yp[^z
        VP	IPR		ݒ肷C^vgvCIeBWX^
				AhX ( IPRA - IPRK }NŐݒ )
        BOOL	MASK		ݒ肷C^vgvCIeBWX^
				ݒ͈́iʕ܂͉ʕj̑I
				( IPR_UPRA܂́AIPR_LOW }NŐݒ )
        INT	LEVEL		ݒ肷銄݃x ( 0 - 7 )

y^[p[^z
	Ȃ

y@\z
C^vgvCIeBWX^̊eOvʂɁA݃xݒsB

yӁz
݂́A}NpsĂ邽߁AG[͓ɍsĂȂB
(cpu_config.h)

ȂA̎ɂāA݃x́A
      ijVAO  VAP -> ^C}Oij
ƒ`ĂB
(sys_config.h)

2.2.4 ݃}XNύXEQƂ̂߂̃T[rXR[ɂ

݃}XNύXEQƂ̂߂̃T[rXR[́A^XNReLXg CPU
bNԂ̏ꍇɂ̂݌ĂяoƂłBchg_ipm ɂ IPM A
炩݂̊֎~ĂԁiOȊO̒l̏ꍇjɂꍇłA
fBXpb`͋֎~ꂸAchg_ipm ɂύX IPM ̒ĺAfBXpb`
̃^XNɈpB

chg_ipm T|[g邽߂ɁA݃nh̏oȂǂɃI[owbh
𐶂ĂBŁASUPPORT_CHG_IPM Ƃ}NɂÃT[rX
R[T|[g邩ǂ؂ւ悤ɂĂB
(SUPPORT_CHG_IPM ́Acpu_config.h ̒ #define ĂB)

H8S^[Qbgˑ̊݃}XN̕ύXEQƂ̂߂̃T[rXR[̎dl
̒ʂB

(1) chg_ipm			݃}XN̕ύX

yCAPIz
	ER ercd = chg_ipm(IPM ipm);

yp[^z
	IPM	ipm		ݒ肷ׂ IPM ̒l

y^[p[^z
	ER	ercd		G[R[h

yG[R[hz
	E_CTX		ReLXgG[
	E_PAR		p[^G[(ipm s)

y@\z

݃}XN ipm Ŏw肵lɐݒ肷Bw肵lA0`6 ɓ
ȂꍇAE_PARG[ԂB݃}XN0ȊOi1`MAX_IPM-1jɐݒ
ꍇłAfBXpb`͋֎~ȂB܂Aݒ肵݃}XN̒ĺA
fBXpb`֎~pB

̃T[rXR[́A^XNReLXg CPUbNԂ̎̂݌Ă
oƂłB^XNReLXg CPUbNԂŌĂяoꍇɂ́A
E_CTXG[ƂȂB

ȂÃT[rXR[pāAIPMMAX_IPMiSĂ݂̊֎~jɐݒ
邱Ƃ͂łȂBIPMMAX_IPMɂꍇɂ́Aloc_cpugpׂłB

(2) get_ipm			݃}XN̎Q

yCAPIz
	ER ercd = get_ipm(IPM *p_ipm);

yp[^z
	Ȃ

y^[p[^z
	ER	ercd		G[R[h
	IPM	ipm		݂ IPM ̒l

yG[R[hz
	E_CTX		ReLXgG[

y@\z

݂̊݃}XN̒lǂݏoAipm ɕԂB

̃T[rXR[́A^XNReLXg CPUbNԂ̎̂݌
яoƂłB^XNReLXg CPUbNԂŌĂяo
ɂ́AE_CTXG[ƂȂB

2.3 CPUOǗ@\CPUOnh

DEF_EXC Ŏw肷 CPUOnhԍiexcnoj́AH8St@~[ɂ
xN^e[ũxN^ԍ\Ãf[^^iEXCNOj unsigned int ^
ɒ`ĂB
DEF_EXC ŁAxN^ԍƂėLłȂlACPUOɑΉȂԍw
ꍇ͕̓ۏ؂ȂB

(1)ϐp_excinf
CPUOnhɓnp_excinf́ACPUÕReLXgۑ
X^bNւ̃|C^nBX^bN̍\ȉɎB

      ----------------------
     |    er6 (32rbg)    |  <-- p_excinf
      ----------------------
     |    er5 (32rbg)    |
      ----------------------
     |    er4 (32rbg)    |
      ----------------------
     |    er3 (32rbg)    |
      ----------------------
     |    er2 (32rbg)    |
      ----------------------
     |    er1 (32rbg)    |
      ----------------------
     |    er0 (32rbg)    |
      ----------------------
     |    EXR ( 8rbg)    |
      ----------------------
     |    \( 8rbg)    |
      ----------------------
     |    CCR ( 8rbg)    |
      ----------------------
     |    PC  (24rbg)    |
      ----------------------

     EXR : GNXehWX^
     CCR : RfBVR[hWX^
     PC  : vOJE^

܂ACPUOPC̒l̓CNgB̂߁ACPUOnh
畜AsƁACPUO߂̖̎߂sĊJB

2.4 ݔ̃X^bNʂɂ

e^XNX^bŃA^XNggp镪ɉāAő XW oCg]
pӂKvB

JSPJ[ĺA^XNReLXgp̃^XNX^bNƁA^XNReLXg
p̃X^bNiȉA݃X^bNjƂpӂĂB̂߁A^XNR
eLXg͊݃X^bNŎsB

H8St@~[ɂāA݃[hQł́AݎtɊ݋֎~ɂȂ
@\n[hEFAŗpӂĂȂB̂߂ɁA݂̓Ń\tg
EFAɂĊ݋֎~ɂKvBݓł́A݋֎~
ڍs邽߂̍ƗpɁA݋̏Ԃ̂܂܁A^XNX^bN er0Aer1
ޔB
iLWX^͊ݎtɃn[hEFAIɑޔsB
    PC  : vOJE^iRoCgj
    CCR : RfBVR[hWX^iPoCgj
    EXR : GNXehWX^iPoCgjj

āAd݂A݃X^bNɐ؂ւOɔꍇɂ́Al
X^bNt[^XNX^bNɐB
̂߁Aň̃^C~OŊ݂ƁAH8S ͊݃xVx
̂ŁA^XNX^bNɂāAXWoCg邱ƂɂȂB
iPX^bNt[̑傫kAhoX[h̏ꍇlF
    er1iSoCgj{ er0iSoCgj{ EXRiPoCgj{U[uiPoCgj
    { CCRiPoCgj{ PCiRoCgj= PS oCg
  ő^XNX^bNʁF
    PSoCg~VZbg = XWoCgj

2.5 X^[gAbvW[

H8St@~[ł́AxN^e[uɁAp[IZbgA}jAZbg
т NMI(Non Maskable Interrupt)p̃xN^AhXĂB
AhX̃Wv悪X^[gAbvW[ƂȂĂB

X^[gAbvW[(start.S)ł́ȀsB

(A) X^bN|C^̐ݒ
X^bN|C^ sp ASTACKTOP ̒lɐݒ肷B̒ĺAsys_config.h 
`ĂB

(B) hardware_init_hooǩĂяo

hardware_init_hook  0 łȂ΁Ahardware_init_hook ĂяoB
hardware_init_hook ̓J[lNOɁA_[Qbgˑ̃n[hEFAI
ȏs߂ɗpӂĂB
{ł́Ahardware_init_hook ł́A
      ESYSCR ̐ݒiݐ䃂[hARAM̐ݒj
      EI/O |[g̏
      EoXRg[̐ݒiABWCRAASTCRAWCRLABCRH̐ݒj
Ȃǂ̏sBLqꏊ́Asys_support.S WƂB

hardware_init_hook ǂł`ĂȂꍇɂ́ÃV{0
`(JXNvgɋLq)B

ȂAhardware_init_hook VɋLqꍇɂ́AĂяoւ̃^[
rts ߂łȂAjmp ߂ start_1 ɖ߂邱ƁB

(C) bssZNVAdataZNV̏

bss ZNV̑S̈[NABdata ZNVBROM 
Ή̂߂ɁAROM  RAM ւƁARs[sB

(D) software_init_hooǩĂяo

software_init_hook  0 łȂ΁Asoftware_init_hook ĂяoB
software_init_hook ́AJ[lNOɍsKv\tgEFA
(̓Iɂ́ACu)ˑ̏s߂ɗpӂĂB

software_init_hook ǂł`ĂȂꍇAJł̃V{
 0 ɒ`(JXNvgɋLq)B

(E) J[l̋N

kernel_start ֕򂵁AJ[lNBkernel_start 烊^[
邱Ƃ͑z肵ĂȂB

2.6 MAC WX^ (H8S/2600RAvZbT̂)

̃̕T|[g͎҂߂Ă܂B

H8St@~[ɂ́ACPURA H8S/2600  H8S/2000 ̂Qނ݂B
AH8S/2600 ́AϘaWX^Ƃ MAC WX^T|[gĂB

ŁAgpvZbTAH8S/2600 ꍇ́A
      Ecpu_defs.h ɂ H8S_2600 }N`B
       (̃}NɂāAcpu_support.S ɂāAMAC WX^̃T|[g
        sB)
      E$(CPU)/Makefile.config K؂ɃRgCB
       (ɂAH8S/2600 p̃RpCIvVtB)
sƂɂAMAC WX^ɑΉ邱ƂłB

T|[g󋵂́Aȉ̒ʂłB

Ebŏꂽ^XNŁA MAC WX^gpꍇɁAfBX
  pb`ĂяoăfBXpb`ꍇ́A֐ĂяoɂȂB
  ̂߁AĂяoOɂ܂^XNԂŁAMAC WX^gƂ
  ȂߕۑĂȂB
  î߁A^XNŃAZũR[hgpꍇ̃[ɏ]
    KvBj
Ẽ݂fBXpb`i󓮓IfBXpb`jł͕ۑĂB

ݔ MAC WX^̕ۑɂẮAs߁Aۑ
  LmFłĂȂB

RDVXeˑ̋@\

3.1 VXeNbNhCo

VXeNbNhCo isig_tim ĂяóAsys_defs.h 
TIC_NUME  TIC_DENO Œ`Ă(ftHgł 1~b)B̒
`ύX邱ƂŁAisig_tim ĂяoύX邱ƂłBAA
^C}̐x1ʕbł邽߂ɁA1ʕbPʂŒ[ɂȂlݒ肵ꍇɂ́A
isig_tim̌ďoɌ덷邱ƂɂȂB

ftHgł́AL̃^C}𗘗pĂB
(a) H8S/2350
  H8S^C}(TPU)̃`l0

3.2 \]pVXeQƋ@\

H8Sˑł́A\]pVXeQƋ@\(vxget_tim)T|[gĂB
x1ʕbŁASYSUTIM^UW^(32rbgȂ^)łB

\]pVXe̐x͋NbNPʂł邪A^C}̌ݒl
ǂݏo߂ɈꎞIɃ^C}~Kv邽߁Avxget_tim Ă
xɃVXeNbNÂx邱ƂɂȂBŁASUPPORT_VXGET_TIM
Ƃ}NɂÃT[rXR[T|[g邩ǂ؂
悤ɂĂB
(SUPPORT_VXGET_TIM ́Asys_config.h ̒ #define ĂB)

3.3 VAC^[tF[XhCo

̎ł́A^[QbgvZbT̊֌WAQ`l܂ł̑Ή
sĂBAH8St@~[ɂ́AQ`lȏ̃VAC^
tF[XĂ̂B̂߂́AύX͗eՂɉ\łB
ڂ́A\[XR[hQƂ̂ƁB

ȂAVAC^[tF[XhCóAJ[l̃Oo͗pɁAH8S
SCI`l0gpĂB

3.4 }bv

}bv͈ȉ̂悤ɐݒ肵ĂB
EROM 
      0x000000 - 0x01ffff : R[ḧ(128kB)
      0x200000 -          : f[^̈(128kB)
                 0x21ffff : ^XNReLXgp̃X^bN̈

EGDB X^up
      0x200000 - 0x20ffff : R[ḧ(64kB)
      0x210000 -          : f[^̈(64kB-8kB(for GDB_STUB))
                 0x21efff : ^XNReLXgp̃X^bN̈

 RAM ́AݎgpĂȂAgpꍇɂ́Ahardware_init_hook 
œ RAM LɂKvB(2.3 (2)QƁB)

SDJ̍\z

J̍\z@ɂẮAGNUJ\z}jAQƂ邱ƁB
ȂA^[Qbg <TARGET> ̒lɂẮAȉQl̂ƁB
Jɂ Windows2000SP4  Cygwin pB

mF́AL̃c[ɂĊmFĂB̃c[ftHgƂB

EGNUzzĂIWiGCCȂǂ\[X\zc[
  mFsƂ̃o[W͈ȉ̒ʂłB
    BINUTILS : 2.14
    GCC-CORE : 3.3.2
    NEWLIB   : 1.11.0
ȉꍇ̃^[Qbg <TARGET> ɂ́Ah8300-hms- pBj

܂AWindowsCygwinpĊJꍇ́Abinutils  configure ̃Iv
V --disable-nls w肷邱ƁB

TD

Eݐ䃂[hO̓T|[gĂȂB

Em[}[hł̎śAeXgsĂȂB

EMACWX^̃T|[ǵAeXgsĂȂB

EX^[gAbv[`ANXNvǵAC++ ɑΉĂȂB

ESYSUTIM ^ UW ^(32rbgȂ^)ƂĒ`Ă邽߂ɁA\
  ]pVXeQƋ@\(vxget_tim)ɂ葪ł͈͂A@苷B

E gcc ̃o[WiɁAgcc 3.4.xjł̃RpC͕ۏ؂ȂB

UD̑

6.1 fBNgEt@C\

H8S ^[Qbgˑ̊et@C̊Tv͎̒ʂB

    config/h8s/
        H8Sʕ

	Makefile.config		MakefileH8S^[Qbgˑ̒`
	cpu_defs.h		vZbTˑ̃AvP[Vp`
	cpu_config.h		vZbTˑ̍\`
	cpu_config.c		vZbTˑ̊֐
	cpu_support.S		vZbTˑ̃Tu[`
	cpu_context.h		ReLXg
	cpu_rename.def		J[l̓ʖ̃l[`
	cpu_rename.h		J[l̓ʖ̃l[
	cpu_unrename.h		J[l̓ʖ̃l[
	tool_defs.h		Jˑ̃AvP[Vp`
				iGNUJpj
	tool_config.h		Jˑ̍\`iGNUJpj
	makeoffset.c		offset.h T|[gvO
	cpu_insn.h		჌x̃vZbT샋[`
	start.S			X^[gAbvW[
	h8s.h			H8S̃WX^Ȃǂ̒`
	h8s_sil.h		H8St@~[pVXeC^tF[X
				C[`
	util.h			rbgԍȂǂ̒`
	hw_serial.h		SIOhCo
	hw_serial.cfg		SIOhCõRtBM[Vt@C
	h8s_sci.h		H8SV[YVA|[gp
				ȈSIOhCo֘A̒`
	h8s_sci.c		H8SV[YVA|[gp
				ȈSIOhCo
	hw_timer.h		^C}샋[`
	h8s_tpu.h		H8SV[Y^C}p
				^C}hCo֘A̒`

    config/h8s/h8s2350/
	H8S/2350ΉVXeˑ
       (Ѓ~X| H8S/2350 ]{[hΉ)

	Makefile.config		Makefile  MISPO H8S/2350 ]{[hˑ`
	sys_defs.h  	 	VXeˑ̃AvP[Vp`
	sys_config.h		VXeˑ̍\`(Cp)
	sys_config.c 		VXeˑ̊֐
	sys_support.S	 	VXeˑ̃Tu[`
	exception_vector.S	ݗOxN^e[u
	sys_rename.def		J[l̓ʖ̃l[`
	sys_rename.h		J[l̓ʖ̃l[
	sys_unrename.h		J[l̓ʖ̃l[
	h8s2350.h   		H8S/2350vZbT̃n[hEFA`
	mispo_h8s2350.h		MISP H8S/2350 ]{[h̃n[hEFA`
	h8s_coff.ld	  	JXNvg(ROM p)
	h8s_coff_gdb.ld		JXNvg(GDB X^up)

6.1 ̑

H8St@~[́AɃvZbT̎ނłB̒ŁAXJ҂
^[Qbg̖肩A̎ H8S/2350 Ƃ̃vZbT̂
̃T|[gƂȂĂ܂B

ŁÁAɑɓnĂvZbT̓eXgɋ͂
WĂ܂B

ALւƂAB҂Ă܂B

TOPPERSvWFNg  [OXg  TOPPERS-USER

{錧YƋZpZ^[  @BdqZp  ZpJ
  TEL : 022-377-8700Ae-mail : micom@mit.pref.miyagi.jp

ύX

2004N 415@JSPJ[l Release1.4 Ή
2004N1018@JSPJ[l Release1.4.1 Ή
