                TOPPERS/JSPJ[l [UY}jA 
                            iH8 ^[Qbgˑj
   
               iRelease 1.4.3ΉCŏIXV: 08-Mar-2007j
   
   ------------------------------------------------------------------- 
    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-2007 by Industrial Technology Institute,
                                Miyagi Prefectural Government, JAPAN
    Copyright (C) 2001-2004 by Dep. of Computer Science and Engineering
                     Tomakomai National College of Technology, JAPAN
    Copyright (C) 2001-2004 by Kunihiko Ohnaka
    Copyright (C) 2004 by Katsuhiro Amano
   
    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: h8.txt,v 1.1 2008/06/17 00:04:40 suikan Exp $

   ---------------------------------------------------------------------

1.  H8 ^[Qbgˑ̊Tv

ӓ_FRelease1.4.1܂ł̃o[Wg̕
@Enɂ
@@@Hdqʏ{[htGNUJ̓o[WÂ߁A
@@@T|[gĂȂBiu4. 1  J̍\zvQƁj
@Ë݂ɂ
@@@Release1.4.2犄݂̈啝ɕύXĂ邽߁Ao[
@@@Wgṕ̕u2. 2. 2  ݃nh̓o^vQƂ
@@@B

1. 1  ^[QbgVXeƊJ

  H8 vZbT̃^[QbgVXéAH8/3052FA H8/3069F𓋍ڂ
ȉ̃{[hłB

   E() Hdqʏ AKI-H8/3052F (AKI-H8-USB {[gɑ)
   E() Hdqʏ AKI-H8/3069F

ȉ̃{[h͎QlłAmF͍sĂȂB
   E() Hdqʏ AKI-H8/3048F
   E(L) iʐMvT[rX NKEV-010H8(H8/3069Fgp)

ȂAȂ^XN 1 ̍ŏ\łAH8/3069FȊOł͕KvRAMe
ʂvZbT̓RAM eʂ̂𒴂B̂ߊO RAM ݂̑Kv
ŁAOAhXԂLɂKvB݂̍\ł́AH8/3048F 
[h 5 ̓ ROMLg 1M oCg[hA H8/3052F [h 6 
 ROM Lg 16MoCg[hA H8/3069F [h 5 ̓ROML
g 16M oCg[hz肵ĂB
  J́A Windows 2000 cygwin ̊JpB܂Af
obO[hƃ[X[hŃW[̎s@قȂĂBf
obO[hł ()HdCʏj^fobJ (ȉAHj^)A
܂͓ϏqwȐȈՃj^ (ȉA ȈՃj^)A H8 ̓
tbV ROM ɏ݁AfobO郂W[O RAM Ƀ[h
ăfobOsB[X[hł́AfobȌIW[
tbV ROM ɏނƂz肵ĂB fobO[hƃ[
X[h̐؂ւ́A fBNg jsp/config/h8/$(SYS) ɂ 
Makefile.config DBGENV ̒`ɂB
i$(SYS)ɂ̓{[hBj
@܂AQlƂeCos/RedBoot vWFNgfobJ(ȉARedBoot)
ɑΉĂ邪A@eXg͍sĂȂBڂ͖̕t^QƁB

  NKEV-010H8GDB STUBɂ郊[gfobOz肵ĂBӎ
ڂ͖̕t^QƁB

l
@AKI-H8/3052F́AAKI-H8-USB{[gUSBRlN^d邱
łBʏDCdRlN^dꍇ́AdRlN^
͂ɒRǉKvB
@AKI-H8/3069F́AbgƂȍ~ł͊ORAM̌^ԂقȂĂB
܂Abgł͊ORAMŔct悤ɂȂĂ̂ŁA
ǂɊŶ̓{[h̕t}jAQƂ̂ƁB

@@Ql
@@@@u(toppers-users 1375) akih8_3069f  ˑ̏Cɂāv
@@@@
1. 2  T|[g@\̊Tv

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

1. 3  ̃^[Qbgւ̃|[eBO

  H8/300H V[Ył΁A|[eBO͗eՂɏoƎvB

1. 4  VA|[g (SCI)

  H8/3048F  H8/3052F ɂ SCI0  SCI1  2 {AH8/3069F ɂ SCI0 
 SCI2  3 {̃VA|[gAsys_config.h ɒ`Ă 
TNUM_PORT ɂ艽{gp邩włB
݂̎ł 3{܂ŎgpłB JSP J[l̃Oo͗pɂ SCI1
gpĂB VA|[g̐ݒȉɎB 

   E{[CgF38400[bps]
   Ef[^F8 rbg
   EXgbvrbgF1 rbg
   EpeBȂ
   Et[FXon/Xoff

1. 4. 1  |[gԍ̊蓖Ăɂ

|[gIDԍi}Nj@@foCXԍ@@@@pr
@PiSYSTEM_PORTIDj@@@@@@SCI1@@@@VXeOo͗p
@QiUSER_PORTIDj@@@@@@@SCI0@@@@[U[AvP[V
@RiUSER2_PORTIDj@@@@@@ SCI2@@@@[U[AvP[V

@|[gID̃JX^}CYɂẮAuJX^}CY@v̐߂Q

2.  H8 vZbTˑ̋@\

  J[lƃVXeT[rX@\̒ŁA H8 ˑ̕ɂĉB 

2. 1  f[^^

  int ^ unsigned int ^̃TCY 32 rbgłB܂A64rbg
łD^UD^gpł邩ۂ͏nŒ`Ă}N
__LONG_LONG_MAX__̒lŔʂĂB
gcc-2.95.3ł̓RpC̐ŁA64rbg͈ȂB

2. 2  ݊Ǘ@\Ɗ݃nh

J[lǗO݂̊NMÎ݂łDāCCPUbNԂ⏉
[`ł́CNMIȊOׂ݂̊͂ċ֎~ĂD̓Iɂ́ACPU
bNԂłCCRWX^IrbgUIrbgZbgAɃJ[l
̃tOϐZbgĂB

@@CPUbNԂ\tOϐFBOOL iscpulocked
@@@@TRUE FCPUbN
@@@@FALSEFCPUbN

@{łSYSCRWX^UErbgNAACCRWX^Irbg
UIrbg݃}XNiIPMFInterrupt Priority MaskjƂĎgpĂ
Bix0ƃx1݂̊gpłBj

DEF_INHŎw肷銄݃nhԍiinhnoj́CH8ł̗OxN^ԍ
\C̃f[^^iINHNOjunsigned int^ɒ`ĂD
DEF_INHŁCOxN^ԍƂėLłȂlCO݂ɑΉȂ
ԍw肵ꍇ͕̓ۏ؂ȂD
H8 ̊݃xN^ ROM ̈ɂA IɓeύX邽߂ɂ͓
̕@Kvł邽߁AIȃnh̓o^@\͂ȂB
]āA ݃nh̐ݒ֐ define_inh( )͉Ȃ֐łB

2. 2. 1  ݔ̃X^bNgpʂɂ

  ݃lXgx0i܂A^XNReLXgsjŊ݂
ƁA ^XNReLXgpX^bNɃWX^ꕔۑA
ݗpX^bNɐ؂ւ邽߁AeX^bN̎gpʂ
  E^XNReLXgpX^bNF@PC+CCRAER0`4@@v24oCg
  E^XNReLXgpX^bNFER5`6ASP@@@@v12oCg
ƂȂB
d݂ꍇׂ͂Ĕ^XNReLXgpX^bNɑޔ
邽߁AX^bNgpʂ
  E^XNReLXgpX^bNFPC+CCRAER0`6@@v32oCg
łB
݃lXg͍őQł̂ŁAŜ̃X^bNgpʂ͈ȉ̂悤ɂ
Bi݃nhgɂX^bNBj

@^XNReXgpX^bNF@24oCg
@^XNReXgpX^bNF
   @12oCgiij{32oCgi2iځj44oCg

܂Ȁ݂oŃ^XNXCb`ꍇ́Ac̃WX^ER5`6
^XNReXgpX^bNɑޔ邽߁Aƍ킹ă^XN
ReXgpX^bN32oCggpB


2. 2. 2  ݃nh̓o^

@gccpH8ˑł́A݃nho^ہARtBM[V
Et@CɐÓIAPI DEF_INH( )Lqł͕s\łBo^
菇ȉɏqׂB****͓o^銄݃nhCꃋ[`
B

݃nh̓o^@ύXĂB
ŁiRelease1.4.1j̕ύX_͈ȉ̒ʂB
@1D݃xN^e[u̎
@@@EDEF_INH()̈犄݃xN^e[u悤
@@@@BɂA[U[ƂŕҏWKvȂȂB

@2DݗDxT|[g
@@@E݃vCIeBEx0
@@@E݃vCIeBEx1
@
@3D݃vCIeBx̐ݒ2ōsB
@@@(1) ݗvpvCIeBEx
@@@@@@foCX݃Rg[ɗv銄݃x
@@@@@@IPRAAIPRBWX^̐ݒ菈sys_support.SefoCX
@@@@@@hCȍɈړ
@@@(2) ݋pvCIeBEx
@@@@@@݃nhĂяoɊ݃}XNɐݒ肷l
@
@4Dsys_support.SōsĂȉ̋Lq͕svɂȂB
@@i݃xs߁j
@@@En[hEFA݋@_****_enable_int
@@@En[hEFA݋֎~@_****_disable_int

@@@@@łł́AݗvNA鏈Kvȏꍇ́Ȁ
@@@@@_****_disable_intɋLqĂAVłł͊݃nh
@@@@@Cꃋ[`܂͂Ă΂֐ɋLq@
@@@@@WƂB


݃nho^Ǝ菇
@^C}݂ɐB
@i{[hˑ̃pX͓KXǂݑւ邱Ɓj

@(1) ݃nh̋Lq

@@@łł́AݗvNA鏈Kvȏꍇ
@@@_xxxxx_disable_intɋLqĂAVłł͊݃nhC
@@@ꃋ[`A܂͂Ă΂֐ɋLq@W
@@@B

@@@^C}݂ł̋LqF
@@@@jsp/systask/timer.c
@@@  @ timer_handler( )Ăяohw_timer_int_clear( )
@@@@@@ijsp/config/h8/hw_timer.hj


@(2) RtBM[VEt@C̋Lq

@@@RtBM[VEt@C̋Lq@͑̃vZbTƓl
@@@łB
@@@xN^ԍjsp/config/h8/h8_3069f.hŃ}N`ĂB
@@@DEF_INH( )̑1̊݃nhԍ̓vvZXɐ萔
@@@ɂȂĂȂ΂ȂȂBitΉlp[^j
@@@xN^e[u肵ĂB

@@@^C}݂ł̋LqF
@@@@jsp/systask/timer.cfg
  @@@@DEF_INH(INHNO_TIMER, { TA_HLNG, timer_handler });


@(3) ݃vCIeBx̐ݒ

@@@IPRA,IPRBɐݒ肷銄ݗṽvCIeBxƁA
@@@nhĂяoɊ݃}XNɐݒ肷vCIeBx
@@@̂Qݗvɐݒ肷B

@(3)-1 ݗvpvCIeBx̐ݒ

@@@cpu_initialize( )łׂĂ݂̊x0ɏ
@@@ĂB
@@@foCXhCȍŊݗṽvCIeBEx
@@@ݒ肷邽߂̊֐pӂĂB
@@@@
@@@yCAPIz
@@@@@void define_int_plevel(const IRC *irc);

@@@@@@IRCFInterrupt Request Controller
@@@@@@@@@݃Rg[

@@@yp[^z
@@@@@const IRC *irc@ݒf[^i[̈̐擪AhX
   @@@@@UB *iprFݒ肷IPRWX^̔Ԓn
   @@@@@@@@@@IPRA܂IPRBWX^
   @@@@@UB bit FIPRWX^̊Yrbgԍ
@@@   @@IPM ipmFݒ肷銄݃x
   @@@@@@@@@@IPM_LEVEL0,IPM_LEVEL1̂ꂩ

@@@y^[p[^z
@@@@@Ȃ

@@@y@\z
@@@@@ircẅ̃f[^pāAfoCX݂̊
@@@@@vCIeBExݒ肷B
@@@@@̊֐ĂяoOh8_sil.hCN[hKvB

@@@y^C}݂ł̋Lqz

@@@@@jsp/config/h8/cpu_config.c
@@@@@@const IRC TIMER_IRC = {(UB*)SYSTEM_TIMER_IPR,
                        @@@@@@SYSTEM_TIMER_IP_BIT,
                        @@@@@@SYSTEM_TIMER_IPM
                      @@@@@@};

@@@@@jsp/config/h8/hw_timer.h
@@@@@@hw_timer_initialize( )
@@@@@    define_int_plevel(&TIMER_IRC);

@@@ݒɗpl̓}N`ĂB
@@@
@@@EIPRAAIPRBWX^̃AhX
@@@jsp/config/h8/h8_3069f.h
@@@#define H8IPRA			0xfee018
@@@#define H8IPRB			0xfee019


@@@EIPRAAIPRBWX^̃rbgԍ
@@@jsp/config/h8/h8_3069f.h
@@@EIPRA
@@@#define H8IPR_IRQ0_BIT		7	/* IRQ0			*/
@@@#define H8IPR_IRQ1_BIT		6	/* IRQ1			*/
@@@#define H8IPR_IRQ2_BIT		5	/* IRQ2			*/
@@@#define H8IPR_IRQ3_BIT		5	/* IRQ3			*/
@@@#define H8IPR_IRQ4_BIT		4	/* IRQ4			*/
@@@#define H8IPR_IRQ5_BIT		4	/* IRQ5			*/
@@@#define H8IPR_WDT_BIT		3	/* WDT			*/
@@@#define H8IPR_AD_BIT		3	/* A/D			*/
@@@#define H8IPR_CMI_BIT		3	/* CMI			*/
@@@#define H8IPR_ITU0_BIT		2	/* 16 bit timer 0	*/
@@@#define H8IPR_ITU1_BIT		1	/* 16 bit timer 1	*/
@@@#define H8IPR_ITU2_BIT		0	/* 16 bit timer 2	*/

@@@EIPRB
@@@#define H8IPR_TU80_BIT		7	/* 8 bit timer 0	*/
@@@#define H8IPR_TU81_BIT		6	/* 8 bit timer 1	*/
@@@#define H8IPR_DMAC_BIT		5	/* DMAC (CH0,1)		*/
@@@#define H8IPR_SCI0_BIT		3	/* SCI0			*/
@@@#define H8IPR_SCI1_BIT		2	/* SCI1			*/
@@@#define H8IPR_SCI2_BIT		1	/* SCI2			*/


(3)-2 ݋pvCIeBx̐ݒ

@@E****_intmask}N̒`
@@@H8ˑł́AÓIAPI DEF_INH( )Ŋ݃nh`ƁA
@@@J[lRtBM[VɂA݂̓
@@@B
@@@̓ł́ACꃋ[`****ĂяoO̊݋
@@@Ɋ݃}XNɐݒ肷lƂāA}N****_intmask`
@@@Ɖ肵Ă̂ŁAݗvIPM_LEVEL1AIPM_LEVEL2̂
@@@ꂩɒ`邱ƁB
@@@Ɠx݂̊}XN邽߁AIPMɂ͂P̃x
@@@ݒ肷Kv̂ŁAӂ邱ƁB
@@@cpu_config.hAsys_config.h܂͂炩CN[ht@
@@@CŒ`̂WƂB

@@@y^C}݂ł̋Lqz
@@@@jsp/config/h8/akih8_3069f/sys_config.h
@@@
@@@@#if SYSTEM_TIMER_IPM == IPM_LEVEL0
@@@@#define timer_handler_intmask		IPM_LEVEL1
@@@@#elif SYSTEM_TIMER_IPM == IPM_LEVEL1
@@@@#define timer_handler_intmask		IPM_LEVEL2
@@@@#endif 	/* SYSTEM_TIMER_IPM == IPM_LEVEL0 */


2. 2. 3@݃}XN̕ύXEQ

H8ˑ̋@\ƂāCCCRWX^IPM̒lύX邽߂̃T[rXR[
chg_ipmƁCQƂ邽߂̃T[rXR[get_ipmT|[gĂD
ȂCIPM̒l\f[^^IPḾCunsigned char^ɒ`ĂD

̃T[rXR[́C^XNReLXgCPUbNԂ̏ꍇ
ɂ̂݌ĂяoƂłDchg_ipmɂIPMx0ȊOiȂ킿C
炩݂̊֎~ĂԁjɂꍇłCfBXpb`͋֎~
ꂸCchg_ipmɂύXIPM̒ĺCfBXpb`̃^XNɈp
D
Ⴆ΁C^XNIPMx1ɕύXC炩݂̊ɂʂ
^XNɐ؂ւƁC؂ւ̃^XNłIPM̓x1ɂȂD

chg_ipmT|[g邽߂ɁC݃nh̏oȂǂɃI[o
wbh𐶂ĂDŁCSUPPORT_CHG_IPMƂ}NɂC
̃T[rXR[T|[g邩ǂ؂ւ悤ɂĂD
SUPPORT_CHG_IPḾCsys_config.hŃ}N`ĂD

H8ˑ̊݃}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[iipm sj

y@\z

IPMiInterrupt Priority Maskj ipm Ŏw肳ꂽlɐݒ肷D
IPMŗplƂāAȉ̃}NpӂĂB
@IPM_LEVEL0FxO@ׂĂ݂̊󂯕t
@IPM_LEVEL1FxP@NMIуvCIeBxP݂݂̊̂
@@@@@@@@@@@@󂯕t
@IPM_LEVEL2FxQ@NMIȊO݂̊󂯕tȂ


IPMɎw肵lL̃}NȊȌꍇCE_PARG[ƂȂDIPM 
IPM_LEVEL0ȊOɐݒ肵ꍇłCfBXpb`͋֎~ȂD܂C
肵IPM̒ĺCfBXpb`pDfBXpb`֎~
ꍇɂ́Cdis_dspƕp΂悢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

݂ IPMiInterrupt Priority Maskj̒lǂݏoCipm ɕԂD

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

2. 4  CPUOǗ@\CPUOnh

  H8ł́ivZbT̂jCPUOĂȂA@Ƃ̌݊
̂߁ACPUOnhԍ̃f[^^(EXCNO)CPUOnh̐ݒ
define_exc( )`ĂB


2. 5  X^[gAbvW[

  H8 ˑ̃X^[gAbvW[ (start.S) ͎Ɏs
AJ[l (kernel_start) NBA kernel_start ߂
Ă邱Ƃ͑z肵ĂȂB

   (1)   X^bN|C^̐ݒ

   (2)   hardware_init_hook ̌ďo
           hardware_init_hook  0 łȂ΁Ahardware_init_hook 
         oBhardware_init_hook ̓J[lNOɁA^[Qbg
         ˑ̃n[hEFAIȏs߂ɗpӂĂB {
         ł́ASYSCR WX^ UE rbg̃NAA ݗD惌WX
         ^ (IPRA  IPRB) ̌ʊ荞݂̗Dx̐ݒA O
         Ԃ̗LsĂBhardware_init_hook `̏ꍇA
         JXNvg̋Lqɂ肱̃V{ 0 ɒ`B 

   (3)   bss ZNV̏
           bss ZNV̑S̈ 0 NAB

   (4)   data ZNV̏
           data ZNVO RAM ɓ]B

   (5)   software_init_hook ̌ďo
           software_init_hook  0 łȂ΁Asoftware_init_hook 
         oBsoftware_init_hook ̓J[lNOɁA\tgEF
         A (Cu) ˑ̏s߂ɗpӂĂB
         Ⴆ΁ACȕݒȂǂłBsoftware_init_hook 
         `̏ꍇAJXNvg̋Lqɂ肱̃V{ 0 
         `B


3.  VXeˑ̋@\

3. 1  VXeNbNhCo

  VXeNbNhCo isig_tim ďóA sys_defs.h 
TIC_NUME  TIC_DENO Œ`ĂAfBtHg 1[ms] łB
̒`ύX邱ƂŁAisig_tim ďoύXłB A
H8/3048F ̃NbN 16[MHz] ŁA ^C}̐x 0.5[us]AH8/3052F 
NbN 25[MHz] ŁA^C}̐x 0.32[us]AH8/3069F ̃NbN 
20[MHz] ŁA ^C}̐x 0.4[us] ̂߁APʂŒ[ɂȂl
ݒ肷ƁA isig_tim ̌ďoɌ덷B
  fBtHg̃NbNfBoCX H8/3048F  H8/3052F  ITU0A
H8/3069F  16 rbg^C}jbg 0 gpĂB

3. 2  \]pVXeQƋ@\

  H8 ł́A\]pVXeQƋ@\ (vxget_tim) T|[gĂ
Bx 0.5[us] ŁASYSUTIM ^__LONG_LONG_MAX__}N̒lɂA
n鐮͈̔͂𔻒肵A`@IĂB64rbg
gpłꍇ́A64rbgȂɁAłȂꍇ32rbg
ȂƂĒ`ĂB

3. 3  VAC^tF[XhCo

  H8/3048F  H8/3052F ɂ SCI0  SCI1  2 {AH8/3069F ɂ SCI0 
 SCI2  3 {̃VA|[gAsys_config.h ɒ`Ă 
TNUM_PORT ɂ艽{gp邩włB
݂̎ł 2 {܂ŎgpłB JSP J[l̃Oo͗pɂ SCI1
gpĂB

3. 4  }bv

3. 4. 1  H8/3048F ̃}bv

  OAhXԂLɂKv邽߁A[h 5 ̓ ROM L
g 1M oCg[hz肵ĂB

   (1)   fobO

         0x00000 - 0x1ffff   ROMAHj^
         0x20000 - 0x3ffff  O RAMA.textA.rodataA.dataA.bss
         0xfef10 - 0xfefff   RAMAHj^
         0xff000 - 0xff0ff   RAMAz݃xN^̈ (.vectors)
         0xff100 - 0xfff0f   RAMA^XNReLXgpX^bN
         0xfff1c - 0xfffff   I/O WX^

   (2)   [X

         0x00000 - 0x1ffff   ROMA.vectorsA.textA.rodata
         0x20000 - 0xfef0f  O RAMA.dataA.bss
         0xfef10 - 0xfff0f   RAMA^XNReLXgpX^bN
         0xfff1c - 0xfffff   I/O WX^

3. 4. 2  H8/3052F ̃}bv

  ł͕s邽߁A AKI-H8-USB {[hɑA
AKI-H8-USB {[hɂ 128K oCg RAM 𗘗pĂB̂߁AO
AhXԂLɂKvA[h 6 ̓ ROM Lg 16M
oCg[hz肵ĂB

   (1)   fobO

         0x000000 - 0x07ffff   ROMAȈՃj^
         0x220000 - 0x23ffff  O RAMA.textA.rodataA.dataA.bss
         0xffdf10 - 0xffdfff  O RAMAȈՃj^
         0xffe000 - 0xffe0ff   RAMAz݃xN^̈ (.vectors)
         0xffe100 - 0xffff0f   RAMA^XNReLXgpX^bN
         0xffff1c - 0xffffff   I/O WX^

   (2)   [X

         0x000000 - 0x05ffff   ROMA.vectorsA.textA.rodata
         0x220000 - 0x23ffff  O RAMA.dataA.bss
         0xffef10 - 0xffff0f   RAMA^XNReLXgpX^bN
         0xffff1c - 0xffffff   I/O WX^


3. 4. 3  H8/3069F ̃}bv

  OAhXԂLɂKv邽߁A[h 5 ̓ ROM L
g 16M oCg[hz肵ĂB

   (1)   fobO (ȈՃj^gp)

         0x000000 - 0x07ffff   ROMAȈՃj^
         0x400000 - 0x4fffff  O RAMA.textA.rodata
         0x500000 - 0x5fffff  O RAMA.dataA.bss
         0xee0000 - 0xee00ff   I/O WX^(1)
         0xffbf20 - 0xffbfff  O RAMAȈՃj^
         0xffc000 - 0xffc0ff   RAMAz݃xN^̈ (.vectors)
         0xffc100 - 0xffff1f   RAMA^XNReLXgpX^bN
         0xffff20 - 0xffffe9   I/O WX^(2)

   (2)   [XiORAMgpj

         0x000000 - 0x07ffff   ROMA.vectorsA.textA.rodata
         0x400000 - 0x5fffff  O RAMA.dataA.bss
         0xee0000 - 0xee00ff   I/O WX^(1)
         0xffbf20 - 0xffff1f   RAMA^XNReLXgpX^bN
         0xffff20 - 0xffffe9   I/O WX^(2)

   (3)   [XiORAMgpj

         0x000000 - 0x07ffff   ROMA.vectorsA.textA.rodata
         0xee0000 - 0xee00ff   I/O WX^(1)
         0xffbf20 - 0xffff1f   RAMA.dataA.bssA
         @@@@@@@@@@@@@@@@^XNReLXgpX^bN
         0xffff20 - 0xffffe9   I/O WX^(2)


3. 4. 4  H8/3069F(NKEV-010H8) ̃}bv

  OAhXԂLɂKv邽߁A[h 5 ̓ ROM L
g 16M oCg[hz肵ĂB

   (1)   fobO (ȈՃj^gp)

         0x000000 - 0x07ffff   ROMAȈՃj^
         0x400000 - 0x43ffff  O RAMA.textA.rodata
         0x440000 - 0x47ffff  O RAMA.dataA.bss
         0xee0000 - 0xee00ff   I/O WX^(1)
         0xffbf20 - 0xffbfff  O RAMAȈՃj^
         0xffc000 - 0xffc0ff   RAMAz݃xN^̈ (.vectors)
         0xffc100 - 0xffff1f   RAMA^XNReLXgpX^bN
         0xffff20 - 0xffffe9   I/O WX^(2)

   (2)   fobO (GDB STUBgp)

         0x000000 - 0x07ffff   ROMAGDB STUB
         0x400000 - 0x4000ff   RAMAz݃xN^̈ (.vectors)
         0x400100 - 0x43ffff  O RAMA.textA.rodata
         0x440000 - 0x47bfff  O RAMA.dataA.bss
         0x47c100 - 0x47ff1f  O RAMA^XNReLXgpX^bN
         0xee0000 - 0xee00ff   I/O WX^(1)
         0xffbf20 - 0xffbfff   RAMAGDB STUB
         0xffff20 - 0xffffe9   I/O WX^(2)

   (3)   [XiORAMgpj

         0x000000 - 0x07ffff   ROMA.vectorsA.textA.rodata
         0x400000 - 0x47ffff  O RAMA.dataA.bss
         0xee0000 - 0xee00ff   I/O WX^(1)
         0xffbf20 - 0xffff1f   RAMA^XNReLXgpX^bN
         0xffff20 - 0xffffe9   I/O WX^(2)

   (4)   [XiORAMgpj

         0x000000 - 0x07ffff   ROMA.vectorsA.textA.rodata
         0xee0000 - 0xee00ff   I/O WX^(1)
         0xffbf20 - 0xffff1f   RAMA.dataA.bssA
         @@@@@@@@@@@@@@@@^XNReLXgpX^bN
         0xffff20 - 0xffffe9   I/O WX^(2)


4.  J

4. 1  J̍\z

  J́A Windows 2000 cygwin ̊JpB{ɗp
o[WȉɎB 

   binutils-2.11.2
   gcc-2.95.3
   newlib-1.9.0

⏕IȈӖNKEV-010H8ɂĂ͈ȉ̃o[WłmFsB

@@binutiles-2.16.1
@@gcc-3.4.3
@@newlib-1.13.0

ӎP
@Hdqʏ{[htGNUJ̓o[WÂ߁AT|[
@gĂȂB

ӎQ
@gcc-3.2.3̓rgC֐__muldi3()̎ɕs邽߁A
@o[W̎gp͐ȂB

configure ̃IvV --target=h8300-hms łB ܂Abinutils 
configure ̃IvVɂ --disable-nls w肷邱ƁB
fobÔ߁AHj^AȈՃj^gp邱ƂłB
NKEV-010H8ł́AGDB stubp邱ƂłBڂ́u9. 3  NKEV-010H8
ł GDB STUB gsvQƁB
iRedBootɊւẮA̕t^QƁBj


4. 2  sample1.h ̐ݒ

  sample1.h Łu^[Qbgˑ̒`iCPU Onh̋N@Ȃǁjv
 H8 ˑŁATASK_PORTID  2A܂ SCI1 ݒ肵ĂBA
|[ggpꍇ́A ̒lύX邱ƁB

4. 3  ^[Qbgւ̃_E[hƎs

  ^[Qbgւ̃_E[hƎsɂ́AHj^A܂͊ȈՃj^
gp@ƒ H8 ̃tbV ROM ɏŎs@B

   (1)   H8/3052FAH8/3069FŊȈՃj^gp@ (fobO[h)
           ϏqwȐȈՃj^ mon3052.mot (H8/3052F p)A
           mon3068.mot(H8/3068FAH8/3069F p) A H8 ̓tbV
           ROM ɏށBȉɁAgp@B
         
         ȈՃj^̔zzURLF
         @  http://www.mit.pref.miyagi.jp/embedded/consortium/
         

         [1]   fBNg $(CPU)/$(SYS) ɂ

                  MakefileDBGENV := TNCT_MONITOR

               Lɂ make B
         [2]   [\tg烂j^R}h ld ͂B
         [3]   [\tg jsp.srec 𑗐MB
         [4]   [\tg烂j^R}h go ͂ƎsJn
               B

   (2)   H8/3048F ŏHj^gp@ (fobO[h)
           fBNg $(CPU)/$(SYS) ɂ

            MakefileDBGENV := TNCT_MONITOR

         Lɂ make B ɁAH8/3048F ̊O RAM ւ̃ANZ
         XLɂȂ΂ȂȂBRAM ̍\ɂقȂ邪A Ah
         XoX A0  A19 ƃf[^oX D8  D15 Lɂ
         ́AȉɎ|[g 0xff ށB

            Port   Address
            P1DDR  0xfffc0
            P2DDR  0xfffc1
            P3DDR  0xfffc4
            P5DDR  0xfffc8

         Ōɒ[\tggp jsp.srec  H8/3048F ɓ]A 
         sB

   (3)   tbV ROM ɏŎs@ 
   @@@([X[hFORAMgp)
           fBNg $(CPU)/$(SYS) ɂ Makefile.config ̃fB
         Ng $(CPU)/$(SYS) ɂ Makefile 

            DBGENV := ROM

         Lɂ make BɁAh8writẽtbV ROM 
         ݃vOŁA tbV ROM ɏށB

   (4)   H8/3069FœtbVROMɏ݁ARAMŎs
   @@@@ ([X[hFORAMgp)
           fBNg $(CPU)/$(SYS) ɂ Makefile.config ̃fB
         Ng $(CPU)/$(SYS) ɂ Makefile 

            DBGENV := INMEM_ONLY

         Lɂ make BɁAh8writẽtbV ROM 
         ݃vOŁA tbV ROM ɏށB

4. 4  H8/3048F ̊O RAM ̗L

  [X[hł́A sys_support.S  _hardware_init_hook ŁAAh
XoX A0  A19 ƃf[^oX D8  D15 LɂAJ[l
sB ȊOɃAhXoXƃf[^oXLɂꍇ́A
sys_config.h ̈ȉ̕KɕҏWB

   /*
    *  OAhXԐ
    */
   /*#define ENABLE_LOWER_DATA*/
   #define ENABLE_P8_CS        (H8P8DDR_CS0|H8P8DDR_CS1|\
                                H8P8DDR_CS2|H8P8DDR_CS3)
   /*#define ENABLE_PA_CS      (H8PADDR_CS4|H8PADDR_CS5|H8PADDR_CS6)*/
   /*#define ENABLE_PB_CS       H8PBDDR_CS7*/
   #define ENABLE_PA_A21_A23   (H8BRCR_A23E|H8BRCR_A22E|H8BRCR_A21E)

4. 5  H8/3052F ̊O RAM ̗L

  [X[hł́A sys_support.S  _hardware_init_hook ŁAAh
XoX A0  A23A f[^oX D8  D15A `bvZNg CS0 
CS3 LɂAJ[lsBȊOɃAhXoXƃf[^
oXLɂꍇ́Asys_config.h ̈ȉ̕KɕҏWB

   /*
    *  OAhXԐ
    */
   /*#define ENABLE_LOWER_DATA*/
   #define ENABLE_P8_CS        (H8P8DDR_CS0|H8P8DDR_CS1|\
                                H8P8DDR_CS2|H8P8DDR_CS3)
   /*#define ENABLE_PA_CS      (H8PADDR_CS4|H8PADDR_CS5|H8PADDR_CS6)*/
   /*#define ENABLE_PB_CS       H8PBDDR_CS7*/
   #define ENABLE_PA_A21_A23   (H8BRCR_A23E|H8BRCR_A22E|H8BRCR_A21E)

4. 6  H8/3069F ̊O RAM ̗L

  [X[hł́A sys_support.S  _hardware_init_hook ŁAAh
XoX A0  A23A f[^oX D8  D15A `bvZNg CS0 
CS3 LɂAJ[lsBȊOɃAhXoXƃf[^
oXLɂꍇ́Asys_config.h ̈ȉ̕KɕҏWB

   /*
    *  OAhXԐ
    */
   #define     ENABLE_P8_CS    (H8P8DDR_CS0|H8P8DDR_CS1|\
                                H8P8DDR_CS2|H8P8DDR_CS3)
   #if 0
   #define     ENABLE_LOWER_DATA
   #define     ENABLE_PB_CS    (H8PADDR_CS4|H8PADDR_CS5|\
                                H8PADDR_CS6|H8PBDDR_CS7)
   #endif      /* of #if 0 */

5.  t@C\

5. 1  fBNgEt@C\

   (1)   config/h8/

            Makefile.config  Makefile  H8 ˑ`
            cpu_config.c     H8 vZbTˑ C ֐
            cpu_config.h     H8 vZbTˑ̍\`
            cpu_context.h    H8 vZbTˑ̃ReLXg
            cpu_defs.h       H8 vZbTˑ̃AvP[Vp`
            cpu_insn.h       H8 vZbT̃AZu inline ֐
            cpu_support.S    H8 vZbT̃AZu֐
            cpu_rename.def   J[l̓ʖ̃l[Ƃ̉
            @@@@@@@@ `Xg
            cpu_rename.h     J[l̓ʖ̃l[̒`
            cpu_unrename.h   J[l̓ʖ̃l[̒`
            h8.h             H8/300H vZbT̋ʒ`
            h8_3048f.h       H8/3048F vZbT̒`
            h8_3052f.h       H8/3052F vZbT̒`
            h8_3069f.h       H8/3048F vZbT̒`
            h8_sil.c         SILH8vZbTg C֐
            h8_sil.h         SILH8vZbTg \`
            @@@@@@@@@iI/O|[gDDRANZX[`j
            hw_serial.c      SCI ̕ϐƊ֐
            hw_serial.cfg    SCI ̃RtBM[Vt@C
            hw_serial.h      SCI ̒`
            hw_timer.h       ITU ̒`
            start.S          X^[gAbvW[
            tool_config.h    H8 vZbT̊JˑW[`
            tool_defs.h      H8 vZbT̊Jˑ`
            vector_header.S  ݃xN^e[u̐擪
            makeoffset.c     offset.h T|[g֐

   (2)   config/h8/akih8_3048f/
           () Hdqʏ AKI-H8/3048F {[ḧˑ

            Makefile.config  Makefile  AKI-H8/3048F {[hˑ`
            debug.ld         fobOpJXNvg
            release.ld       [XpJXNvg
            sys_config.c     AKI-H8/3048F {[hˑ C ֐
            sys_config.h     AKI-H8/3048F {[hˑ̍\`
            sys_defs.h       AKI-H8/3048F {[hˑ̃AvP[V
            @@@@@@@@ p`
            sys_support.S    AKI-H8/3048F {[hˑ̃AZu֐
            sys_rename.def   J[l̓ʖ̃l[Ƃ̉
            @@@@@@@@ ̒`Xg
            sys_rename.h     J[l̓ʖ̃l[̒`
            sys_unrename.h   J[l̓ʖ̃l[̒`

   (3)   config/h8/akih8_3052f/
           () Hdqʏ AKI-H8/3052F {[ḧˑ

            Makefile.config  Makefile  AKI-H8/3052F {[hˑ`
            debug.ld         fobOpJXNvg
            release.ld       [XpJXNvg
            sys_config.c     AKI-H8/3052F {[hˑ C ֐
            sys_config.h     AKI-H8/3052F {[hˑ̍\`
            sys_defs.h       AKI-H8/3052F {[hˑ̃AvP[V
            @@@@@@@@ p`
            sys_support.S    AKI-H8/3052F {[hˑ̃AZu֐
            sys_rename.def   J[l̓ʖ̃l[Ƃ̉
            @@@@@@@@ ̒`Xg
            sys_rename.h     J[l̓ʖ̃l[̒`
            sys_unrename.h   J[l̓ʖ̃l[̒`

   (4)   config/h8/akih8_3069f/
           () Hdqʏ AKI-H8/3069F {[ḧˑ

            Makefile.config  Makefile  AKI-H8/3069F {[hˑ`
            debug.ld         fobO (ȈՃj^Ή) pJXNvg
            debug_redboot.ld fobO (RedBootΉ) pJXNvg
            release.ld       [XpJXNvgiORAMgpj
            release_inmem.ld [XpJXNvgiORAMgpj
            sys_config.c     AKI-H8/3069F {[hˑ C ֐
            sys_config.h     AKI-H8/3069F {[hˑ̍\`
            sys_defs.h       AKI-H8/3069F {[hˑ̃AvP[V
            @@@@@@@@ p`
            sys_support.S    AKI-H8/3069F {[hˑ̃AZu֐
            sys_rename.def   J[l̓ʖ̃l[Ƃ̉
            @@@@@@@@ ̒`Xg
            sys_rename.h     J[l̓ʖ̃l[̒`
            sys_unrename.h   J[l̓ʖ̃l[̒`

   (5)   config/h8/nkev_010h8/
           (L) iʐMvT[rX NKEV-010H8 {[ḧˑ

            Makefile.config  Makefile NKEV-010H8 {[hˑ`
            debug.ld         fobO (ȈՃj^Ή) pJXNvg
            debug_gdbstub.ld fobO (GDB STUBΉ) pJXNvg
            debug_redboot.ld fobO (RedBootΉ) pJXNvg
            release.ld       [XpJXNvgiORAMgpj
            release_inmem.ld [XpJXNvgiORAMgpj
            sys_config.c     NKEV-010H8 {[hˑ C ֐
            sys_config.h     NKEV-010H8 {[hˑ̍\`
            sys_defs.h       NKEV-010H8 {[hˑ̃AvP[V
            @@@@@@@@ p`
            sys_support.S    NKEV-010H8 {[hˑ̃AZu֐
            sys_rename.def   J[l̓ʖ̃l[Ƃ̉
            @@@@@@@@ ̒`Xg
            sys_rename.h     J[l̓ʖ̃l[̒`
            sys_unrename.h   J[l̓ʖ̃l[̒`

   (6)   jsp/utils/h8/
           H8ˑrhpXNvg

            cat.pl@@@@@ UNIXcatR}h
            grep_def_inh.pl@PerlXNvgptB^
            genvector.pl@@ xN^e[upXNvg

   (7)   rhEfBNg
            vector.S@@@@ xN^e[uimake dependɎj

6. AvP[VJҌ̏

AvP[VJ҂ɗLvƎvɂďqׂB

6.1 J[l̐ݒύX@

(1) SUPPORT_CHG_IPM
@@̃}N`Ɗ݃}XN̕ύXEQƋ@\LɂȂB
@@ڍׂ́u2. 2. 3@݃}XN̕ύXEQƁvQ
@@ݒt@CFsys_config.h

(2) SUPPORT_VXGET_TIM
@@̃}N`Ɛ\]pVXeQƋ@\vxget_tim( )
@@LɂȂBڍׂ́u3. 2  \]pVXeQƋ@\vQ
@@ݒt@CFsys_config.h

(3) STACKTOP
@@^XNReLXgpX^bN|C^̏l
@@X^[gAbv[`łSTACKTOPwRAM̈X^bNɂ
@@_hardware_init_hookĂяoB̂߁Ä̗
@@_hardware_init_hookĂяoOɃANZX\ɂȂĂKv
@@B
    @@EԂ̂܂܃ANZXłRAM@܂
    @@Ej^ɂANZXłԂɂORAM

@@ݒt@CFsys_config.h

6.1.1 VAhCõJX^}CY@

@{Ijsp/config/h8/akih8_3069f/sys_config.hɂ}N`C
邱ƂŁAJX^}CY邱ƂłBȉɊe}N̈ӖB
@
@E|[g
@@@jsp/config/h8/akih8_3069f/sys_config.h 145s
@@@}NTNUM_PORTŃ|[g`B
@@@݂̎ł͍őR܂ŎgpłB

@EVXeOo͂VA|[gԍ
@@@jsp/config/h8/akih8_3069f/sys_config.h 149s
@@@}NLOGTASK_PORTIDŃ|[g`B

e`ljsp/config/h8/akih8_3069f/sys_config.hŒ`Ă}N
̈ӖɂāAȉɏqׂB???̕ɂ̓|[g̎ʎqł
SYSTEMAUSERAUSER2̂ꂩB

@E???_SCI
@@@VAfoCX̐䃌WX^Q̐擪AhX

@E???_SCI_IPR
@@@ݐŗpIPRA܂IPRBWX^̃AhX

@E???_SCI_IP_BIT
@@@LIPRWX^ŃVAfoCXYrbg

@E???_SCI_SMR
@@@SMRWX^̏l
@@@ftHgňȉ̐ݒsĂB
@@@	EMtH[}bgF
	ELN^OXF8rbg
	EpeBȂ
	EXgbvrbgOXF1
	ENbNZNgij:1

@E???_BAUD_RATE
@@@{[[g[bps]

@E???_PORTID
@@@|[gID}NSYSTEM_PORTIDAUSER_PORTIDAUSER2_PORTIDŒ`
@@@B|[gIDƃfoCXԍ(sci0`2)̑Ή֌WύXꍇA
@@@̃}NύX邾łȂA
@@@@jsp/config/h8/hw_serial.c
@@@Œ`ĂVA|[gubNsiopinib_table[]
@@@̏f[^̏ԂւB

@E???_SCI_IPM
@@@݃vCIeBxiMpj
@@@IPM_LEVEL0܂IPM_LEVEL1ݒ肷B

@EINHNO_SERIAL_INAINHNO_SERIAL2_INAINHNO_SERIAL3_IN
@@@e|[gID̃VAM݂̃xN^ԍ

@EINHNO_SERIAL_OUTAINHNO_SERIAL2_OUTAINHNO_SERIAL3_OUT
@@@e|[gID̃VAM݂̃xN^ԍ

@EINHNO_SERIAL_ERRAINHNO_SERIAL2_ERRAINHNO_SERIAL3_ERR
@@@e|[gID̃VAG[݂̃xN^ԍ

@Esio_in_handler_intmaskAsio_in2_handler_intmaskA
@@sio_in3_handler_intmask
@@@e|[gID̃VAM݃nhsɁA
@@@݃}XNƂĐݒ肷l
@@@IPM_LEVEL1܂IPM_LEVEL2ݒ肷B

@Esio_out_handler_intmaskAsio_out2_handler_intmaskA
@@sio_out3_handler_intmask
@@@e|[gID̃VAM݃nhsɁA
@@@݃}XNƂĐݒ肷l
@@@IPM_LEVEL1܂IPM_LEVEL2ݒ肷B

@Esio_err_handler_intmaskAsio_err2_handler_intmaskA
@@sio_err3_handler_intmask
@@@e|[gID̃VAG[݃nhsɁA
@@@݃}XNƂĐݒ肷l
@@@IPM_LEVEL1܂IPM_LEVEL2ݒ肷B


6.2 AvP[Vɒ񋟂@\

H8ˑł̓AvP[VJ₷邽߁Aȉ̋@\񋟂
ĂB

6.2.1@I/O|[gDDRWX^ւ̃ANZX⏕@\

H8I/O|[g̃f[^EfBNVEWX^DDR͏ݐpłA
̂܂܂ł͏]̃rbgύX邱ƂłȂB
ibset,bclr߂łsj
܂AJ[l̃X^[gAbv[`łDDRWX^ɑ΂
ĐݒsĂ邽߁Â܂܂ł̓J[lƃAvP[V̊ԂŐ
ۂƂłȂB
̂߁A{ł́AɃe|pӂāADDŘݒl
@̂ĂB
{@\𗘗pꍇh8_sil.hCN[hKvB
|[gԍIO_PORT1, IO_PORT2, IO_PORT3, IO_PORT4, IO_PORT5, IO_PORT6,
 IO_PORT8, IO_PORT9, IO_PORTA, IO_PORTB̂ꂩw肷Bi|[g7
͓͐p̂߁ADDRWX^ȂBj|[gԍƂāAȊO
lw肵ꍇassertŃG[ƂȂB


(1) sil_reb_ddr@@DDRWX^̓ǂݏo

yCAPIz
@@UB sil_reb_ddr(UINT port);

yp[^z
	UINT port@@@@|[gԍ

y^[p[^z
	DDRWX^̒l

yG[R[hz
	Ȃ

y@\z

portŎw肳|[gԍDDRWX^̒lǂݏoB

(2) sil_wrb_ddr@@DDRWX^ւ̏

yCAPIz
@@void sil_wrb_ddr(UINT port, UB data);

yp[^z
	UINT port@@@|[gԍ
	UB data@@@@ޒl

y^[p[^z
	Ȃ

yG[R[hz
	Ȃ

y@\z

portŎw肳|[gԍDDRWX^ɒldataށB

(3) sil_anb_ddr@@DDRWX^ANDZ

yCAPIz
@@void sil_anb_ddr(UINT port, UB data);

yp[^z
	UINT port@@@|[gԍ
	UB data@@@@ANDZsl

y^[p[^z
	Ȃ

yG[R[hz
	Ȃ

y@\z

portŎw肳|[gԍDDRWX^ɑ΂āAldataƂANDZ
sB

(4) sil_orb_ddr@@DDRWX^ORZ

yCAPIz
@@void sil_orb_ddr(UINT port, UB data);

yp[^z
	UINT port@@@|[gԍ
	UB data@@@@ORZsl

y^[p[^z
	Ȃ

yG[R[hz
	Ȃ

y@\z

portŎw肳|[gԍDDRWX^ɑ΂āAldataƂORZ
sB


7. J[lڐAҌ̏

@H8ˑ𑼂̃^[QbgE{[hւڐAۂɕKvȏȉ
qׂB

7.1 }N`

(1) DDRANZX[`̂߂̒萔`

(a) DDRWX^̃AhX
DDRWX^̃AhXȉ̃}NŒ`B
    H8P1DDR, H8P2DDR, H8P3DDR, H8P4DDR, H8P5DDR, 
    H8P6DDR, H8P8DDR, H8P9DDR, H8PADDR, H8PBDDR
`t@CFsys_config.hCN[ht@C
@@@@@@@h8_30xxf.hŒ`̂WƂB

(b) DDRWX^̏l
X^[gAbv[`sDDRWX^̒lȉ̃}NŒ`
B
@@H8P1DDR0AH8P2DDR0AH8P3DDR0AH8P4DDR0AH8P5DDR0A
@@H8P6DDR0AH8P8DDR0AH8P9DDR0AH8PADDR0AH8PBDDR0
`t@CFsys_config.h

(2) xN^e[û߂̏
xN^e[ũTCYϐVECTOR_SIZEƂĒ`B
`t@CF$(CPU)/$(SYS)/Makefile.config

7.2 xN^e[û߂PerlXNvggenvector.pl̎dl

  -s n		xN^[e[ũTCY
  		n͐萔肵ĂAȊÖ^ꂽ
  		ꍇ͖̓`łB
  		
  -z 		JSPJ[lł͓o^ĂȂݔԍɑ΂
  		ftHg_no_reg_exceptionݒ肷̂
  		Ă邪Aj^Ȃǂ̎sɂĂ͒l0
  		ݒ肷KvB
  		̃IvVł͓o^ĂȂ݃xN^0
  		ށB
		-zIvVw肵Ȃꍇ́A_no_reg_exception
		ށiftHgj
		-zIvV̗Ljsp/config/h8/Makefile.config
		`ĂB
		@DBGENV}N̒l
		@@ETNCT_MONITOR܂REDBOOT̏ꍇF-zIvV
		@@EȊȌꍇF-zIvVȂ


8. 

ExN^e[u
@@make realcleansĂAvector.SȂB
@@iMakefile@ˑɂȂ߂̐ƂBj
@@Amake dependmakeR}hŃxN^e[uvector.S
@@Iɏ㏑ĂB㏑Ȃꍇ
@@jsp/config/h8/Makefile.config 85sڂ
@@@.PHONY: vector.S
@@RgAEgƁA㏑ȂȂB

Esׂ^XNȂƂ̊ݑ҂ɂ
@@sleepĂԂɃoXvȂ悤ɃoX̊Oւ̉
@@֎~鏈ȗĂB
@@@@YFcpu_support.Sdispatcher_2_enable_interrupt
@@
@@HEWłjsp/config/h8-renesas/cpu_support.srcɂ͎ς݂łB
@@ڂ̓n[hEFAE}jAu6.4.4 \tgEFAEX^oCE
@@[hւ̑JځvQ

ExN^e[u̎
@@ftHgŗpӂĂno_reg_exception̂悤ɁÅݗv
@@ɑ΂ē݃nho^悤Ȏgɂ͑ΉĂȂB

E#ifdef SUPPORT_ETHER
@@ȂׂJ[lTINET̓Ɨ߂jŏCsAoX
@@̐ݒ̓J[liX^[gAbv[`jōs߁AꕔA
@@SUPPORT_ETHER}NɂRpCcĂB
@@iAKI-H8/3069Fˑ̂݁j

EV{
@@Cꃋ[`̊֐****ɑ΂āAIɓ̃x
@@__kernel_****_entrygpĂ邽߁AƓV{
@@AvP[VŎgpłȂB
@@iX__kernel_Ŏn܂V{̓J[lpɗ\񂳂ĂBj

EHdq{[htCD-ROMɓĂgcc̓o[WÂ߁A
@T|[gĂȂB

Egcc̃o[WɂĂ64rbg̓T|[gȂB
@in̐j

EzXg}VOS
@Windows9xn̓T|[gȂB


9. t^

9. 1  RedBootΉɂ

QlƂAKI-H8/3069FpRedBootɑΉĂ邪A@eXg
sĂȂBȉɎgp@LB

9. 1. 1  H8/3069F ̃}bv
   fobO (RedBootgp)

         0x000000 - 0x07ffff   ROMARedBootj^[
         0x400000 - 0x44ffff  O RAMA.textA.rodata
         0x450000 - 0x4ffeff  O RAMA.dataA.bss
         0x4fff00 - 0x4fffff  O RAMA荞݃xN^̈ (.vectors)
         0x500000 - 0x510000  O RAMA^XNReLXgpX^bN
         0xee0000 - 0xee0081   I/O WX^
         0xffbf20 - 0xfffd1f   RAMARedBootj^[
         0xfffd20 - 0xfffe1f   RAMAz݃xN^̈
                              (cpu_config.c.vectorsRs[)
         0xffff20 - 0xffffe9   I/O WX^


9. 1. 2  ^[Qbgւ̃_E[hƎs
           
         fBNg $(CPU)/$(SYS) ɂ

            MakefileDBGENV := REDBOOT

         Lɂ make B

         RedBoot
           http://sourceforge.jp/projects/ecos-h8/
         [Xł"h8write -3069 -f20 redboot.mot" ŏĂB
         
         s@
         @(1) Redboot[_Ƃėp@
         @(2) GDBƐڑ@
         B


       @(1) Redboot[_Ƃėp@

           ȉ́A V쎁񋟂ɂݒ@łB

         Lc[_E[hăCXg[(Win[U[)
         TFTPT[o[forWin32
         http://www.vector.co.jp/soft/win95/net/se174412.html
         Tera Term Pro
         http://www.sakurachan.org/soft/teraterm-j/
         
         TFTPT[o[̃tH_wjsp.SꏊɎw
         Tera Term ProCXg[ꏊɃ}Nt@CiLj
         쐬
         ttpmacro.exe ւ̃V[gJbg쐬
         EÑvpeB-Nakiboot.ttlǉ
         "C:\Program Files\TTERMPRO	tpmacro.exe" akiboot.ttl
         
         Lakiboot.ttl̃Tv
         ; Sample macro for Tera Term
         ;ݒt@C[hꍇ
         ;connect '/F=redboot.ini'
         ;ftHgݒŃ[hꍇ
         connect ''
         ;sR[h𑗂ăvvgł̂҂
         sendln
         UsernamePrompt = 'RedBoot>'
         ;IPAhX͊ɂĕύXĂB
         ;-l aki{[hIP -h TFTPT[o[IP
         ipset = 'ip_address -l 192.168.0.12 -h 192.168.0.10'
         load = 'load -b 0x400000 jsp.S'
         go = 'go 0x400000'
         ; ipݒ
         wait   UsernamePrompt
         sendln ipset
         ; load
         wait   UsernamePrompt
         sendln load
         ; go
         wait   UsernamePrompt
         sendln go
         ; OK, boot complete.


      @(2) GDBƐڑ@
      @
      @łEthernetoRGDBڑ@qׂB
      @
      @zXg}Vƃ^[Qbg{[hVAP[uEthernetP[u
      @ŐڑB
      @iEthernetP[uFꍇ̓NXP[upBj

      @^[~i\tgiVAjNA^[Qbg̓dB
      @΂炭҂ƈȉ̂悤ɏo͂B
      @
      @... waiting for BOOTP information
      @Ethernet eth0: MAC address xx:xx:xx:xx:xx:xx
      @Can't get BOOTP info for device!
      @
      @RedBoot(tm) bootstrap and debug environment [ROM]
      @Non-certified release, version UNKNOWN - built 21:28:57, Apr 11 2004
      @
      @Platform: Akizuki H8/3068 Network micom (H8/300H)
      @Copyright (C) 2000, 2001, 2002, Red Hat, Inc.
      @
      @RAM: 0x00400000-0x005f4000, [0x00400000-0x005e1000] available
      @FLASH: 0x00000000 - 0x00080000, 8 blocks of 0x00010000 bytes each.
      @RedBoot> 
      @
      @"RedBoot>"̃vvgœ͑҂ɂȂA
      @@@ip_address -l xxx.xxx.xxx.xxx
      @Ɠ͂AIPAhXݒ肷B
      @ixxx.xxx.xxx.xxx̋̓IȒl͊ɍ킹Bj
      @ȉ̂悤ȉ΁AłB

      @IP: xxx.xxx.xxx.xxx/255.255.255.0, Gateway: 0.0.0.0
      @Default server: 0.0.0.0
      @RedBoot>
      @
      @i^[~i\tgł͂ȂAVF́jR}hvvgɂāA
      @gdbNB
      @
      @h8300-hms-gdb jsp@iCygwin̏ꍇjsp.exej
      @
      @gdb̃vvgɂĈȉ̃R}hsB
      @target remote xxx.xxx.xxx.xxx:9000
@      @@xxx.xxx.xxx.xxx͏LŐݒ肵IPAhX
  @    @@9000̓|[gԍ
      @load
      @b xxxx_xxxx
      @c
      @
      @gdb̃R}hɂĂgdb̃}jAQ


9. 1. 3  ڐÂ߂̎Ql

@fobKƃJ[l̋NȂ悤AɊ݂܂̎
ɂ͔zKvBRedbootΉɂAȉ̃f[^\֐
V݂ĂB̃{[hfobKpɈڐAۂɂ͂C
KvB

(1) }N H8IPRA_INI,H8IPRB_INI
@IPRAAIPRBWX^̏l
@`ȗꍇ̓ftHgl0gpB
@cpu_config.ccpu_initialize֐ɂāAׂĂ̊݃vCIeB
xOɂ鏈sĂBfobK݂gpꍇ́A
}Nŏl`AY銄݃`l̊݃vCIeB
ɃxOɃNAȂ悤ɂB
@`ꏊFsys_config.h

(2) }N VECTOR_TABLE_ADDR
@RedbootǗ[xN^e[u̐擪AhX
@`ꏊFsys_config.h

(3) f[^^ TMP_VECTOR
@cpu_config.cvector_table_copy֐ɂāAJ[lxN^e[u
RedbootǗRs[ĂB̍ہA㏑Ă͂܂
ޔ^KvB̑ޔ̃f[^\TMP_VECTOR^ƂĒ
`B
@`ꏊFsys_config.h

(4) ֐ load_vector  ݃xN^̑ޔ

yCAPIz
@@void load_vector(TMP_VECTOR *p);

yp[^z
@@TMP_VECTOR *p@ޔ̐擪AhX

y^[p[^z
@@Ȃ

yG[R[hz
@@Ȃ

y@\z
@@pŎw肳郁̈RedbootǗxN^e[üꕔ
@@ޔB

y`ꏊz
@@sys_config.c

(5) ֐ save_vector  ݃xN^̕

yCAPIz
@@void save_vector(TMP_VECTOR *p);

yp[^z
@@TMP_VECTOR *p@Rs[̐擪AhX

y^[p[^z
@@Ȃ

yG[R[hz
@@Ȃ

y@\z
@@pŎw肳郁̈ɂf[^RedbootǗxN^
@@e[üꕔƂĕB

y`ꏊz
@@sys_config.c

9. 2  gcčĂяoKɂ

@L̎QlɂƁAXNb`WX^er0`er3łƓǂ߂邪A
ۂɂ͍œKIvVgper4j󂳂悤Ȃ̂ŁȀ݂o
er0`er4ޔ^ĂB

@Ql
@@http://gcc.gnu.org/projects/h8300-abi.html


9. 3  VA3chɔȂCeɂ
@jsp/config/h8/hw_serial.cŒ`ĂVA|[gub
Nsiopinib_table[]̃TCY23ɊgAɔA
@@Ejsp/config/h8/hw_serial.cfg
@@@@݃nh̓o^
@@Ejsp/config/h8/akih8_3069f/sys_config.h
@@@@Kvȃ}N`
ꂼǉĂB
@܂ACȑOTNUM_PORT}N̒lɂAVXeOo͂Ɏgp
|[gԍω悤ɂȂĂȀĆATNUM_PORT}
N̒lɈ˂炸VXeOo͂̃|[gԍŒ肳悤dlύX
B


9. 4  NKEV-010H8 ł GDB STUB gs

9. 4. 1  NKEV-010H8 ΉSTUB

NKEV-010H8 Ή GDB STUB ͐iYt CD-ROM ɔ[߂ĔzzB
 GDB STUB  SCI1 gpׁAsyslogo͓SCI0ɍs悤
^[QbgˑŒ`B

9. 4. 2  NKEV-010H8^[QbgƂGDBɂ郊[gfobO

  1. config/h8/nkev-010h8/Makefile.config  DBGENV := S
     RgAEgB
  2. AvP[V Makefile  DBGENV := GDB_STUBǉB
  3. AvP[V Makefile COPTS = -g -O0 ǉB
  4. o͐̃VA|[g ID 2 ɂĂꍇ 1 ɕύXB
     (jspsamplȅꍇATASK_PORTID  1 ɂ)
  5. make dependAmake s
@6. h8300-hms-gdb jsp.exe sAgdbNB
  7. gdbvvgoȉ͂B

        (gdb) set machine h8300h
        (gdb) set endian big
        (gdb) set remotebaud 38400
        (gdb) set remoteaddress 32
        (gdb) target remote /dev/com1PCCOM|[gԍ
        0x00001350 in ?? ()
        (gdb) load
        Loading section .vectors, size 0x100 lma 0x400000
        Loading section .text, size 0x59ca lma 0x400100
        Loading section .rodata, size 0x118a lma 0x405aca
        Loading section .data, size 0x12 lma 0x406c54
        Start address 0x400100, load size 27750
        Transfer rate: 20181 bits/sec, 50 bytes/write.
        (gdb)

  8. contƓ͂鎖ŃvOsB

  gdb̑ɂĂGNUvWFNgɃ}jÂŁA
  QƂ̎B

9. 4. 3  m̖_

  TNUM_PORT = 2 ƂƁAstub  USER PORTobeBOē삵ȂB


ύX

'01/11/15 Release1.2
@H8T|[gJn
@@^[QbgFAKI-H8/3048F

'02/04/15 Release1.3
@^[Qbg̕ύX
@@AKI-H8/3067F̃T|[gǉ

'03/12/28 Release1.4
@^[QbgVXe̕ύX
@@EAKI-H8/3052F̃T|[gǉ
@@EAKI-H8/3068F̃T|[gǉ
@@EAKI-H8/3069F̃T|[gǉ

'05/12/28 Release1.4.2
@^[QbgVXe̕ύX
@@ENKEV-010H8̃T|[gǉ
@@EAKI-H8/3068F̃T|[g𒆎~
@@EAKI-H8/3069F̃T|[g𒆎~

@VK
@@ExN^e[u̎
@@@@DEF_INH()̈犄݃xN^e[u悤ɂ
@@@@BɂA[U[ƂŕҏWKvȂȂB
@@EݗDx̃T|[g
@@@@ExOƃxP݂̊T|[g
@@@@E݃nh̓o^@ύX
@@@@@@ݗv2ނ̊݃x̒l`B
@@@@@@@@EݗvFIPRAAIPRBWX^̐ݒ
@@@@@@@@E݋Fccr̊݃}XN̐ݒ
@@@@EݗvʂɗpӂĂxxx_enable_intxxx_disable_int
@@@@@p~
@@@@EiscpulockedtOV
@@EIPM̎QƂƕύX@\T|[g@
@@EI/O|[gDDRANZX[`ǉ
@@EAKI-H8/3069F̃[X[hœRAMœ삷郂[hǉ
@@@@EMakefile.configDBGENV := INMEM_ONLYV
@@@@ENXNvgrelease_inmem.ldǉ

@C
@@Es̒`
@@@@Makefile.config̕ϐDBGENV̒`̌
@@@@@DBGENV := ROM@ROM̏ꍇiVKj
@@@@@DBGENV := TNCT_MONITOR@ȈՃj^gpiύXj
@@@@@@@TNCT:Tomakomai National College of Technology
@@Eԑ҂֐sil_dly_nse( )
@@E_int64_̒`
@@@@ɔASYSUTIM^̒`ύX
@@EVAhCoSCI_getchar()œǂݏo1oCgf[^
@@@gĂ܂C
@@En
@@@@Hdqʏ{[htGNUJ̓o[WÂ߁A
@@@@T|[gĂȂBiu4. 1  J̍\zvQƁj
@@Ecpu_experr( )ŃWX^̓e_vہApcccr𕪗
@@@ȂsC
@@ETINET֘Ãt@C𕪗
@@@@E폜t@C
@@@@@@jsp/config/h8/tinet_cpu_defs.h
@@@@@@jsp/config/h8/tinet_cpu_config.h
@@@@@@jsp/config/h8/akih8_3048f/tinet_sys_config.h
@@@@@@jsp/config/h8/akih8_3068f/tinet_sys_config.h
@@@@@@jsp/config/h8/akih8_3069f/tinet_sys_config.h
@@ERedboot֘A
@@@Edebug_redboot.ldpbP[WɊ܂߂
@@@EX^bN|C^̏lC
@@@E݃xN^e[uւ̓o^C
@@E^C}nhAVAnh̐
@@@@EBITSET,BITCLR}NCCEAZu֐ɕύX
@@E݃Rg[̏
@@	E_hardware_init_hook̏eꕔAcpu_initialize()Ɉړ
@@EAZu[`
@@@E򖽗ߑO̕svor߂폜
@@@EgcčĂяoKɍ킹āAWX^̑ޔƕKvŏ
@@@@ɂB
@@@@igcc 3.x΍̂߁Ȁ݂oer4ޔ^ĂBj
@@Eh8_3048f.hAh8_3052f.hAh8_3069f.h{[hԂŋLł悤
@@@$(CPU)fBNgɈړ
@@EAKI-H8/3052F, AKI-H8/3069FVXeˑ
@@@@EftHg̃VAch1ɕύX
@@@@@@RlN^𑝐݂ȂƎgpłȂ
@@@@EɔȂATvvOTASK_PORTID̒`
@@@@@sys_defs.hɈړ
@@EMakefile.configɃfobOIvV-gǉ
@@E֐錾ŁÂȂ͖̂IvoidLqB
@@Evxget_tim()̃vg^Cv錾throw()ǉ
@@EintnestUW^UB^ɕύX
@@Eg[XO̐ݒꕔǉ
@@@@#define	LOG_VSNS_INI_ENTER()
@@@@#define	LOG_VSNS_INI_LEAVE(state)
@@Etool_config.hNEWLIB}N̒`폜
@@Ecpu_context.hACTIVATED_STACK_SIZE}N̒`폜
@@EV{El[Ώۂ̌
@@    EV{cpu_experr̃l[RC
@@EAKI-H8/3069F
@@@@EHEAP_TOP}N̒`폜
@@E}jA
@@@E{[htCD-ROMgcc̓T|[gOł邱Ƃ𖾋L
@@@ERedbootΉQlł邱Ƃ𖾋LAt^Ɉړ
@@@Eݔ̃X^bNʂ
@@@E݃nh̓o^@𖾋L
@@@EVA|[g̃t[̐ݒǋL
@@@EJ̃o[WύX

'07/03/xx  Release1.4.3
@^[QbgVXe̕ύX
@@ENKEV-010H8̃T|[g𒆎~
@@EAKI-H8/3048F̃T|[g𒆎~

@C
@EVAhCo3ch
@@@AKI-H8/3069F̂ݑΉ
@ExN^e[u
@@Emake dependmakeR}hŃxN^e[uvector.SI
@@@㏑悤dlύX
@@En̉sR[ḧႢɑΉ
@@EDEF_INH̓rŉsƃp[XɎsC
@@Eݔԍ̃}N`̏ꍇA0ԂƉ߂āAZbgxN^
@@@㏑Ă܂sC
@@EݔԍutĂꍇɐłȂC
@@Efilter1.plfilter2.plPɂ܂Ƃ߁Agrep_def_inh.plɉ
@@@igccłHEWłŌʂfilter2.plpӂKvȂȂj
@E荞݃x̐ݒ
@@@Eh8_sil.hdefine_int_plevel()
@@@@@cpu_insh.hCN[hȂŁAbitset(),bitclr()Ă
@@@@@oĂsC
@Esoftware_term_hooǩĂяo
@@@Etool_config.hcall_atexit()
@@@@@software_term_hookւ̃|C^0Ƃ̔rARpC
@@@@@œKɂč폜Ă܂Ȃ悤AvolatileCqǉ
@ERedbootΉ
@@@ERedbootgp銄݃xN^㏑Ă܂C
@@@E}jAh8.txt9.1߂ǋL
