
	     TOPPERS/JSPͥ 桼ޥ˥奢 

	    Release 1.0бǽ: 15-Nov-2000

 Υ桼ޥ˥奢ϡITRON4.0ͽVer. 4.00.00ˤƤ
˵ҤƤޤITRON4.0ͽϡʲURL
뤳ȤǤޤ
	http://www.itron.gr.jp/SPEC/mitron4-j.html

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

 Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
                             Toyohashi Univ. of Technology, JAPAN

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

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

 @(#) $Id: user.txt,v 1.2 2000/11/14 15:48:31 hiro Exp $
----------------------------------------------------------------------
 * ITRON4.0ͤϡȥ󶨲 ITRON濴Ȥʤäƺꤵ줿
   ץʥꥢ륿५ͥͤǤITRON4.0ͤλͽϡITRON
   ץȥۡڡhttp://www.itron.gr.jp/ˤꤹ뤳
   Ǥޤ
----------------------------------------------------------------------
 * TRON  "The Real-time Operating system Nucleus" άΤǤ
 * ITRON  "Industrial TRON" άΤǤ
 * ITRON  "Micro Industrial TRON" άΤǤ
 * TRONITRONӦITRONϡξʤʤϾʷؤ̾Τ
   Ϥޤ
 * TOPPERS  "Toyohashi OPen Platform for Embedded Real-time Systems" 
   άΡJSP  "Just Standard Profile" άΤǤ
 * ܥޥ˥奢ξ̾ϡƼҤξɸޤϿɸǤ
----------------------------------------------------------------------


TOPPERS/JSPͥγ

TOPPERS/JSPͥʰʲñJSPͥȽ񤯡ˤϡ˭Ѳʳ 
ȹߥꥢ륿ॷƥฦ漼ǳȯITRON4.0ͤΥ
ץե˽򤷤ꥢ륿५ͥǤ롥

1.1 åȥץååȥƥ

JSPͥϡǡʲΥåȥץååȥ
򥵥ݡȤƤ롥

    ץå		ƥ
    6804068LC040	DVE-68K/40Ż
    SH37709A	SH-CARD CARD-E09Aʥץ
    SH37709		PowerMedusa RSH3ʻɩޥ󵡴諒եȥ
    SH37708		DVE-SH7700Ż

ͥΤǤ¤¿ʬCǵҤ롤åΩȰ
¸ΤʬΥʤɡ¾ΥåȥץåؤΥݡƥ󥰤
פʹ¤ˤʤäƤ뤬ݡƥ󥰤ˤɤ٤μ֤뤫ϡ
åȥץåΥƥ䥷ƥιʤɤ˰¸롥

Υ桼ޥ˥奢Ǥϡåȡʥåȥץåӥ
åȥƥˤ˰¸ʤǽˤĤƤΤƤ롥åȤ
¸뵡ǽˤĤƤϡåΥޥ˥奢򻲾Ȥ뤳ȡ

1.2 ȯĶ

JSPͥϡGCC ʤɤ GNUȯĶɸΥեȥȯĶ
Ƥ롥饤ؿ䥤饤󥢥֥鵡ǽʤɡGCC γĥǽ
ѤƤʬ롥

ͥ뤬ɬפȤɸC饤֥ϡѿ뤿Υ饤
֥stdarg.h, va_list, va_start, va_argˤΤߤǤ롥GNUȯĶ
ϡѿ뤿Υ饤֥ GCC ΤǥݡȤƤ
ᡤɸC饤֥ɬפʤץꥱץ
ɸC饤֥꤬ɬפˤʤ¿ᡤɸC饤֥Ѥ빽
Ȥ褦ˤƤ롥

1.3 ߥ졼Ķ

JSPͥΥߥ졼ĶȤơLinuxưĶ 
WindowsưĶѰդƤ롥Υߥ졼Ķϡ
Linux  Windows ΰĤΥץʣΥڤؤư
Τǡåɥ饤֥ȤƻȤȤǤ롥

Υߥ졼ĶˤĤƤξܺ٤ϡߥ졼Ķ
ޥ˥奢򻲾Ȥ뤳ȡ

1.4 ͥ뤬ݡȤ뵡ǽ

JSPͥϡ̤̾ꡤITRON4.0ͤΥɥץե
˴ޤޤ뵡ǽ򤹤٤ƥݡȤƤ롥ɥץեǤϡ
ߥϥɥȳߥӥ롼Τ줫򥵥ݡȤФ褤
JSPͥϡǤϳߥϥɥΤߤ򥵥ݡȤƤ롥

ɥץե˴ޤޤʤǽȤơåȰ¸˰ʲ
ߴǽӥӥ򥵥ݡȤ礬롥ε
ǽζŪƤˤĤƤϡå˰ۤʤ롥ܤϡå
Υޥ˥奢򻲾Ȥ뤳ȡ

    dis_int	ߤζػ
    ena_int	ߤε
    chg_ixx	ߥޥѹ
    get_ixx	ߥޥλ
     xx ϥå롥

ޤITRON4.0ͤƤʳˡʲȼγĥǽ
ӥ򥵥ݡȤƤ롥

(1) CPU㳰ȯΥƥ֤λ

ɥץեǤϡCPU㳰ϥɥǡCPU㳰ȯ
ƥȤ֤򻲾ȤǤ뤳ȤɬפǤ뤬Τ API 
ƤʤJSPͥǤϡCPU㳰ȯ sns_yyy ƤӽФ
η̤CPU㳰ϥɥǼФ褦ˤ뤿ˡʲ
ޤĤΥӥȼ˥ݡȤƤ롥

    vxsns_ctx	CPU㳰ȯΥƥȤλ
    vxsns_loc	CPU㳰ȯCPUå֤λ
    vxsns_dsp	CPU㳰ȯΥǥѥåػ߾֤λ
    vxsns_dpn	CPU㳰ȯΥǥѥåα֤λ
    vxsns_tex	CPU㳰ȯΥ㳰ػ߾֤λ

(2) ǽɾѥƥﻲȵǽ

ǽɾѥƥﻲȵǽȤϡJSPͥư륿JSP
ͥ뼫Ȥǽ¬뤿Ρƥñ̤ɤ߽Ф
ǽǤ롥εǽΤɲäӥϼ̤Ǥ롥

    vxget_tim	ǽɾѥƥλ

ǽɾѥƥﻲȵǽ򥵥ݡȤ뤫ɤϡåȰ¸
եǻꤹ뤳ȤǤ롥ޤåȥƥ
ˤꡤεǽ򥵥ݡȤǤʤ⤢롥

1.5 Τ

СǤϡŪAPIνΥ顼θеǽԽʬǤ롥
Сνͥ٤ͤǤ硤ͥȥե졼
Τ⥨顼򸡽Фͥ뤬ưʤ̤Ȥʤ롥
ե졼νϤ륨顼åԿڤǡɬ
ȹͤƤ롥

СΥƥӥϡĹ߶ػ߶֤ޤǤ롥
ƥӥѤ硤߱ʤΤǡդɬ
פǤ롥


JSPͥεǽ

ǤϡITRON4.0ͤǼȤʤäƤ濴ˡJSP
ͥεǽˤĤƲ⤹롥

2.1 ˤȥǥ

ITRON4.0ͤΥɥץեϡƥΤĤΥ⥸塼
˥󥯤뤳ȤꤷƵꤵƤ롥ޤӥθƽ
ϡñʤ륵֥롼󥳡ˤäƹԤȤꤵƤ롥JSP
ͥϡ˽ץꥱȥͥĤΥ⥸塼
󥯤֥롼󥳡ˤäƥӥƤӽФˡΤߤ
ݡȤƤ롥

С Makefile ǤϡץꥱѤǽ˴ؤ餺
ͥΤ٤ƤΥ⥸塼󥯤빽ȤʤäƤ뤬ͥ
⥸塼ñ˥饤֥경뤳Ȥǡ⥸塼ñ̤ǥ
ꥱѤǽΤߤ󥯤褦˽뤳ȤǤ롥
⥸塼ؿñ̤ʬ䤷ľСؿñ̤ǥץꥱ
ǽΤߤ󥯤褦ˤǤ롥

JSPͥư륢ץꥱϡ٤CǵҤ뤳Ȥ
§ȤƤ롥Τᡤߥϥɥʤɤνñ̤򡤥
֥ǵҤˡϡ̤ˤѰդƤʤʤ󡤥󥿥ե
Cδؿˤ碌СҤ˥֥ȤȤ
ˡ

JSPͥǤϡӥʬĤγ߶ػ߶֤ȤƼ
Ƥ뤿ᡤӥԲʬϸ̩ݾڤ롥դ˷
Ƥϡ߶ػ߻֡ʺ֤߱Ʊ͡ˤԤ塼
Ĥʤ륿κ䥿।٥Ȥκ˰¸뤳Ȥˤʤ뤬
ɥץեεǽåȤϰǤϡˡǤ⤽ۤ
̤ˤϤʤʤ

2.2 ǡ

JSPͥǤϡʲ˥ꥹȥåפǡsigned intޤ 
unsigned intƤ롥signed int unsigned intΥ
ϡJSPͥΥåȤȤʤۤȤɤΥץåѥ
 32ӥåȤǤȹͤ뤿ᡤǤʤˤΤߡ
Υޥ˥奢롥ʤåΥޥ˥奢
Ƥʤ¤ꡤʲ˥ꥹȥåפǡΥ 32ӥåȤǤ
롥

    signed intƤǡ

	INT		դ
	BOOL		
	FN		ǽ
	ER		顼
	ID		IDֹ
	PRI		ͥ
	TMO		ॢ
	ER_BOOL		ER ޤ BOOL
	ER_ID		ER ޤ ID
	ER_UINT		ER ޤ UINT

    unsigned intƤǡ

	UINT		̵
	ATR		°
	STAT		
	MODE		ư⡼
	SIZE		
	RELTIM		л
	SYSTIM		ƥ
	TEXPTN		㳰װΥӥåȥѥ
	FLGPTN		٥ȥե饰Υӥåȥѥ

RELTIMͭӥåȿ 31ӥåȤۤ뤳ȤϤʤʤ
unsigned intΥ 32ӥåȤξˤϡRELTIMͭӥåȿ 
31ӥåȤǤꡤ(2^31 - 1) ۤͤ RELTIMΥѥ᡼Ϥ
硤E_PAR顼Ȥʤ롥unsigned intΥ 16ӥåȤξˤϡ
RELTIMͭӥåȿ 16ӥåȤǤ롥ɥץեǤϡ
RELTIM 16ӥåȰʾȵꤷƤꡤλͤǥɥץե
뵬˽򤷤Ƥ롥

SYSTIMϡ˥ꥹȥåפ̤ unsigned intƤꡤ
¤ΤȤˡѤƤʤ

֤򤢤魯ǡTMORELTIMSYSTIMˤλñ̤ϡ
ɥץեε˽٤1ߥäȤƤ롥

2.3 ֥ȤIDֹͥ

֥ȤIDֹˤϡ1 Ϣ³ͤѤ롥֥Ȥ
IDֹȴ㤨СID=1  ID=3 Υ֥ȤϿ졤
ID=2 Υ֥ȤϿʤˤˤϡե졼顼
𤹤롥IDֹѤƥ४֥Ȥȥ桼֥
ζ̤ϥݡȤƤʤ

Ǥ륪֥ȤκϡͥΥɾϡIDֹ椬ID
signed intƤˤɽǤϰǤ뤬ºݤˤϥ
̤ˤä¤롥ʤJSPͥǤϡ֥Ȥ
뤿ΥӥϥݡȤƤʤ

ȥåͥ٤ˤϡ116 ͤѤ롥

2.4 顼åȥ顼

JSPͥǤϡʲ˼ᥤ󥨥顼ɤ֤顼θФά
Ƥ롥

    E_SYS	ƥ२顼
    E_MACV	ꥢȿ

ꥢȿθФάƤ뤿ᡤ˥ݥ󥿤Ϥ
Фơ¸ߤʤϤ򺹤ݥ󥿤ʤɡʥ
ݥ󥿤Ϥ硤ץåХ顼ʤɤCPU
򵯤礬ʶŪưϥåȥץå˰¸ˡ

ޤITRON4.0ͽƤᥤ󥨥顼ɤǡ
ɥץեεǽǤȯʤΤ䡤JSPͥμȯ
ʤΤ롥JSPͥǥӥ뤬֤ᥤ󥨥顼
ˤĤƤϡ8.3 ᥤ󥨥顼ɰפ򻲾ȤΤȡ

JSPͥǤϡ֥顼ɤѤƤʤ֥顼ɤˤ
 -1 ֤롥

2.5 ߥϥɥ

JSPͥǤϡߥϥɥεǽȤŪAPIDEF_INH
򥵥ݡȤƤꡤߥӥ롼εǽȤɲäŪ
APIATT_ISRˤϥݡȤƤʤ

ߥϥɥCˤ뵭ҷϼ̤Ȥ롥

	void interrupt_handler(void)
	{
		ߥϥɥ
	}

JSPͥǤϡCǵҤ줿ߥϥɥ餬ƤФǡCPU
å֤ˤʤäƤ롥ޤߥϥɥ餫꥿󤹤ˤϡ
Cδؿñ˥꥿󤹤Ф褤

ߥϥɥ򥢥֥ǵҤˡϡݡȤƤʤ

NMIʥޥǤʤߡ˰ʳ˥ͥδγߤ뤫ɤ
ϡåȰ¸Ǥ롥ŪʻͤˤĤƤϡåΥޥ˥
򻲾Ȥ뤳ȡ

2.6 ।٥ȥϥɥ

JSPͥǤϡ।٥ȥϥɥȤơϥɥΤߤ򥵥ݡ
ȤƤ롥ϥɥϡisig_timƥॳ椫顤֥롼
󥳡ǸƤӽФ롥Τᡤϥɥ̤ͥϡisig_tim
ƤӽФߥϥɥĤ⤤ʸ̩˸ȡisig_tim
ӽФߥϥɥ⤯γߥϥɥ⤤ͥ
¾Τν㤤ˡ

2.7 CPU㳰ϥɥ

JSPͥǤϡɥץե뵬˽äơCPU㳰ϥɥ
εǽȤŪAPIDEF_EXCˤ򥵥ݡȤƤ롥

JSPͥǤϡCPU㳰ϥɥ󥿥ƥȤǼ¹Ԥ롥
ƥȤƤӽФ륵ӥϡCPU㳰ϥɥ⤫
ƤӽФȤǤ롥ITRON4.0ͤˤơCPU㳰ϥɥǹ
٤ΤȤƵꤵƤϡΤ褦ˡǹԤȤ
롥

 (a) CPU㳰ȯƥȤ֤λȤϡΤѰդ줿
     JSPͥȼΥӥvxsns_ctxvxsns_locvxsns_dsp
     vxsns_dpnvxsns_texˤѤƹԤȤǤ롥ܤϡ3.10 
     CPU㳰ȯΥƥֻȡפ򻲾Ȥ뤳ȡ

 (b) CPU㳰ȯIDֹλȤϡiget_tidӥ
     ƤӽФȤˤäƹԤȤǤ롥

 (c) 㳰׵ϡiras_texӥƤӽФȤˤ
     ƹԤȤǤ롥

CPU㳰ϥɥ̤ͥϡƥȤ¹CPU㳰ȯ
ˤϡǥѥå⤯٤Ƥγߥϥɥ餪ӥ
ޥϥɥ㤤󥿥ƥȤ¹CPU㳰ȯ
ˤϡCPU㳰ȯ̤ͥĤ⤤ʸ̩
ȡCPU㳰ȯ⤯CPU㳰ȯ
̤ͥ¾Τν㤤ˡ

CPU㳰ϥɥCˤ뵭ҷϼ̤Ȥ롥

	void cpu_exception_handler(VP p_excinf)
	{
		CPU㳰ϥɥ
	}

p_excinf ˤϡCPU㳰˴ؤ򵭲ƤΰƬϤϤ
롥ϡCPU㳰ϥɥǡCPU㳰ȯƥȤ֤
ȤݤɬפȤʤ롥ܤϡ3.10 CPU㳰ȯΥƥֻ
ȡ׻Ȥ뤳ȡCPU㳰ϥɥ餫꥿󤹤ˤϡCδؿ
ñ˥꥿󤹤Ф褤

CPU㳰ϥɥ򥢥֥ǵҤˡϡݡȤƤʤ

2.8 󥿥ƥȤΥӥƽФȳ߶ػ߶

JSPͥǤϡƥѤΥӥȡ󥿥
ƥѤΥӥ̩˶̤Ƥ롥ƥ
ѤΥӥ󥿥ƥȤƤӽФ䡤󥿥
ƥѤΥӥ򥿥ƥȤƤӽФ
ˤϡE_CTX顼֤

ޤ󥿥ƥȤƤӽФ줿ӥٱ¹ԤϹԤ
ƤʤΤᡤ󥿥ƥȤƤӽФӥ⡤
оݤΥ֥Ȥξ֤˰¸ȯ륨顼򸡽Ф뤳Ȥ
롥

2.9 ƥȽ롼

ͥưˤϡåȤ˰¸ƹԤʤФʤʤ
νԤä塤CPUå֤Ʊξ֤ǡkernel_startؿ
ӽФJSPͥǤϡå˥ȥåץ⥸塼Ѱ
ơνԤäƤ롥ܤϡåΥޥ˥奢򻲾Ȥ
뤳ȡ

ATT_INI ˤäɲä줿롼ϡͥΥǡ¤
¾ŪAPI ν򽪤ˡƥॳե졼
եǤ ATT_INI εҽƱǸƤӽФ롥롼
ǤϡӥƤӽФƤϤʤʤ롼ǥ
ӥƤӽФ硤ƥưݾڤʤʼºݤˤϡ
åȤˤäơƤӽФƤ⺹٤ʤӥ뤬ˡޤ
롼¹˥ͥδγߤػߤƤ뤫ɤ
ϡåȤ kernel_startؿƤӽФ줿ξ֤˰¸
롥ŪˤϡåΥޥ˥奢򻲾Ȥ뤳ȡ

2.10 ŪAPIȥե졼

JSPͥϡITRON4.0ͤ˵ꤵ줿ƥॳե졼
˽򤷤ǡե졼Ԥ

Ūˤϡƥι򵭽Ҥƥॳե졼ե
CΥץץå̤η̤򥫡ͥΥե
졼cfgץˤϤ롥ͥΥե졼ϡ
ͥ빽ե kernel_cfg.c ˡIDưդ̥إåե
 kernel_id.h 롥kernel_cfg.c ϡѥ뤵ơ
ꥱץपӥͥȶ˥󥯤롥μϡ
å Makefile ˵ҤƤ롥եȥʤΥե
졼Ȥ߹ߤˤϡMakefile ɬפ롥

ͥΥե졼ϡŪAPIʸˡ顼ӽΥ顼
ǽϰϤǥåФ顼𤹤롥Фơ
ͥνǤϡŪAPI˴ؤ륨顼åڹԤäƤʤ
Τᡤ1.5 »פ˽Ҥ٤̤ꡤСǤŪAPIν
Υ顼θеǽԽʬȤʤäƤ롥


JSPͥΥӥŪAPI

ǤϡJSPͥΥӥŪAPIˤĤơITRON4.0
ͤǼȤʤäƤJSPͥȼΥӥ濴
⤹롥

3.1 ǽ

εư׵ᥭ塼󥰿κ͡TMAX_ACTCNTˤ 1 ˸ꤷƤ
롥

(1) CRE_TSK			ŪAPI

tskatr  TA_ASM ꤵ줿εǽʥ򥢥֥ǵ
ˤϥݡȤƤʤޤstk  NULL ʳꤵ줿ε
ǽʥåΰƬϤꤹˤ⥵ݡȤƤʤ

(2) act_tsk, iact_tsk		εư

(3) can_act			ư׵Υ󥻥

(4) ext_tsk			νλ

ext_tsk 󥿥ƥȤƤФ줿硤ƥ˥顼
ϿŪ˥ƥȤڤ괹Ƽ¹Ԥ³롥
åȤˤäƤ󥿥ƥѤΥå˥ߤĤ礬
ꡤʸưݾڤʤ

ext_tsk CPUå֡ʤޤϥǥѥåػ߾֡ˤǸƤФ줿硤
CPUå֡ʤޤϥǥѥåľ֡ˤˤƤ饿λ
롥

(5) ter_tsk			ζλ

(6) chg_pri			ͥ٤ѹ

(7) get_pri			ͥ٤λ

3.2 °Ʊǽ

ε׵ᥭ塼󥰿κ͡TMAX_WUPCNTˤ 1 ˸ꤷƤ
롥ޤζԤ׵ͥȿκ͡TMAX_SUSCNTˤ 1 ˸
ꤷƤ롥

(1) slp_tsk			Ԥ
(2) tslp_tsk			ԤʥॢȤ

(3) wup_tsk, iwup_tsk		ε

(4) can_wup			׵Υ󥻥

(5) rel_wai, irel_wai		Ԥ֤ζ

(6) sus_tsk			Ԥ֤ؤΰܹ

(7) rsm_tsk			Ԥ֤κƳ
(8) frsm_tsk			Ԥ֤ζƳ

ζԤ׵ͥȿκ͡TMAX_SUSCNTˤ 1 Ǥ뤿ᡤ
rsm_tsk  frsm_tsk νƤƱǤ롥

(9) dly_tsk			ٱ

3.3 㳰ǽ

TEXPTNϡunsigned intƤ롥ä TBIT_TEXPTN ϡ
unsigned int 32ӥåȤξ 3216ӥåȤξ 16 ˤʤ롥

(1) DEF_TEX			㳰롼ŪAPI

texatr  TA_ASM ꤵ줿εǽʥ㳰롼򥢥
֥ǵҤˤϥݡȤƤʤ

(2) ras_tex, iras_tex		㳰׵

(3) dis_tex			㳰ζػ

(4) ena_tex			㳰ε

(5) sns_tex			㳰ػ߾֤λ

3.4 Ʊ̿ǽ

3.4.1 ޥե

ޥեκ񸻿ϡUINTunsigned intƤˤɽ
ͤϰǤ롥ʤunsigned int 32ӥåȤξ 
(2^32 - 1)16ӥåȤξ (2^16 - 1) = 65535 Ǥ롥TMAX_MAXSEM 
Ƥʤ

(1) CRE_SEM			ޥեŪAPI

(2) sig_sem, isig_sem		ޥե񸻤ֵ

(3) wai_sem			ޥե񸻤γ
(4) pol_sem			ޥե񸻤γʥݡ󥰡
(5) twai_sem			ޥե񸻤γʥॢȤ

3.4.2 ٥ȥե饰

ĤΥ٥ȥե饰ʣΥԤ֤ˤʤ뵡ǽϥݡȤ
ʤ

FLGPTNϡunsigned intƤ롥ä TBIT_FLGPTN ϡ
unsigned int 32ӥåȤξ 3216ӥåȤξ 16 ˤʤ롥

(1) CRE_FLG			٥ȥե饰ŪAPI

flgatr  TA_WMUL ꤵ줿εǽʥ٥ȥե饰ʣΥ
Ԥ֤ˤʤˤϥݡȤƤʤ

(2) set_flg, iset_flg		٥ȥե饰Υå

(3) clr_flg			٥ȥե饰Υꥢ

(4) wai_flg			٥ȥե饰Ԥ
(5) pol_flg			٥ȥե饰Ԥʥݡ󥰡
(6) twai_flg			٥ȥե饰ԤʥॢȤ

3.4.3 ǡ塼

dtqcntĤΥǡǼΤɬפʥǡ塼ΰΥϡ
sizeof(VP_INT) * dtqcnt ХȤǤ롥TSZ_DTQ Ƥʤ

(1) CRE_DTQ			ǡ塼ŪAPI

dtq  NULL ʳꤵ줿εǽʥǡ塼ΰƬϤ
ꤹˤϥݡȤƤʤ

(2) snd_dtq			ǡ塼ؤ
(3) psnd_dtq, ipsnd_dtq		ǡ塼ؤʥݡ󥰡
(4) tsnd_dtq			ǡ塼ؤʥॢȤ

(5) fsnd_dtq, ifsnd_dtq		ǡ塼ؤζ

(6) rcv_dtq			ǡ塼μ
(7) prcv_dtq			ǡ塼μʥݡ󥰡
(8) trcv_dtq			ǡ塼μʥॢȤ

3.4.4 ᡼ܥå

T_MSGϲΤ褦Ƥ롥T_MSGΥϡåȥץ
åѥΥݥ󥿤Υ˰פ롥

	typedef	struct t_msg {
		struct t_msg	*next;
	} T_MSG;

JSPͥǤϡ̥ͥå塼إåΰѤƤʤ
TSZ_MPRIHD ƤʤȤ 0 Ȥʤ롥

(1) CRE_MBX			᡼ܥåŪAPI

mprihd  NULL ʳꤵ줿εǽ̥ͥå塼إ
ΰƬϤꤹˤϥݡȤƤʤ

(2) snd_mbx			᡼ܥåؤ

(3) rcv_mbx			᡼ܥåμ
(4) prcv_mbx			᡼ܥåμʥݡ󥰡
(5) trcv_mbx			᡼ܥåμʥॢȤ

3.5 סǽ

3.5.1 Ĺס

 blkszХȤΥ֥å blkcntĳǤΤɬפʸ
ĹסΰΥϡROUND_VP(blksz) * blkcnt ХȤǤ롥
ǡROUND_VP(blksz) ϡblksz 򥿡åȥץåѥ
ݥ󥿤Υܿˤʤ褦ڤ夲ɽTSZ_MPF 
ʤ

(1) CRE_MPF			ĹסŪAPI

mpf  NULL ʳꤵ줿εǽʸĹסΰƬ
ϤꤹˤϥݡȤƤʤ

(2) get_blf			Ĺ֥åγ
(3) pget_blf			Ĺ֥åγʥݡ󥰡
(4) tget_blf			Ĺ֥åγʥॢȤ

(5) rel_mpf			Ĺ֥åֵ

blkѥ᡼ֵѤ֥åƬϡˤֵͤΥ
סΰγ䡤֥åؤˤϡE_PAR顼
֤̤Υ֥åֵѤ䡤ֵѺѤΥ֥å
ֵѤưݾڤʤ

3.6 ִǽ

।٥ȥϥɥ˴ؤƤϡ2.6 ।٥ȥϥɥפ򻲾
뤳ȡ

3.6.1 ƥ

JSPͥǤϡƥåζisig_tim Ū˸ƤӽФ
ϥƥॵӥΥƥ९åɥ饤ФˤäƼ¸Ƥ롥
ƥ९åɥ饤Фμʬϡå˥ϡɥޤȤ
Ƽ¸Ƥꡤisig_tim ƤӽФϥå롥
 TIC_NUME  TIC_DENO ϡåȰ¸ΥץꥱѤΥ
󥯥롼ɥեcpu_defs.h  sys_defs.hˤƤ롥
åȤˤäƤϡοͤѹ isig_tim ƤӽФ
ѹǤ褦˼Ƥ⤢롥ܤϡåΥ
˥奢򻲾Ȥ뤳ȡ

(1) set_tim			ƥ

(2) get_tim			ƥλ

(3) isig_tim			ƥåζ

isig_tim ϡåȰ¸줿 TIC_NUME  TIC_DENO ǻꤵ
֤ƥʤᡤɬפʥ।٥ȡʥॢȡ
ϥɥεưʤɡˤνԤJSPͥǤϡƥ९å
ɥ饤ФΥӥŪ˸ƤӽФᡤץꥱ
ƤӽФɬפϤʤ

3.6.2 ϥɥ

ϥɥεư¸뵡ǽϥݡȤƤʤ

(1) CRE_CYC			ϥɥŪAPI

cycatr  TA_PHS ꤵ줿εǽʼϥɥεư¸
ˤϥݡȤƤʤޤTA_ASM ꤵ줿εǽʼ
ϥɥ򥢥֥ǵҤˤ⥵ݡȤƤʤ

(2) sta_cyc			ϥɥư

(3) stp_cyc			ϥɥư

3.7 ƥִǽ

(1) rot_rdq, irot_rdq		̤ͥβž

(2) get_tid, iget_tid		¹Ծ֤ΥIDλ

(3) loc_cpu, iloc_cpu		CPUå֤ؤΰܹ

(4) unl_cpu, iunl_cpu		CPUå֤β

(5) dis_dsp			ǥѥåζػ

(6) ena_dsp			ǥѥåε

(7) sns_ctx			ƥȤλ

(8) sns_loc			CPUå֤λ

(9) sns_dsp			ǥѥåػ߾֤λ

(10) sns_dpn			ǥѥåα֤λ

3.8 ߴǽ

ߥϥɥ˴ؤƤϡ2.5 ߥϥɥפ򻲾Ȥ뤳ȡ

(1) DEF_INH			ߥϥɥŪAPI

INHNO inhno ΰ̣ϥå롥inhatr ˤϡ
TA_HLNG Τߤꤹ뤳ȤǤ롥

(2) dis_int			ߤζػ
(3) ena_int			ߤε
(4) chg_ixx			ߥޥѹ
(5) get_ixx			ߥޥλ

Υӥ뤬ݡȤƤ뤫ɤݡȤƤ
λ͡xx ʬ̾Ρȥѥ᡼̾ΤỌ̇̄CPUå
ǥѥå֤ȤδϢˤˤĤƤϡåȰ¸Ǥ롥Ū
ϡåΥޥ˥奢򻲾Ȥ뤳ȡ

3.9 ƥ๽ǽ

CPU㳰ϥɥ˴ؤƤϡ2.7 CPU㳰ϥɥפ򡤽롼˴
Ƥϡ2.9 ƥȽ롼׻Ȥ뤳ȡ

(1) DEF_EXC			CPU㳰ϥɥŪAPI

EXCNO excno ΰ̣ϥå롥excatr ˤϡ
TA_HLNG Τߤꤹ뤳ȤǤ롥

(2) ATT_INI			롼ɲáŪAPI

iniatr  TA_ASM ꤵ줿εǽʽ롼򥢥֥
ǵҤˤϥݡȤƤʤ

3.10 CPU㳰ȯΥƥֻ

CPU㳰ϥɥǡCPU㳰ȯƥȤ֤򻲾Ȥ뤿
ΥӥȤơJSPͥǤϡޤĤΥӥȼ
ݡȤƤ롥ӥ vxsns_yyy ϡCPU㳰ȯ 
sns_yyy ƤӽФη̤ФΤǡCPU㳰ϥɥϤ
ѥ᡼ p_excinf ѥ᡼Ȥ롥

(1) vxsns_ctx			CPU㳰ȯΥƥȤλ

CAPI
	BOOL state = vxsns_ctx(VP p_excinf);

ڥѥ᡼
	VP	p_excinf	CPU㳰˴ؤ򵭲Ƥΰ
				Ƭ

ڥ꥿ѥ᡼
	BOOL	state		ƥ

ڵǽ

CPU㳰ȯƥȤ󥿥ƥȤξ TRUE
ƥȤξ FALSE ֤p_excinf ˤϡCPU㳰ϥɥ
Ϥ p_excinfѥ᡼򤽤ΤޤϤCPU㳰ϥɥʳ
ӽФ䡤p_excinf Ϥʤäο񤤤ݾڤ


(2) vxsns_loc			CPU㳰ȯCPUå֤λ

CAPI
	BOOL state = vxsns_loc(VP p_excinf);

ڥѥ᡼
	VP	p_excinf	CPU㳰˴ؤ򵭲Ƥΰ
				Ƭ

ڥ꥿ѥ᡼
	BOOL	state		CPUå

ڵǽ

CPU㳰ȯ֤CPUå֤ξ TRUECPUå
ξ FALSE ֤p_excinf ˤϡCPU㳰ϥɥϤ 
p_excinfѥ᡼򤽤ΤޤϤCPU㳰ϥɥʳƤӽФ
䡤p_excinf Ϥʤäο񤤤ݾڤʤ

(3) vxsns_dsp			CPU㳰ȯΥǥѥåػ߾֤λ

CAPI
	BOOL state = vxsns_dsp(VP p_excinf);

ڥѥ᡼
	VP	p_excinf	CPU㳰˴ؤ򵭲Ƥΰ
				Ƭ

ڥ꥿ѥ᡼
	BOOL	state		ǥѥåػ߾

ڵǽ

CPU㳰ȯ֤ǥѥåػ߾֤ξ TRUEǥѥ
ľ֤ξ FALSE ֤p_excinf ˤϡCPU㳰ϥɥϤ
 p_excinfѥ᡼򤽤ΤޤϤCPU㳰ϥɥʳƤӽФ
䡤p_excinf Ϥʤäο񤤤ݾڤʤ

­

CPU㳰ϥɥεưˤäƥǥѥåػߡľ֤ѲCPU
㳰ϥɥǤϥǥѥåζػߤĤϹԤʤᡤvxsns_dsp 
֤ͤ sns_dsp ֤ͤ˾˰פ롥Τᡤvxsns_dsp  
sns_dsp νƤƱȤʤäƤ롥

(4) vxsns_dpn			CPU㳰ȯΥǥѥåα֤λ

CAPI
	BOOL state = vxsns_dpn(VP p_excinf);

ڥѥ᡼
	VP	p_excinf	CPU㳰˴ؤ򵭲Ƥΰ
				Ƭ

ڥ꥿ѥ᡼
	BOOL	state		ǥѥåα

ڵǽ

CPU㳰ȯ֤ǥѥåα֤ξ TRUEǤʤ
 FALSE ֤ʤǥѥå̤ͥ⤤
¹ԤƤCPUå֤Ǥäӥǥѥåػ߾
ǤäϡTRUE ֤p_excinf ˤϡCPU㳰ϥɥϤ 
p_excinfѥ᡼򤽤ΤޤϤCPU㳰ϥɥʳƤӽФ
䡤 p_excinf Ϥʤäο񤤤ݾڤʤ

(5) vxsns_tex			CPU㳰ȯΥ㳰ػ߾֤λ

CAPI
	BOOL state = vxsns_tex(VP p_excinf);

ڥѥ᡼
	VP	p_excinf	CPU㳰˴ؤ򵭲Ƥΰ
				Ƭ

ڥ꥿ѥ᡼
	BOOL	state		㳰ػ߾

ڵǽ

CPU㳰ȯ˼¹Ծ֤Ǥä㳰ػ߾
ξ TRUE㳰ľ֤ξ FALSE ֤CPU㳰
󥿥ƥȤȯλ˼¹Ծ֤Υʤä
⡤FALSE ֤p_excinf ˤϡCPU㳰ϥɥϤ p_excinf
᡼򤽤ΤޤϤCPU㳰ϥɥʳƤӽФ䡤
p_excinf Ϥʤäο񤤤ݾڤʤ

­

CPU㳰ϥɥεưˤäƥ㳰ػߡľ֤Ѳ 
CPU㳰ϥɥǤϥ㳰ζػߤĤϹԤʤᡤ 
vxsns_tex ֤ͤ sns_tex ֤ͤ˾˰פ롥Τᡤ
vxsns_tex  sns_tex νƤƱȤʤäƤ롥

3.11 ǽɾѥƥﻲȵǽ

JSPͥǤϡJSPͥư륿JSPͥ뼫Ȥǽ
¬뤿ˡƥ٤ι⤤ǽɾѥƥ
߽Фǽ򡤥åȰ¸˥ݡȤƤ롥ǽɾѥƥ
ϡñ̤ɽ뤬ºݤ٤ϥåȰ¸Ǥ롥Ū
ϡåΥޥ˥奢򻲾Ȥ뤳ȡ

ǽɾѥƥﻲȵǽǤϡΥǡѤ롥

	SYSUTIM		ǽɾѥƥ̵

SYSUTIMΥϥåȰ¸Ǥ롥Ūˤϡå
ޥ˥奢򻲾Ȥ뤳ȡ

(1) vxget_tim			ǽɾѥƥλ

CAPI
	ER ercd = vxget_tim(SYSUTIM *p_sysutim);

ڥѥ᡼
	ʤ

ڥ꥿ѥ᡼
	ER	ercd		顼
	SYSUTIM	sysutim		ߤǽɾѥƥ

ڥ顼ɡ
	E_CTX		ƥȥ顼

ڵǽ

ߤǽɾѥƥɤ߽Фsysutim ֤

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


ƥॵӥ

ǤϡJSPͥ뤬ɸŪư륷ƥॿӥɥ饤
ФȡѤ뤿Υ󥿥եˤĤ롥
ƤϡŪʻͤǤꡤѹǽ롥

4.1 ƥ९åɥ饤

ƥ९åɥ饤ФϡϡɥޤѤƼŪ˳ߤ
ȯisig_tim ƤӽФƥͥ˥ƥå򶡵뤹롥

ƥ९åɥ饤Фϡޤεư޳ߥϥɥ顤
ޤ߽λĤδؿǹ롥ޤεưϡͥ
롼ȤϿ롥޳ߥϥɥϡʸ̤ꡤ
˳ߥϥɥȤϿ롥

ޤ߽ϡСǤϤޤȤ߹ˡǤʤ
ͥФƽλ롼ϿˡѰդ٤⤷ʤ

(1) void timer_initialize(VP_INT exinf)

ޤεưޤŪʥ޳׵ȯ
롥exinf ̵뤹롥

(2) void timer_handler(void)

޳ߥϥɥ顥޳׵򥯥ꥢ塤isig_tim Ƥ
Фƥƥå򶡵뤹롥

(3) void timer_terminate(void)

ޤ߽Ūʥ޳׵ߤ롥

4.2 ƥӥ

ƥӥϡͥ䥢ץꥱȯݤ
ϿޤϽϤ뤿ΥƥॵӥǤ롥ͥ⤫ƤӽФ
礬뤿ᡤͥ뤫ƥॵӥȤ뤫񤷤
Ǥ뤬ץꥱ󤫤ƤӽФȤ顤
ॵӥ˴ޤƤ롥

1.5 »פ˽Ҥ٤̤ꡤСΥƥӥѤ
硤߱ʤ롥塤ϽײǤ뤬
κݤ˰ʲ륷ƥӥΥ󥿥եѹˤʤ
Τդߤ

ꥢ륤󥿥եɥ饤ФϡȻͤĤΥӥǹ
롥ϡͥ˽롼ȤϿ롥

(1) void syslog_initialize(void)

ƥӥν

(2) void syslog(int priority, const char *format, ...)

ƥϤؤνϡ

(3) int setlogmask(int maskpri)

ޥꡥ

(4) int syslog_read(void)

ƥХåեʸɽФƥѤ뤿
Υӥ롥

(5) int setlogmode(int mode)

⡼ɤѹ

4.3 ꥢ륤󥿥եɥ饤

ꥢ륤󥿥եɥ饤ФϡꥢI/OݡȤ򰷤Υɥ饤
ФǤ롥

ꥢ륤󥿥եɥ饤ФϡߥϥɥȡޤĤ
ӥǹ롥ϡͥ˽롼Ȥ
Ͽ롥ߥϥɥϡͥ˳ߥϥɥȤϿ٤
ΤǤ롥

ɸC饤֥٥ϥ롼򡤥ꥢ륤󥿥եɥ
ФƤӽФΤˤ뤳ȤǡɸϤ򥷥ꥢ륤󥿥ե
ɥ饤зͳڤؤ뤳ȤǤ롥ŪˡϡѤɸC
֥˰¸롥

4.3.1 ꥢ륤󥿥եɥ饤Фν

(1) void serial_initialize(VP_INT portid)

portid Ǽ륷ꥢݡȤФơꥢ륤󥿥եɥ饤
Фư롥ŪˤϡҤ serial_open ƤӽФƤ롥

4.3.2 ꥢ륤󥿥եɥ饤Фγߥϥɥ

ꥢ륤󥿥եǥХμˤäơߤȼߤ
̡γߥϥɥ餬ưΤȡƱߥϥɥ餬ư
Τ롥ꥢ륤󥿥եɥ饤ФǤϡSEPARATE_SIO_INT 
뤫ɤǡΰ㤤ۼƤ̡γߥϥɥ餬ư
ˡ

(1) void serial_in_handler(void)

SEPARATE_SIO_INT Ρߥϥɥ顥

(2) void serial_out_handler(void)

SEPARATE_SIO_INT Ρߥϥɥ顥

(3) void serial_handler(void)

SEPARATE_SIO_INT ʤΡꥢ륤󥿥եߥϥ
ɥ顥

4.3.3 ꥢ륤󥿥եɥ饤ФΥӥ

ꥢ륤󥿥եɥ饤ФƤӽФӥλͤϲ
Ǥ롥ǡꥢݡȤIDֹportidˤβϥå
¸Ȥʤ롥ʤΥӥ󥿥ƥȤ
ӽФȤϤǤʤޤserial_read  serial_write ϡǥѥ
α֤ǸƤӽФȤϤǤʤ⡤ƤӽФˤϡ
E_CTX顼Ȥʤ롥

(1) ER serial_open(ID portid)

portid Ǽ륷ꥢݡȤ򥪡ץ󤷡ɤ߹ߡ񤭽Фǽ
ʾ֤ˤ롥

(2) ER serial_close(ID portid, BOOL flush)

portid Ǽ륷ꥢݡȤΥåȥ򤹤롥flush  0 
ʳξϡХåեƤˤʤޤǥ롼פԤġ

(3) ER_INT serial_read(ID portid, char *buf, UINT len)

portid Ǽ륷ꥢݡȤ顤 lenХȤʸɤ߹ߡ
buf ΰ롥ºݤɤ߹ʸ֤ޤ 0ˡ
portid  0 ꤹȡǥեȤΥꥢݡȤꤷȤˤ
롥

(4) ER_INT serial_write(ID portid, char *buf, UINT len)

portid Ǽ륷ꥢݡȤˡbuf  lenХȤʸ
Фºݤ˽񤭽Фʸ֤ޤ 0ˡportid  0 ꤹ
ȡǥեȤΥꥢݡȤꤷȤˤʤ롥

(5) ER serial_ioctl(ID portid, UINT ioctl)

portid Ǽ륷ꥢݡȤioctl Ǽͤ
롥portid  0 ꤹȡǥեȤΥꥢݡȤꤷ
Ȥˤʤ롥

ioctl ˤϡʲɽ򡤥ӥå¤ȤäΤ
ꤹ롥

    IOCTL_ECHOʥХå⡼ɡ
	ΥӥåȤꤹȡꥢ륤󥿥եɥ饤Ф
	ХåԤŪˤϡХåեʸФ٤ˡ
	ʸ񤭽Ф

    IOCTL_CRLFʲԥ⡼ɡ
	LFline feedˤ񤭽ФȡCRcarriage return+ LF Ѵ
	ƽ񤭽Ф

    IOCTL_RAW1ʸñ̤Ǽ
	ʸɤ߽Ф1ʸñ̤ǹԤΥ⡼ɤǤϡserial_read 
	 len ѥ᡼̵ͤ뤷1ʸɤ߽Фȡserial_read 
	꥿󤹤롥

    IOCTL_CANONICAL1ñ̤Ǽ
	ʸɤ߽Ф1ʸñ̤ǹԤΥ⡼ɤǤϡserial_read 
	 LF ɤ߽Ф len ǻꤷʸɤ߹ǥ꥿
	󤹤롥

    IOCTL_IXONե
	ʸФơXON/XOFF ˤեԤ
	ʤSTOPʥȥ-Sˤߤ
	STARTʥȥ-QˤƳ롥

    IOCTL_IXANYեǤդʸƳ
	IOCTL_IXON ꤷƤˡ˼Ǥդʸ
	Ƴ롥

    IOCTL_IXOFFʼե
	ʸФơXON/XOFF ˤեԤ
	ʤХåեλĤΰ褬ʤʤ STOPʥȥ
	-SˤФĤΰ褬 STARTʥȥ-Qˤ
	Ф롥

ʤץľΥǥեȤͤ (IOCTL_ECHO | IOCTL_CRLF |
IOCTL_CANONICAL | IOCTL_IXON | IOCTL_IXOFF) Ǥ롥

4.4 ƥ

ƥϡƥХåեåʸФ
ꥢ륤󥿥եɥ饤ФѤơꥢݡȤؽ񤭽Ф
Ǥ롥


ݡȥ饤֥

ݡȥ饤֥ϡץꥱ䥷ƥॵӥ
ѤǤ饤֥귲Ǥ롥ȤơСǤϡƥॵ
ӥ䥵ץץǻȤ¤δؿѰդƤʤ

(1) char *itron_strerror(ER ercd)

ercd Ǽᥤ󥨥顼ɤб륨顼ɤʸ֤
֤줿ʸ񤭴ƤϤʤʤ

(2) void jsp_perror(char *file, int line, char *expr, ER ercd)
    
顼å򥷥ƥӥ˽Ϥ롥assertޥʤɤ
Ѥ뤳ȤꤷƤ롥


ȯĶ󥹥ȡ롦ݡƥ

6.1 ǥ쥯ȥꡦե빽

եΥǥ쥯ȥ깽ϼ̤ꡥ

    include/	̥إåե
    kernel/	ͥ륽ե
    systask/	ƥॵӥե
    libjsp/	ݡȥ饤֥꥽ե
    config/	åȰ¸
	m68k/		68040 ץå¸ե
	    dve68k/		DVE-68K/40 ƥ¸ե
	sh3/		SH3 ץå¸ե
	    card_e09a/		SH-CARD CARD-E09A ƥ¸ե
	    rsh3/		PowerMedusa RSH3 ƥ¸ե
	    dvesh7700/		DVE-SH7700 ƥ¸ե
	linux/		LinuxΥߥ졼Ķ¸ե
	windows/	WindowsΥߥ졼Ķ¸ե
    cfg/	ͥ륳ե졼
    utils/	桼ƥƥ
    doc/	ɥ

    DVE68K/			DVE-68K/40ѥץץ
    CARDE09A/			SH-CARD CARD-E09Aѥץץ
    RSH3/			PowerMedusa RSH3ѥץץ
    DVESH7700/			DVE-SH7700ѥץץ
    LINUX/			LinuxΥץץ
    WINDOWS/    		WindowsΥץץ

åΩʥͥ륳ե졼Ͻˤγƥեγ
ϼ̤ꡥ

    include/
	itron.h		ITRONͶ̵˴Ϣ
	kernel.h	ITRON4.0ͤ˴Ϣ
	jsp_stddef.h	JSPδĶѤ붦Ū
	jsp_services.h	ץꥱ ɸ।󥯥롼ɥե
	timer.h		ƥ९åɥ饤дϢ
	syslog.h	ƥӥϢ
	serial.h	ꥢ륤󥿥եɥ饤дϢ
	logtask.h	ƥϢ
	linux_sigio.h	Linux Υ֥åI/Oݡ

    kernel/
	jsp_kernel.h	JSPͥ ɸ।󥯥롼ɥե
	jsp_rename.h	ͥ̾Υ͡
	check.h		顼åѥޥ
	queue.h		֥󥯥塼ι¤
	startup.c	ͥν
	banner.c	ͥεưåν
	task.h		롼Ϣ
	task.c		롼
	wait.h		Ԥ롼Ϣ
	wait.c		Ԥ롼
	time_event.h	।٥ȴϢ
	time_event.c	।٥ȴ
	task_manage.c	ǽ
	task_sync.c	°Ʊǽ
	task_except.c	㳰ǽ
	semaphore.h	ޥեǽϢ
	semaphore.c	ޥեǽ
	eventflag.h	٥ȥե饰ǽϢ
	eventflag.c	٥ȥե饰ǽ
	dataqueue.h	ǡ塼ǽϢ
	dataqueue.c	ǡ塼ǽ
	mailbox.h	᡼ܥåǽϢ
	mailbox.c	᡼ܥåǽ
	mempfix.h	ĹסϢ
	mempfix.c	Ĺס
	time_manage.c	ƥǽ
	cyclic.h	ϥɥ鵡ǽϢ
	cyclic.c	ϥɥ鵡ǽ
	sys_manage.c	ƥǽ
	interrupt.h	ߴǽϢ
	interrupt.c	ߴǽ
	exception.h	CPU㳰ǽϢ
	exception.c	CPU㳰ǽ

    systask/
	timer.c		ƥ९åɥ饤
	timer.cfg	ƥ९åɥ饤Ф국
	syslog.c	ƥӥ
	serial.c	ꥢ륤󥿥եɥ饤
	serial.cfg	ꥢ륤󥿥եɥ饤Ф국
	logtask.c	ƥ
	logtask.cfg	ƥ국
	linux_sigio.c		Linux Υ֥åI/Oݡ
	linux_sigio.cfg		Linux Υ֥åI/OݡȤ국
	linux_serial.c		Linux ꥢɥ饤
	linux_serial.cfg	Linux ꥢɥ饤Ф국

    libjsp/
	jsp_perror.c	jsp_perrorؿ
	strerror.c	itron_strerrorؿ

    utils/
	makedep		¸ط
	genoffset	offset.h ץ

    doc/
	user.txt	TOPPERS/JSPͥ 桼ޥ˥奢
	m68k.txt	68040 åȰ¸
	sh3.txt		SH3 åȰ¸
	linux.txt	Linux ߥ졼Ķ¸
	windows.txt	Windows ߥ졼Ķ¸
	config.txt	JSPͥ åȰ¸ 󥿥ե
	design.txt	JSPͥ ߷ץ

6.2 ȯĶ

JSPͥѤƥ๽ۤˤϡʲΥġ뤬ɬפǤ롥

    ۥȴĶѤΥġ
	ɸ൬ʤ˽򤷤Cѥ顤C饤֥
	ɸ൬ʤ˽򤷤C++ѥ顤C++饤֥ꡤSTL
	perlưǧ 5.005
	GNU Makeưǧ 3.77

    ĶѤΥġ
	GNUȯĶ
	    GCC ޤ GCC-CORECѥ
	    BINUTILSʥ֥顤󥫤ʤɡ
	    NEWLIBɸC饤֥

ۥȴĶѤCѥC饤֥ϡĶѤΥġΥ
ȡɬפˤʤ롥ޤC++ѥ顤C++饤֥ STLStandard
Template Libraryˤϡͥ륳ե졼ΥѥɬפǤ
롥

ĶѤɸC饤֥ϡץꥱɸC饤֥
ѤʤˤϡɬܤǤϤʤGNUȯĶưǧСȥ
ȡˡˤĤƤϡåΥޥ˥奢򻲾Ȥ뤳ȡ

ʲǤϡUNIXޥưǧ Linux˾ǹۼ롥ޤ
Ǥϡmakeޥɤ GNU Make ǤΤȤJSPͥ 
Makefile ϡGNU Make γĥǽѤƤˡ

6.3 ͥ륳ե졼Υѥ

ǽˡͥ륳ե졼򥳥ѥ뤹롥ե졼
Υǥ쥯ȥǡmake ¹ԤФ褤

    % cd cfg
    % make

ˤꡤcfg Ȥ̾Υޥɤ롥

6.4 ץץι

ǽˡץץΥǥ쥯ȥ˰ư롥Υǥ쥯ȥ
ϡץץۤ뤿 Makefileץץ
Ρsample1.h  sample1.cˡץץѤΥե졼
եsample1.cfgˤʤɤ֤Ƥ롥

    % cd DVE68KDVE-68K/40ѥץץξ

ޤ Makefile ΰ¸طäƤ顤ץץΥ֥
Ȥ롥

    % make depend
    % make

6.5 Makefile ν

JSPͥ¾δĶư䡤桼Υץꥱץ
ۤˤϡMakefile νɬפˤʤ롥Ǥϡ
Makefile ǡɬפȤʤսˤĤ롥

(A) å̾

CPU ϥåȥץå̾ΡSYS 򥿡åȥƥ̾Τ
롥

(B) Cygwinǥѥ뤹뤫ɤ

CygwinĶǥѥ뤹ˤϡCYGWIN  true 롥ϡ
CygwinĶǤϡ֥ȥץ˳ĥ "exe" ղäΤ
б뤿ΤΤǤ롥

(C) CץץåΥޥ̾

CץץåΥޥ̾ CPP 롥Cץץåɸ
ѥˤʤˤϡեѥФ褤

(D) ̥ѥ륪ץ

Τ˶̤륳ѥ륪ץɲäɬפʾˤϡCFLAGS 
ѹ롥Υѥ륪ץ󤬡ΥåȤǾɬפ
ˤϡåȰ¸줿 Makefile.config ٤
롥ɲäβǽΤ륳ѥ륪ץˤĤƤϡ6.6 ѥ
륪ץפ򻲾Ȥ줿

(E) ץꥱץ˴ؤ

ץꥱץबĤCե*.cˤΤߤǹ
ƤˤϡUTASK ˤΥե̾Ф褤ץꥱ
ץबʣΥեǹˤϡUTASK ˤΥ
ץꥱ֥̾ȥե̾ UTASK_ASMOBJS 
 UTASK_COBJS 󤹤롥ξˤ⡤ե졼ե
ϡUTASK ̾˳ĥ "cfg" ղä̾Ȥ롥

ե򥳥ѥ뤹ΤȤ̤Υǥ쥯ȥ֤ˤϡ
UTASK_DIRS ˤΥǥ쥯ȥɲä롥ޤץꥱΥ
ѥɬפʥѥ륪ץ䡤ץꥱ󤬥饤֥ɬ
פȤˤϡUTASK_CFLAGS  UTASK_LIBS 롥

(F) åȥե

ǽŪ˺륪֥ȥեηꤹ롥ŪˤϡELF
λ jsp ޤ jsp.exeCygwinĶλˡХʥλ 
jsp.binȥ Sλ jsp.S ꤹ롥

(G) ͥΥե졼ե

եȥʤΥե졼ɲäˤϡε§
뤳ȤɬפǤ롥

6.6 ѥ륪ץ

JSPͥΥˤϡassertޥȤƤ롥assertޥϡ
NDEBUG 뤳Ȥǡ֥ȥ椫äȤǤ롥
ͥΥǥХåλС-DNDEBUG ꤷƥѥ뤷Ψ
褯ʤ롥

6.7 󥫥ץȤȥΰ

JSPͥΥˡϡåȰ¸Υ󥫥ץȡ*.ldˤ
ҤƤ롥ץץ Makefile ǤϡåȰ¸
줿 Makefile.config  LDSCRIPT ȡ̾
Υե󥫥ץȤѤ롥

JSPͥưˤϡʲΥΰ褬ɬפˤʤ롥

(a) ΰ

ͥ뤪ӥץꥱΥץपǡ֤
补ROM֤ȤǽǤ롥Ƭɥ쥹򡤥ͥ󥯤
ݤ -Ttext ץǻꤹ롥ץץ Makefile Ǥϡ
åȰ¸줿 Makefile.config  TEXT_START_ADDRESS 
ȡ󥯻 -Ttext ץղä롥

(b) ǡΰ

ͥ뤪ӥץꥱλѤǡΰ补Ūʥǡΰ
ȡsbrkؿˤäƼҡΰ褫ʤ롥ͥϥҡΰ
ѤʤƬɥ쥹򡤥ͥ󥯤ݤ -Tdata ץ
ǻꤹ롥ץץ Makefile ǤϡåȰ¸
줿 Makefile.config  DATA_START_ADDRESS ȡ
 -Tdata ץղä롥

(c) 󥿥ƥѤΥåΰ

ߥϥɥʤɤ󥿥ƥȤѤ륹åΰ补ΰ
ˡϥåȰ¸Ǥ뤬̾ϡåȥƥ¸Υ
롼ɥեsys_config.hˤǥåνͤå
ץå¸Υȥåץ⥸塼start.Sǽ롥

6.8 ¾ΥåȤؤΥݡƥ

JSPͥ¾ΥåȤإݡƥ󥰤뤿ɬפʺȤϡ礭
ͥ뼫ȤΥݡƥ󥰡ƥॵӥΥݡƥ󥰡ȯ
ιۤɸγȯĶȤκۤεۼʤ롥

ͥ뼫ȤΥݡƥ󥰤ˤĤƤϡΥޥ˥奢Ȥ̤ˡͥ
ΥåȰ¸Υ󥿥եͤ˴ؤɥȤѰդƤ
Τǡ򻲾Ȥ줿ܤȤˤĤƤϡ̤줿


¾

7.1 ֥

TOPPERSץȤJSPͥΤΥ֥Ȥ򡤰ʲURL
ѰդƤ롥

	http://www.ertl.ics.tut.ac.jp/TOPPERS/

եåȤκǿǤϡΥ֥Ȥɤ뤳ȤǤ롥
ޤҤΥ᡼󥰥ꥹȤΥ֤ʤɤ⡤Υ֥ȤǱ
뤳ȤǤ롥

7.2 Ѿ

JSPͥϥե꡼եȥǤ롥ŪѾϡƥե
ƬˤĤƤ˽ΤȤʤΥɥȤƬˤĤ
ƤˡϡƥեƬɽƤԤͭ
롥

Ѿ (2)  (b) ˤơѤη֤Ԥ𤹤ˡȤ
ƤϡJSPͥʤѤˤϤʤμ̤̾Ρʤ
ʤˤϤ˽स򡤼Υɥ쥹إ᡼Ϣˡɸ
Ȥ롥

	toppers-report@ertl.ics.tut.ac.jp

ޤκݤˡJSPͥѤƤΥȤ䤴ո⤤ȹ
Ǥ롥ˡǤ񤷤ˤϡ̤줿

7.3 ݾڡݡȡŬ

JSP̵ͥݾڤ󶡤ƤΤǤ롥ȯԤϡŬѲǽ
ޤơʤݾڤԤʤޤݡȤ«⤷Ƥʤ
䤬ϡҤΥ᡼󥰥ꥹȤѤ

JSPͥϸ桦Ѥ뤳ȤŪŪȤƳȯƤ
뤿ᡤˤäƤϡ¹ǽݼŻ뤷Ƥ
롥Τᡤ᡼ƱΥեȥ٤ơǽŪˤ
⤷ʤޤʲƤ ITRONOS ٤ȡƥȤ
ԽʬǤ롥

7.4 ᡼󥰥ꥹ

JSPͥΥ桼Ф󶡤ӥ桼ߴ֤ξ򴹤ư
ˤ뤿ˡTOPPERS桼᡼󥰥ꥹȤѰդƤ롥Υ᡼
󥰥ꥹȤˤϡïǤ⼫ͳ˥᡼դ뤳ȤǤ롥ޤ
줿᡼ϡ֥ȤɤळȤǤ롥JSPͥ˥Х
ȯˤϡΥ᡼󥰥ꥹȤ𤷤ߤ

᡼󥰥ꥹȤؤΥ᡼ϼ̤ꡥ

	toppers-users@ertl.ics.tut.ac.jp

Υ᡼󥰥ꥹȤؤϿ˾ϡޤ
toppers-users-ctl@ertl.ics.tut.ac.jp Ƥˡʸ

	subscribe ʤ̾
	: subscribe Hiroaki Takada

Ƚ񤤤᡼դ롥ޤ֤ϿǧΤΥ᡼뤬Ƥ
Τǡλؼ˽äϿ롥

7.5 ITRON Club

Żٶ̣鷺 ITRONͤ ITRONץȤ˶̣
ͤΤξ򴹡ξȤơITRON Club ᡼󥰥ꥹȤѰ
Ƥ롥Υ᡼󥰥ꥹȤˤϡITRON ˶̣äƤͤʤï
⻲äǤ롥ä˾ϡ
itron-club-request@tron.um.u-tokyo.ac.jp ޤϢ줿

ʤΥ᡼󥰥ꥹȤ줿᡼ϡ夫᡼󥰥ꥹȤ
ä줿ͤ˸礬롥ޤ᡼󥰥ꥹȤΥХꥹȤϡ
᡼󥰥ꥹǸΤǡ餫ᤴλ򤤤

7.6 TOPPERSץȤؤι׸

TOPPERSץȤǤϡŪޤ϶ŪʻٱƤ롥ܤ
Ȥϡ̤ȹǤ롥


ե

8.1 ӥ

(1) ǽ

	ER ercd = act_tsk(ID tskid);
	ER ercd = iact_tsk(ID tskid);
 ER_UINT actcnt = can_act(ID tskid);
	     void ext_tsk(void);
	ER ercd = ter_tsk(ID tskid);
	ER ercd = chg_pri(ID tskid, PRI tskpri);
	ER ercd = get_pri(ID tskid, PRI *p_tskpri);

(2) °Ʊǽ

	ER ercd = slp_tsk(void);
	ER ercd = tslp_tsk(TMO tmout);
	ER ercd = wup_tsk(ID tskid);
	ER ercd = iwup_tsk(ID tskid);
 ER_UINT wupcnt = can_wup(ID tskid);
	ER ercd = rel_wai(ID tskid);
	ER ercd = irel_wai(ID tskid);
	ER ercd = sus_tsk(ID tskid);
	ER ercd = rsm_tsk(ID tskid);
	ER ercd = frsm_tsk(ID tskid);
	ER ercd = dly_tsk(RELTIM dlytim);

(3) 㳰ǽ

	ER ercd = ras_tex(ID tskid, TEXPTN rasptn);
	ER ercd = iras_tex(ID tskid, TEXPTN rasptn);
	ER ercd = dis_tex(void);
	ER ercd = ena_tex(void);
     BOOL state = sns_tex(void);

(4) Ʊ̿ǽ

	ER ercd = sig_sem(ID semid);
	ER ercd = isig_sem(ID semid);
	ER ercd = wai_sem(ID semid);
	ER ercd = pol_sem(ID semid);
	ER ercd = twai_sem(ID semid, TMO tmout);

	ER ercd = set_flg(ID flgid, FLGPTN setptn);
	ER ercd = iset_flg(ID flgid, FLGPTN setptn);
	ER ercd = clr_flg(ID flgid, FLGPTN clrptn);
	ER ercd = wai_flg(ID flgid, FLGPTN waiptn,
			MODE wfmode, FLGPTN *p_flgptn);
	ER ercd = pol_flg(ID flgid, FLGPTN waiptn,
			MODE wfmode, FLGPTN *p_flgptn);
	ER ercd = twai_flg(ID flgid, FLGPTN waiptn,
			MODE wfmode, FLGPTN *p_flgptn, TMO tmout);

	ER ercd = snd_dtq(ID dtqid, VP_INT data);
	ER ercd = psnd_dtq(ID dtqid, VP_INT data);
	ER ercd = ipsnd_dtq(ID dtqid, VP_INT data);
	ER ercd = tsnd_dtq(ID dtqid, VP_INT data, TMO tmout);
	ER ercd = fsnd_dtq(ID dtqid, VP_INT data);
	ER ercd = ifsnd_dtq(ID dtqid, VP_INT data);
	ER ercd = rcv_dtq(ID dtqid, VP_INT *p_data);
	ER ercd = prcv_dtq(ID dtqid, VP_INT *p_data);
	ER ercd = trcv_dtq(ID dtqid, VP_INT *p_data, TMO tmout);

	ER ercd = snd_mbx(ID mbxid, T_MSG *pk_msg);
	ER ercd = rcv_mbx(ID mbxid, T_MSG **ppk_msg);
	ER ercd = prcv_mbx(ID mbxid, T_MSG **ppk_msg);
	ER ercd = trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout);

(5) סǽ

	ER ercd = get_mpf(ID mpfid, VP *p_blk);
	ER ercd = pget_mpf(ID mpfid, VP *p_blk);
	ER ercd = tget_mpf(ID mpfid, VP *p_blk, TMO tmout);
	ER ercd = rel_mpf(ID mpfid, VP blk);

(6) ִǽ

	ER ercd = set_tim(SYSTIM *p_systim);
	ER ercd = get_tim(SYSTIM *p_systim);
	ER ercd = isig_tim(void);

	ER ercd = sta_cyc(ID cycid);
	ER ercd = stp_cyc(ID cycid);

(7) ƥִǽ

	ER ercd = rot_rdq(PRI tskpri);
	ER ercd = irot_rdq(PRI tskpri);
	ER ercd = get_tid(ID *p_tskid);
	ER ercd = iget_tid(ID *p_tskid);
	ER ercd = loc_cpu(void);
	ER ercd = iloc_cpu(void);
	ER ercd = unl_cpu(void);
	ER ercd = iunl_cpu(void);
	ER ercd = dis_dsp(void);
	ER ercd = ena_dsp(void);
     BOOL state = sns_ctx(void);
     BOOL state = sns_loc(void);
     BOOL state = sns_dsp(void);
     BOOL state = sns_dpn(void);

(8) ߴǽ

	ER ercd = dis_int(INTNO intno);
	ER ercd = ena_int(INTNO intno);
	ER ercd = chg_ixx(IXXXX ixxxx);
	ER ercd = get_ixx(IXXXX *p_ixxxx);
	 xxxxxxXXXX ϥå롥

(9) CPU㳰ȯΥƥֻ

     BOOL state = vxsns_ctx(VP p_excinf);
     BOOL state = vxsns_loc(VP p_excinf);
     BOOL state = vxsns_dsp(VP p_excinf);
     BOOL state = vxsns_dpn(VP p_excinf);
     BOOL state = vxsns_tex(VP p_excinf);

(10) ǽɾѥƥﻲȵǽ

	ER ercd = vxget_tim(SYSUTIM *p_sysutim);

8.2 ŪAPI

    CRE_TSK(tskid, { ATR tskatr, VP_INT exinf, FP task,
				PRI itskpri, SIZE stksz, VP stk });
    DEF_TEX(ID tskid, { ATR texatr, FP texrtn });
    CRE_SEM(ID semid, { ATR sematr, UINT isemcnt, UINT maxsem });
    CRE_FLG(ID flgid, { ATR flgatr, FLGPTN iflgptn });
    CRE_DTQ(ID dtqid, { ATR dtqatr, UINT dtqcnt, VP dtq });
    CRE_MBX(ID mbxid, { ATR mbxatr, PRI maxmpri, VP mprihd });
    CRE_MPF (ID mpfid, { ATR mpfatr, UINT blkcnt, UINT blksz, VP mpf } ) ;
    CRE_CYC (ID cycid, { ATR cycatr, VP_INT exinf, FP cychdr,
				RELTIM cyctim, RELTIM cycphs } ) ;
    DEF_INH(INHNO inhno, { ATR inhatr, FP inthdr });
    DEF_EXC(EXCNO excno, { ATR excatr, FP exchdr });
    ATT_INI({ ATR iniatr, VP_INT exinf, FP inirtn });

8.3 ᥤ󥨥顼ɰJSPͥ뤬֤ΤΤߡ

    E_PAR	-17		ѥ᥿顼
    E_ID	-18		IDֹ
    E_CTX	-25		ƥȥ顼
    E_ILUSE	-28		ӥ
    E_OBJ	-41		֥Ⱦ֥顼
    E_QOVR	-43		塼󥰥Сե
    E_RLWAI	-49		Ԥ֤ζ
    E_TMOUT	-50		ݡ󥰼Ԥޤϥॢ

8.4 С

    2000ǯ1115	Release 1.0	ǽΥ꡼

ʾ
