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

             iRelease 1.4.2ΉCŏIXV: 14-Nov-2005j

------------------------------------------------------------------------
 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 Industrial Technology Institute,
                             Miyagi Prefectural Government, 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: sh1.txt,v 1.1 2008/06/17 00:04:40 suikan Exp $
------------------------------------------------------------------------


PDSH1 ^[Qbgˑ̊Tv

1.1 ^[QbgVXeƊJ

SH1vZbT̃^[QbgVXeƂẮASH7032𓋍ڂȉ̃{[h
T|[gĂB

Es}CNRs[^()KZ-SH1-01(CPU: HD6417032F20)
ECQo()RISC]Lbg SH-1(CPU: HD6417032F20)
E()쏊̃ITRONSH1CPU{[h(CPU: HD6417034F20)

Jɂ́AGCC Ȃǂ GNUJpAIuWFNgt@CtH[
}bg ELF WƂB

sROMꍇT|[gĂBMakefile.configŁC
DBGENVROMݒ肵ĂBi匳MakefileGDB_STUBɐݒ肳
̂h߁j


1.2 T|[g@\̊Tv

SH1ˑ̋@\ƂāA݃}XN̕ύXEQ(chg_ixxAget_ixx)ƁA
\]pVXeQƋ@\(vxget_tim)T|[gĂB
̋֎~Ƌ(dis_intAena_int)̓T|[gĂȂB

1.3 ̃^[Qbgւ̃|[eBO

o[Wł́ASH7032T|[gĂBSHV[YSH1,SH2SH3
~ł݂͊̈ȂقȂB̓IɂSH1ASH2̓xN^e[u
QƂāAݗvʂɗpӂꂽ݃nhɕ򂷂Bɑ΂
āASH3ASH4ł͊荞ݗvɂ炸x̊݃nhɕ򂵂
A荞ݗvZbgꂽWX^QƂčēxA򂷂B

1.4 GDB X^u

TOPPERS/JSP J[l SH1łGDBX^uł̃fobOT|[gĂB
mF͋s}CNRs[^()KZ-SH1-01ōsB
GDBX^uƑgݍ킹Ďgp邱ƂlāA@łJSPJ[l
lɁA\[XR[hɃ}NGDB_STUBɂRpC̐ݒs
ĂBs̐ݒ$(SYS)/Makefile.config̕ϐDBGENVōsB
SH1pGDBX^u͌݁AJłAԂȂJ\łB

1.5 VA|[g

J[l̃Oo͗pɃVA|[gPgpB
VA|[g̐ݒ
@E8rbg
@EpeBȂ
@EXgbvrbgF1rbg
@E{[[gF
@@@s}CNRs[^()KZ-SH1-01F38400bps
@@@()쏊̃ITRONSH1CPU{[hF 9600bps
łB


QDSH1vZbTˑ̋@\

̐߂ł́AJ[lуVXeT[rX̋@\̒ŁASH1ˑ̕
ɂĉB

2.1 f[^^

signed int^Cunsigned int^Csize_t^̃TCÝC32rbgł
D

2.2 ݊Ǘ@\Ɗ݃nh

J[lǗO݂̊ƂẮA NMI BāACPUbNԂ⏉
[`ł́ANMI ȊOׂ݂̊͂ċ֎~ĂB̓Iɂ́A
IPM(Interrupt Priority Mask) 15 ɐݒ肳B

IGDBX^u𗘗p邱ƂlāA\[XR[hɈȉ̂悤
ȋLq܂ށB
{[h NMI ͂Ȃ^[Qbĝ߁AGDB ̃X^uzXg
}VƒʐM邽߂̃VA|[g̗Dx 15 œo^AGDB 
Ctrl-C  荞݂X^uɐ䂪ڂ悤ɂĂB̋@
\gp邽߂ɂCPUbNԂł́ADx 14 ɂȂ悤ɂȂ
΂ȂȂB̂߁ACPUbNŐݒ肳Dx}N MAX_IPM
w肵ĂBMAX_IPM cpu_config.h ̒ #define ĂBX^u
gꍇMAX_IPM14ɁAX^ugȂꍇMAX_IPM15ɐݒ肵
B

SH1ˑ̋@\ƂāASR(Status Register) 荞݃}XNrbg(I3`
I0)̒lύX邽߂̃T[rXR[ chg_ipm ƁAQƂ邽߂̃T[r
XR[ get_ipm T|[gĂBȂA荞݃}XNrbg̒l
\f[^^ IPM ́Aunsigned int^ɒ`ĂB

̃T[rXR[́A^XNReLXg CPUbNԂ̏ꍇ
ɂ̂݌ĂяoƂłBchg_ipm ɂ IPM  0 ȊO(Ȃ킿A
炩݂̊֎~Ă)ɂꍇłAfBXpb`͋֎~
ꂸAchg_ipm ɂύX IPM ̒ĺAfBXpb`̃^XNɈ
pBႦ΁A^XN IPM  1 ɕύXA炩݂̊
ʂ̃^XNɐ؂ւƁA؂ւ̃^XNłIPM1ɂȂB

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

SH1ˑ̊݃}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

IPM(Interrupt Priority Mask) ipm Ŏw肳ꂽlɐݒ肷Bw肵
l 0`14Ȃ0`13ȊȌꍇAE_PARG[ƂȂBIPM 0ȊO
i1`MAX_IPM-1jɐݒ肵ꍇłAfBXpb`͋֎~ȂB܂A
ݒ肵 IPM ̒ĺAfBXpb`pB

ȂÃT[rXR[pāAIPM  MAX_IPM (ׂĂ݂̊֎~)
ɐݒ肷邱Ƃ͂łȂBIPM  MAX_IPM ɂꍇɂ́Aloc_cpu 
gׂłB

̃T[rXR[́A^XNReLXg CPUbNԂ̎̂݌
яoƂłB^XNReLXg CPUbNԂŌĂяo
ɂ́AE_CTXG[ƂȂ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

݂ IPM(Interrupt Priority Mask)̒lǂݏoAipm ɕԂB

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


2.3 CPUOǗ@\CPUOnh

DEF_EXC Ŏw肷銄݃nhԍ(excno)́ASH1 ł xN^e[u
̃xN^ԍ\Ãf[^^(EXCNO) unsigned int^ɒ`Ă
BDEF_EXC ŁAxN^ԍƂėLłȂlACPUOɑΉȂ
w肵ꍇ͕̓ۏ؂ȂB

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


      ----------------------
     |         PR           |
      ----------------------
     |         R7           |
      ----------------------
     |         R6           |
      ----------------------
     |         R5           |
      ----------------------
     |         R4           |
      ----------------------
     |         R3           |
      ----------------------
     |         R2           |
      ----------------------
     |         R1           |
      ----------------------
     |         R0           |
      ----------------------
     |         PC           |
      ----------------------
     |         SR           |  <-- p_excinf
      ----------------------

     PR:Procedure Register
     SR:Status Register
     PC:Program Counter

܂ACPUOPC̒l̓CNgB̂߁ACPUOn
h畜AsƁACPUO߂̖̎߂sĊJ
B



2.4 X^[gAbvW[

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

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

荞݃}XN MAX_IPM ɐݒ肷B

ɁAX^bN|C^(r15) STACKTOP ɐݒ肷BŊ݃X^b
N|C^ɐݒ肳ꂽX^bN̈́AJ[lN͔^XNReL
Xgp̃X^bN̈ƂĎgBSTACKTOP ́Auser_config.h Œ`
邱Ƃz肵ĂB

(B) hardware_init_hook ̌ďo

hardware_init_hook  0 łȂꍇɂ́Ahardware_init_hook ĂяoB
hardware_init_hook ́AJ[lNOɍsKv^[Qb
gˑ̏s߂ɗpӂĂBhardware_init_hook ǂł
`ĂȂꍇAJł̃V{ 0 ɒ`(JXN
vgɋLq)B

(C) bssZNV dataZNV̏

bssZNV[NAB܂AdataZNVB

(D) software_init_hook ̌ďo

software_init_hook  0 łȂꍇɂ́Asoftware_init_hook ĂяoB
software_init_hook ́AJ[lNOɍsKv\tgEF
A(̓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.5 ݔ̃X^bNʂɂ

ȉ̗RɂAe^XNX^bN̓^XNggp镪ɉčő
240oCg]ɗpӂKvB

JSPJ[lł̓^XNX^bN̑Ɋ݃X^bNpӂA^XNR
eLXg͊݃X^bNŎsB
SH1͗O/ݎtɊ݋֎~ɂȂ@\n[hEFAŗpӂ
ȂB̂߁A݂̓Ń\tgEFAɂĊ݋֎~ɂ
KvBł͊݋֎~Ɉڍs邽߂Ɂi݋̏
ŁjX^bNr0,r1ҔBiSR(Status Register)PC(Program
Counter)͊ݎtɃn[hEFAIɑҔsBj
̂ƂAd݂Ɗ荞݃X^bNɐ؂ւOɓl
t[X^bNɐBSH1͊荞݃x15îŁA
ň̃^C~OŊ݂ƁAX^bN240oCgB
i4oCg~4WX^~15Zbgj

O/荞݂̃lXg񐔂̃JEgpɃJ[lŕϐintnestp
A^XNReLXgƃ^XNReLXg̔ʂ͂̕ϐɂ
sĂB


2.6 MACHMACL (ϘaWX^j
      MACH:Multiply and accumulate high register
      MACL:Multiply and accumulate low register

MACHMACLɂẮAgcc-mhitachiIvVƁA֐MACH
MACLgpꍇAX^bNɕۑĂgpA֐𔲂ƌɖ
߁A݂ł͕ۑĂȂB܂AfBXpb`ĂяoA
fBXpb`ꍇ́A֐ĂяoɂȂ邽߁ǍĂяoɂ܂
āÃWX^gƂ͂ȂߕۑĂȂB̂߃AZ
ũR[hgpꍇ̃[ɏ]KvB
ȂÃ݂fBXpb`(󓮓IfBXpb`)ł͕ۑĂB


2.7 GBR (Global Base Register)

gccGBRgpȂ߁A݃nh̓ł͕ۑĂȂB
݃nhGBRgꍇ̓AvP[VGBȒҔ/ۑs
KvB܂ALMACHMACLƓRɂAfBXpb`
ĂяoꍇɂۑĂȂBȂÃ݂fBXpb`(
IfBXpb`)ł͕ۑĂB



RDVXeˑ̋@\

3.1 VXeNbNhCo

VXeNbNhCo isig_tim ĂяóAuser_config.h 
TIC_NUME  TIC_DENO Œ`Ă(ftHgł 1~b)B
̒`ύX邱ƂŁAisig_tim ĂяoύX邱Ƃł
B
A^C}̐x 1ʕbł邽߁A1ʕbPʂŒ[ɂȂlݒ
ꍇɂ́Aisig_tim ̌ďoɌ덷邱ƂɂȂB
ftHgłSH1̓CeO[ebhE^C}EpXEjbg
ITŨ`l0gpĂB^C}nh̗Dxuser_config.h
}NTINTLVL0ƂĒ`ĂBiftHgł4j

3.2 \]pVXeQƋ@\

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

3.3 VAC^tF[XhCo

VAC^tF[XhCóASH1SCIiSerial Communication
Interfacej̃`l0T|[gĂAJ[l̃Oo͗pɎgp
ĂBVA݃nh̗Dx͑MуG[݋
user_config.hŃ}NSCIINTLVLƂĒ`ĂB
iftHgł6j


3.4 }bv

Es}CNRs[^()KZ-SH1-01
ECQo()RISC]Lbg SH-1

̂Q̃{[h̓}bsOȂ̂ŁAˑ̃\[XR[h
ʂłBiCQoł̃{[h͉ĹuӁv̍QƁj
ˑł́AR[ḧ 0x0000,0000 ` 0x0003,ffff256KBAf[^̈
0x0a00,0000 ` 256KBA^XNReLXgp̃X^bN̈ `
0x0a03,ffff ɊmۂĂB


@CQołRISC]Lbg SH-1̓ftHg̐ݒi8rbgoXAROM1j
@ł́AAhXoX̐ڑVtgĂB̂߁AROM̃AhX
@ƎAhXvȂB
@tROMj^ȊÕ[U[vOROMꍇ́AAhX
@oX̐ݒ16rbgiROM2jɕύXKvB
@i{[ht̃}jAp17QƁj

E()쏊̃ITRONSH1CPU{[h
^CvFROM,SRAMꂼ2ނ
@FROM
@E0x0000,0000 - 0x0007,ffff  R[ḧ(512KB)
@E0x0000,0000 - 0x0003,ffff  R[ḧ(256KB)
@SRAM
@E0x0200,0000 -              f[^̈(512KB)
                - 0x0207,ffff  ^XNReLXgp̃X^bN̈
@E0x0200,0000 -              f[^̈(128KB)
                - 0x0201,ffff  ^XNReLXgp̃X^bN̈
R[ḧ0x0000,0000 ` 0x0000,ffffFROM݃vO
Ă邽߁A\ȃR[ḧ0x0001,0000 ƂȂĂB
܂AROMICEgpiS3XCb`ONj́AFROM̓GASi0x0400,0000 ` j
Ƀ}bsOB

SDJ̍\z

J̍\z@ɂẮAGNUJ\z}jAQƂ邱ƁB
JɂWindows2000 SP3 + CygwinpB
mFc[̃o[W͈ȉ̒ʂłD
    BINUTILS : 2.13.2.1
    GCC-CORE : 2.95.3
    NEWLIB   : 1.8.1is}CNRs[^()KZ-SH1-01j
@@@@@@@ 1.11.0i()쏊 SH1CPU{[hALQƁj

configure ̃IvV--target=sh-hitachi-elfłB
܂AWindowsCygwinpĊJꍇ́AbinutilsconfigurẽI
vV --disable-nls w肷邱ƁB

l
@@()쏊 SH1CPU{[h̓mF̍ۂɂnewlib1.11.0p
@@ĂBnewlib1.11.0makeɃG[邽߁AnewlibfB
@@Nǵunewlib/libc\machine/sh/memset.Sv1sڂ9sڂR
@@gAEgĂB

/*
!
! Fast SH memset
!
! by Toshiyasu Morita (tm@netcom.com)
!
! SH5 code by J"orn Rennecke (joern.rennecke@superh.com)@<-- J"ŃG[
! Copyright 2002 SuperH Ltd.
!
*/


TD

5.1 VXeC^[tF[XCsil_dly_nse()ɂ

{nsecPʂ̎ԑ҂s֐܂̓}Nł邪AƂA
1̌ĂяoōŒł2240nsecĂ̂ŁAƂĂnsecPʂƂ
ȂԂłBi쑬xxfoCXɃANZX邽߂̋@\
̂Ŗ͂ȂƎvBj
@F
@@{[hFs}CNRs[^KZ-SH1-01
@@NbNgF20MHz
@@oXXe[gRg[̐ݒF
@@@@GA0F[hTCNWAITMɂEF[gXe[g}Ȃ
@@@@GA0,2F1Xe[gOEFCg
@@@@GA3F[hTCN͂PXe[gŏI

5.2 SIL_LOC_INT()ɂ

SH1łłSIL_LOC_INT()̎CPUbNƓ@pĂB
i݃bNlXgł_CPUbNƈقȂBĵ߁A
SIL_LOC_INT()Ŋ݋֎~ĂԂł́Asns_loc()yvxsns_loc()
CPUbNԂƔʂĂ܂B
JSPJ[lł͌XA݃bNɂ̓T[rXR[gpłȂ
K肵Ă̂ŁAe͏ȂƎvB
ijsp/user.txt́u5.1.1 ݃bNԂ̐vQƁj

5.3 gcc3.xΉɂ

SH1łgcc3.xnɑΉĂȂB
SH1łmachWX^10rbgi[Ȃ̂ɁAn̕s
ɂ֐Ăяo̍ۂɔėpWX^̑ޔƂāAƃWX^Ɏg
Ă܂B̂߁AWX^̓ełȂȂAj]B
JSPJ[l̗LɊ֌WȂN錻ۂłAgcc܂binutils
CȂƑΉłȂB
i-ffixed-machIvVʂ͂ȂBj

5.4 ꂽ

ȉ͉̐ĂB

5.4.1 sׂ^XNȂꍇ̊ݑ҂ɂ

fBXpb`̏oŎsׂ^XNȂ(schedtsk==NULLjꍇ́A
sleep߂ɂăvZbTȓd̓[hɐ؂ւĊݑ҂
Bicpu_sapport.Sdispatcher_2t߂QƁj

݋sleep߂sĂ邽߁A݋߂̎sOɊ
ݗvĂꍇi邢͊݋AsleepߎsOɊ
ݗvꍇjA݋߂̎sƋɊ݂󂯕tA
̕Asleep܂܂ɂȂAreqflg̃`FbNɐi܂ȂB
i1msecȓɃ^C}݂邽߁Aۂɂsleep܂܂ƂƂ
ȂBj

̖́A݂̋sleep Ԃւ̈ڍsAg~bNɎsłȂ
ƂɋNBSH3ȍ~łIPMƂ͕ʂSRBLrbggĊ݂̋֎~
/𐧌䂷邱ƂɂA̖ł邪ASH1/2łIPMݒ肷
ȊOɊ݂֎~^@ȂA݋iݑ҂IPM
jsleepAg~bNɍs@ȂB
SH1ˑł́AݎtɃX^bNɐς܂ꂽ߂Ԓn𑽏d
݂̏oŃ`FbNA߂ԒnLsleep߂ɊYꍇ͖߂
Ԓn1ߕi2oCgji߂邱Ƃɂ肱̖ĂB
A̕@ł͑d݂̏oɐ߂̃I[o[wbhB
OMIT_POWER_CONTROL}N`邱Ƃsleep߂̑nop߂}
Ad݂̏oł̃`FbN[`͏ȗBȉꍇ
d͂̓_ŕsɂȂBj

5.4.2 ݁^CPUȌoɂ

SH1ł͊ݎtɊ݋֎~ɂȂĂȂ߁AA̓
ɕʂ̊B\Bi̓n[hEFÃA[LeN
`悤ȂBj݃nhBŃ^XN؂ւN悤
ȃT[rXR[ĂԂƊB̏oŕʂ̃^XNɃfBXpb`
Ă܂A^XN2猳̃^XNɖ߂Ă܂ŁAȀx
܂B
܂AAxgK2񌟏oĂ܂B
h߁AX^bNɐςł߂IPMtask_intmask̒l
rāAɊ݂Ȃ`FbNĂB
icpu_support.S_ret_intQƁj

SH1łCPUO󂯕tĂ݃}XN͕ωȂ߁ACPUO̓
Ɋ݂ꍇAL̂悤Ȕʕ@łΏłȂB
̂߁Ȁ݂oŃX^bNɐς܂ꂽ߂ԒnCPUO̓
̔ԒnrāA߂悪CPUO̓ۂ𔻕ʏIv
VŗpӂĂB̏CPUOo^e[uT[`
邽߁A荞݋֎~ԂȂB̔ʏLɂ
ꍇ̓}NSUPPORT_CPU_EXC_ENTRY_CHECK`B
@^XNReLXgŔCPUȌ́A񂵂ɂĂ
قǖ͂ȂƍlAL̏̓ftHgł͖ɂĂB^XN
ReLXgłCPUOǂ̃^XNŔ邩́Â݂悤Ƀ^
C~Oɂ̂ł͂ȂKRIȂ̂łB̂߁ACPUO
D揇ʂ̃^XNɏ̂ƂĔfB
@Ⴆ΁A^XNsɃ[ZOāA̗Oxꂽ
ĂÃ^XNւ̉e͂ȂBĩ^XNɖ߂ĂƂɂ́A
ĂOŝŁÃ^XNɑ΂Ăe͂ȂBj

L̃e[u̓ftHgCPUO6vo^ł悤ɂĂ邪A
AvP[VŃgbv߂gpAJ[lŃnhOꍇ
user_config.hNUM_EXC̒lKXύXB



UD̑

6.1 fBNgEt@C\

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

    config/sh1/
	Makefile.config	MakefileSH1ˑ`
	cpu_defs.h	vZbTˑ̃AvP[Vp`
	cpu_config.h	vZbTˑ̍\`
	cpu_config.c	vZbTˑ̊֐
	cpu_support.S	vZbTˑ̃Tu[`
	cpu_context.h	ReLXg
	cpu_insn.h	჌x̃vZbT샋[`
	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
	sh1.h		SH1̒`
	start.S		X^[gAbvW[
	vector_table.c	݃xN^e[u
	sh1_sil.h	SH1pANZXE[eBeB
	sh1itu.h	SH1itup^C}hCo
	sh1sci.c	SH1scipVAhCo
	sh1sci.h	SH1scipVAhCo
	util.h		[eBeB[E}N̒`
	makeoffset.c	offset.h T|[gvO
	shelf.ld	JXNvg


    config/sh1/kz_sh1/
    	s}CNRs[^() KZ-SH1-01{[hˑ
    	iCQo() RISC]LbgSH-1ł\j

	user_config.h	[U[`
	Makefile.config	MakefileKZ-SH1-01{[hˑ`
	sys_defs.h  	VXeˑ̃AvP[Vp`
	sys_config.h	VXeˑ̍\`
	sys_config.c	VXeˑ̊֐
	sys_support.S	VXeˑ̃Tu[`
	sys_rename.def	J[l̓ʖ̃l[`
	sys_rename.h	J[l̓ʖ̃l[
	sys_unrename.h	J[l̓ʖ̃l[
	hw_timer.h	^C}샋[`
	hw_serial.h	SIOhCo
	hw_serial.cfg	SIOhCõRtBM[Vt@C
	kz_sh1.h   	KZ-SH1-01̃n[hEFA`


    config/sh1/zunda_sh1/
    	()쏊ITRONSH1CPU{[hˑ
	
	Makefile.config	Makefile̒쏊 SH1CPU{[hˑ`
	sys_defs.h  	VXeˑ̃AvP[Vp`
	sys_config.h	VXeˑ̍\`
	sys_config.c	VXeˑ̊֐
	sys_support.h	VXeˑ̃Tu[`p`
	sys_support.c	VXeˑ̃Tu[`
	sys_rename.def	J[l̓ʖ̃l[`
	sys_rename.h	J[l̓ʖ̃l[
	sys_unrename.h	J[l̓ʖ̃l[
	hw_timer.h	^C}샋[`
	hw_serial.h	SIOhCo
	hw_serial.cfg	SIOhCõRtBM[Vt@C
	sh1sci2.c	SH1scipVAhCoi2chΉj
	sh1sci2.h	SH1scipVAhCoi2chΉj
	zunda_sh1.h.h   쏊 SH1CPU{[h̃n[hEFA`
	device.h	LED,SW ֐̐錾
	device.c	LED,SW ֐


6.2 [U[̐ݒ荀

SH1ˑł́A[U[̐ݒ荀ڂVXeˑ̂Q̃t@C
Makefile.configuser_config.hɂ܂Ƃ߂ĂA[U[̓J[l
ȂĂAxAݒύX\ɂĂB

6.2.1 Makefile.config̐ݒ荀

Es
@ϐDBGENV̐ݒɂsIB
@@EDBGENV=ROMFROM
@@EDBGENV=GDB_STUBFGDB stub
@@EDBGENV=PARTNERFs}CNRs[^PARTNER-ET II
@@@i쏊 SH1CPU{[hŗLj
@@@@ROMICEgpNMI܂łROMxN^e[uxN^x[XWX^
@@@@GA֓]B
@@@@KERNEL_HAS_A_VECTOR_TABLE}Niqj`Ăꍇ̂
@@@@LłB
@@EDBGENV=MULTI_STACKF\tBAVXeYMultiSTAC-SH1
@@@@is}CNRs[^()KZ-SH1-01ŗLj

E}bsO
@@ETEXT_START_ADDRESSFtextZNV̐擪AhX
@@EDATA_START_ADDRESSFdataZNV̐擪AhX

6.2.2 user_config.h̐ݒ荀

user_config.hňȉ̃}N`sƂɂAݒύXłB

ESUPPORT_CHG_IPM
@@chg_ipm()LɂB
@@2.2ߎQ

ESUPPORT_VXGET_TIM
@@\]pVXeQƋ@\vxget_tim()LɂB
@@3.2ߎQ

ESUPPORT_CPU_EXC_ENTRY_CHECK
@@݂̏oŖ߂悪CPUO̓ł邩
@@`FbNsB
@@5.4.2ߎQ

EOMIT_POWER_CONTROL
@@sׂ^XNȂꍇ̊ݑ҂ŏȓd̓[hɈڍsȂB
@@itICE̐ݒj
@@5.4.1ߎQ

EFILL_STACK_WITH_0
@@fobKŃX^bN̈ώ@Ղ邽߁AX^[gAbv[`
@@^XNReLXg̃X^bN̈0ŏ

EOMIT_DATA_SECTION_COPY
@@fobOɂĂdataZNV̔FɕsA
@@__idata_startԒnɃ_E[hׂf[^__data_startԒnɃ_E
@@[hĂ܂̂B̏ꍇOMIT_DATA_SECTION_COPY}N
@@`Ă邱ƂŃX^[gAbv[`ł̂̃Rs[ƂȗB
@@
ELARGE_TYPEi쏊 SH1CPU{[hŗLj
@@SRAM^Cv[W^CvƂB

ESTACKTOP
@@^XNReLXgpX^bN̏l

ECONFIG_20MHZ
ECONFIG_19MHZ
ECONFIG_16MHZ
@@NbNg̐؂ւ`B
@@L̓APIB

ECONFIG_BAUD
ECONFIG_BAUD_2
@@VAʐM̃{[[giꂼ|[gPCQɑΉj
@@9600, 19200, 38400[bps]̂ꂩ𐔒lŒ`B

EVA|[g̒`
@@ETNUM_PORT
@@@@GDICxŃT|[gVA|[g̐
@@@@iJ[l̊Ǘɂ|[gj
@@ETNUM_SIOP
@@@@PDICxŃT|[gVA|[g̐
@@@@ifoCXhCoEx̃|[gj
@@ELOGTASK_PORTID
@@@@VXeOɗpVA|[gԍ

ESCI_INTLVL
@@VA݂̗Dx
@@3.3ߎQ

ETIMER_INTLVL
@@^C}݂̗Dx
@@3.1ߎQ

ETIC_NUME
ETIC_DENO
@@^C}݂ɂisig_tim()Ăяo[msec]
@@ꂼꕪqA\B
@@3.1߂config.txt
@@@(3) ^CeBbN̒`
@@Q

ENUM_EXC
@@L̃`FbNΏۂƂȂCPUO̓o^
@@ftHgł6vƂĂB
@@SUPPORT_CPU_EXC_ENTRY_CHECK`ĂȂꍇ͖B
@@5.4.2ߎQ

EINNER_RAM_ADDRESS
@@vZbTRAMpłꍇ͂̍Ō̃AhX
@@INNER_RAM_ADDRESS}NƂuser_config.hŒ`B
@@̃}N`Ăꍇ́AX^bN|C^̒lɐݒ肵
@@hardware_init_hook()ĂяôŁAhardware_init_hook()C
@@ŋLq邱ƂłBi܂AINNER_RAM_ADDRESS̓X^bN|C
@@^̈ꎞIȏlƂĎgpBj
@@hardware_init_hook()߂ŃX^bN|C^STACKTOPɍĐ
@@肵ĂB
@@KERNEL_HAS_A_VECTOR_TABLE}N`Ăꍇ̂ݗLłB
@
@l
@@ʂC̊֐Ăяo̓X^bNgp̂ŁAoXRg[
@@̏OɊ֐Ăяo͂łȂBINNER_RAM_ADDRESS}N`
@@邱Ƃhardware_init_hook()CŋLqł悤ɂȂB

ECPUOnh̐擪AhX
@@ȉ̃}Nׂ͂ďȗ\łB
@@ȗꍇ̓ftHg̒lƂāAX^[gAbv[`̐擪
@@AhXgpB

ENMI_VECTOR
@@NMIOnh̐擪AhX
@@ftHglFX^[gAbv[`̐擪AhX
@@KERNEL_HAS_A_VECTOR_TABLE}N`Ăꍇ̂ݗLłB

EGII_VECTOR
@@ʕsߗOnh̐擪AhX
@@ftHglFX^[gAbv[`̐擪AhX
@@KERNEL_HAS_A_VECTOR_TABLE}N`Ăꍇ̂ݗLłB

ESII_VECTOR
@@XbgsߗOnh̐擪AhX
@@ftHglFX^[gAbv[`̐擪AhX
@@KERNEL_HAS_A_VECTOR_TABLE}N`Ăꍇ̂ݗLłB

ECAE_VECTOR
@@CPUAhXG[Onh̐擪AhX
@@ftHglFX^[gAbv[`̐擪AhX
@@KERNEL_HAS_A_VECTOR_TABLE}N`Ăꍇ̂ݗLłB

EDAE_VECTOR
@@DMAAhXG[Onh̐擪AhX
@@ftHglFX^[gAbv[`̐擪AhX
@@KERNEL_HAS_A_VECTOR_TABLE}N`Ăꍇ̂ݗLłB



6.3@J[lڐAҌ̏

6.3.1@IɎgpĂ}N
ȉ̃}NSH1ˑŏRpCs߂ɓIɎgpĂ
̂łA[U[`Kv͂ȂB

EGDB_STUB
@@GDB stubT|[ĝ߁A\񂵂ĂB

EKERNEL_HAS_A_VECTOR_TABLE
@@OxN^J[lǗB
@@GDB stub⃂j^vOOxN^Ǘꍇ́Ã}N
@@`ȂB

ESIO_RESERVED
@@VAER~jP[VEC^[tF[XSCI1chfobK
@@gpĂB
@@̃}N`ƃJ[lSCI 1chgpȂB


6.3.2 lTXeNmWCRpCɈڐAꍇ̒ӓ_
@fBXv[XgtWX^Ԑڂ̋LqقȂ̂ŒӂKvłB
@@Yӏicpu_support.Sj
@@@ETCB\̂ւ̃ANZX
@@@E݁^CPUȌoɂ^XNReLXg̊
@@@@}XN̈p
@
@@lTXeNmWAZu@(disp,Rn) 
@@@ANZXTCY AhX̌vZ 
@@@oCg Rn + disp  EA 
@@@[h Rn + disp~2  EA 
@@@O[h Rn + disp~4  EA 

@@gas@(disp,Rn) 
@@@ANZXTCY AhX̌vZ 
@@@oCg Rn + disp  EA 
@@@[h Rn + disp  EA(Adisp2n) 
@@@O[h Rn + disp  EA(Adisp4n) 


ύX

2005N1114@Release1.4.2
EC
   + cpu_config.c_dummy_memcpy( )
   @+ string.hɂmemcpy( )̈ʓIȃvg^Cv錾ɍ킹
   @@void *memcpy(void *dest, const void *src, size_t len);
   @@
   + Ȃ̊֐`
   @+ IvoidtB


2005N914
E
   + zunda_sh1/sys_support.h
   @+ |[g`Egh^n`
   + CCAZu̕@G[C
   @+ cpu_config.hdefine_inh()
   @+ kz_sh1/kz_sh1.hgdb_stub_putc()
   + macWX^̑ޔ^ӏ̌
@@@gcc3.xւ̑Ή݂邪A삹B
@@@iڍׂ5.3߂QƁj
@@@
@@@COF
@@@@݂ɂ^XNXCb`̂
@@@CF
@@@@E݃nhĂяoO
@@@@E\IȃfBXpb`Ăяoɂ^XNXCb`O


2004N109@Release1.4.1

EoOtBbNX
   + ݂̓ɕʂ݂̊ꍇɍŏ݂̊^XN
   @񂵂ɂsCiCPUOɂĂlj
   + sׂ^XNȂƂ̊ݑ҂ŁA^C~OɂĂ
   @ݏsleep܂܂ɂȂsC
E
   + T|[g{[h̕ύX
   @+ 쏊ITRONSH1CPU{[hǉ
   @+ Տs SH1/CPUB폜
   + ݁^CPUȌo[`vɓWJ镔A
   @ROMʂ팸BiPݗv126oCg팸j
   + GDB stubɑΉ
   + ROM-ICEɗOxN^̎@C
   @+ NMI̗OxN^{[hˑŒ`ł悤ɂ
   + SIL̃ANZX֐̖̂KChCɕύX
   + INNER_RAM_ADDRESS}N̓ɂhardware_init_hook()C
   @Lqł悤ɃX^[gAbv[`C
   + [U[ύXłӏuser_config.hƂĕB

2003N1224@Release1.4

EoOtBbNX
   + sׂ^XNȂĊݑ҂ہAruntskNAĂȂ
   @߁A^C~OɂĂiget_tid()̖߂lȂsC
   + vxget_tim()1msecȉ̒[ȂsC

Ȇ̉
   + t@C̈ˑ֌W̑SʓIȌ
   + VAhCoƃ^C}hCoITRONfoCXhCoKChC
   @ɏC
   + VAhCoɎMG[݃nhǉ

2002N415@Release1.3

EoOtBbNX
   + ̊݁^CPUOlXgJE^̒l̏C
   + ݏoł̊݃}XN̐ݒ菈̒ǉ

Ȇ̉
   + WCumemcpyNꍇƂȂꍇ̗ɑΉ

2001N1120 Release1.2

EoOtBbNX
   + xN^e[ũRs[̍ہÄ̃TCYԈႦĂ
   @oOC

Ȇ̉
@ + @ˑƋʕ̃C^[tF[X̕ύXɒǏ]
@ + sł^XNPȂƂ̋ύX
@@@ichg_ipm()Ƃ̐j


2001N510@Release1.1

SH1ł̃T|[gJn
