                TOPPERS/JSPͥ 桼ޥ˥奢 
                  H8SåȰ¸ (H8C(HEW)б)
   
               Release 1.4.3бǽ: 08-Mar-2007
   
   ------------------------------------------------------------------------ 
    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
   
    嵭Ԥϡʲ (1)(4) ξ狼Free Software Foundation 

    ˤäƸɽƤ GNU General Public License  Version 2 ˵
    ҤƤ˸¤ꡤܥեȥܥեȥ
    ѤΤޤࡥʲƱˤѡʣѡۡʰʲ
    ѤȸƤ֡ˤ뤳Ȥ̵ǵ롥
    (1) ܥեȥ򥽡ɤηѤˤϡ嵭
        ɽѾ浪Ӳ̵ݾڵ꤬Τޤޤηǥ
        ˴ޤޤƤ뤳ȡ
    (2) ܥեȥ򡤥饤֥ʤɡ¾Υեȥȯ˻
        ѤǤǺۤˤϡۤȼɥȡ
        ԥޥ˥奢ʤɡˤˡ嵭ɽѾ浪Ӳ
        ̵ݾڵǺܤ뤳ȡ
    (3) ܥեȥ򡤵Ȥ߹ʤɡ¾Υեȥȯ˻
        ѤǤʤǺۤˤϡΤ줫ξ
        ȡ
      (a) ۤȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭
          ɽѾ浪Ӳ̵ݾڵǺܤ뤳ȡ
      (b) ۤη֤̤ˡˤäơTOPPERSץȤ
          𤹤뤳ȡ
    (4) ܥեȥѤˤľŪޤϴŪ뤤ʤ»
        ⡤嵭ԤTOPPERSץȤդ뤳ȡ
   
    ܥեȥϡ̵ݾڤ󶡤ƤΤǤ롥嵭Ԥ
    TOPPERSץȤϡܥեȥ˴ؤơŬѲǽ
    ޤơʤݾڤԤʤޤܥեȥѤˤľ
    ŪޤϴŪʤ»˴ؤƤ⡤Ǥʤ
   
    @(#) $Id: h8s-renesas.txt,v 1.2 2007/03/23 07:27:55 honda Exp $

   ------------------------------------------------------------------------
1.  H8SåȰ¸γ

1. 1  åȥƥȳȯĶ

ܼgccбäH8S¸()ͥ 塼γ
ȯĶH8C(HEW)бΤǤ롣

  H8SץåΥåȥƥϡH8S/2339FܤʲΥܡ
Ǥ롣

      ҥߥ MiNET-H8S/2339F (H8S/2339F)

ܼϰʲΥ⡼ɤǻѤ뤳ȤȤƤ롣
CPUư⡼ɡɥХ󥹥ɥ⡼
⡼ɣ
¾Υ⡼ɤǻѤϡ֥ʬɬפ롣

1. 2  ݡȤ뵡ǽγ

  ǽɾѥƥﻲȵǽ (vxget_tim)ߥޥѹ
 (chg_ipm get_ipm)򥵥ݡȤƤ뤬 ߤζػߤȵ
(dis_intena_int) ϥݡȤƤʤ

1. 3  ¾ΥåȤؤΥݡƥ

  H8S/2000꡼ǤСݡƥ󥰤ưפ˽Ȼפ롣

1. 4  ꥢݡ (SCI)

  H8S/2000꡼ˤSCI0SCI1SCI2ˤ2ܡ3ܡˤΥꥢݡȤ
ꡢuser_config.hƤTNUM_PORTˤ겿ܻѤ뤫Ǥ
롣ߤμǤ3ܤޤǻѤǤ롣ʲդ򻲾ȡ 
JSP ͥΥѤˤSCI1ѤƤ롣 

ա
MiNET-H8S/2339FǤϡSCI0H-UDIǥХåݡȤȶ礷Ƥ롢SCI0
ͥƤʤͳˤꡢSCI0ưǧϤƤʤ


ꥢݡȤʲ˼ 

   ܡ졼ȡ38400[bps]
   ǡĹ8ӥå
   ȥåץӥåȡ1ӥå
   ѥƥʤ

2.  H8S ץå¸εǽ

  ͥȥƥॵӥǽǡH8S¸ʬˤĤƲ⤹롣

2. 1  ǡ

  intunsigned intΥ 16ӥåȤǤ롣ޤϤ
顢64ӥåϥݡȤƤʤ

2. 2  ߴǽȳߥϥɥ

ܼǤϳ⡼ɣΤߤ򥵥ݡȤƤ롣
ʳߥ⡼ɣˤĤƤH8ȸߴʤΤǡH8åȰ¸ (H8C(HEW)
б)ͤˤʤȻפ롣

user_config.huser_config.incMAX_IPMޥˤꡢ
뤬ߥ٥뤬ѹǤ롣
IPMInterrupt Priority Mask
ʽϤλͤˤꡢե뤬ĤΤա

ͥγ  ߥ٥뤬MAX_IPM ʲγ
ͥγ  ץ饤ƥ٥(MAX_IPM+1)
ʾγߤNMI

롼ǤNMIʳγߤϤ٤ƶػߤƤΤФơ
CPUå֤ǤϥͥγߤΤߤػߤƤ롣
ʡ֥ͥγߡפˤĤƤϦITRON4.0ͽ򻲾ȡ
ŪˤϡCPUå֤ǤEXR쥸IӥåȤMAX_IPMͤ򥻥å
˥ͥΥե饰ѿ򥻥åȤƤ롣

DEF_INHǻꤹߥϥɥֹinhnoˤϡH8SǤ㳰٥ֹ
ɽΥǡINHNOˤunsigned intƤ롥
DEF_INHǡ㳰٥ֹȤͭǤʤͤ䡤ߤбʤ
ֹꤷưݾڤʤ

2.2.1 ߥϥɥϿˡ

jsp-1.4.1 H8S¸gccǡˤǤϡߥ٥ơ֥ưԽ
򥳥ե졼DEF_INH( )ΰ鼫ư
褦ѹƤ롣

ߥϥɥϿȼ
޳ߤ롣

(1) ߥϥɥε

׵򥯥ꥢɬפʾϳߥϥɥC
롼󡢤ޤϤƤФؿ˵Ҥˡɸ
롣

޳ߤǤε㡧
jsp/systask/timer.c
   timer_handler( )ƤӽФhw_timer_int_clear( )
jsp/config/h8s-renesas/hw_timer.h


(2) ե졼󡦥եε

ե졼󡦥եεˡ¾ΥץåƱ
Ǥ롣
٥ֹjsp/config/h8-renesas/h8s2xxxf.hǥޥƤ롣
DEF_INH( )1γߥϥɥֹϥץץ
ˤʤäƤʤФʤʤʼưդбͥѥ᡼
٥ơ֥뼫ư⤽ꤷƤ롣

޳ߤǤε㡧
jsp/systask/timer.cfg
  DEF_INH(INHNO_TIMER, { TA_HLNG, timer_handler });


(3) ߥץ饤ƥ٥

cpu_initialize( )Ǥ٤Ƥγߤ٥0˽
Ƥ롣
ǥХɥ饤ФνǳװΥץ饤ƥ
ꤹ뤿δؿѰդƤ롣

CAPI
void icu_set_ilv( UH ipr, BOOL mask, INT level ) 

ڥѥ᡼
        UH	ipr		ꤹ륤󥿥ץȥץ饤ƥ쥸
				ɥ쥹β16ӥå
				 ( IPRA - IPRK ޥ )
        BOOL	mask		ꤹ륤󥿥ץȥץ饤ƥ쥸
				ϰϡʾʬޤϲʬˤ
				( IPR_UPRޤϡIPR_LOW ޥ )
        INT	level		ꤹߥ٥ ( 0 - 7 )

ڥ꥿ѥ᡼
ʤ

ڵǽ
󥿥ץȥץ饤ƥ쥸γ㳰װ̤ˡߥ٥
Ԥ
δؿƤӽФcpu_config.h򥤥󥯥롼ɤɬפ롣

ڥ޳ߤǤε

jsp/config/h8s-renesas/hw_timer.h
hw_timer_initialize( )
    icu_set_ilv( IPRF, IPR_UPR, TPU0_INT_LVL );

ѤͤϥޥƤ롣

IPRAIPRK쥸Υɥ쥹
   jsp/config/h8s-renesas/h8s2339f.h
           #define IPRA		0xfec4
           #define IPRB 	0xfec5
           #define IPRC		0xfec6
           #define IPRD		0xfec7
           #define IPRE		0xfec8
           #define IPRF		0xfec9
           #define IPRG		0xfeca
           #define IPRH		0xfecb
           #define IPRI		0xfecc
           #define IPRJ		0xfecd
           #define IPRK		0xfece


2.2.2 ߥޥѹ

H8S¸εǽȤơEXR쥸IPMͤѹ뤿Υӥ
chg_ipmȡȤ뤿Υӥget_ipm򥵥ݡȤƤ롥
ʤIPMͤɽǡIPMϡunsigned charƤ롥

ΥӥϡƥȤCPUå֤ξ
ˤΤ߸ƤӽФȤǤ롥chg_ipmˤIPM٥0ʳʤʤ
餫γߤػߤƤ֡ˤˤǤ⡤ǥѥå϶ػ
줺chg_ipmˤѹIPMͤϡǥѥåΥ˰
롥
㤨С륿IPM٥1ѹ塤餫γߤˤ̤
ڤؤȡڤؤäΥǤIPMϥ٥1ˤʤ롥

chg_ipm򥵥ݡȤ뤿ˡߥϥɥνʤɤ˥
إåɤƤ롥ǡSUPPORT_CHG_IPMȤޥˤꡤ
Υӥ򥵥ݡȤ뤫ɤڤؤ褦ˤƤ롥
SUPPORT_CHG_IPMϡuser_config.huser_config.incǥޥ
Ƥ롥

H8S¸γߥޥѹȤΤΥӥλͤϼ̤ꡥ

(1) chg_ipm			ߥޥѹ

CAPI
	ER ercd = chg_ipm(IPM ipm);

ڥѥ᡼
	IPM	ipm		ꤹ٤ IPM 

ڥ꥿ѥ᡼
	ER	ercd		顼

ڥ顼ɡ
	E_CTX		ƥȥ顼
	E_PAR		ѥ᡼顼ipm 

ڵǽ

IPMInterrupt Priority Maskˤ ipm ǻꤵ줿ͤꤹ롥
IPM˻ꤷͤ0MAX_IPMϰϳξ硤E_PAR顼Ȥʤ롥IPM 0
ʳꤷǤ⡤ǥѥå϶ػߤʤޤꤷIPM
ͤϡǥѥåѤ롥ǥѥåػߤˤϡ
dis_dspʻѤФ褤

ʤΥӥѤơIPMMAX_IPMʥͥγߤ
٤ƶػߡˤꤷƤCPUå֤Ȥ϶̤롣ʥǥѥå
ػߤʤ

ΥӥϡƥȤ CPUå֤λΤ߸
ӽФȤǤ롥󥿥ƥȤ CPUå֤ǸƤӽФ
ˤϡE_CTX顼Ȥʤ롥

(2) get_ipm			ߥޥλ

CAPI
	ER ercd = get_ipm(IPM *p_ipm);

ڥѥ᡼
	ʤ

ڥ꥿ѥ᡼
	ER	ercd		顼
	IPM	ipm		ߤ IPM 

ڥ顼ɡ
	E_CTX		ƥȥ顼

ڵǽ

ߤ IPMInterrupt Priority Maskˤͤɤ߽Фipm ֤

ΥӥϡƥȤ CPUå֤λΤ߸
ӽФȤǤ롥󥿥ƥȤ CPUå֤ǸƤӽФ
ˤϡE_CTX顼Ȥʤ롥


2. 3  CPU㳰ǽ CPU㳰ϥɥ

H8SץåΤCPU㳰򰷤ǽäƤʤᡢͥH8S
¸CPU㳰򥵥ݡȤƤʤäơCPU 㳰ϥɥ
 define_exc( )ϲ⤷ʤؿǤ롣
¾ȤθߴΤᡢCPU㳰ϥɥֹΥǡ (EXCNO)  
unsigned intƤ롣


2. 4  ȥåץ⥸塼

  H8S¸Υȥåץ⥸塼 (start.src) ϼ˼¹Ԥ
塢ͥ (kernel_start) ư롣 kernel_start 
Ƥ뤳ȤꤷƤʤ

   (1)   åݥ󥿤

   (2)   ϡɥ¸νθƽФ
HARDWARE_INIT_HOOKޥƤСϡɥ
¸νƽФΥ롼ϥͥưˡ
åȰ¸ΥϡɥŪʽԤѰդ
Υ٥̾HARDWARE_INIT_HOOKޥȤ롣
HARDWARE_INIT_HOOKޥsys_config.incǹԤΤ
ɸȤ롣

ޤHARDWARE_INIT_HOOKƤӽФRAMѤǤʤ
б뤿ᡢؿƤӽФǤϤʤjmp̿ѤƤ롣
äơHARDWARE_INIT_HOOKäƤȤrts̿ǤϤʤ
jmp̿Ѥ롣κݤϤΥ٥_clear_b_section
Ǥ롣

   (3)   Bν
           Bΰ 0 ꥢ롣

   (4)   Dν
           D RAM ž롣

   (5)   եȥĶ¸νθƽФ
SOFTWARE_INIT_HOOKޥƤСեȥ
¸νƽФδؿϥͥưˡ
եȥĶ(饤֥)¸νԤѰդ
롣㤨С饤֥νʤɤǤ롣
δؿ̾SOFTWARE_INIT_HOOKޥȤ롣
SOFTWARE_INIT_HOOKޥsys_config.incǹԤΤ
ɸȤ롣

2. 5  ȯΥå̤ˤĤ

  H8SǤϳ߼ջ˥ϡɥˤäƳߥޥ꤬Ԥ
뤬߶ػߤˤʤäƤʤΤᡢߤʥͥˤ
߶ػԤ¿ųߤǽ롣
  
  ߤǳ߶ػ˥åѤޤ
  
  CCR쥸
  EXR쥸ʡܥꥶΰ1Хȡ
  er0er3
  ס22Х
  
ޤߤνиǥåer4er612ХȤ
åѤޤ롣
ʤθ塢ΥäƤݤˡ㳰롼󤬵ư
Ϥ˥åΰ褬ɬפˤʤ롣

MAX_IPM7ꤷ硢ǹ⣷ĤγߤͥȤ롣Τ٤Ƥ
γ߶ػ˼դ줿硢ܰʹߤγߤ⥹åڤ
ؤΥå˥쥸򤵤롣ΤȤΥå
ξ̤

22Хȡ7٥롡ܡ12Хȡᡡ116Х

Ȥʤ롣
  

3.  ƥ¸εǽ

3. 1  ƥ९åɥ饤

  ƥ९åɥ饤Ф isig_tim ƽФϡ user_config.h
TIC_NUME  TIC_DENO ƤꡢǥեȤ 1[ms] Ǥ
롣
ѹ뤳Ȥǡisig_tim ƽФѹǤ롣 
٤ñ̤üˤʤͤꤹȡ isig_tim θƽФ˸
ȯ롣

MiNET-H8S/2339F
ޤ˶뤵Ƥ륯åȿ6144[kHz]Ǥ
ʥå24.576[MHz]4ʬˡ٤
(1,000,000/6144)[nsec]0.163[sec]
Ǥ롣
ǥեȤΥåǥХȤơH8S/2339FǤTPU(16bit)
ѤƤ롣


3. 2  ǽɾѥƥﻲȵǽ

  H8SǤϡǽɾѥƥﻲȵǽ (vxget_tim) 򥵥ݡȤƤ
롣

CAPI
ER vxget_tim(SYSUTIM *p_sysutim);

ڥѥ᡼
	ʤ

ڥ꥿ѥ᡼
	SYSUTIM sysutimꥻåȤηв֡ʦsecñ̡

ڥ顼ɡ
	E_CTX󥿥ƥȤƤӽФ

ڵǽ
ꥻåȤηв֤secñ̤Ƿ¬¹ǽη¬ǽ󶡤
롣SYSUTIM UW(32 ӥåʤ)Ǥ뤿ᡢsecñ̤Ǵ
ȥꥻåȤ71ʬ˥Сեơ롣2
μ¹Ի֤¬ȤˤΥСեȯƤʤդɬ
פǤ롣

MiNET-H8S/2339F
޼Τ٤0.163[sec]Ǥꡢ1secñ̤ޤͭǤ롣

3. 3  ꥢ륤󥿥եɥ饤

  H8S/2339Fˤ SCI0SCI2  3 ܤΥꥢݡȤꡢ
user_config.h Ƥ TNUM_PORT ˤ겿ܻѤ뤫Ǥ롣
ߤμǤ 3ܤޤǻѤǤ롣 JSP ͥΥѤˤ SCI1
ѤƤ롣
ꥢΥݡֹȥǥХֹбϰʲ̤Ǥ롣
ݡ1SCI0
ݡ2SCI1
ݡ3SCI2


ա
MiNET-H8S/2339FǤϡSCI0H-UDIǥХåݡȤȶ礷Ƥ롢SCI0
ͥƤʤͳˤꡢSCI0ưǧϤƤʤ

3. 4  ޥå

3. 4. 1  MiNET-H8S/2339FΥޥå

  (1) ǥХå⡼ɡJTAGǥХåѻ
  ⡼4
  ¢ROM̵⡼
  RAMCS0֤
  Х16ӥå

         0x00,0000 - 0x00,ffff  RAM 1MB
         ٥ơ֥롢P,C,D
         R(D),B
         0xff,7c00 - 0xff,fbff  ¢RAM 32KB
         󥿥ƥѥåꥢ

ǥХå⡼ɤǤϡץRAM˥ɤƼ¹Ԥ뤳
ȤꤷƤ롣Τᡢ˥ǥХåġѤ
ХơȥȥνԤɬפ롣
ХơȥȥˤĤƤϥܡ°Υޥ˥奢
p10 4.4 쥸פsys_support.src򻲾


  (2) ꡼⡼ɡROM
  ⡼6
  ¢ROMͭ⡼
  RAMCS1֤
  Х16ӥå

         0x00,0000 - 0x03,ffff  ¢ROM 384kB
                                ˤäƤ0x06,ffffޤǻѤǤ롣
         ٥ơ֥롢P,C,D
         0x20,0000 - 0x2f,ffff  RAM 1MB
         R(D),B
         0xff,7c00 - 0xff,fbff  ¢RAM 32KB
         󥿥ƥѥåꥢ


4.  ץץμ¹Լ

4. 1  ȯĶ

  ȯĶϡWindows 2000ǡ()ͥ 塼γȯ
ĶѤ
ܳȯѤġΥСʲ˼ 

   ѥ顢֥顢Ŭ󥱡ǥ
   ֡R0C40008XSW06R
   СV.6.1.2
   糫ȯĶ HEW4.02.00.022

ޤ¾ˤⲼΥġ뤬ɬפˤʤ롣
   Visual C++6.0ޤVisual C++ .NET
   ե졼ӥɤ뤿ɬפȤʤ롣

   WindowsΥޥɡץץȤưPerl
   4.3 (1)κȤǻѤ롣
   Active Perl v5.8.8
       ۸http://www.ActiveState.com

4. 2  ե졼Υӥ

jsp/cfgǥ쥯ȥʲΤˤ륳ե졼ӥɤ롣
ӥˡ
jsp/cfg/vc_project/make.vbs¹Ԥ롣
Visual C++ѤCygwinѤ褬ΤǡVisual C++Ѥ
򤹤롣

ܤjsp/doc/windows.txt򻲾ȡ

4. 3  ץץΥӥ
(1) Ķ
PerlΥ󥿥ץ꥿ؤΥѥԤ

(2) HEWǤΥӥ

ڡե򳫤
jsp/tools/H8S-RENESAS/H8S-RENESAS.hws
ڡȥǥ쥯ȥ꤬ۤʤݤηٹ𤬽Ф뤬̵뤹롣

 ġΥС󤬰ۤʤݤηٹ𤬽Ф
嵭ΥСŤġǤư̤ǧǤ롣

Υڡˤ4ĤΥץȤϿƤ롣
offsetTCB¤ΥեåȤ롣
ͥ륽ɤAPI˥ԡ롣
libkernelͥ롦饤֥ΥӥɤԤ
configurationͥ롦ե졼󡢥٥ơ֥
ưԤ
sampleץ롦ץꥱΥӥɤԤ

ץȤΰ¸طΤᡢʲν֤ǥӥɤ롣
libkernelץȤ򥢥ƥ֥ץȤꤹ
libkernelץȤӥɤ
sampleץȤ򥢥ƥ֥ץȤꤹ
sampleץȤӥɤ

12Ϻǽ1ΤߤǤ褯ץꥱʬΤߥ
ɤѹϥӥɤɬפϤʤ
configurationץȤoffsetץȤϰ¸ץ
ȤȤƼưŪ˥ӥɤ롣

sampleץȤΥӥɤȡ
¹ԥե롡sample1.abs
S쥳ɥե롡sample1.mot
褦ꤷƤ롣

ա
libkernelΥӥɤoffsetץȤӥɤɬפ뤬
ץȴ֤ΰ¸طꤷƤsampleץȤȤ
ʰ¸طͥȤƤˤǼ¹ԤʤΤǡư
libkernelץȤͽӥɤƤ


(3) åȡܡɤΥ

ܡɤǥХåġΥޥ˥奢򻲾ȡ


5.  ե빽

5. 1  ǥ쥯ȥꡦե빽

   (1)   config/h8s-renesas/

            cpu_config.c     H8Sץå¸Cؿ
            cpu_config.h     H8Sץå¸ι
            cpu_config.inc 嵭Υ֥
            cpu_context.h    H8Sץå¸Υƥ
            cpu_defs.h       H8Sץå¸Υץꥱ
            cpu_insn.h       H8Sץåü̿δؿ
            cpu_support.src  H8SץåΥ֥ؿ
            cpu_rename.def   ͥ̾Υ͡Ȥβ
             ꥹ
            cpu_unrename.h   ͥ̾Υ͡
            cpu_rename.h     ͥ̾Υ͡
            cpu_unrename.h   ͥ̾Υ͡
            cpu_rename.inc 嵭Υ֥
            h8s.h            H8Sץåζ
            h8s2339f.h       H8S/2339Fץå
            h8s2339f.inc     嵭Υ֥
            h8s_sil.h    H8S쥸롼
            h8s_sil.h    DDR쥸롼
            start.src        ȥåץ⥸塼
            tool_config.h    H8SץåγȯĶ¸⥸塼
            tool_defs.h      H8SץåγȯĶ¸

            makeoffset.c     offset.incݡѥե
            vector_header.src ߥ٥ơ֥Υإåʬ
            
            util.h       ӥåֹʤɤ
            util.inc     嵭Υ֥

            hw_serial.cfg    SCIΥե졼ե
            hw_serial.h      SCIι
            hw_serial.c      SCIδؿ
            h8s_sci.hꥢɥ饤СPDIC
            h8s_sci.cꥢɥ饤Фδؿ
            
            hw_timer.h       TPUι
            h8s_tpu.hޥɥ饤СPDIC

   (2)   config/h8s-renesas/minet_h8s_2339f/
           ()ߥ MiNET-H8S/2339Fܡɤΰ¸ʬ

            minet_h8s_2339f.hMiNET-H8S/2339Fܡɰ¸
            sys_config.c     MiNET-H8S/2339Fܡɰ¸Cؿ
            sys_config.h     MiNET-H8S/2339Fܡɰ¸ι
            sys_config.inc 嵭Υ֥
            sys_defs.h       MiNET-H8S/2339Fܡɰ¸Υץꥱ
             
            sys_support.src  MiNET-H8S/2339Fܡɰ¸Υ֥ؿ
            sys_rename.def   ͥ̾Υ͡Ȥβ
             ꥹ
            sys_rename.h     ͥ̾Υ͡
            sys_unrename.h   ͥ̾Υ͡
            sys_tool_defs.hǥХåĶ¸
            
            ʲϡ桼Խɬפե
            user_config.h桼ե졼
            user_config.inc嵭Υ֥

   (3)   utils/
   ӥɤɬפʥ桼ƥƥ

          h8/  gccǤȶ̤Υץ
            grep_def_inh.pl Perlץѥե륿
           
          h8-renesas/H8C¸ΥץȡH8ץåȶ̡
            copy_kernel_source.bat
             ͥΥɤAPI˥ԡ
             Хåե

            genoffsetTCB¤ΥեåȤ򻻽Ф
             perlץ

            genvector.pl ٥ơ֥ѥץ

          h8s-renesas/H8C¸Υץ
            gen_intentry.plѥץ

   (4)   tools/H8S-RENESAS/
           HEW4.0ѤΥڡǥ쥯ȥ
           ()ߥ MiNET-H8S/2339F

            readme.txt
            ӥɼ򼨤readmeե
            H8S-RENESAS.hws
            ڡե
            sample1.cfg
            ץ롦ץꥱΥե졼
            ե
            sample1.c
            ץ롦ץꥱC쥽ե
            sample1.h
            ץ롦ץꥱΥ󥯥롼ɡե

   (5)   tools/H8S-RENESAS/offset/
   ʲνԤץȡǥ쥯ȥ
   TCB¤ΥեåȻ
   ͥ롦ɤAPI˥ԡ
   
           call_copy_kernel_source.bat
           copy_kernel_source.batƤӽФΥХåե

           call_genoffset.bat
           genoffsetץȤƤӽФΥХåե

   Debug/     ǥХåѥӥɥǥ쥯ȥ
   offset.incTCB¤Υեåե

   Release/   ǥХåѥӥɥǥ쥯ȥ
   offset.incTCB¤Υեåե

   (6)   tools/H8S-RENESAS/libkernel/
   ͥ롦饤֥ΥӥɤԤץȡǥ쥯ȥ

   kernel_source/ ֥եǼǥ쥯ȥ

   (7)   tools/H8S-RENESAS/configuration
   ͥ롦ե졼Ԥץ
   ǥ쥯ȥ
   
           call_configuration.bat
           ե졼ƤӽФΥХåե

   Debug/     ǥХåѥӥɥǥ쥯ȥ
   kernel_id.h   IDưդե
   debug_kernel_cfg.c  ե졼νϷ
   debug_vector.src    ư줿ߥ٥ơ֥

   Release/   ǥХåѥӥɥǥ쥯ȥ
   kernel_id.h   IDưդե
   relase_kernel_cfg.c ե졼νϷ
   release_vector.src  ư줿ߥ٥ơ֥

   (8)   tools/H8S-RENESAS/sample
   ץ롦ץꥱΥӥɤԤץȡǥ쥯ȥ
   

6. ץꥱȯԸξ

ץꥱȯԤͭפȻפˤĤƽҤ٤롣

6.1 ͥѹˡ

H8S¸Ǥϡ͡ѹưפˤǤ褦սʲΣ
ΥեˤޤȤƤ롣
user_config.hCե
user_config.inc֥ե

桼ϤΣĤΥեΥޥѹǡͥ
եɤޤʤƤ⤢٤ޤǥͥѹǤ롣
ܤˤäƤCѤȥ֥Ѥξɬפˤʤ
ա

ʲեγƥޥΰ̣Ҥ٤롣

Ū

(1) SUPPORT_CHG_IPM
chg_ipm򥵥ݡȤ뤫ɤ
ե롧user_config.huser_config.inc

(2) SUPPORT_VXGET_TIM
vxget_tim򥵥ݡȤ뤫ɤ
ѹϡեʬٹԤɬפ롣
ե롧user_config.h

(3) STACKTOP
󥿥ƥѥåݥ󥿤ν
ե롧user_config.inc

(4) MAX_IPM
ͥ뤬ߤκǹͥ٥
ͥγ  ߥ٥뤬MAX_IPM ʲγ
ͥγ  ץ饤ƥ٥(MAX_IPM+1)
ʾγߤNMI

ե롧user_config.h, user_config.inc


ꥢݡȴϢ

(1) TNUM_PORTTNUM_SIOP
ݡȤ륷ꥢǥХοʺ 3
  TNUM_PORT : ꥢɥ饤Сserial.cˡĤޤ GDIC٥ǥݡ
  륷ꥢݡȤο 
  TNUM_SIOP : PDIC٥ʥץå¢SIOˤǥݡȤ륷ꥢI/O
  ݡȤοʸߤμǤϺ3

ե롧user_config.h

ʲݡ2TNUM_PORT2ꤷΤͭǤ롣
Ʊͤ˥ݡ3TNUM_PORT3ꤷΤͭǤ롣
(2) BAUD_RATE0BAUD_RATE1BAUD_RATE2
SCI0, SCI1, SCI2Υܡ졼 [bps]
ե롧user_config.h

(3) SCI0_INT_LVLSCI1_INT_LVLSCI2_INT_LVL
SCI0, SCI1, SCI2γߥץ饤ƥ٥
ե롧user_config.h

(4) LOGTASK_PORTID
ƥϤ륷ꥢݡֹ
ե롧user_config.h

(5) POL_PORTID
٥ϡʥݡ󥰽ϡˤѤ륷ꥢݡֹ
ե롧user_config.h

(6) OMIT_SCI0
Υޥȥꥢɥ饤ФSCI0ά롣
MiNET-H8S/2339F¸ǤϥǥեȤǤΥޥƤ롣
ե롧sys_tool_defs.h


޴Ϣ

(1) TIC_NUMETIC_DENO
ƥåμʬҡʬ
ե롧user_config.h

(2) TPU0_INT_LVL
޳TPU0Υץ饤ƥ٥
ե롧user_config.h

¹ԴĶ˴ؤ

ʲΥޥϳȯĶΥ֥顦ץȤΤ
ɸȤ롣
ʥǥХåӥɤȥ꡼ӥɤڤؤ롣

(1) RAM
ǥХåĶǥץबRAM˥ɤ뤫ݤ
ΥޥƤϥȥåץ롼ǥХơȥ
ȥν򥹥åפ롣

(2) USE_DEBUGGER
ΥޥƤϥǥХåǼ¹Ԥ뤳Ȥ̣exr
TӥåȤθ롣


6.2 ץꥱ󶡤뵡ǽ

H8S¸Ǥϥץꥱȯ䤹뤿ᡢʲεǽ󶡤
Ƥ롣

6.2.1Ԥ

¸sil.hǥץȥƤsil_dly_nseؿϰ
UINTǤꡢint2ХȤǤ뤳νϤǤ65secޤǤɽ
ǤʤĹԤԤᡢUWѹ̴ؿ
sil_dly_nse_longѰդƤ롣ɤnsecñ̤Ԥ֤ꤹ롣
t_services.hs_services.h򥤥󥯥롼ɤ뤳Ȥˤcpu_defs.h
ơѤǤ롣

CAPI
void sil_dly_nse_long(UW dlytim);

ڥѥ᡼
	UW dlytim Ԥ[nsec]

ڥ꥿ѥ᡼
	ʤ

ڥ顼ɡ
	ʤ

ڵǽ

եȥ롼פˤԤԤ
Ʊͤεǽ󶡤sil_dly_nseؿϺ65secޤԤ֤
ΤФơsil_dly_nse_longؿ4.3secޤǻǤ롣

6.2.2I/OݡȤDDR쥸ؤΥǽ

H8SI/OݡȤΥǡǥ쥯󡦥쥸DDRϽ񤭹ѤǤꡢ
ΤޤޤǤϽ˾ΥӥåȤѹ뤳ȤǤʤ
bset,bclr̿ǤԲġ
ޤͥΥȥåץ롼Ǥ⤤ĤDDR쥸Ф
ԤäƤ뤿ᡢΤޤޤǤϥͥȥץꥱδ֤
ݤĤȤǤʤ
ΤᡢܼǤϡ˥ƥݥѰդơDDRθͤ
ˡΤäƤ롣ݡֹIO_PORT_IDtypedefƤꡢ
IO_PORT1IO_PORTGΤΤ줫ꤹ롣ʥݡ4ѤΤᡢ
DDR쥸ʤΤǷ֤ȤƤ롣˥ݡֹȤơʳ
ͤꤷassertʸǥ顼Ȥʤ롣

(1) sil_reb_ddrDDR쥸ɤ߽Ф

CAPI
UB sil_reb_ddr(IO_PORT_ID port);

ڥѥ᡼
	IO_PORT_ID portݡֹ

ڥ꥿ѥ᡼
	DDR쥸

ڥ顼ɡ
	ʤ

ڵǽ

portǻꤵݡֹDDR쥸ͤɤ߽Ф

(2) sil_wrb_ddrDDR쥸ؤν񤭹

CAPI
void sil_wrb_ddr(IO_PORT_ID port, UB data);

ڥѥ᡼
	IO_PORT_ID portݡֹ
	UB data      񤭹

ڥ꥿ѥ᡼
	ʤ

ڥ顼ɡ
	ʤ

ڵǽ

portǻꤵݡֹDDR쥸data񤭹ࡣ

(3) sil_anb_ddrDDR쥸AND黻

CAPI
void sil_anb_ddr(IO_PORT_ID port, UB data);

ڥѥ᡼
	IO_PORT_ID portݡֹ
	UB data      AND黻Ԥ

ڥ꥿ѥ᡼
	ʤ

ڥ顼ɡ
	ʤ

ڵǽ

portǻꤵݡֹDDR쥸ФơdataȤAND黻
Ԥ

(4) sil_orb_ddrDDR쥸OR黻

CAPI
void sil_orb_ddr(IO_PORT_ID port, UB data);

ڥѥ᡼
	IO_PORT_ID portݡֹ
	UB data      AND黻Ԥ

ڥ꥿ѥ᡼
	ʤ

ڥ顼ɡ
	ʤ

ڵǽ

portǻꤵݡֹDDR쥸ФơdataȤOR黻
Ԥ


7. ͥܿԸξ

H8S¸¾Υåȡܡɤؤܿݤɬפʾʲ
Ҥ٤롣

7.1 ޥ

(1) HARDWARE_INIT_HOOK
ȥåץ롼󤫤ϡɥ¸νƤӽФȤϡ
Ƭɥ쥹ޥ롣
GNU ldPROVIDE̿Ʊεǽʤ
ե롧sys_config.inc

(2) SOFTWARE_INIT_HOOK
ȥåץ롼󤫤饽եȥĶä˥饤֥˰¸ν
ƤӽФȤϡƬɥ쥹ޥ롣
ե롧sys_config.inc

(3) SOFTWARE_TERM_HOOK
atexit( )ƤӽФƤϡδؿ̾ޥ
롣atexit( )Ǥ
СƤӽФ
  ʤС⤷ʤʶ
ե롧sys_config.h

(4) H8S_BASE_ADDR
¢쥸Υɥ쥹ξ2Х
衢CPUư⡼ɤΡޥ⡼ɤˤǤ褦ĥƤ롣
ե롧sys_config.inc

(5) SIL_DLY_TIM1, SIL_DLY_TIM2
sil_dly_nse_longsѤ
ե롧sys_config.inc

(6) SYS_SYSCR
SYSCRν
ե롧minet_h8s_2339f.h

(7) CPU_CLOCK
ץå˶뤵륯åȿ [Hz]
ե롧minet_h8s_2339f.h

(8) TIMER_CLOCK
ޤ˶뤵륯åȿ[kHz]
ե롧minet_h8s_2339f.h

ʲΥꥢϢΥޥϡåȿȥܡ졼Ȥޤ
ͤǤꡢץꥱץޤ鱣ä뤿ᡢminet_h8s_2339f.h
Ƥ롣
user_config.hȡ桼ˤȤäѻˤʤ롣

(9) BRR0_RATE, BRR1_RATE
ꥢݡȤBRR쥸

(10) SCR0_CKS, SCR1_CKS
SCR쥸CKS0,CKS1ӥå

(12) DDR롼Τ

(a) DDR쥸Υɥ쥹
DDR쥸Υɥ쥹ʲΥޥ̾P1DDRPGDDR롣
ե롧sys_config.h饤󥯥롼ɤե
h8s2xxxf.hΤɸȤ롣

(b) DDR쥸ν
ȥåץ롼¹ľDDR쥸ͤޥ̾
P1DDR0PGDDR0롣
ե롧minet_h8s_2339f.h

7.2 ӥѤΥץȤˤĤ

(a) jsp/tools/H8S-RENESAS/configuration/call_configurator.bat

HEWǤϡʥڡǥ쥯ȥγˤ˳ġХ
ǸƤӽФʤᡢΤ褦ʥХåե𤷤ơ
ե졼
Perlץ
ƤӽФƤ롣
ʲxxxʬܿκݤѹɬפ롣

ƥ¸Υǥ쥯ȥ̾
cfg.exe -s %1 -c -obj -cpu h8s -system xxx
xxxˤϥƥ¸Υǥ쥯ȥ̾롣

٥ơ֥Υ
genvector.pl -s xxx
xxxˤϥ٥ơ֥Υ롣

ޤĶˤäƤPerlΥ󥿥ץ꥿ؤΥѥɬפˤʤǽ
롣

(b) jsp/utils/h8s-renesas/genvector.pl

٥ơ֥ΤPerlץgenvector.plλ
  -s n		٥ơ֥Υ
  		nꤷƤꡢʳΰͿ줿
  		ư̤Ǥ롣

(c) vector.srcѤƤޥλ

C롼δؿ̾뤿ΥޥINTHDR_ENTRY
ѰդƤ롣ץgenvector.plϡintmaskͤintmask.inc
****_intmask̾ǥޥƤȲꤷƤ롣

ڥ֥ǤAPI
INTHDR_ENTRY c_routine

ڥѥ᡼
c_routineC롼δؿ̾

Ÿ̡
ߤ

ڵǽ
C롼δؿ̾롣


٥ơ֥vector.srcˤޤȤ᤿̡٥
_kernel_****_entryϥХ˸ɬפʤʤäᡢ
٥ȤƤ롣ȼʤcpu_config.hINT_ENTRYޥǤ϶
ȤΥ󥿡ե碌뤿ᡢߡΥ٥̾ѤƤ롣


8. »

ۥȥޥOS
Windows9xϤϥݡȤʤ

ե졼Υå(chkˤϼƤʤ

HEW󶡤쥸եˤбƤʤ
gccǤȥǥХɥ饤Фͭ뤿

64ӥåϥݡȤʤ
ʽϤ»

л֤ˤĤ
RELTIM2ХȤΤᡢ1msecñ̤Ǵȡл֤65ä
¤롣RELTIM4ХȤˤjsp/include/itron.hˤ
RELTIMѹ롣

ѹtypedef	UINT RELTIM;            /* л */
ѹ塧typedef	UW RELTIM;              /* л */

atexit νȥǥȥ饯μ¹
(tool_config.hcall_atexit())
¾Ǥϥͥ饤֥ΥӥɤԤʤƤ⡢
software_term_hook()СưŪ˸ƤӽФ褦ˤʤäƤ
ʤäƤ뤬h8s-renesasǤsoftware_term_hook()ؿ̾
ޥSOFTWARE_TERM_HOOKȤͥ饤֥ӥɤ
ɬפ롣
ܤϡ7.1 ޥפΡ(3) SOFTWARE_TERM_HOOKפ򻲾ȡ


9. ջ

ƥǽˤĤ
int2ХȤΤᡢƥǽ(syslog, syslog_n)%d, %u, %x,
 %XˤɽǤ2ХȥǡɽǤʤ2ХȤ礭
ǡɽϡ%ld, %lxѤ롣



ѹ

'05/12/09 ݡȳ

'05/12/28 Release1.4.2

'07/03/xx  Release1.4.3

٥ơ֥뼫ư
perlץȤgccǤȴ˶̲
0٥б
٥ΰåɲ
βԥɤΰ㤤б
DEF_INHʸǲԤȥѡ˼Ԥ
filter1.plfilter2.pl򣱤ĤˤޤȤᡢgrep_def_inh.pl˲̾
gccǤHEWǤǸ̤filter2.plѰդɬפʤʤä
ܿθơgenvector.plν򣲤Ĥʬ
genvector.pl٥ơ֥H8Ǥȶ̲
gen_intentry.plߤINTENTRYˤ
 ȼʤgrep_def_inh.plȤΥ󥿡եѹ
ӥɼ
ͥ롦饤֥ؿñ̤˥󥯤Ǥ褦ӥɼѹ
ˤꡢХåե뤫饳ѥθƤӽФפˤʤä
APIΥե륳ԡ˥ХåեѤ
̵Ѥʥå̤ɽ뤿ᡢperlǽ
褦ѹ
ReleaseӥɤǺŬץꤵƤʤäߥ
HEWǥץȤɲáԤȥӥɥץ
˻ˤʤꡢꤷ˺Ƥ
ü쥸ϽΥ饤֥ѹ
ꥢɥ饤
SCI2򥵥ݡȡʺTNUM_PORT=3
POL_PORTID
SILΥ֥ؿ򵡼¸
ѥηٹ򤹤뤿
DDR쥸롼
I/OݡȤܿTNUM_IO_PORTh8s23xxf.h˰ư
TNUM_IO_PORTͤ
ץץ
'Z'ޥ
ľkernel_exit()Ƥǡץཪλ

