
	     TOPPERS/JSPͥ 桼ޥ˥奢 
    		    H8S åȰ¸

	    Release 1.3 бǽ: 13-Apr-2001

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

 Copyright (C) 2000-2002 by Embedded and Real-Time Systems Laboratory
                             Toyohashi Univ. of Technology, JAPAN
 Copyright (C) 2001,2002 by Dep. of Computer Science and Engineering
                    Tomakomai National College of Technology, JAPAN
 Copyright (C) 2001,2002 by Industrial Technology Institute,
                             Miyagi Prefectural Government, JAPAN

 嵭ԤϡFree Software Foundation ˤäƸɽƤ
 GNU General Public License  Version 2 ˵ҤƤ狼
 (1)(4)ξ˸¤ꡤܥեȥܥեȥ
 ѤΤޤࡥʲƱˤѡʣѡۡʰʲ
 ѤȸƤ֡ˤ뤳Ȥ̵ǵ롥
 (1) ܥեȥ򥽡ɤηѤˤϡ嵭
     ɽѾ浪Ӳ̵ݾڵ꤬Τޤޤηǥ
     ˴ޤޤƤ뤳ȡ
 (2) ܥեȥѲǽʥХʥꥳɡʥ֥륪
     ȥե饤֥ʤɡˤηѤˤϡ
     ȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭ɽ
     Ѿ浪Ӳ̵ݾڵǺܤ뤳ȡ
 (3) ܥեȥԲǽʥХʥꥳɤηޤϵ
     ߹ѤˤϡΤ줫ξȡ
   (a) ѤȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭
       ɽѾ浪Ӳ̵ݾڵǺܤ뤳ȡ
   (b) Ѥη֤̤ˡˤäơ嵭Ԥ𤹤
       ȡ
 (4) ܥեȥѤˤľŪޤϴŪ뤤ʤ»
     ⡤嵭Ԥդ뤳ȡ

 ܥեȥϡ̵ݾڤ󶡤ƤΤǤ롥嵭Ԥϡ
 ܥեȥ˴ؤơŬѲǽޤơʤݾڤԤ
 ʤޤܥեȥѤˤľŪޤϴŪ
 ʤ»˴ؤƤ⡤Ǥʤ

 @(#) $Id: h8s.txt,v 1.3 2002/04/13 13:13:01 imai Exp $
------------------------------------------------------------------------


ΥɥȤǤϡTOPPERS/JSPͥ H8SǤˤĤƲ⤹롣



1H8SåȰ¸γ

1.1åȥƥȳȯĶ
	H8SץåΥåȥƥϡH8S/2350ܤʲΥ
ɤ򥵥ݡȤƤ롣
 ߥ MISPO H8S/2350 EVA
	ȯĶˤϡΩ󥸥˥󥰳H8SH8/300꡼
C/C++ѥV3.0A)ѤƤ롣

1.2ݡȤ뵡ǽγ
	ǽɾѥƥﻲȵǽ(vxget_tim)ߥޥѹ
(chg_ipm,get_ipm)ϥݡȤƤ뤬ߤζػߤȵ(dis_int,
ena_int)ϸǤϥݡȤƤʤ(2.2.4ڤ3.2ȡ)

1.3¾ΥåȤؤΥݡƥ
	H8S꡼ǤСݡƥ󥰤ưפ˽Ȼפ뤬
H8S/2350ʳĴƤʤ

1.4ꥢݡ(SCI)
	H8S/2350SCI0SCI12ܤΥꥢݡȤꡢsys_config.h
ƤNUM_PORTˤ겿ܻѤ뤫Ǥ뤬ߤμ
ϡ1ܤΤ߻ѽ롣JSPͥΥѤˤϡSCI0Ѥ
롣ꥢݡȤʲ˼
		ܡ쥤ȡ9600[bps]
		ǡĹ8ӥå
		ȥåץӥåȡ1ӥå
		ѥƥʤ



2H8Sץå¸εǽ

2.1ǡ
	intڤunsigned intΥϡ16ӥåȤǤ롣H8S,H8/300
꡼C/C++ѥV3.0A)Ǥint16ӥåȸǤꡢ
ѥ륪ץˤäơ32ӥåȤѹ뤳ȤϤǤʤ
ݥ󥿤Υϡ32ӥåȤǤ롣
VP_INT32ӥå
VP32ӥå
intΥȥݥ󥿤ΥۤʤϡդɬפǤ롣
  㤨СγĥϡVP_INTϤΤǡintϤ
ˤϡ顼Ȥʤ롣

ޤ64ӥåϻѤǤʤˡʲΥǡϻ
Ǥʤ
D(դ64ӥå)
UD(̵64ӥå)
VD(ǡפޤʤ64ӥåȤ)

2.2ߴǽȳߥϥɥ
	ͥγߤNMIΤߤǤ롣CPUå֤롼
ǤNMIʳγߤƶػߤ롣ŪˤϡIPM(Interrupt 
Priority Mask)7ꤵ롣

2.2.1⡼
	H8S/2350Ǥϡ⡼0ȥ⡼22Ĥγ⡼ɤǤ
ʳǤϡ⡼2Τߤ򥵥ݡȤƤ롣

2.2.2٥ơ֥εˡ
	H8S/2350Ǥϡ٥ơ֥ϸǤꡢROMΰ㳰٥
ơ֥֤Ƥ롣Τˡ㳰Υ٥ϡ
     sys_support.srcľܽ񤭹ɬפ롣㳰Υ
     ̾ϡʲΤ褦ꤹɬפ롣
㳰C롼̾*******
㳰Υ٥̾_*******_entry
	ŪˤϡSCI(ꥢ륳ߥ˥󥤥󥿡եˤγ
      ߤˤơߤC롼̾serial_in_handlerǤ硢
      ٥ơ֥˵Ҥ뤽Υ٥̾ϡ
      _serial_in_handler_entryȤɬפ롣
	ޤROMΰˤ㳰٥ơ֥ƤưŪѹ뤿
ˤϡ̤ˡɬפǤ뤿ˡߥϥɥؿ
define_inhCPU㳰ϥɥؿdefine_excϡ⤷ʤؿ
ʤäƤ롣

2.2.4ߥޥѹȤΤΥӥˤĤ
	   1.2ˤ⵭ܤ褦ˡH8S¸εǽȤơ⡼ɤ⡼
	2ξˡEXR(ƥɥ쥸)γߥޥӥå(I2I0)
         ͤѹ뤿Υӥchg_ipmȡȤ뤿Υ
         get_ipm򥵥ݡȤƤ롣ʤߥޥӥåȤͤ
         ǡIPMϡUB(̵8ӥå)Ƥ롣
        ΥӥϡƥȤCPUå
ξˤΤ߸ƤӽФȤǤ롣chg_ipmˤIPM0ʳˤ
(餫γߤػߤƤ)Ǥ⡢ǥѥå϶ػߤ
chg_ipmˤѹIPMͤϡǥѥåΥ˰
롣
	chg_ipm򥵥ݡȤ뤿ˡߥϥɥνʤɤ
СإåɤƤ롣ʳǤϡΥӥ
ѤˤбƤʤϡSUPPORT_CHG_IPM
ޥѰդΥӥ򥵥ݡȤ뤫ɤ
ؤ褦ˤƤˤǤ롣SUPPORT_CHG_IPMϡ
cpu_config.hǥޥƤ뤬Υޥ򳰤Ƥ⡢
ʳǤϡߥϥɥνʤɤΥСإåɤϲ
ʤ
H8S¸γߥޥѹȤΤΥӥλͤ
ʲ̤Ǥ롣

1)chg_ipm		ߥޥѹ
CAPI
ER ercd = chg_ipm(IPM ipm);
        ڥѥ᡼
IPMipm	ꤹ٤IPM
ڥ꥿ѥ᡼
ERercd顼
ڥ顼ɡ
E_CTXƥȥ顼
E_PAXѥ᡼顼(ipm)
ڵǽ
IPM(Interrupt Priority Mask)ipmǻꤷͤꤹ롣
ͤ06ʳξ硤E_PAR顼Ȥʤ롣IPM0ʳ(1MAX_IPM-1)
ꤷǤ⡢ǥѥå϶ػߤʤޤꤷ
IPMͤϡǥѥåػ߸Ѥ롣
ΥӥϡƥȤCPUå֤
Τ߸ƤӽФȤǤ롣󥿥ƥȤCPUå
ǸƤӽФˤϡE_CTX顼Ȥʤ롣
ʤΥӥѤơIPMMAX_IPM(Ƥγߤ
ػ)ꤹ뤳ȤϤǤʤIPMMAX_IPMˤˤϡ
loc_cpuѤ٤Ǥ롣

(2)get_ipm		ߥޥλ
CAPI
ER ercd = get_ipm(IPM *p_ipm);
        ڥѥ᡼
ʤ
ڥ꥿ѥ᡼
ERercd   顼
IPMipm   ߤIPM
ڥ顼ɡ
E_CTXƥȥ顼
ڵǽ
ߤIPM(Interrupt Priority Mask)ͤɤ߽Фipm֤
ΥӥϡƥȤCPUå֤Τ
Τ߸ƤӽФȤǤ롣󥿥ƥȤCPUå
ǸƤӽФˤϡE_CTX顼Ȥʤ롣

2.3ȥåץ⥸塼
	H8S¸Υȥåץ⥸塼(start.src)ϡ˼
Ԥ塢ͥ(kernel_start)ư롣âkernel_start
äƤ뤳ȤꤷƤʤ
(1)åݥ󥿤
(2)hardware_init_hookθƤӽФ
hardware_init_hook0ǤʤСhardware_init_hook
ƤӽФhardware_init_hookϥͥư
ˡåȰ¸ΥϡɥŪʽԤ
ѰդƤ롣ܼǤϡ⡼ɤ
¢RAM̵ꡢХȥΥȥ
	ȥ쥸Хȥ쥸ꡢI/O
		ݡȤΥХ濮üҤԤäƤ롣
hardware_init_hookɤǤƤʤˤϡ
Υܥ0롣
			  (hardware_init_hook򼫺ˤϡrts꥿
			̿Ǥʤjmp̿start_1
(3)bssν
bssΰ0ꥢ롣
(4)dataν
dataRAMž롣
(4)software_init_hookθƤӽФ
software_init_hook0ǤʤСsoftware_init_hook
                          ƤӽФsoftware_init_hookϥͥư
                            եȥĶ(饤֥)¸νԤ
ѰդƤ롣㤨С饤֥ν
롣software_init_hookɤǤƤʤ
ˤϡΥܥ0롣(start.src
˵Ҥ)

2.4ȯΥå̤ˤĤ
ʲͳˤꡢƥåϥȤѤʬ˲äƺ
98Х;ʬѰդɬפ롣
JSPͥǤϡå¾˳ߥåѰդ󥿥
ƥȤϳߥåǼ¹Ԥ롣
H8Sϳ߼ջ˳߶ػߤˤʤ뵡ϡɥѰդƤ
ΤˡߤǥեȥˤäƳ߶ػߤˤɬ
פ롣Ǥϡ߶ػߤ˰ܹԤ뤿(ߵĤξ֤ǡ
åer0,er1򤵤롣(PC(ץ५)CCR(ǥ
󥳡ɥ쥸)EXR(ƥɥ쥸)ϳ߼ջ˥ϡɥ
ưŪԤ)
ΤȤ¿ųߤȯȳߥåڤؤƱͤΥ
졼बå롣H8Sϳߤ7ʤΤǡǰΥߥ
ǳߤȯȡå98ХȾ񤵤롣
er1(4Х),er0(4Х),EXR(1Х),CCR(1Х),
  ꥶ(1Х),PC(3Хȡ̥ɥХ󥹥⡼ɤξ),
Ǥ롣äơ14Хȡ7å=98Х)



3ƥ¸εǽ

3.1ƥ९åɥ饤
ƥ९åɥ饤Фisig_timƤӽФϡsys_def.h
TIC_NUMETIC_DENOƤꡢǥեȤǤ1müǤ롣
ѹ뤳Ȥǡisig_timƤӽФѹǤ롣â
ޤ٤1äǤ뤿ˡ1ñ̤üˤʤͤꤷ
ˤϡisig_timθƽФ˸뤳Ȥˤʤ롣ǥեȤǤ
H8S¢ޤΥͥ0ѤƤ롣

3.2ǽɾѥƥﻲȵǽ
H8S¸Ǥϡǽɾѥƥ໲ȵǽ(vxget_tim)򥵥ݡȤ
롣٤1äǡSYSUTIMUW(32ӥåʤ)Ǥ롣
(64ӥåʤϻѤǤʤᡣ2.1ǡ򻲾ȡ)

3.3ꥢ륤󥿡եɥ饤
ꥢ륤󥿡եɥ饤ФϡH8S¢SCIΥͥ0򥵥
ȤƤꡢͥΥѤ˻ѤƤ롣

3.4ޥå
ޥåפϰʲΤ褦ꤷƤ롣
0x000000 - 0x01ffff  :  ΰ(128kB)
0x200000 -           :ǡΰ(128kB)
		 0x21ffff  :  󥿥ƥѤΥåΰ
   	  ¢RAMϡ߻ѤƤʤѤˤϡhardware_init
_hook¢RAMͭˤɬפ롣(2.3 (2)򻲾ȡ)



4ȯ

4.1ȯĶ
        ȯĶˤϡΩ󥸥˥󥰳H8SH8/300꡼
C/C++ѥV3.0A)ѤƤ롣
	ޤǥХåΤˡWatchpoint MultiSTAC H8S/2000,2600(Ver2.3.0)
ѤƤ롣
4.2ȯĶι
	CygwinDOSʻѤ롣
(桼ޥ˥奢(user.txt)Υץץιۤ򻲾ȡ)
    CygwinǼ¹ԡ
	ʲ<OBJ>ǥ쥯ȥϥץꥱ򥳥ѥ뤹
	ȥǥ쥯ȥɽ
	1.ץץι
                  %mkdir <OBJ>
                  %cd <OBJ>
                  %../configure -C h8s -S mispo_h8s -m
                    (-mե졼makeԤʤ)
2.ե졼(cfg.exe)
	          ˡjsp/cfg
%make -f Makefile.h8s-mispo_h8s  cfg
		ΩѥѤΡե졼å
ʤ
    DOSǼ¹ԡ
	Ķѿ
path=c:\him\Tools\Hitachi\H8\3_0a_0\bin;D:\cygwin\bin;
D:\cygwin\usr\local\bin;D:\cygwin\bin;%path%
		set CH38=c:\him\Tools\Hitachi\H8\3_0a_0\include
		set CH38TMP=c:\tmp
		set H38CPU=2000a:24
		set HLNK_LIBRARY1=C:\him\Tools\Hitachi\H8\3_0a_0\lib\c8s26a.lib
		cd C:\him\Tools\Hitachi\H8\3_0a_0\jsp_h8s_hitachi\sample

	 3.DOSץץȤˤꥳѥ뤹
		  %cd <OBJ>
		  %make

4.3 Makefileν
	(桼ޥ˥奢(user.txt)7.5Makefileν򻲾ȡ

	ΩCѥǤϡѥѤΥޥɥ饤󥪥ץȥ
֥ѤΥѥ륪ץ̡ɬפ롣
ˡH8SǤǤϡѥ륪ץɲäκݤˤϡʲѿ
ѹ롣Υѥ륪ץΥåȤǾ
ɬפʾˤϡjsp/config/h8sjsp/config/h8s/mispo_h8sǥ
쥯ȥMakefile.config٤Ǥ롣
	
              ڥѥ뎥֥붦̥ץ
    		INCLUDE -iץ򵭽Ҥ
	ڥѥ륪ץ
CDEFS -defץ򵭽Ҥ
		CFLAGSѥФ뤽¾Υץ򵭽Ҥ
	ڥ֥륪ץ
		ASMDEFS-DEFץ򵭽Ҥ
		ASMFLAGS ֥Ф뤽¾Υץ򵭽Ҥ
	ڥ󥯥ץ
  		LDFLAGS󥫤Ф륪ץ򵭽Ҥ
	ڥ饤֥󥯥ץ
		LIBS 饤֥󥯤ΤΥץ򵭽Ҥ



5»

	ưǧκݤˤϡICEΥߥ졼ѤƤ롣
          64ӥå(D,UD,VD)ϻѤǤʤ(ȼǽɾ
            ѥƥ໲ȵǽ(vxget_tim)ˤƻѤƤSYSUTIMUW
            Ǥ롣)
⡼ɤϡ⡼0ˤбƤʤ
	Ω糫ȯĶˤбƤʤ
ʥե졼ޥɥ饤ѤΤᡣ
          ե졼åϻѤǤʤ
(gccѤΤᡣ)
	make dependϻѤǤʤ(gccѤΤᡣ



6¾

      ʸ
	ɤʸɤEUCǤ롣SJISǤϤʤ



7ǥ쥯ȥꎥե빽

H8SåȰ¸Υեγפϰʲ̤

     config/h8s/
	Makefile.config		MakefileH8S¸
	cpu_defs.h		ץå¸Υץꥱ
	cpu_config.h		ץå¸ι(C)
	cpu_config_asm.h	ץå¸ι(֥)
	cpu_config.c		ץå¸δؿ
	cpu_support.src		ץå¸Υ֥롼
	cpu_context.h		ƥ
	makeoffset.c		offset.h ݡȥץ
	cpu_insn.h		٥Υץå롼
	start.src		ȥåץ⥸塼
	hw_timer.h      	롼
	hw_serial.h        	ꥢݡ롼
	gen_int.pl	  	ߤν
	make_asm_path.pl	֥Υѥ
	make_sub.pl		֥ޥɥեκ
	offset_of.pl		offset.hκ
	bit_of.pl		offset.hκ
	int_header.txt		ߤν
	                        (perlץ(utilsեgen_int.plˤ
	                        äƳߤνݤ˻Ѥ
	                        )
	                        
    config/h8s/mispo_h8s/
	Makefile.config		MakefileH8S/2350EVAܡɰ¸
	h8s_2350.h   		H8S/2350EVAϡɥ(C)
	h8s_2350_asm.h   	H8S/2350EVAϡɥ(֥)
	sys_config.c 		ƥ¸δؿ
	sys_config.h		ƥ¸ι(C)
	sys_config_asm.h	ƥ¸ι(֥)
	sys_defs.h  	 	ƥ¸Υץꥱ
	sys_support.src	 	ƥ¸Υ֥롼
	link.sub	  	󥫥ץ
