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

             Release 1.4.2бǽ: 14-Nov-2005

------------------------------------------------------------------------
 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

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

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

 @(#) $Id: sh1.txt,v 1.25 2005/11/14 08:00:54 honda Exp $
------------------------------------------------------------------------


SH1 åȰ¸γ

1.1 åȥƥȳȯĶ

SH1ץåΥåȥƥȤƤϡSH7032ܤʲΥܡ
򥵥ݡȤƤ롣

ԥޥԥ塼()KZ-SH1-01(CPU: HD6417032F20)
CQ()RISCɾå SH-1(CPU: HD6417032F20)
()ΦITRONSH1CPUܡ(CPU: HD6417034F20)

ȯĶˤϡGCC ʤɤ GNUȯĶѤ֥ȥեե
ޥåȤ ELF ɸȤ롣

¹ԴĶROM򥵥ݡȤƤ롣Makefile.configǡ
DBGENVROMꤷƤ롣縵MakefileGDB_STUBꤵ
Τɤ


1.2 ݡȤ뵡ǽγ

SH1¸εǽȤơߥޥѹ(chg_ixxget_ixx)ȡ
ǽɾѥƥﻲȵǽ(vxget_tim)򥵥ݡȤƤ롣
ζػߤȵ(dis_intena_int)ϥݡȤƤʤ

1.3 ¾ΥåȤؤΥݡƥ

СǤϡSH7032򥵥ݡȤƤ롣SH꡼SH1,SH2SH3
ߤǤϳߤΰʤۤʤ롣ŪˤSH1SH2ϥ٥ơ֥
Ȥơװ̤Ѱդ줿ߥϥɥʬ롣Ф
ơSH3SH4Ǥϳװˤ餺Ʊγߥϥɥʬ
塢װåȤ줿쥸򻲾Ȥƺ١ʬ롣

1.4 GDB 

TOPPERS/JSP ͥ SH1ǤGDB־ǤΥǥХå򥵥ݡȤƤ롣
ưǧϵԥޥԥ塼()KZ-SH1-01ǹԤä
GDB֤Ȥ߹碌ƻѤ뤳Ȥθơ¾ǤJSPͥ
Ʊͤˡ˥ޥGDB_STUBˤ拾ѥԤ
Ƥ롣¹ԴĶ$(SYS)/Makefile.configѿDBGENVǹԤ
SH1ѤGDB֤ϸߡǤꡢ֤ʤͽǤ롣

1.5 ꥢݡ

ͥΥѤ˥ꥢݡȤ򣱤ĻѤ롣
ꥢݡȤ
8ӥå
ѥƥʤ
ȥåץӥåȡ1ӥå
ܡ졼ȡ
ԥޥԥ塼()KZ-SH1-0138400bps
()ΦITRONSH1CPUܡɡ 9600bps
Ǥ롣


SH1ץå¸εǽ

Ǥϡͥ뤪ӥƥॵӥεǽǡSH1¸ʬ
ˤĤƲ⤹롣

2.1 ǡ

signed intunsigned intsize_tΥϡ32ӥåȤǤ
롥

2.2 ߴǽȳߥϥɥ

ͥγߤȤƤϡ NMI 롣äơCPUå֤
롼ǤϡNMI ʳγߤϤ٤ƶػߤƤ롣Ūˤϡ
IPM(Interrupt Priority Mask) 15 ꤵ롣

ŪGDB֤Ѥ뤳Ȥθơ˰ʲΤ褦
ʵҤޤࡣ
ܡɾ NMI ϤʤåȤΤᡢGDB Υ֤ۥȤ
ޥ̿뤿ΥꥢݡȤͥ٤ 15 ϿGDB 
Ctrl-C 򲡤 ߤꥹ֤椬ܤ褦ˤƤ롣ε
ǽѤ뤿ˤCPUå֤Ǥϡͥ٤ 14 ˤʤ褦ˤʤ
ФʤʤΤᡢCPUåꤵͥ٤ޥ MAX_IPM
ꤷƤ롣MAX_IPM cpu_config.h  #define Ƥ롣
ȤMAX_IPM14ˡ֤ȤʤMAX_IPM15ꤷ
롣

SH1¸εǽȤơSR(Status Register) ߥޥӥå(I3
I0)ͤѹ뤿Υӥ chg_ipm ȡȤ뤿Υ
 get_ipm 򥵥ݡȤƤ롣ʤߥޥӥåȤͤ
ɽǡ IPM ϡunsigned intƤ롣

ΥӥϡƥȤ CPUå֤ξ
ˤΤ߸ƤӽФȤǤ롣chg_ipm ˤ IPM  0 ʳ(ʤ
餫γߤػߤƤ)ˤǤ⡢ǥѥå϶ػߤ
줺chg_ipm ˤѹ IPM ͤϡǥѥåΥ˰
Ѥ롣㤨С륿 IPM  1 ѹ塢餫γߤ
̤ΥڤؤȡڤؤäΥǤIPM1ˤʤ롣

chg_ipm 򥵥ݡȤ뤿ˡߥϥɥνʤɤ˥Хإ
ɤƤ롣ǡSUPPORT_CHG_IPM ȤޥˤꡢΥ
ӥ򥵥ݡȤ뤫ɤڤؤ褦ˤƤ롣
SUPPORT_CHG_IPM ϡuser_config.h  #define Ƥ롣

SH1¸γߥޥѹȤΤΥӥλͤϼ
ꡣ

(1) chg_ipm			ߥޥѹ

CAPI
	ER ercd = chg_ipm(IPM ipm);

ڥѥ᡼
	IPM	ipm		ꤹ٤ IPM 

ڥ꥿ѥ᡼
	ER	ercd		顼

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

ڵǽ

IPM(Interrupt Priority Mask) ipm ǻꤵ줿ͤꤹ롣ꤷ
ͤ 014ʤ013ʳξ硢E_PAR顼Ȥʤ롣IPM 0ʳ
1MAX_IPM-1ˤꤷǤ⡢ǥѥå϶ػߤʤޤ
ꤷ IPM ͤϡǥѥåѤ롣

ʤΥӥѤơIPM  MAX_IPM (٤Ƥγߤػ)
ꤹ뤳ȤϤǤʤIPM  MAX_IPM ˤˤϡloc_cpu 
Ȥ٤Ǥ롣

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

(2) get_ipm			ߥޥλ

CAPI
	ER ercd = get_ipm(IPM *p_ipm);

ڥѥ᡼
	ʤ

ڥ꥿ѥ᡼
	ER	ercd		顼
	IPM	ipm		ߤ IPM 

ڥ顼ɡ
	E_CTX		ƥȥ顼

ڵǽ

ߤ IPM(Interrupt Priority Mask)ͤɤ߽Фipm ֤

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


2.3 CPU㳰ǽCPU㳰ϥɥ

DEF_EXC ǻꤹߥϥɥֹ(excno)ϡSH1 Ǥ ٥ơ֥
Υ٥ֹɽΥǡ(EXCNO) unsigned intƤ
롣DEF_EXC ǡ٥ֹȤͭǤʤͤ䡢CPU㳰бʤ
ꤷưݾڤʤ

CPU㳰ϥɥϤp_excinfϡCPU㳰ȯΥƥȤ¸
åؤΥݥ󥿤Ϥ롣åι¤ʲ˼


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

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

ޤCPU㳰ȯPCͤϥ󥯥Ȥ롣ΤᡢCPU㳰
ɥ餫ԤȡCPU㳰ȯ̿μ̿ᤫ¹ԤƳ
롣



2.4 ȥåץ⥸塼

SH1¸Υȥåץ⥸塼(start.S)ǤϡνԤ

(A) ץå⡼ɤνȥåݥ󥿤ν

ߥޥ MAX_IPM ꤹ롣

ˡåݥ(r15) STACKTOP ꤹ롣ǳߥ
ݥ󥿤ꤵ줿åΰϡͥ뵯ư󥿥ƥ
ѤΥåΰȤƻȤ롣STACKTOP ϡuser_config.h 
뤳ȤꤷƤ롣

(B) hardware_init_hook θƽФ

hardware_init_hook  0 Ǥʤˤϡhardware_init_hook ƤӽФ
hardware_init_hook ϡͥ뤬ư˹Ԥɬפ륿
Ȱ¸νԤѰդƤ롣hardware_init_hook ɤǤ
Ƥʤ硢󥫤ǤΥܥ 0 (󥫥
ץ˵Ҥ)

(C) bss dataν

bss򥼥ꥢ롣ޤdata롣

(D) software_init_hook θƽФ

software_init_hook  0 Ǥʤˤϡsoftware_init_hook ƤӽФ
software_init_hook ϡͥ뤬ư˹Ԥɬפ륽եȥ
Ķ(Ūˤϡ饤֥)¸νԤѰդƤ롣
software_init_hook ɤǤƤʤ硢󥫤ǤΥ
 0 (󥫥ץ˵Ҥ)

(E) ͥεư

kernel_start ʬͥư롣kernel_start ꥿
Ƥ뤳ȤꤷƤʤ


2.5 ȯΥå̤ˤĤ

ʲͳˤꡢƥåϥȤѤʬ˲äƺ
240Х;ʬѰդɬפ롣

JSPͥǤϥå¾˳ߥåѰդ󥿥
ƥȤϳߥåǼ¹Ԥ롣
SH1㳰/߼ջ˳߶ػߤˤʤ뵡ϡɥѰդ
ʤΤᡢߤǥեȥˤäƳ߶ػߤˤ
ɬפ롣Ǥϳ߶ػߤ˰ܹԤ뤿ˡʳߵĤξ
ǡ˥år0,r1򤹤롣SR(Status Register)PC(Program
Counter)ϳ߼դ˥ϡɥưŪԤ
ΤȤ¿ųߤȯȳߥåڤؤƱͤ
ե졼बå롣SH1ϳߥ٥뤬15ʤΤǡ
ǰΥߥ󥰤ǳߤȯȡå240ХȾ񤵤롣
4Хȡ4쥸15åȡ

㳰/ߤΥͥȲΥѤ˥ͥѿintnestѰ
󥿥ƥȤȥƥȤȽ̤Ϥѿˤ
ԤäƤ롣


2.6 MACHMACL (¥쥸
      MACH:Multiply and accumulate high register
      MACL:Multiply and accumulate low register

MACHMACLˤĤƤϡgcc-mhitachiץĤȡؿMACH
MACLѤ硢å¸ƤѤؿȴȸ
ᡢߤǤ¸ƤʤޤǥѥåƤӽФ
ǥѥåϡؿƤӽФˤʤ뤿ᡢθƤӽФˤޤ
ơΥ쥸ȤȤϤʤ¸ƤʤΤᥢ
֥ΥɤѤ⤳Υ롼˽ɬפ롣
ʤߤΥǥѥå(ưŪǥѥå)Ǥ¸Ƥ롣


2.7 GBR (Global Base Register)

gccGBRѤʤᡢߥϥɥǤ¸Ƥʤ
ߥϥɥGBRȤϥץꥱ¦GBR/¸Ԥ
ɬפ롣ޤ嵭MACHMACLƱͳˤꡢǥѥå
ƤӽФˤ¸ƤʤʤߤΥǥѥå(ư
Ūǥѥå)Ǥ¸Ƥ롣



ƥ¸εǽ

3.1 ƥ९åɥ饤

ƥ९åɥ饤Ф isig_tim ƤӽФϡuser_config.h 
TIC_NUME  TIC_DENO Ƥ(ǥեȤǤ 1ߥü)
ѹ뤳Ȥǡisig_tim ƤӽФѹ뤳ȤǤ
롣
ޤ٤ 1äǤ뤿ᡢ1ñ̤üˤʤͤ
ˤϡisig_tim θƽФ˸뤳Ȥˤʤ롣
ǥեȤǤSH1¢ƥ졼ƥåɡޡѥ륹˥å
ITUΥͥ0ѤƤ롣ޥϥɥͥ٤user_config.h
ޥTINTLVL0ȤƤ롣ʥǥեȤǤ4

3.2 ǽɾѥƥﻲȵǽ

SH1¸Ǥϡǽɾѥƥﻲȵǽ(vxget_tim)򥵥ݡȤ
롣ǽɾѥƥ٤ 1ñ̤Ǥ뤬ޤθ
ɤ߽Ф˰Ū˥ޤߤɬפ뤿ᡢvxget_tim 
Ƥ٤˥ƥ९åŤ٤뤳Ȥˤʤ롣ʤSYSUTIM
UD(64ӥåȤ̵)Ƥ롣

3.3 ꥢ륤󥿥եɥ饤

ꥢ륤󥿥եɥ饤ФϡSH1¢SCISerial Communication
InterfaceˤΥͥ0򥵥ݡȤƤꡢͥΥѤ˻
Ƥ롣ꥢߥϥɥͥ٤ӥ顼߶
user_config.hǥޥSCIINTLVLȤƤ롣
ʥǥեȤǤ6


3.4 ޥå

ԥޥԥ塼()KZ-SH1-01
CQ()RISCɾå SH-1

ΣĤΥܡɤϥޥåԥ󥰤ƱʤΤǡ¸Υɤ
̤Ǥ롣CQǤΥܡɤϲΡաפι򻲾ȡ
¸Ǥϡΰ 0x0000,0000  0x0003,ffff256KBǡΰ
0x0a00,0000  256KB󥿥ƥѤΥåΰ 
0x0a03,ffff ˳ݤƤ롣


CQǤRISCɾå SH-1ϥǥեȤ8ӥåȥХROM1ġ
Ǥϡɥ쥹Х³եȤƤ롣ΤᡢROMΥɥ쥹
ȼ¥ɥ쥹פʤ
°ROM˥ʳΥ桼ץROMϡɥ쥹
Х16ӥåȡROM2ġˤѹɬפ롣
ʥܡ°Υޥ˥奢p17򻲾ȡ

()ΦITRONSH1CPUܡ
פFROM,SRAM줾2ढ
FROM
0x0000,0000 - 0x0007,ffff  ΰ(512KB)
0x0000,0000 - 0x0003,ffff  ΰ(256KB)
SRAM
0x0200,0000 -              ǡΰ(512KB)
                - 0x0207,ffff  󥿥ƥѤΥåΰ
0x0200,0000 -              ǡΰ(128KB)
                - 0x0201,ffff  󥿥ƥѤΥåΰ
ΰ0x0000,0000  0x0000,ffffFROMߥץ
¢Ƥ뤿ᡢ񴹲ǽʥΰ0x0001,0000 ȤʤäƤ롣
ޤROMICEѻS3åONˤϡFROMϥꥢ0x0400,0000  
˥ޥåԥ󥰤롣

ȯĶι

ȯĶιˡˤĤƤϡGNUȯĶۥޥ˥奢򻲾Ȥ뤳ȡ
ȯˤWindows2000 SP3 + CygwinѤ
ưǧġΥСϰʲ̤Ǥ롥
    BINUTILS : 2.13.2.1
    GCC-CORE : 2.95.3
    NEWLIB   : 1.8.1ʵԥޥԥ塼()KZ-SH1-01
 1.11.0() SH1CPUܡɡȡ

configure Υץ--target=sh-hitachi-elfǤ롣
ޤWindowsCygwinѤƳȯϡbinutilsconfigureΥ
ץ --disable-nls ꤹ뤳ȡ


() SH1CPUܡɤưǧκݤˤnewlib1.11.0
Ƥ롣newlib1.11.0make˥顼ȯ뤿ᡢnewlibǥ
ȥ겼Ρnewlib/libc\machine/sh/memset.Sפ1ܤ9ܤ
ȥȤƤ롣

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


»

5.1 ƥ।󥿡ե쥤sil_dly_nse()ˤĤ

nsecñ̤λԤԤؿޤϥޥǤ뤬¬Ȥ
1θƤӽФǺǤ2240nsec⤫äƤΤǡȤƤnsecñ̤Ȥ
ʤ֤Ǥ롣ư®٤٤ǥХ˥뤿εǽ
ΤϤʤȻפ롣
¬
ܡɡԥޥԥ塼KZ-SH1-01
åȿ20MHz
Хơȥȥꡧ
ꥢ0꡼ɥWAITˤ륦ȥơʤ
ꥢ0,21ơȥ󥰥
ꥢ3꡼ɥϣơȤǽλ

5.2 SIL_LOC_INT()ˤĤ

SH1ǤǤSIL_LOC_INT()μCPUåƱ¸ˡѤƤ롣
ʳߥåͥȤǤCPUåȰۤʤ롣ˤΤᡢ
SIL_LOC_INT()ǳ߶ػߤƤ֤Ǥϡsns_loc()ڤvxsns_loc()
CPUå֤Ƚ̤Ƥޤ
JSPͥǤϸߥåˤϥӥѤǤʤ
ꤷƤΤǡƶϾʤȻפ롣
jsp/user.txtΡ5.1.1 ߥå֤׻ȡ

5.3 gcc3.xбˤĤ

SH1Ǥgcc3.xϤбƤʤ
SH1Ǥmach쥸10ӥåȤǼʤΤˡϤԶ
ˤؿƤӽФκݤѥ쥸Ȥơȥ쥸˻Ȥ
ƤޤΤᡢ쥸ƤǤʤʤꡢþ롣
JSP̵ͥͭ˴طʤ븽ݤǤꡢgccޤbinutils
ʤбǤʤ
-ffixed-machץ̤Ϥʤä

5.4 褵줿»

ʲ»ϲ褵Ƥ롣

5.4.1 ¹Ԥ٤ʤγԤˤĤ

ǥѥåνиǼ¹Ԥ٤ʤ(schedtsk==NULL˾ϡ
sleep̿ˤäƥץåϥ⡼ɤڤؤƳԤ򤷤
롣cpu_sapport.Sdispatcher_2ն򻲾ȡ

ߵĸsleep̿¹ԤƤ뤿ᡢߵ̿μ¹˳
׵᤬äƤʤ뤤ϳߵľ塢sleep̿¹˳
׵᤬äˡߵ̿μ¹Ԥȶ˳ߤդ졢
sleepޤޤˤʤꡢreqflgΥå˿ʤޤʤ
1msec˥޳ߤ뤿ᡢºݤˤsleepޤޤȤȤ
ʤ

ϡߤεĤsleep ֤ؤΰܹԤȥߥå˼¹ԤǤʤ
Ȥ˵롣SH3ʹߤǤIPMȤ̤SRBLӥåȤȤäƳߤζػ
/Ĥ椹뤳ȤˤꡢǤ뤬SH1/2ǤIPMꤹ
ʳ˳ߤػߡĤˡʤߵġʳԤIPM
ˤsleep򥢥ȥߥå˹Ԥˡʤ
SH1¸Ǥϡ߼ջ˥åѤޤ줿Ϥ¿ų
ߤνиǥåϤ嵭sleep̿˳
Ϥ1̿ʬ2Хȡ˿ʤ뤳Ȥˤꤳ򤷤Ƥ롣
ˡǤ¿ųߤνи˿̿ΥСإåɤ롣
OMIT_POWER_CONTROLޥ뤳Ȥsleep̿nop̿᤬
졢¿ųߤνиǤΥå롼Ͼά롣ʤξ
Ϥˤʤ롣

5.4.2 ߡCPU㳰νˤĤ

SH1Ǥϳ߼ľ˳߶ػߤˤʤäƤʤᡢA
̤γBǽ롣ʤϥϡɥΥƥ
򤱤褦ʤ˳ߥϥɥBǥڤؤ򵯤褦
ʥӥƤ֤ȳBνи̤Υ˥ǥѥå
Ƥޤ2鸵ΥäƤޤǡAν٤
ޤ
ޤA٥ȥꥬ2󸡽ФƤޤ⤢롣
ɤᡢåѤǤIPMtask_intmaskͤ
Ӥơ˳ߤʤäåƤ롣
cpu_support.S_ret_intȡ

SH1ǤCPU㳰դƤߥޥѲʤᡢCPU㳰
˳ߤä硢嵭Τ褦ȽˡǤнǤʤ
ΤᡢߤνиǥåѤޤ줿ϤCPU㳰
ϤӤơ褬CPU㳰ݤȽ̽򥪥
ѰդƤ롣νCPU㳰Ͽơ֥򥵡
뤿ᡢ߶ػ߶֤Ĺʤ롣Ƚ̽ͭˤ
ϥޥSUPPORT_CPU_EXC_ENTRY_CHECK롣
ƥȤȯCPU㳰νϡ󤷤ˤƤ
ۤϤʤȹͤ嵭νϥǥեȤǤ̵ˤƤ롣
ƥȤǤCPU㳰ɤΥȯ뤫ϡߤΤ褦˥
ߥ󥰤ˤΤǤϤʤɬŪʤΤǤ롣ΤᡢCPU㳰
̤ͥ⤽Υ˽सΤȤȽǤ
㤨С¹˥㳰ȯơ㳰٤줿
Ƥ⡢¾ΥؤαƶϤʤʸΥäƤȤˤϡ
Ƥ㳰ԤΤǡΥФƤƶϤʤ

嵭Υơ֥ϥǥեȤCPU㳰6װϿǤ褦ˤƤ뤬
ץꥱǥȥå̿Ѥͥǥϥɥ󥰤
user_config.hNUM_EXCͤŬѹ롣



¾

6.1 ǥ쥯ȥꡦե빽

SH1 åȰ¸γƥեγפϼ̤ꡣ

    config/sh1/
	Makefile.config	MakefileSH1¸
	cpu_defs.h	ץå¸Υץꥱ
	cpu_config.h	ץå¸ι
	cpu_config.c	ץå¸δؿ
	cpu_support.S	ץå¸Υ֥롼
	cpu_context.h	ƥ
	cpu_insn.h	٥Υץå롼
	cpu_rename.def	ͥ̾Υ͡
	cpu_rename.h	ͥ̾Υ͡
	cpu_unrename.h	ͥ̾Υ͡
	tool_defs.h	ȯĶ¸ΥץꥱGNUȯĶѡ
	tool_config.h	ȯĶ¸ιGNUȯĶѡ
	sh1.h		SH1
	start.S		ȥåץ⥸塼
	vector_table.c	ߥ٥ơ֥
	sh1_sil.h	SH1ѥ桼ƥƥ
	sh1itu.h	SH1¢ituѥޥɥ饤
	sh1sci.c	SH1¢sciѥꥢɥ饤
	sh1sci.h	SH1¢sciѥꥢɥ饤
	util.h		桼ƥƥޥ
	makeoffset.c	offset.h ݡȥץ
	shelf.ld	󥫥ץ


    config/sh1/kz_sh1/
    	ԥޥԥ塼() KZ-SH1-01ܡɰ¸ʬ
    	CQ() RISCɾåSH-1Ǥưǽ

	user_config.h	桼
	Makefile.config	MakefileKZ-SH1-01ܡɰ¸
	sys_defs.h  	ƥ¸Υץꥱ
	sys_config.h	ƥ¸ι
	sys_config.c	ƥ¸δؿ
	sys_support.S	ƥ¸Υ֥롼
	sys_rename.def	ͥ̾Υ͡
	sys_rename.h	ͥ̾Υ͡
	sys_unrename.h	ͥ̾Υ͡
	hw_timer.h	롼
	hw_serial.h	SIOɥ饤
	hw_serial.cfg	SIOɥ饤ФΥե졼ե
	kz_sh1.h   	KZ-SH1-01Υϡɥ


    config/sh1/zunda_sh1/
    	()ITRONSH1CPUܡɰ¸ʬ
	
	Makefile.config	Makefile SH1CPUܡɰ¸
	sys_defs.h  	ƥ¸Υץꥱ
	sys_config.h	ƥ¸ι
	sys_config.c	ƥ¸δؿ
	sys_support.h	ƥ¸Υ֥롼
	sys_support.c	ƥ¸Υ֥롼
	sys_rename.def	ͥ̾Υ͡
	sys_rename.h	ͥ̾Υ͡
	sys_unrename.h	ͥ̾Υ͡
	hw_timer.h	롼
	hw_serial.h	SIOɥ饤
	hw_serial.cfg	SIOɥ饤ФΥե졼ե
	sh1sci2.c	SH1¢sciѥꥢɥ饤С2chб
	sh1sci2.h	SH1¢sciѥꥢɥ饤С2chб
	zunda_sh1.h.h    SH1CPUܡɤΥϡɥ
	device.h	LED,SW ؿ
	device.c	LED,SW ؿ


6.2 桼

SH1¸Ǥϡ桼ܤ򥷥ƥ¸ΣĤΥե
Makefile.configuser_config.hˤޤȤƤꡢ桼ϥͥ
ΩʤƤ⡢١ѹǽˤƤ롣

6.2.1 Makefile.config

¹ԴĶ
ѿDBGENVˤ¹ԴĶ򤹤롣
DBGENV=ROMROM
DBGENV=GDB_STUBGDB stub
DBGENV=PARTNERԥޥԥ塼PARTNER-ET II
 SH1CPUܡɸͭ
ROMICEѻNMIޤǤROM٥ơ֥٥١쥸
ꥢž롣
KERNEL_HAS_A_VECTOR_TABLEޥʸҡˤƤΤ
ͭǤ롣
DBGENV=MULTI_STACKեƥॺMultiSTAC-SH1
ʵԥޥԥ塼()KZ-SH1-01ͭ

ޥåԥ
TEXT_START_ADDRESStextƬɥ쥹
DATA_START_ADDRESSdataƬɥ쥹

6.2.2 user_config.h

user_config.hǰʲΥޥԤȤˤꡢѹǤ롣

SUPPORT_CHG_IPM
chg_ipm()ͭˤ롣
2.2Ỳ

SUPPORT_VXGET_TIM
ǽɾѥƥﻲȵǽvxget_tim()ͭˤ롣
3.2Ỳ

SUPPORT_CPU_EXC_ENTRY_CHECK
ߤνи褬CPU㳰Ǥ뤫
åԤ
5.4.2Ỳ

OMIT_POWER_CONTROL
¹Ԥ٤ʤγԤǾϥ⡼ɤ˰ܹԤʤ
ʥեICE
5.4.1Ỳ

FILL_STACK_WITH_0
ǥХåǥåΰѻפ뤿ᡢȥåץ롼
󥿥ƥȤΥåΰ0ǽ

OMIT_DATA_SECTION_COPY
ǥХåĶˤäƤdataǧԶ礬ꡢ
__idata_startϤ˥ɤ٤ǡ__data_startϤ˥
ɤƤޤΤ롣ξOMIT_DATA_SECTION_COPYޥ
Ƥ뤳Ȥǥȥåץ롼ǤΤΥԡȤά롣

LARGE_TYPE SH1CPUܡɸͭ
SRAMפ顼פȤ롣

STACKTOP
󥿥ƥѥåν

CONFIG_20MHZ
CONFIG_19MHZ
CONFIG_16MHZ
åȿڤؤ롣
嵭⡢Ĥ򤹤롣

CONFIG_BAUD
CONFIG_BAUD_2
ꥢ̿Υܡ졼ȡʤ줾ݡȣб
9600, 19200, 38400[bps]Τ줫ͤ롣

ꥢݡȿ
TNUM_PORT
GDIC٥ǥݡȤ륷ꥢݡȤο
ʥͥδˤݡȿ
TNUM_SIOP
PDIC٥ǥݡȤ륷ꥢݡȤο
ʥǥХɥ饤С٥Υݡȿ
LOGTASK_PORTID
ƥѤ륷ꥢݡֹ

SCI_INTLVL
ꥢߤͥ
3.3Ỳ

TIMER_INTLVL
޳ߤͥ
3.1Ỳ

TIC_NUME
TIC_DENO
޳ߤˤisig_tim()ƤӽФ[msec]
줾ʬҡʬɽ
3.1ᤪconfig.txt
(3) ƥå
򻲾

NUM_EXC
嵭ΥåоݤȤʤCPU㳰Ͽ
ǥեȤǤ6װȤƤ롣
SUPPORT_CPU_EXC_ENTRY_CHECKƤʤ̵뤵롣
5.4.2Ỳ

INNER_RAM_ADDRESS
ץå¢RAMѤǤϤκǸΥɥ쥹
INNER_RAM_ADDRESSޥȤuser_config.h롣
ΥޥƤϡåݥ󥿤򤳤ͤꤷ
hardware_init_hook()ƤӽФΤǡhardware_init_hook()C
ǵҤ뤳ȤǤ롣ʤĤޤꡢINNER_RAM_ADDRESSϥåݥ
󥿤ΰŪʽͤȤƻѤ롣
hardware_init_hook()äǥåݥ󥿤STACKTOP˺
ꤷƤ롣
KERNEL_HAS_A_VECTOR_TABLEޥƤΤͭǤ롣


̤CδؿƤӽФϥåѤΤǡХȥ
ν˴ؿƤӽФϤǤʤINNER_RAM_ADDRESSޥ
뤳Ȥhardware_init_hook()CǵҤǤ褦ˤʤ롣

CPU㳰ϥɥƬɥ쥹
ʲΥޥϤ٤ƾάǽǤ롣
άϥǥեȤͤȤơȥåץ롼Ƭ
ɥ쥹Ѥ롣

NMI_VECTOR
NMI㳰ϥɥƬɥ쥹
ǥե͡ȥåץ롼Ƭɥ쥹
KERNEL_HAS_A_VECTOR_TABLEޥƤΤͭǤ롣

GII_VECTOR
̿㳰ϥɥƬɥ쥹
ǥե͡ȥåץ롼Ƭɥ쥹
KERNEL_HAS_A_VECTOR_TABLEޥƤΤͭǤ롣

SII_VECTOR
å̿㳰ϥɥƬɥ쥹
ǥե͡ȥåץ롼Ƭɥ쥹
KERNEL_HAS_A_VECTOR_TABLEޥƤΤͭǤ롣

CAE_VECTOR
CPUɥ쥹顼㳰ϥɥƬɥ쥹
ǥե͡ȥåץ롼Ƭɥ쥹
KERNEL_HAS_A_VECTOR_TABLEޥƤΤͭǤ롣

DAE_VECTOR
DMAɥ쥹顼㳰ϥɥƬɥ쥹
ǥե͡ȥåץ롼Ƭɥ쥹
KERNEL_HAS_A_VECTOR_TABLEޥƤΤͭǤ롣



6.3ͥܿԸξ

6.3.1Ū˻ѤƤޥ
ʲΥޥSH1¸Ǿ拾ѥԤŪ˻ѤƤ
ΤǤꡢ桼ɬפϤʤ

GDB_STUB
GDB stubݡȻΤᡢͽ󤷤Ƥ롣

KERNEL_HAS_A_VECTOR_TABLE
㳰٥򥫡ͥ뤬롣
GDB stub˥ץब㳰٥ϡΥޥ
ʤ

SIO_RESERVED
ꥢ롦ߥ˥󡦥󥿡եSCI1chǥХå
ѤƤ롣
ΥޥȥͥSCI 1chѤʤ


6.3.2 ͥƥΥCѥ˰ܿ
ǥץ졼դ쥸ܤεҤۤʤΤդɬפǤ롣
սcpu_support.S
TCB¤ΤؤΥ
ߡCPU㳰νиˤ륿ƥȤγ
ޥΰѤ

ͥƥΥ֥@(disp,Rn) 
 ¸ɥ쥹η׻ 
Х Rn + disp  EA 
 Rn + disp2  EA 
󥰥 Rn + disp4  EA 

gas@(disp,Rn) 
 ¸ɥ쥹η׻ 
Х Rn + disp  EA 
 Rn + disp  EA(âdisp2n) 
󥰥 Rn + disp  EA(âdisp4n) 


ѹ

2005ǯ1114Release1.4.2

   + cpu_config.c_dummy_memcpy( )
   + string.hˤmemcpy( )ΰŪʥץȥ˹碌
   void *memcpy(void *dest, const void *src, size_t len);
   
   + ʤδؿ
   + Ūvoidդ


2005ǯ914

   + zunda_sh1/sys_support.h
   + ݡȣĥɡľ
   + 饤󥢥֥ʸˡ顼
   + cpu_config.hdefine_inh()
   + kz_sh1/kz_sh1.hgdb_stub_putc()
   + mac쥸սθľ
gcc3.xؤбߤ뤬ư
ʾܺ٤5.3򻲾ȡ


ߤˤ륿åΤ
塧
ߥϥɥƤӽФ
ǽưŪʥǥѥåƤӽФˤ륿å


2004ǯ109Release1.4.1

Хեå
   + ߤ̤γߤ˺ǽγߤ
   󤷤ˤԶCPU㳰ˤĤƤƱ͡
   + ¹Ԥ٤ʤȤγԤǡߥ󥰤ˤäƤ
   ߽sleepޤޤˤʤԶ

   + ݡȥܡɤѹ
   + ITRONSH1CPUܡɤɲ
   + ׾ SH1/CPUB
   + ߡCPU㳰ν롼װŸʬľ
   ROM̤︺ʣװ126ХȺ︺
   + GDB stubб
   + ROM-ICE㳰٥μˡ
   + NMI㳰٥ܡɰ¸Ǥ褦ˤ
   + SILΥؿ̾Τ򥬥ɥ饤ѹ
   + INNER_RAM_ADDRESSޥƳˤhardware_init_hook()C
   ҤǤ褦˥ȥåץ롼
   + 桼ѹǤսuser_config.hȤʬΥ

2003ǯ1224Release1.4

Хեå
   + ¹Ԥ٤ʤƳԤ򤹤ݡruntsk򥯥ꥢƤʤ
   ᡢߥ󥰤ˤäƤiget_tid()ͤʤԶ
   + vxget_tim()1msecʲüʤäԶ

¾β
   + եΰ¸طŪʸľ
   + ꥢɥ饤Фȥޥɥ饤ФITRONǥХɥ饤Хɥ饤
   ˽
   + ꥢɥ饤Ф˼顼ߥϥɥɲ

2002ǯ415Release1.3

Хեå
   + γߡCPU㳰ͥȥ󥿤ͤν
   + ߽иǤγߥޥɲ

¾β
   + ɸ饤֥memcpy󥯤Ȥʤξб

2001ǯ1120 Release1.2

Хեå
   + ٥ơ֥ΥԡκݡΰΥְ㤨Ƥ
   Х

¾β
 + ¸ȶΥ󥿡եѹɽ
 + ¹ԤǤ륿ĤʤȤεưѹ
chg_ipm()Ȥ


2001ǯ510Release1.1

SH1ǤΥݡȤ򳫻
