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

          iRelease 1.4.2ΉCŏIXV: 11-Jul-2005j

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

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

 L쌠҂́Cȉ (1)`(4) ̏CFree Software Foundation 
 ɂČ\Ă GNU General Public License  Version 2 ɋL
 qĂ𖞂ꍇɌC{\tgEFAi{\tgEFA
 ς̂܂ށDȉjgpEEρEĔzziȉC
 pƌĂԁj邱Ƃ𖳏ŋD
 (1) {\tgEFA\[XR[ȟ`ŗpꍇɂ́CL̒
     \C̗pщL̖ۏ؋K肪Ĉ܂܂̌`Ń\[
     XR[hɊ܂܂Ă邱ƁD
 (2) {\tgEFACCu`ȂǁC̃\tgEFAJɎg
     pł`ōĔzzꍇɂ́CĔzzɔhLgip
     ҃}jAȂǁjɁCL̒쌠\C̗pщL
     ̖ۏ؋Kfڂ邱ƁD
 (3) {\tgEFAC@ɑgݍނȂǁC̃\tgEFAJɎg
     płȂ`ōĔzzꍇɂ́Ĉꂩ̏𖞂
     ƁD
   (a) ĔzzɔhLgip҃}jAȂǁjɁCL̒
       쌠\C̗pщL̖ۏ؋Kfڂ邱ƁD
   (b) Ĕzž`ԂCʂɒ߂@ɂāCTOPPERSvWFNg
       񍐂邱ƁD
 (4) {\tgEFA̗pɂ蒼ړI܂͊ԐړIɐ邢Ȃ鑹
     QCL쌠҂TOPPERSvWFNgƐӂ邱ƁD

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

 @(#) $Id: sh3.txt,v 1.1 2008/06/17 00:04:40 suikan Exp $
------------------------------------------------------------------------

PDSH3/SH4 ^[Qbgˑ̊Tv


1.1 ^[QbgVXeƊJ

SH3/SH4 vZbT̃^[QbgVXeƂẮCSH7709ACSH7729RC
SH7727CSH7750𓋍ڂȉ̃{[hT|[gĂDȂCSH3-DSP 
 DSP @\CSH4  FPU ̓T|[gĂȂDifBXpb`yъ
݂̓Ŋ֘A郌WX^ۑĂȂj

E()LSIVXeY MS7709ASE01 {[h (CPU: SH7709A)
E()LSIVXeY MS7729RSE01 {[h (CPU: SH7729R)
E()LSIVXeY MS7750SE01  {[h (CPU: SH7750)
E()LSIVXeY MS7727CP01  {[h (CPU: SH7727)

ȂCMS7709ASE01CMS7729RSE01CMS7750SE01́Cn[hEFA\ʂ
Ă邽߁C solution_engine ƂÕVXeˑƂĂ܂Ƃ߂
D؂ւ́CVXeˑ Makefile.clonfig Ŏw肷DȉC
3ނ̃{[hɋʂȂꍇ́CSolution Engine ƕ\LD

Jɂ́CGCC Ȃǂ GNUJpCIuWFNgt@CtH[
}bg ELF WƂD

Solution Engine ł͎sƂāCGDBX^up@ JTAG-ICE 
p@T|[gDGDBX^u Toppers vWFNg̃z[y[
W_E[h\łDJTAG-ICEƂẮCs}CNRs[
^PARTNER-Jł̓mFĂDGDBX^upꍇɂ́C
Makefile ŁCDBGENV  GDB_STUB ݒ肷iftHgjDPARTNER-J
pꍇɂ́CDBGENV PARTNER_J ݒ肷D

MS7727CP01 ł́CT-Monitor p@JTAG-ICEp@T|[g
DȂCT-Monitor găfobO邱Ƃ͕s\łCPȂ郍[
_[ƂėpD̓Iɂ́CJ[lSR[hɕϊCT-Monitor
Ń_E[hĎsDJ[lÍCvZbTZbgD


1.2 T|[g@\̊Tv

SH3 ˑ̋@\ƂāC݃}XN̕ύXEQ(chg_ixxCget_ixx)ƁC
\]pVXeQƋ@\(vxget_tim)T|[gĂD݂̋
~Ƌ(dis_intCena_int)̓T|[gĂȂD


1.3 ̃^[Qbgւ̃|[eBO

o[Wł́CSH7708 pVXeˑ݂͑ȂD
CvZbTˑ̃R[ĥ SH7708 T|[gD̂߁C
SH7708T|[gVXeˑ쐬邱Ƃ͗eՂłD̏ꍇ
ɂ́CRpCIvV sys_defs.h  SH7708 `΂
D


1.4 VA|[g

J[l̃Oo͗pƂāCSolution Engine ł̓X[p[I/O
SCI(CN3) 19200bps ŎgpDMS7727CP01 ł́CCPU{[h̃VA
C^tF[XRlN^ 115200bps ŎgpDȂCSẴ|[gɂ
 f[^: 8bit,Parity:none,Stop:1bitłD


1.5 GfBA

e^[Qbg̓fBbvXCb`ɂGfBAύX邱Ƃ\
Dɍ킹āCJ[l̃GfBA̐ݒ͊eVXeˑ
ύX\łDGfBA͈ȉ̌Őݒ肷D

 EVXeˑ Makefile.config 
    RpCIvV -ml  or -mb
    JIvV     -ml  or -mb
    JXNvg     shlelf.ld or shelf.ld

 EVXe`
    SIL_ENDIAN     SIL_ENDIAN_LITTLE or SIL_ENDIAN_BIG


QDSH3 vZbTˑ̋@\

̐߂ł́CJ[lуVXeT[rX̋@\̒ŁCSH3ˑ̕
ɂĉD


2.1 f[^^

int^ unsigned int^̃TCY 32rbgłD


2.2 ݊Ǘ@\Ɗ݃nh

J[lǗO݂̊ƂẮC NMI DāCCPUbNԂ⏉
[`ł́CNMI ȊOׂ݂̊͂ċ֎~ĂD̓Iɂ́C
IPM(Interrupt Priority Mask) 15 ɐݒ肳DȂC{[h
 NMI ͂Ȃ^[Qbĝ߁CGDBX^uzXg̃}VƒʐM
邽߂̃VA|[g̗Dx 15 œo^CGDB  Ctrl-C  
荞݂X^uɐ䂪ڂ悤ɂĂD̋@\gp邽
ɂCPUbNԂł́CDx 14 ɂȂ悤ɂȂ΂ȂȂD
̂߁CCPUbNŐݒ肳Dx}N MAX_IPM Ŏw肵ĂD
MAX_IPM cpu_config.h ̒Œ`ĂDGDBX^ugꍇ 14 
GDBX^ugȂꍇ 15 ɐݒ肵ĂD

DEF_INH Ŏw肷銄݃nhԍ(inhno)́CSH7708/50 ł́C荞
ݎۃWX^(INTEVT)ɐݒ肳R[hłCSH7709A/09/29R/27 ł́C
荞ݎۃWX^2(INTEVT2)ɐݒ肳R[hłDf[^^
(INHNO) unsigned int^ɒ`ĂDDEF_INH ŁCINTEVT,INTEVT2R[
hƂėLłȂlCO݂ɑΉȂԍw肵ꍇ̓
͕ۏ؂ȂD

SH3ˑ̋@\ƂāCSR(Status Register) 荞݃}XNrbg(I3`
I0)̒lύX邽߂̃T[rXR[ chg_ipm ƁCQƂ邽߂̃T[r
XR[ get_ipm T|[gĂDȂC荞݃}XNrbg̒l
\f[^^ IPM ́Cunsigned int^ɒ`ĂD

̃T[rXR[́C^XNReLXg CPUbNԂ̏ꍇ
ɂ̂݌ĂяoƂłDchg_ipm ɂ IPM  0 ȊO(Ȃ킿C
炩݂̊֎~Ă)ɂꍇłCfBXpb`͋֎~
ꂸCchg_ipm ɂύX IPM ̒ĺCfBXpb`̃^XNɈ
pDႦ΁C^XN IPM  1 ɕύXC炩݂̊
ʂ̃^XNɐ؂ւƁC؂ւ̃^XNł IPM  1 ɂ
D

chg_ipm T|[g邽߂ɁC݃nh̏oȂǂɃI[owb
h𐶂ĂDŁCSUPPORT_CHG_IPM Ƃ}NɂC̃T[
rXR[T|[g邩ǂ؂ւ悤ɂĂD
SUPPORT_CHG_IPM ́Ccpu_config.h ̒ #define ĂD

SH3ˑ̊݃}XN̕ύXEQƂ̂߂̃T[rXR[̎dl͎
ʂD


(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

IPM(Interrupt Priority Mask) ipm Ŏw肳ꂽlɐݒ肷Dw肵
l 0`13Ȃ14ȊȌꍇCE_PARG[ƂȂDIPM  1`MAX_IPM -1 
ɐݒ肵ꍇłCfBXpb`͋֎~ȂD܂Cݒ肵 IPM 
ĺCfBXpb`pD

ȂC̃T[rXR[pāCIPM  MAX_IPM (ׂĂ݂̊֎~)
ɐݒ肷邱Ƃ͂łȂDIPM  MAX_IPM ɂꍇɂ́Cloc_cpu 
gׂłD

̃T[rXR[́C^XNReLXg CPUbNԂ̎̂݌
яoƂłD^XNReLXg CPUbNԂŌĂяo
ɂ́CE_CTXG[ƂȂD


(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

݂ IPM(Interrupt Priority Mask)̒lǂݏoCipm ɕԂD

̃T[rXR[́C^XNReLXg CPUbNԂ̎̂݌
яoƂłD^XNReLXg CPUbNԂŌĂяo
ɂ́CE_CTXG[ƂȂD


2.3 CPUOǗ@\CPUOnh

DEF_EXC Ŏw肷銄݃nhԍ(excno)́CSH3 ł OۃWX
^ɐݒ肳OR[hԍ\C̃f[^^(EXCNO) unsigned int
^ɒ`ĂDDEF_EXC ŁCOR[hԍƂėLłȂlC
CPUOɑΉȂԍw肵ꍇ͕̓ۏ؂ȂD

CPUOnhɓnp_excinf́CCPUÕReLXgۑ
X^bNւ̃|C^nDX^bN̍\ȉɎD

offset
          ----------------------
         |         R7           |  <-- p_excinf
          ----------------------
  1      |         R6           |
          ----------------------
  2      |         R5           |
          ----------------------
  3      |         R4           |
          ----------------------
  4      |         R3           |
          ----------------------
  5      |         R2           |
          ----------------------
  6      |         R1           |
          ----------------------
  7      |         R0           |
          ----------------------
  8      |        MACH          |
          ----------------------
  9      |        MACL          |
          ----------------------
 10      |        GBR           |
          ----------------------
 11      |         SR           |
          ----------------------
 12      |         PR           |
          ----------------------
 13      |         PC           |
          ----------------------

܂CCPUOPC̒l͔OvɉCPUɂCN
gꍇCꂸɃgCꍇD̂߁CPC̒lύX
ꍇ́CCPUOnhŁCp_excinfPC̒lύX΂悢D



2.4 X^[gAbvW[

SH3ˑ̃X^[gAbvW[(start.S)ł́C̏sD

(A) vZbT[h̏ƃX^bN|C^̏

ŏɁCׂẴLbV𖳌CLbVCgX[[
hɐݒ肵CLɂD܂CvZbT̃[hC[hCWX
^oN1ɐݒ肵C荞݃}XN MAX_IPM ɐݒ肷D


ɁCX^bN|C^(r15) STACKTOP ɐݒ肷DŊ݃X^b
N|C^ɐݒ肳ꂽX^bN̈́CJ[lN͔^XNReL
Xgp̃X^bN̈ƂĎgDSTACKTOP ́Csys_config.h Œ`
邱Ƃz肵ĂD

(B) hardware_init_hook ̌ďo

hardware_init_hook  0 łȂꍇɂ́Chardware_init_hook ĂяoD
hardware_init_hook ́CJ[lNOɍsKv^[Qb
gˑ̏s߂ɗpӂĂDhardware_init_hook ǂł
`ĂȂꍇCJł̃V{ 0 ɒ`(JXN
vgɋLq)D

(C) bssZNV dataZNV̏

bssZNV[NAD܂CdataZNVD

(D) software_init_hook ̌ďo

software_init_hook  0 łȂꍇɂ́Csoftware_init_hook ĂяoD
software_init_hook ́CJ[lNOɍsKv\tgEF
A(̓Iɂ́CCu)ˑ̏s߂ɗpӂĂD
software_init_hook ǂł`ĂȂꍇCJł̃V{
 0 ɒ`(JXNvgɋLq)D

(E) J[l̋N

kernel_start ֕򂵁CJ[lNDkernel_start 烊^[
Ă邱Ƃ͑z肵ĂȂD


2.5 WX^oN

Onh̓{IɃWX^oN0gpĂDWX
^oN1 r7 ̂ݗO/荞݂̃lXg񐔂̃JEgpɎgpĂD
^XNReLXgƃ^XNReLXg̔ʂ͂̃WX^ɂs
ĂDȂCX^u̓WX^oN1R0R1gp邽߁C̃W
X^ɏ񂾃f[^̓X^uĂяoƔj󂳂D


2.6 MACHCMACLCGBR

gccł́CMACHCMACLCGBRׂ͂ăXNb`WX^ƂĈ邽߁C
֐ĂяȏOł͒l͕ۏ؂ȂD̂߁CO/ݔ
́CXNb`WX^łėpWX^R0`R7ƓlɕۑĂD
܂CfBXpb`Ăяoꍇ́C֐ĂяoɂȂ邽߁C
ĂȂDAZũR[hgpꍇ̃[ɏ]Kv
D


2.7 ݃nhs̊݃}XN

SH3͊ݔC݃}XNrbg(I3`I0)̓vZbTɂĎ
Iɐݒ肳Ȃ߁C\tgEFAɂĐݒ肷KvD݃n
hsɐݒ肷銄݃}XNrbgJ[lɎw肷T[rXR[
Ƃdefine_int_plevel() pӂĂD̃T[rXR[̎gp
̒ʂDȂCdefine_int_plvel()ɂ芄݃}XNrbgw肵Ȃ
Ί݃nh̓fBtHg MAX_IPM -1 ̃}XNŎsD

 define_int_plevel  ݃nhs̊݃}XNrbg̎w

yCAPIz
  void define_int_plevel(UINT dintno, UW plevel)

yp[^z
  dintno    ݔԍ
  plevel    ݃x

y@\z
  dintno Ŏw肵ݔԍ̊݃nhsꍇ̊
  }XN plevel ɂD


RDVXeˑ̋@\

3.1 VXeNbNhCo

VXeNbNhCo isig_tim ĂяóCsys_defs.h  
TIC_NUME  TIC_DENO Œ`Ă(W 1~b)D̒`
ύX邱ƂŁCisig_tim ĂяoύX邱ƂłD
C^C}̐x 1ʕbł邽߁C1ʕbPʂŒ[ɂȂlݒ肵
ꍇɂ́Cisig_tim ̌ďoɌ덷邱ƂɂȂD

3.2 \]pVXeQƋ@\

SH3ˑł́C\]pVXeQƋ@\(vxget_tim)T|[g
D\]pVXe̐x 1ʕbPʂł邪C^C}̌ݒl
ǂݏo߂ɈꎞIɃ^C}~Kv邽߁Cvxget_tim 
ĂԓxɃVXeNbNÂx邱ƂɂȂDȂCSYSUTIM^ 
UD^(64rbg̕^)ɒ`ĂD

3.3 VAC^tF[XhCo


Solution_Engine ̃VAC^tF[XhCóCX[p[I/O
SCI(CN3) T|[gĂD܂CMS7727CP01̃VAC^tF[X
hCóCST16C2550CQ48 T|[gĂD

3.4 }bv

R[ḧƃf[^̈͊eVXeˑ Makefile.config ŁCX^b
N̏ĺCsys_defs.h Őݒ肷D

ESolution Engine
  R[ḧ 0x0c003000 ` 0x0c0fffff 1MBCf[^̈ 0x0c100000 
  ` ̖3MBC^XNReLXgp̃X^bN̈ `0x0c3fffff Ɋm
  ۂĂD0x0c000000 ` 0x0c000fff ́CGDBX^ũ[NGAƂȂ
  ĂCgp邱ƂłȂD


EMS7727CP01
  R[ḧ 0x0c003000 ` 0x0c0fffff 1MBCf[^̈ 0x0c100000 
  ` ̖3MBC^XNReLXgp̃X^bN̈ `0x0c3fffff Ɋm
  ۂĂD0x0c000000 ` 0x0c002fff ́CROMj^̃[NGAƂȂ
  ĂCgp邱ƂłȂD


SDJ̍\z

J̍\z@ɂẮCGNUJ\z}jAQƂ̂ƁD


4.1 J̃o[W
mFc[̃o[W͈ȉ̒ʂłD

    BINUTILS : 2.10.1
    GCC-CORE : 2.95.3
    GDB      : 4.18
    NEWLIB   : 1.9.0

̑gݍ킹

    BINUTILS : 2.14
    GCC-CORE : 3.3
    GDB      : 5.3
    NEWLIB   : 1.11.0


TD̑

5.1 fBNgEt@C\

SH3 ^[Qbgˑ̊et@C̊Tv͎̒ʂD

    config/sh3/
        Makefile.config Makefile SH3 ˑ`
        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[
        shelf.ld          rbOGfBApJXNvg
        shlelf.ld         gGfBApJXNvg
        hw_timer.h        ^C}샋[`
        sh3.h             SH3 ̒`
        sh4.h             SH4 ̒`


    config/sh3/solution_engine
        Makefile.config   Makefile Solution Engine ˑ`
        ms7709ase01.h     MS7709ASE01 n[hEFA`
        ms7729rse01.h     MS7729RSE01 n[hEFA`
        ms7750se01.h      MS7750SE01  n[hEFA`
        solution_engine.h Solution Engineʒ`
        sys_config.c      VXeˑ̊֐
        sys_config.h      VXeˑ̍\`
        sys_defs.h        VXeˑ̃AvP[Vp`
        sys_support.S     VXeˑ̃Tu[`
        sys_rename.def    J[l̓ʖ̃l[`
        sys_rename.h      J[l̓ʖ̃l[
        sys_unrename.h    J[l̓ʖ̃l[
        hw_serial.h       SIOhCo
        hw_serial.cfg     SIOhCõRtBM[Vt@C


    config/sh3/ms7727cp01
        Makefile.config   Makefile MS7727CP01 ˑ`
        ms7727cp01.h      MS7727CP01 n[hEFA`
        sys_config.c      VXeˑ̊֐
        sys_config.h      VXeˑ̍\`
        sys_defs.h        VXeˑ̃AvP[Vp`
        sys_support.S     VXeˑ̃Tu[`
        sys_rename.def    J[l̓ʖ̃l[`
        sys_rename.h      J[l̓ʖ̃l[
        sys_unrename.h    J[l̓ʖ̃l[
        hw_serial.h       SIOhCo
        hw_serial.cfg     SIOhCõRtBM[Vt@C


    pdic/simple_sio/
        st16c2550.h       ST16C2550 ̒`
        st16c2550.c       ST16C2550 pSIOhCo
        fdc37c935a.h      fdc37c935a ̒`
        fdc37c935a.c      fdc37c935a pSIOhCo



