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

            iRelease 1.4ΉCŏIXV: 31-Oct-2004j

------------------------------------------------------------------------ 
 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
 Copyright (C) 2003-2004 by Naoki Saito
            Nagoya Municipal Industrial Research Institute, JAPAN
 Copyright (C) 2003-2004 by Platform Development Center
                                         RIOCH COMPANY,LTD. 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: m32c.txt,v 1.1 2008/06/17 00:04:40 suikan Exp $
------------------------------------------------------------------------

1.  M32C ^[Qbgˑ̊Tv

1.1  ^[QbgVXeƊJ

@M32CvZbT̃^[QbgVXéAI[NXdqЂOAKS32
T|[gĂDOAKS32M30833FJFP(100pin)M30835FJGP(144pin)
ڂĂD

1.2 JƎs

@J́AlTXeNmWА̊JgpD
WindowsCXg[ĂAVA|[gp\R΁A
[hW[̍\zA{[hւ̓]Aу{[hł̎s\łD

1.3  T|[g@\̊Tv

@\]pVXeQƋ@\ (vxget_tim) ̓T|[gĂ邪A
݃}XN̕ύXEQ (chg_ixxA get_ixx)A 荞݂̋֎~Ƌ
(dis_intAena_int) ̓T|[gĂȂD

1.4  ̃^[Qbgւ̃|[eBO

@M32CCPUɑ̃foCXĂASFRƂ`œꉻ
邽M32CV[YCPU{[hł΁A|[eBO͗eՂ
oƎvD

1.5  VA|[g

@|[eBOUART0|[gւ̑ΉsĂD
UART1̓fobKKD3083pfobOp|[gƂĎgp邱Ƃz肵Ă.
UART0|[g̐ݒȉɎD

   E{[[gA38400[bps]
   Ef[^A8 rbg
   EXgbvrbgA1 rbg
   EpeBȂ

2.  M32C vZbTˑ̋@\

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

2.1  f[^^

@int ^ unsigned int ^̃TCY 16rbgłD܂A_int64_ ͑Ή
ĂȂD|C^ɊւāAM32Cł16rbgnear|C^32rb
gfar|C^Dnear|C^RAMfoCX̃|[g̈ł
SFRANZXׂ̃|C^łAfar|C^ɉROM̈
ŃANZX\ƂȂD̃|[eBOłVP VP_INT͋far
|C^ƒ`ĂD
@I near  far w肵ȂꍇARpC̓|C^ϐfar
|C^ƂĈ߁Aʏ̎gpł̓|C^̃TCYɈӎKv
ȂAnearfar𓯎Ɏgꍇ͈ӎKvD

2.2  ݊Ǘ@\Ɗ݃nh

@DEF_INHŎw肷銄݃nhԍiinhnoj́CM32Cł̃\tgEFA
ԍ\C̃f[^^iINHNOj char^ɒ`ĂD
DEF_INHŁCOxN^ԍƂėLłȂlCO݂ɑΉȂ
ԍw肵ꍇ͕̓ۏ؂ȂD

@n[hEFA݂͊݋֎~Ƃ邱ƂłDM32C݂̊̋֎~
tOWX^̊݋tO(ItO)ɂčsDȂ킿AIt
OȌꍇ̓}XJu݂͋֎~P̏ꍇ͋D

@݃xN^͐ݒʒuɐÓIɔzuD{Jł̓RtBM
[V琶 kernel_cfg.c ̓eʂAIɐÓI
݃xN^`t@C𐶐郆[eBeBpӂĂD 
[eBeB͑Oꂽ kernel_cfg.c ̓e utils/m16c-renesas
fBNg m16cvec.exe R}hŉ͂A݃xN^`t@C
m16cvec.inc 𐶐Dm16cvec.inc CPŨX^[gAbvW[ł
start.a30 CN[hA݃xN^ROMɐÓIɔzuD

2.3  CPU OǗ@\ CPU Onh

  CPUOƂāAn[hEFAm}XJu݂ƃ\tgEFAm}XJ
u݂Dn[hEFAm}XJuݒ̃Zbg
xNg̐ݒ肪\łD
  CPUOxN^͊݃nhƓlɐݒʒuɐÓIɔzuD
CPUOnhɊւĂ݃nhƓl m16cvec.exe pāA
CPUOxN^`Iɐ邱ƂłD̃f[^͊
nhƓlm16cvec.incɐݒ肳D

@DEF_EXC Ŏw肷CPUOnhԍiexcnoj́CM32Cł̃\tgEGA
ݔԍ\C̃f[^^iEXCNOj char^ɒ`ĂD

2.4  X^[gAbvW[

  m32cˑ̃X^[gAbvW[ (start.a30) ͎Ɏs
AJ[l (kernel_start) NDA kernel_start 
߂Ă邱Ƃ͑z肵ĂȂD

(1) X^bN|C^̐ݒ

(2) CPU֘Ȁݒ

vZbT[h̐ݒƃNbN̐ݒsD

(3) hardware_init_hook ̌ďo(s)

@M32CAZuł́Ahardware_init_hook ̔肪łȂƂƁA
M32C̃n[hEFAݒ肪Asys_initialize()֐ōsĂ
\ɑΉłƍl邱ƂΉĂȂ.

(4) bssZNV dataZNV̏

bssZNV[NAD܂CdataZNVD

(5) software_init_hook ̌ďo

@software_init_hook 0łȂ΁Asoftware_init_hook ďoDsoftware
_init_hook ̓J[lNOɁA\tgEFA (Cu) ˑ
s߂ɗpӂĂD
@software_init_hook̒`cpu_config.c0̐ݒŉɍsĂD
Osoftware_init_hook`ꍇ́A\zɂbRpC̒`Ƃ
EXTERNAL_SOFT_HOOK`΁A̐ݒ̓RpCꂸO̐ݒ肪
\ƂȂDႦ΁ACȕݒȂǂsꍇ͊O
ݒ肪\ƂȂD

(6) J[l̋N

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

2.5  ݔ̃X^bNgpʂɂ

  J[lNAyсAݔ̓^XNp̃X^bNƂ͕ʂ́A
ݐp̃X^bNw肵ĂD̃X^bNRAMEND`Ŏw肳
RAM̈̍ŏIʒufNgĎgpD̂߁A
VXeݒ莞ɂ̗͂̈mۂȂ΂ȂȂD
  ݃lXgx 0Ŋ݂ƁA^XNReLXgpX^b
NɃWX^ۑAݗpX^bNɐ؂ւ邽߁A^XNR
eLXgpX^bNgpʂ eWX^AtOAPC30oCgłD
݃lXgx 1ȏ̃nh ł́A݃X^bNɏԂ̕ۑs
(݂30oCg)DȊOɁA݃[`ŎgpX^
bNTCYZD

3.  VXeˑ̋@\

3.1  VXeNbNhCo

  VXeNbNhCoisig_timĂяóCsys_defs.h
TIC_NUMETIC_DENOŒ`ĂiW 1~bjD̒`
X邱ƂŁCisig_timĂяoύX邱ƂłDC^
C}̐x1ʕbł邽߁C1ʕbPʂŒ[ɂȂlݒ肵ꍇɂ́C
isig_tim̌ďoɌ덷邱ƂɂȂD

3.2  \]pVXeQƋ@\

  M32Cł́A\]pVXeQƋ@\ (vxget_tim) T|[gĂD
OAKS16ł͐x 0.0333[us]łDSYSUTIM^ UW ^ (32 rbgȂ
^) łD

3.3  VAC^tF[XhCo

  OAKS32łUART0UART1̂Q̃VA|[g{[hɎĂD
VAC^tF[XhCołUART0݂̂ɑΉAOo͗pɎgpĂD
UART1  fobK KD3083 ŃzXgPCƂ̒ʐMp|[gƂĎgp邱Ƃ
z肵Ă邽߁Â܂܂ł̓hCoŎgpłȂ.

3.4  }bv

3.4.1  OAKS32̃}bv

(1)  s

     0x000000 - 0x0003ff  SFR̈
     0x000400 - 0x0077ff   RAMAdata_NEAdata_NOAbss_NEAbss_NO
     0x007800 - 0x007fff   RAMAfobOj^pRAM̈ij^gpj

     0xf80000 - 0x0ffdff   ROMAprogramArom_FEArom_FOAdata_NEIAdata_NOI
     0xffbd00 - 0xffbdff   ROMAn[hA\tg݃xN^̈ (vvector)
     0xffbe00 - 0xfffdff   ROMAfobOj^vÖ恦
     0xfffe00 - 0xffffdb   ROMAXyVy[WxN^e[ü
     0xffffdc - 0xffffff   ROMAn[hCPUOxN^̈(fvector)

       fobKKD3083gpȂꍇ͒ʏ̃ƂĎgp\

4.  J

4.1  J

  J́AWindows 2000Windows XPpD\z͈ȉ̂Q̕@
D

(1) lTXeNmWА̓JTM̂܂܎gpD
iOAKS32-FullKitɂĂj

     ΏہFOAKS32{[h
     FlTXeNmWЂ̓JTMpč\z
           J[lCu\z
     ̑FRpCNC308WA
			   mF Version3.10 Release2Gg[ł
			   Version5.10 Release1iłōsȂ

(2) DOSmakeR}hpĊJs
     ΏہFOAKS32{[h
     FDOSmakegč\z
           J[lCu@ƂȂ@̗ɑΉ
     ̑FRpCNC308WA
			     Version3.10 Release2 Gg[ł
			     Version5.10 Release1 iłœmF
             GNU make (version 3.77 œmF)
             Perl (mF Active Perl v5.6.1)

@܂AJ[l\zɂẮARtBM[^
gp邽 cfg fBNgcfg.exe \zĂKvD

4.2  JTMp\z

  m32cpTOPPERS/JSP\zɂ́AlTXeNmWА̊J
gpD( OAKS32tLbgYtCD-ROMɂi[Ăj
c[KvɉăCXg[ĂD
          J TM
          RpC NC308WA

\z@͈ȉ̎菇ɏ]čsD

4.2.1 xN^`t@Cc[(m16cvec.exe)̍\z

utils/m16c-renesas ̃c[ m16cvec.exe \z(m32c^[Qbgł
m16coffset.exe͎gpȂ). utils/m16c-renesas/  
Microsoft Visual C++ vWFNgt@C(m16cutils.dsw)JD
 m16cvec.exe 𐶐. j[uvWFNgv
uANeBuvWFNg̐ݒvum16cvecvIA
rhj[rhID
st@Cutils/m16c-renesas/m16cvec.exeƂč쐬Ă.

4.2.2 TM ŃvWFNgIrhD

 rhΏۂ̃\[XR[hĂhCuƁARpCȂǂ̊Jc[
CXg[ĂhCu͓hCuǂmF.
ł΃rho邱ƂmFĂ. قȂꍇ̓rh
mFoĂȂ߁A񐄏̕@Ƃ.

@TM vWFNgJDWindowsj[ TM ND
NuOpen Projectvj[JAtools/M32C-RENESASfBNg
 Jsp14sample1.tmk IDIARpC̈Ⴂɂݒ胁j[
\ꍇD̏ꍇ݂͌̊ɏ]Đݒ肷D̊́A
CRpC NC308WA Version 3.10  Version 5.10 ŕ]sD
ݒAurhvj[IrhsiTM̐ݒƂ
\[Xt@C̈ˑ̐ݒsĂȂ̂ŁA\źurhv
s悤ɂĂjD
@rhIƁÃfBNgJsp14sample1.x30
Jsp14sample1.motD


4.3 DOSmakeR}hp\z

@TM ̑ɒ GNU make pm32cp TOPPERS/JSPJ[l\z
@D̕@őΉĂ{[h OAKS32 łDRpC
NC308WA Gg[łѐiłǂłgp\ł. ]ŃRpC
NC308WA Version 3.10 AiŃRpC NC308WA Version 5.10 œ
mFĂ.

@\zɂẮARtBM[^ cfg.exe  cfg fBNgɁA
m16coffset.exe  utils/m16c-renesas fBNgɁAꂼ
݂Ă邱ƂOƂȂ܂B܂ANC308WA, KD3083 
炩߃CXg[ĂĂB

\z@͈ȉ̒ʂD

4.3.1 Jc[̓

c[͈ȉ̃TCgł܂D

GNU Make 
http://www.mingw.org/

Active Perl
http://www.activestate.com/

4.3.2 TvvO̍\z

 TvvO̍\z@͊{I doc/user.txt  u7.4 Tvv
O̍\zvŎꂽ@ɏĂ܂DARtBM[V
XNvg perl ŏꂽXNvg͂̂܂ Windows  DOS
iWindows2000ł́uR}hXNvgvj̏ł͎gp邱Ƃ
ł܂B̂߁Autils/m16c-renesas fBNgɗpӂꂽp Perl
XNvggp܂B

4.3.3 RtBM[VXNvg̎s

   > mkdir foo
   > cd foo
   > perl ..\utils\m16c-renesas\configure.m16c -C m32c -S oaks32 -T renesas -D ..

-D IvV̓fBNg̈ʒuɂKɏCĂ. 
foo fBNg JSPJ[l̃gbvfBNg̉ɂꍇ̗ł.

̏ɂAJgfBNgɂ MakefileCTvvOp
RtBM[Vt@Cisample1.cfgjCTvvO{
isample1.hsample1.cj܂DMakefilȅCKvȂ
Cŝ͑̃^[Qbg̏ꍇƓłD

4.3.4 Makefile ̏C

(A) AhX̐ݒ

RAMEND ͊݃X^bN|C^̏lARAM_START_ADR SFR
RAM̐擪ԒnAROM_START_ADR  ROM̐擪Ԓnꂼꎦ.

(B) c[̃CXg[fBNg

NC308WA RpCc[̃CXg[ĂfBNg
TOOLDIR ɐݒ肷.

(C) KD3083gp邩
gpꍇKD3083̒l1ɁAgpȂꍇ0ɐݒ肷

(D) CuA LB308gǂ

Gg[ŃRpCȂǁAJ[lCu̍\zsȂȂꍇ
USE_LB308 = TRUE
̍sRgAEg

(E) JSPJ[l\[X̃gbvfBNg̈ʒu

@ ʏ configure XNvgŐݒ肳邪AJSPJ[l\[X
fBNg̈ʒuύXꍇ SRCDIR ̒lύX.

(F) ^[Qbgt@C̒`

[hsvǑ`w肷DIEEE-695`̂Ƃ
$(OBJNAME).x30Ag[ S`̎ $(OBJNAME).mot w肷D

(G) ̑

@ȉ̍ڂɂẮAdoc/user.txt ̓eɏĂ̂
QƂ̂.
	EJ[lCũfBNg̒`
	EʃRpCIvV̒`
	EAvP[VvOɊւ`
	EIuWFNgt@C̒`
	EJ[l̃RtBM[Vt@C̐

4.3.5 ˑ֌Wt@C̐уTv̎svO쐬

ˑ֌Wt@C Makefile.depend юsvO jsp.x30  jsp.mot 
쐬ɂ͎̂悤ɎsD

   > make depend
   > make

ŎsvO(jsp.x30,jsp.mot)JgfBNgɐ.

4.4 svO̓]

{[hŎsmF邽߂̕@ƂĂ2ʂ̕@D

a. MOTt@CFlashSta vOpāA{[h̃tbVROMɏ
b. fobKKD3083pă[hAs
	OAKS32ɂ́AfobKKD3083YtĂD̃fobJ̓tbVROM
	j^vOUART1pĒʐMsfobN@\D
	{J[lKD3083gpăJ[l̃[hAssƂoD
	gpɓĂ͈ꕔDڍׂɂĂKD3083̃}jA
	QƂ̂ƁD

4.4.1 FlashStapătbVROMɏޕ@

EJp̃p\ROAKS32{[hƂARS-232CP[ugĐڑD
  OAKS32{[hUART1|[gɐڑD
ECNVSSsWp[sgăV[gD
EdڑAdXCb`IɂD

EFlashStaND
ESelect Programj[ɂă|[gIāuOKv{^D
EID Checkj[\ꂽuRefer..v{^AMOTt@CID
ESelect Programɖ߂AuOKv{^Flash Startj[\D

EuErasev{^AtbVROMNAD
EuProgram..v{^vȌ݂sD
E݂IAuExitv{^FlashStaID
E{[h̓d؂ACNVSSsWp[s͂D

4.4.2 KD3083gpă[hAs@

E̕@sꍇ́A炩KD3083 p̃j^vO
 ROM ɏ܂Ă邩ǂmF. ܂ĂȂꍇ
j^vOL4.2.3 FlashSta gpďޕKv.

EJp̃p\ROAKS32{[hƂARS-232CP[ugĐڑD
  OAKS32{[hUART1|[gɐڑD
EdڑAdXCb`IɂD

EKD3083ND
EInitʂŐڑPC̃|[gƒʐMxݒ肵AuOKvD
Ej[uFileDownloadLoad ModulevIA.x30t@CID
  ƁA[hW[CPU{[hɓ]D
  Ƃ́uGov{^ΎsJnD

4.4.3 sample1̎sɕKvPC̃VAݒ

p\RɃVAE^[~i𗧂グĂD
ݒ͈ȉ̒ʂłD
Baud rate:38400
Data:8 bit
Parity:none
Stop:1 bit
Flow controlXon/XoffɂĂ.

5.  t@C\

5.1  fBNgEt@C\

(1)   config/m32c-renesas

      api.h            CuȂɎgpAAPI`
      cpu_config.c     M32CvZbTˑ C ֐
      cpu_config.h     M32CvZbTˑ̍\`
      cpu_context.h    M32CvZbTˑ̃ReLXg
      cpu_defs.h       M32CvZbTˑ̃AvP[Vp`
      cpu_insn.h       M32CvZbT̃AZu inline ֐
      cpu_rename.def   J[l̓ʖ̃l[Ƃ̉̒`Xg
      cpu_rename.h     J[l̓ʖ̃l[̒`
      cpu_support.a30  M32CvZbT̃AZu֐
      cpu_unrename.h   J[l̓ʖ̃l[̒`
      makeoffset.c     offset.inc T|[g֐
      offset.inc       TCBoւ̃ItZbg`t@C
      start.a30        X^[gAbvW[
      tool_config.h    M32CvZbT̊JˑW[`
      tool_defs.h      M32CvZbT̊Jˑ`

(2)   config/m32c-renesas/oak32/

      hw_serial.cfg    SCI ̃RtBM[Vt@C
      hw_serial.h      SCI ̃wb_t@C
      hw_timer.h       OAKS32p^C}샋[`
      Makefile.kernel  J[l̃t@C\̒`(M32Cp)
                       makeR}hpm32cpTOPPERS/JSPJ[l\zŎgp
      oaks32.h         vZbT̒`
      sfr_uart.c       OAKS32pSIOhCoC֐
      sfr_uart.h       OAKS32pSIOhCõwb_t@C
      sys_config.c     OAKS32{[hˑ C ֐
      sys_config.h     OAKS32{[hˑ̍\`
      sys_defs.h       OAKS32{[hˑ̃AvP[Vp`
      sys_rename.def   J[l̓ʖ̃l[Ƃ̉̒`Xg
      sys_rename.h     J[l̓ʖ̃l[̒`
      sys_unrename.h   J[l̓ʖ̃l[̒`

(3)   tools/M32C-RENESAS/
                       JTMpTOPPERS/JSP\z邽߂
                       vWFNgt@CuꂽfBNg
      Jsp14sample1.tmi,Jsp14sample.tmk
                       TMpOAKS32pTOPPERS/JSP\z邽߂̃vWFNgt@C
      sample1.cfg      OAKS32pTOPPERS/JSP\z邽߂̃RtBM[Vt@C

(4)   sample/

      Makefile.m32c-oaks32	GNU make R}hgpTOPPERS/JSPJ[l\z
                            邽߂ Makefile
