
             TOPPERS/FI4J[l [UY}jA 

             iRelease 1.0ΉCŏIXV: 28-Jul-2003j

 ̃[UY}jÁCITRON4.0dliVer. 4.02.00j̓e
OɋLqĂ܂DITRON4.0dĺCȉURL_E[h
邱Ƃł܂D
        http://www.ertl.jp/ITRON/SPEC/mitron4-j.html

----------------------------------------------------------------------
 TOPPERS/FI4 Kernel
     Toyohashi Open Platform for Embedded Real-Time Systems/
     Fullset uITRON4.0

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

 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: /local/fi4-1.4/toppers/RELEASE_20061105_1/doc/fi4_user.txt 2750 2006-03-07T16:15:24.532712Z monaka  $
----------------------------------------------------------------------
 * ITRON4.0dĺCgSƂȂč肳ꂽI[vȃA
   ^CJ[ldlłDITRON4.0dl̎dĺCg̃z[
   y[Wihttp://www.assoc.tron.org/j肷邱Ƃł܂D
----------------------------------------------------------------------
 * TRON  "The Real-time Operating system Nucleus" ̗̂łD
 * ITRON  "Industrial TRON" ̗̂łD
 * ITRON  "Micro Industrial TRON" ̗̂łD
 * TRONCITRONCуITROŃC̏iȂ͏iQŵ
   ͂܂D
 * TOPPERS  "Toyohashi OPen Platform for Embedded Real-time Systems" 
   ̗́CJSP  "Just Standard Profile" ̗̂łD
 * {}jȀíCeЂ̏W܂͓o^WłD
----------------------------------------------------------------------


PDTOPPERS/FI4J[l̊Tv

TOPPERS/FI4J[liȉCPFI4J[lƏj́CTOPPERSvWF
NgɂĊJITRON4.0dlɏA^CJ[lłD
FI4iJust Standard Profilej̖OʂCITRON4.0dl̃X^_
[hvt@CKɏ]ĎĂD

1.1 ^[QbgvZbT^^[QbgVXe

FI4J[ĺC_ŁCȉ̃^[QbgvZbT^^[QbgVXe
T|[gĂD

    vZbTi^ԁj  VXei[Jj
    SH3iSH7727j       MS7727CP01 iLSIVXeYj

܂Aۏ؂͂ȂIɈȉ̃^[QbgVXeł̓T|[g
ĂB

FI4J[ĺÅbƂȂJSPJ[lƓlCJ[l̂ł葽
̕CŋLqC^[Qbgˑƈˑ𖾊mɕ
ȂǁC̃^[QbgvZbTւ̃|[eBOeՂȍ\ɂȂĂD
C|[eBOɂǂ̒x̎Ԃ邩́C^[QbgvZbT
̃A[LeN`VXe̍\ȂǂɈˑD

̃[UY}jAł́C^[Qbgi^[QbgvZbTу^[
QbgVXejɈˑȂ@\ɂĂ̂ݐĂD^[Qbg
ˑ@\ɂẮC^[Qbg̃}jAQƂ邱ƁD

1.2 J

FI4J[ĺCGCCȂǂGNUJW̃\tgEFAJƂ
邪C̎ނ̊Jpł悤ɍlĂDpłJ
ɂẮC^[Qbg܂͊J̃}jAŐD

^[Qbgˑ́C啔͕WICɂċLqĂ邪C
\Ɖǐ𗼗邽߂ɁCꕔŃCC֐pĂDC
C֐̋@\ȂJ̏ꍇłCȂɑΉ\ł͂
邪C^ʂȃR[h邨ꂪD

J[l{̂́CÕCu֐ɈˑȂ悤ɋLqĂD
CRpCWCCu֐ĂяoR[h𐶐ꍇ
C̏ꍇɂ͕WCCuKvłD܂CVXeT[rX
T|[gCuCAvP[VvOŕWCCuK
vɂȂꍇlDہCWzzLbgɊ܂܂钆ŁCVXe
O@\Ăяo߂̃Cu֐ŁCϐ邽߂
@\istdarg.h, va_list, va_start, va_argjpĂiۂɂ́CGNU
Jł́Cϐ邽߂̋@\GCC{̂ŃT|[gĂ
邽߁CWCCu͕KvȂjD̗RɂCWCCu
p\Ƃ悤ɂĂD

1.3 V~[V

{o[Wł́AFI4J[l𑼂OSŃV~[V
ȂB

1.4 J[lT|[g@\

FI4J[ĺCOʂCITRON4.0dlɊ܂܂@\T|[g
ĂDITRON4.0dlł́AK݃nhƊ݃T[rX
[`̗T|[gKv͂ȂAFI4J[ĺCł
݃nhƊ݃T[rX[`̗T|[gĂD

ITRON4.0dl̋@\ƂāCȉ̊݊ǗT[rXR[T|[g
D̋@\̋̓IȓeɂẮC^[QbgɈقȂD
ڂ́C^[Qbg̃}jAQƂ邱ƁD

    dis_int     ݂̋֎~
    ena_int     ݂̋

ITRON4.0dl̎ˑ@\ƂāC^[QbgˑɈȉ
݊Ǘ@\уT[rXR[T|[gꍇD̋@
\̋̓IȓeɂẮC^[QbgɈقȂDڂ́C^[Qbg
̃}jAQƂ邱ƁD

    chg_ixx     ݃}XN̕ύX
    get_ixx     ݃}XN̎Q
     xx ̓^[Qbgɒ߂D

܂CITRON4.0dlɒ`ĂȊOɁCȉ̓Ǝ̊g@\
T[rXR[T|[gĂD

(1) CPUÕVXeԂ̎Q

X^_[hvt@Cł́CCPUOnhŁCCPUOR
eLXgԂQƂł邱ƂKvł邪Ĉ߂API͒߂
ȂDFI4J[lł́CCPUOsns_yyyĂяo
̌ʂCCPUOnhŎo悤ɂ邽߂ɁCȉ̌܂
̃T[rXR[ƎɃT|[gĂD

    vxsns_ctx   CPUÕReLXg̎Q
    vxsns_loc   CPUOCPUbNԂ̎Q
    vxsns_dsp   CPUÕfBXpb`֎~Ԃ̎Q
    vxsns_dpn   CPUÕfBXpb`ۗԂ̎Q
    vxsns_tex   CPUÕ^XNO֎~Ԃ̎Q

(2) \]pVXeQƋ@\

\]pVXeQƋ@\Ƃ́CFI4J[lœ삷^XNFI4
J[lg̐\v邽߂́CVXeʕbPʂœǂݏo@
\łD̋@\̂߂ɒǉT[rXR[͎̒ʂłD

    vxget_tim   \]pVXe̎Q

\]pVXeQƋ@\T|[g邩ǂ́C^[Qbgˑ
̒`t@CŎw肷邱ƂłD܂C^[QbgVXe̐
ɂC̋@\T|[głȂꍇD

(3) I[`@\

FI4J[lł́CVXȅIɌĂяoI[`o^
邽߂̋@\T|[gĂD̋@\̂߂ɒǉÓIAPI͎
̒ʂłD

    VATT_TER    I[`̒ǉiÓIAPIj

I[`ɂẮCu2.12 VXeI菇ƏI[`v
QƂ̂ƁD

(4) J[lԂ̎Q

J[lœ삷^XNĂяo֐CJ[l̏
OIJnɂĂяo\ꍇɂ́C̒ŃJ[l
̃T[rXR[Ăяo邩𔻕ʂ邱ƂKvƂȂDFI4J[l
ł́C̔ʂ\ɂ邽߂ɁC̃T[rXR[ǉĂD

    vsns_ini    J[lԂ̎Q

1.5 m̖_

m̖_ɂẮAʕQƂꂽB

1.6 ӎ

CRE_DTQ̃p[^dtqcnt́CITRON4.0dlVer. 4.01.00ł͈ʒ萔
p[^ƋK肳Ă邪CFI4J[lłVer. 4.02.00ɏāC
vvZbT萔p[^ƈĂD


QDFI4J[l̋@\

̐߂ł́CITRON4.0dlŎ`ƂȂĂ鎖𒆐SɁCFI4J[
l̋@\ɂĉD

2.1 jƃf

ITRON4.0dĺCVXeŜ̃W[ɃN邱Ƃz
ċK肳ĂD܂CT[rXR[̌ďóCPȂTu[`
R[ɂčsƂz肳ĂDFI4J[ĺC̑zɏ]C
AvP[VƃJ[l̃W[ɃNCTu[`
R[ɂăT[rXR[Ăяo@݂̂T|[gĂD

FI4J[lœ삷AvP[V́CׂCŋLq邱Ƃ
ƂĂD̂߁C^XN⊄݃nhȂǂ̏PʂAZ
uŋLq@́Cʂɂ͗pӂĂȂiCC^tF[
XC̊֐ɂ킹΁CLqɃAZugƂ͖
jD

FI4J[lł́C̗OAT[rXR[̑啔
݋֎~ԂƂĎĂ邽߁CT[rXR[̕s͌
ۏ؂DtɌ_ƂẮCő劄݋֎~ԁiő劄݉Ԃ
ljC҂L[ɂȂ^XN̍ő吔^CCxg̍ő吔
Ɉˑ邱ƂɂȂ邪CX^_[hvt@C̋@\Zbg͈͓̔
́C̕@łقǖɂȂȂƎvD荞݋֎~ԂɊ
B̗O͓I/폜ñT[rXR[łB̃T[rX
R[͖{IɏԂ邽߁ARg[ubN̎擾/ԋp
ȊO͊݋֎~ĂBȂT[rXR[̐
I܂ł͐/폜IDɑΉJ[lIuWFNg͎gpł
Ȃ߁AT[rXR[̕s͕ۂB

2.2 f[^^

FI4J[lł́CȉɃXgAbvf[^^Csigned int^C
unsigned int^C܂size_t^ɒ`ĂĎ^̃TCÝC
FI4J[l|[eBOĂ^[QbgvZbT^RpC
ɂ 32rbgł邽߁CłȂꍇɂ̂݃^[Qbg̃}
jAɖDȂ킿C^[Qbg̃}jAɖĂ
CȉɃXgAbvf[^^̃TCY 32rbgłD

    signed int^ɒ`Ăf[^^

	INT		t
	BOOL		^Ul
	FN		@\R[h
	ER		G[R[h
	ID		IDԍ
	PRI		Dx
	TMO		^CAEgl
	ER_BOOL		ER ܂ BOOL
	ER_ID		ER ܂ ID
	ER_UINT		ER ܂ UINT

    unsigned int^ɒ`Ăf[^^

	UINT		
	ATR		
	STAT		
	MODE		샂[h
	RELTIM		Ύ
	TEXPTN		^XNOṽrbgp^[
	FLGPTN		CxgtÕrbgp^[

    size_t^ɒ`Ăf[^^
	SIZE		TCY

CRELTIM^̗Lrbg31rbgz邱Ƃ͂ȂDȂ킿C
unsigned int^̃TCY32rbg̏ꍇɂ́CRELTIM^̗Lrbg 
31rbgłC(2^31 - 1)zl RELTIM^̃p[^ɓn
CE_PARG[ƂȂDunsigned int^̃TCY16rbg̏ꍇɂ́C
RELTIM^̗Lrbg16rbgłDX^_[hvt@Cł́C
RELTIM^16rbgȏƋK肵ĂC̎dlŃX^_[hvt@C
KɏĂDJSPJ[lƂ̊ԂŃAvP[V݊
Ȃ悤ɂƂ̔zɊÂݒłB

SYSTIM^́C32rbg̕^ɒ`ĂC\̂ƂĒ`
@͗pĂȂD

Ԃ킷f[^^iTMOCRELTIMCSYSTIMj̎ԒPʂ́CX^_[
hvt@C̋Kɏ]Cׂ1~bƂĂDJSPJ[l
Ƃ̊ԂŃAvP[V݊Ȃ悤ɂƂ̔zɊÂ
ݒłB

2.3 IuWFNgIDԍƗDx

IuWFNgIDԍɂ́C̒lpDIDԍ͕KAȂB
̓_JSPJ[lƂ͔݊łBIDԍt̐nT[rX
R[t\ȃIuWFNg̐ݒ肨сAIDԍt
ΏۊOɐݒ肷邽߂̃T[rXR[ǉĂB
IDԍpVXeIuWFNgƃ[UIuWFNg̋ʂ
T|[gĂȂD

łIuWFNg̍ő吔́CJ[l̃R[h́CIDԍID^
isigned int^ɒ`Ăjŕ\ł͈͓ł邪Cۂɂ̓
eʂɂĐD

^XNƃbZ[W̗Dxɂ́C1`16̐̒lpD

2.4 G[`FbNƃG[R[h

FI4J[lł́CȉɎCG[R[hԂG[̌oȗ
ĂD

    E_SYS       VXeG[
    E_MACV      ANZXᔽ

܂C|C^̒lsȏꍇ̃p[^G[iE_PARǰoȗ
ĂDANZXᔽiE_MACVǰoȗĂ邽߁C
|C^nT[rXR[ɑ΂āC݂ȂԒn|C
^ȂǁCsȃANZXN|C^nꍇCvZbTo
XG[ȂǂCPUONꍇi̓Iȓ̓^[Qbgv
ZbTɈˑjD

ITRON4.0dlɒ`Ă郁CG[R[h̒ŁCFI4J[l
̎㔭Ȃ̂DFI4J[lŃT[rXR[ԂC
G[R[hɂẮCu9.3 CG[R[hꗗvQƂ̂ƁD

FI4J[lł́CTuG[R[h͗pĂȂDTuG[R[hɂ
-1ԂD

2.5 ݃nh

FI4J[lł́C݃nh̋@\Ƃ`ÓIAPIiDEF_INHj
сC݃T[rX[`̋@\ƂǉÓIAPIiATT_ISRj
T|[gĂD

݃nhCɂLq`͎̒ʂƂD

        void interrupt_handler(void)
        {
                ݃nh{
        }

FI4J[lł́CCŋLqꂽ݃nhĂ΂鎞_ŁCCPU
bNԂɂȂĂD܂C݃nh烊^[ɂ́C
C̊֐PɃ^[΂悢D

݃nhъ݃T[rX[`AZuŋLq
@́CT|[gĂȂD

NMIi}XNłȂ݁jȊOɃJ[l̊ǗO݂̊邩ǂ
́C^[QbgˑłD̓IȎdlɂẮC^[Qbg̃}j
AQƂ邱ƁD

2.6 ^CCxgnh(ԊǗ@\)

FI4J[ľ_̃[Xł́C^CCxgnhƂāC
nĥ݂T|[gĂDnh́Cisig_timT[rXR[
̒CTu[`R[ŌĂяoD̂߁Cnh
D揇ʂ́Cisig_timĂяo݃nhi
ɌƁCisig_timĂяo݃nhC̊݃n
hD揇ʂ̂̏ႢjD
FI4̍ŏ̐łɂẮAnhɉăA[nh
I[onhT|[gB


2.7 CPUOnh

FI4J[lł́CX^_[hvt@CKɏ]āCCPUOnh
̋@\Ƃ`ÓIAPIiDEF_EXCjT|[gĂD

FI4J[lł́CCPUOnh͔^XNReLXgŎsD
^XNReLXgĂяoT[rXR[́CCPUOnh
ĂяoƂłDCCPUOCPUbNԂŔꍇ
́CCPUOnhCPUbN邱Ƃ͂łC^XNRe
LXgĂяoT[rXR[ĂяoƂłȂD

ITRON4.0dlɂāCCPUOnhōŝׂƂċK肳
ĂéĈ悤ȕ@ōsƂłD

 (a) CPUOReLXgԂ̎QƂ́Ĉ߂ɗpӂꂽ
     FI4J[lƎ̃T[rXR[ivxsns_ctxCvxsns_locCvxsns_dspC
     vxsns_dpnCvxsns_texjpčsƂłDڂ́Cu3.10 
     CPUÕVXeԎQƁvQƂ邱ƁD

 (b) CPUO^XNIDԍ̎QƂ́Ciget_tidT[rXR[
     ĂяoƂɂčsƂłD

 (c) ^XNO̗v́Ciras_texT[rXR[ĂяoƂɂ
     čsƂłD

CPUOnh̗D揇ʂ́C^XNReLXgsCPUO
ꍇɂ́CfBXpb`CׂĂ̊݃nhу^
C}nhႢD^XNReLXgsCPUO
ꍇɂ́CCPUO̗D揇ʂi
ƁCCPUOCCPUO
D揇ʂ̂̏ႢjD

CPUOnhCɂLq`͎̒ʂƂD

        void cpu_exception_handler(VP p_excinf)
        {
                CPUOnh{
        }

p_excinf ɂ́CCPUOɊւLĂ̈̐擪Ԓnn
D́CCPUOnhŁCCPUOReLXgԂ
QƂۂɕKvƂȂDڂ́Cu3.10 CPUÕVXeԎQ
ƁvQƂ邱ƁDCPUOnh烊^[ɂ́CC̊֐
PɃ^[΂悢D

CPUOnhAZuŋLq@́CT|[gĂȂD

2.8 ^XNReLXg̃T[rXR[ďoƊ݋֎~

FI4J[lł́C^XNReLXgp̃T[rXR[ƁC^XNR
eLXgp̃T[rXR[ɋʂĂD^XNReLXg
p̃T[rXR[^XNReLXgĂяoꍇC^X
NReLXgp̃T[rXR[^XNReLXgĂяo
ɂ́CE_CTXG[ԂD

܂C^XNReLXgĂяoꂽT[rXR[̒xs͍s
ĂȂD̂߁C^XNReLXgĂяoT[rXR[C
Ώۂ̃IuWFNg̏ԂɈˑĔG[o邱Ƃ
D

2.9 VXe菇Ə[`

J[lNɂ́C^[QbgɈˑčsȂ΂ȂȂŒ
̏sCCPUbNԂƓ̏ԂŁCkernel_start֐
яoDFI4J[lł́C^[QbgɃX^[gAbvW[p
āC̏sĂDڂ́C^[Qbg̃}jAQƂ
邱ƁD

ATT_INIɂĒǉꂽ[`́CJ[l̃f[^\
⑼̐ÓIAPȈIɁCVXeRtBM[V
t@CłATT_INI̋LqƓŌĂяoD[`
ł́CT[rXR[ĂяoĂ͂ȂȂD[`ŃT[r
XR[ĂяoꍇCVXe͕̓ۏ؂Ȃiۂɂ́C^[
QbgɂāCĂяoĂxȂT[rXR[jD܂C
[`sɃJ[l̊ǗO݂̊֎~Ă邩ǂ
́C^[Qbgkernel_start֐Ăяoꂽ̏ԂɈˑD
̓Iɂ́C^[Qbg̃}jAQƂ邱ƁD

2.10 ÓIAPIƃRtBM[^

FI4J[ĺCITRON4.0dlɋK肳ꂽVXeRtBM[V
菇ɏ菇ŁCRtBM[VsD

VXe̍\LqVXeRtBM[Vt@ĆC܂
C̃vvZbTŏČʂJ[l̃RtBM[
^icfgvOjɓ͂DJ[l̃RtBM[^́CJ[l
\Et@Ckernel_cfg.cɁCIDtʃwb_t@C
kernel_id.hɐD܂CÓIAPĨp[^`FbNɗpt@
Ckernel_chk.cɁCÓIAPỈ͓e܂ރIuWFNg`t@C
kernel_obj.datɐDÓIAPI̕@G[iя̃G[
̈ꕔjo΁CJ[l̃RtBM[^G[񍐂D

kernel_cfg.ćCRpCāCAvP[VvOуJ[
lƋɃNDNɂ萶ꂽ[hW[́CJ[
l̃p[^`FbNvOichkvOjɂāCÓIAPI
p[^`FbNsDp[^̒l̃G[oƁCp
[^`FbNvOG[񍐂邪Cu1.5 m̖_v
qׂʂCo[Wł̓p[^G[̃`FbN͕sSłD

ȏ̎菇́CMakefileɋLqĂD\tgEFAĩRtBM
[^gݍ݂ꍇɂ́CMakefileCKvD

2.11 CN[ht@C

AvP[Vp邱ƂłCN[ht@ĆCincludefB
Ng̉ɒuĂD

t_services.h́CJ[lœ삷vÕ\[Xt@CŃCN
[hׂWCN[ht@CłD̒ŁCkernel.hi
ɂCt_stddef.hCitron.hCtool_defs.hCsys_defs.hCcpu_defs.hC
t_syslog.hjserial.hCN[hĂD܂CAvP[V
LvƎv`܂łD

s_services.h́Cڃn[hEFAɃANZXfoCXhCõ\[X
t@CŃCN[hׂWCN[ht@CłD̒ŁC
sil.hiɂCt_stddef.hCitron.hCtool_defs.hCsys_defs.hC
cpu_defs.hCt_syslog.hjt_config.hiɂCsys_config.hC
cpu_config.hCtool_config.hjCN[hĂD܂CAvP[
VĂ΂foCXhCõCN[ht@CŁCCC
֐ȂǂŃVXeC^tF[XCpĂꍇɂC̃t@C
CN[hD

2̃t@CCN[ht@Ciɗ񋓂́j́C
ڃCN[hȂ̂ł邪C3̃P[X͗OłD

(1) J[lĂ΂foCXhCõCN[ht@CŁCC
    C֐ȂǂŃVXeC^tF[XCpĂꍇɂ́C
    sil.hCN[hD

(2) J[lœ삷vOŁC^[QbgˑQƂ
    ɂ́Ct_config.hCN[hD

(3) ITRONdlOS\tgEFA|[eBOꍇȂǂɂ́C
    kernel.h𒼐ڃCN[hĂ悢D

(4) ITRONdlʋKɏ\tgEFAĩCN[ht@C
    ́Citron.h𒼐ڃCN[hĂ悢D

ȂCFI4J[l̊bƂȂĂJSPJ[lRelease 1.3ȑO
o[Wł́Ct_services.hjsp_services.hƂt@CɂȂĂ
Do[W킸ɓ삷vOۂɂ́Ct_services.h
CN[hCÂo[Wjsp_services.ht_services.h
V{bNN\@𐄏D

2.12 VXeI菇ƏI[`

AvP[V kernel_exit֐ĂяoƂŁCJ[lI
邱ƂłDkernel_exit֐ĂяoƁCJ[ĺCI
[`̎sCJˑ̏Iiatexit ɂēo^ꂽ֐
 C++ ɂfXgN^̎sjsCJ[l̏Is
D

I[`́CAvP[VŗpӂCVATT_TER găJ[l
ɓo^DVATT_TER ɂĒǉꂽI[`́CJ[l
̊ǗOׂ݂̊Ă݂̊֎~ԂŁCVXeRtB
M[Vt@Cł VATT_TER ̋LqƋt̏ŌĂяoD
I[`ł́CT[rXR[ĂяoĂ͂ȂȂDI
[`ŃT[rXR[ĂяoꍇCVXe͕̓ۏ؂
iۂɂ́C^[QbgɂāCĂяoĂxȂT[rXR[
jD


RDFI4J[l̃T[rXR[ƐÓIAPI

̐߂ł́CFI4J[l̃T[rXR[ƐÓIAPIɂāCITRON4.0d
lŎ`ƂȂĂ鎖FI4J[lƎ̃T[rXR[𒆐S
D

3.1 ^XNǗ@\

^XN̋NvL[CO̍őliTMAX_ACTCNTj1ɌŒ肵ĂD

(1) CRE_TSK			^XN̐iÓIAPIj
    cre_tsk			^XN̐
    acre_tsk			^XN̐

tskatr  TA_ASM w肳ꂽꍇ̋@\i^XNAZuŋLq
j̓T|[gĂȂD܂CCRE_TSKɂstk  NULL ȊO
w肳ꂽꍇ̋@\iX^bN̈̐擪Ԓnw肷jT|[g
ĂȂD

(2) del_tsk			^XN̍폜

(3) act_tsk, iact_tsk		^XN̋N

(4) sta_tsk

(5) can_act			^XNNṽLZ

(6) ext_tsk			^XN̏I

ext_tsk ^XNReLXgĂ΂ꂽꍇCVXeO@\p
ăG[o͂iLOG_ALERTxjCIɃ^XNReLXg
؂芷āCsԂ̃^XNIDJ[l͂̂܂܎sp
邪C^[QbgɂẮC^XNReLXgp̃X^bNɃS~
cC݃nh̃lXg̊Ǘɖ肷邽߁CȌ
͕̐ۏ؂ȂD

ext_tsk CPUbNԁi܂̓fBXpb`֎~ԁjŌĂ΂ꂽꍇC
VXeOɃG[L^iLOG_WARNINGxjCCPUbN
i܂̓fBXpb`ԁjɂĂ^XNID

(7) exd_tsk

(8) ter_tsk			^XN̋I

(9) chg_pri			^XNDx̕ύX

(10) get_pri			^XNDx̎Q

3.2 ^XNt@\

^XN̋NvL[CO̍őliTMAX_WUPCNTj 1 ɌŒ肵Ă
D܂C^XN̋҂vlXg̍őliTMAX_SUSCNTj 1 Ɍ
肵ĂD

(1) slp_tsk			N҂
(2) tslp_tsk			N҂i^CAEgj

(3) wup_tsk, iwup_tsk		^XN̋N

(4) can_wup			^XNNṽLZ

(5) rel_wai, irel_wai		҂Ԃ̋

(6) sus_tsk			҂Ԃւ̈ڍs

(7) rsm_tsk			҂Ԃ̍ĊJ
(8) frsm_tsk			҂Ԃ̋ĊJ

^XN̋҂vlXg̍őliTMAX_SUSCNTj 1 ł邽߁C
rsm_tsk  frsm_tsk ̏e͓łD

(9) dly_tsk			^XN̒x

3.3 ^XNO@\

TEXPTN^́Cunsigned int^ɒ`ĂD TBIT_TEXPTN ́C
unsigned int^ 32rbg̏ꍇ 32C16rbg̏ꍇ 16 ɂȂD

(1) DEF_TEX			^XNO[`̒`iÓIAPIj
    def_tex			^XNO[`̒`

texatr  TA_ASM w肳ꂽꍇ̋@\i^XNO[`AZ
uŋLqj̓T|[gĂȂD

(2) ras_tex, iras_tex		^XNO̗v

(3) dis_tex			^XNŐ֎~

(4) ena_tex			^XNŐ

(5) sns_tex			^XNO֎~Ԃ̎Q

3.4 EʐM@\

3.4.1 Z}tH

Z}tH̍ő厑́CUINT^iunsigned int^ɒ`Ăjŕ\
鐔l͈͓̔łDȂ킿Cunsigned int^ 32rbg̏ꍇ 
(2^32 - 1)C16rbg̏ꍇ (2^16 - 1) = 65535 łDTMAX_MAXSEM 
`ĂȂD

(1) CRE_SEM			Z}tH̐iÓIAPIj
    cre_sem			Z}tH̐
    acre_sem			Z}tH̐

(2) del_sem			Z}tH̍폜

(3) sig_sem, isig_sem		Z}tH̕ԋp

(4) wai_sem			Z}tH̊l
(5) pol_sem			Z}tH̊li|[Oj
(6) twai_sem			Z}tH̊li^CAEgj

3.4.2 CxgtO

̃CxgtOŕ̃^XN҂ԂɂȂ@\̓T|[g
ȂD

FLGPTN^́Cunsigned int^ɒ`ĂD TBIT_FLGPTN ́C
unsigned int^ 32rbg̏ꍇ 32C16rbg̏ꍇ 16 ɂȂD

(1) CRE_FLG			CxgtO̐iÓIAPIj
    cre_flg			CxgtO̐
    acre_flg			CxgtO̐

flgatr  TA_WMUL w肳ꂽꍇ̋@\iCxgtOŕ̃^XN
҂ԂɂȂj̓T|[gĂȂD

(2) del_flg			CxgtO̍폜

(3) set_flg, iset_flg		CxgtÕZbg

(4) clr_flg			CxgtÕNA

(5) wai_flg			CxgtO҂
(6) pol_flg			CxgtO҂i|[Oj
(7) twai_flg			CxgtO҂i^CAEgj

3.4.3 f[^L[

dtqcnt̃f[^i[̂ɕKvȃf[^L[̈̃TCÝC
sizeof(VP_INT) * dtqcnt oCgłDTSZ_DTQ ͒`ĂȂD

(1) CRE_DTQ			f[^L[̐iÓIAPIj
    cre_dtq			f[^L[̐
    acre_dtq  			f[^L[̐

CRE_DTQ ł́Adtq  NULL ȊOw肳ꂽꍇ̋@\
if[^L[̈̐擪Ԓnw肷j̓T|[gĂȂD

(2) del_dtq			f[^L[̍폜

(3) snd_dtq			f[^L[ւ̑M
(4) psnd_dtq, ipsnd_dtq		f[^L[ւ̑Mi|[Oj
(5) tsnd_dtq			f[^L[ւ̑Mi^CAEgj

(6) fsnd_dtq, ifsnd_dtq		f[^L[ւ̋M

(7) rcv_dtq			f[^L[̎M
(8) prcv_dtq			f[^L[̎Mi|[Oj
(9) trcv_dtq			f[^L[̎Mi^CAEgj

3.4.4 [{bNX

T_MSG^͉L̂悤ɒ`ĂDT_MSG^̃TCÝC^[Qbgv
ZbT^RpC̃|C^̃TCYɈvD

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

FI4J[lł́CDxʃbZ[WL[wb_̈͗pĂȂD
TSZ_MPRIHD ͒`ĂȂC`Ƃ 0 ƂȂD

(1) CRE_MBX			[{bNX̐iÓIAPIj
    cre_mbx			[{bNX̐
    acre_mbx			[{bNX̐

mprihd  NULL ȊOw肳ꂽꍇ̋@\iDxʃbZ[WL[wb
_̈̐擪Ԓnw肷j̓T|[gĂȂD

(2) del_mbx

(3) snd_mbx			[{bNXւ̑M

(4) rcv_mbx			[{bNX̎M
(5) prcv_mbx			[{bNX̎Mi|[Oj
(6) trcv_mbx			[{bNX̎Mi^CAEgj

3.5 v[Ǘ@\

3.5.1 Œ蒷v[

TCY blkszoCg̃ubN blkcntlł̂ɕKvȌ
蒷v[̈̃TCÝCTROUND_VP(blksz) * blkcnt oCgłD
ŁCTROUND_VP(blksz) ́Cblksz ^[QbgvZbT^RpC
̃|C^̃TCY̔{ɂȂ悤؂グ\DTSZ_MPF ͒`
ĂȂD

(1) CRE_MPF			Œ蒷v[̐iÓIAPIj
    cre_mpf			Œ蒷v[̐
    acre_mpf			Œ蒷v[̐

mpf  NULL ȊOw肳ꂽꍇ̋@\iŒ蒷v[̈̐擪
nw肷j̓T|[gĂȂD

(2) del_mpf			Œ蒷v[̐iÓIAPIj

(3) get_mpf			Œ蒷ubN̊l
(4) pget_mpf			Œ蒷ubN̊li|[Oj
(5) tget_mpf			Œ蒷ubN̊li^CAEgj

(6) rel_mpf			Œ蒷ubN̕ԋp

blkp[^iԋp郁ubN̐擪Ԓnj̒lCԋp̃
v[̈̊OCubN̓rwꍇɂ́CE_PARG[
ԂDl̃ubNԋpꍇCԋpς̃ubN
ēxԋpꍇ͕̓ۏ؂ȂD

3.6 ԊǗ@\

^CCxgnhɊւẮCu2.6 ^CCxgnhvQ
邱ƁD

3.6.1 VXeǗ

FI4J[lł́C^CeBbN̋iisig_tim IɌĂяoj
̓VXeT[rX̃VXeNbNhCoɂĎĂDVX
eNbNhCo̎v́C^[QbgɃn[hEFA^C}g
ĎĂCisig_tim Ăяo̓^[Qbgɒ߂D
 TIC_NUME  TIC_DENO ́C^[Qbgˑ̃AvP[Vp̃C
N[ht@Cicpu_defs.h  sys_defs.hj̒Œ`ĂD
^[QbgɂẮC̐lύX邾 isig_tim Ăяo
ύXł悤ɎĂꍇDڂ́C^[Qbg̃}
jAQƂ邱ƁD

(1) set_tim			VXe̐ݒ

(2) get_tim			VXe̎Q

(3) isig_tim			^CeBbN̋

isig_tim ́C^[Qbgˑɒ`ꂽ TIC_NUME  TIC_DENO Ŏw肳
鎞ԂVXei߁CKvȃ^CCxgi^CAEgC
nh̋NȂǁj̏sDFI4J[lł́CVXeNbN
hCõT[rXR[IɌĂяo߁CAvP[V
ĂяoKv͂ȂD

3.6.2 nh

nh̋Nʑۑ@\̓T|[gĂȂD

(1) CRE_CYC			nh̐iÓIAPIj
    cre_cyc			nh̐
    acre_cyc			nh̐

cycatr  TA_PHS w肳ꂽꍇ̋@\inh̋Nʑۑ
j̓T|[gĂȂD܂CTA_ASM w肳ꂽꍇ̋@\i
nhAZuŋLqjT|[gĂȂD

(2) del_cyc			nh̍폜

(3) sta_cyc			nh̓Jn

(4) stp_cyc			nh̓~

3.7 VXeԊǗ@\

(1) rot_rdq, irot_rdq		^XN̗D揇ʂ̉]

(2) get_tid, iget_tid		sԂ̃^XNID̎Q

(3) loc_cpu, iloc_cpu		CPUbNԂւ̈ڍs

(4) unl_cpu, iunl_cpu		CPUbNԂ̉

(5) dis_dsp			fBXpb`̋֎~

(6) ena_dsp			fBXpb`̋

(7) sns_ctx			ReLXg̎Q

(8) sns_loc			CPUbNԂ̎Q

(9) sns_dsp			fBXpb`֎~Ԃ̎Q

(10) sns_dpn			fBXpb`ۗԂ̎Q

(11) vsns_ini			J[lԂ̎Q

yCAPIz
	BOOL state = vsns_ini();

yp[^z
	Ȃ

y^[p[^z
	BOOL	state		J[l

y@\z

J[l̏O܂͏IJnɌĂяoꂽꍇ TRUEC
J[l̓쒆ɌĂяoꂽꍇ FALSE ԂD

̃T[rXR[ TRUE Ԃɂ́C̃T[rXR[Ăяo
͂ȂȂD̃T[rXR[ TRUE Ԃɑ̃T[rXR[
яoꍇCVXe͕̓ۏ؂ȂD

3.8 ݊Ǘ@\

݃nhɊւẮCu2.5 ݃nhvQƂ邱ƁD

(1) DEF_INH			݃nh̒`iÓIAPIj
(2) def_inh			݃nh̒`

INHNO^̒` inhno ̈Ӗ̓^[Qbgɒ߂Dinhatr ɂ́C
TA_HLNG ݂̂w肷邱ƂłD

(2) dis_int			݂̋֎~
(3) ena_int			݂̋
(4) chg_ixx			݃}XN̕ύX
(5) get_ixx			݃}XN̎Q

̃T[rXR[T|[gĂ邩ǂCT|[gĂ
ꍇ̎dlixx ̖́̕C^ƃp[^̖̂ƈӖCCPUbN
fBXpb`ԂƂ̊֘AjɂẮC^[QbgˑłD̓I
́C^[Qbg̃}jAQƂ邱ƁD

(6) ATT_ISR			݃T[rX[`̒`iÓIAPIj
    cre_isr			݃T[rX[`̒`
    acre_isr			݃T[rX[`̒`

(7) del_isr

3.9 VXe\Ǘ@\

CPUOnhɊւẮu2.7 CPUOnhvC[`Ɋ
Ắu2.9 VXe菇Ə[`vQƂ邱ƁD

(1) DEF_EXC			CPUOnh̒`iÓIAPIj

EXCNO^̒` excno ̈Ӗ̓^[Qbgɒ߂Dexcatr ɂ́C
TA_HLNG ݂̂w肷邱ƂłD

(2) ATT_INI			[`̒ǉiÓIAPIj

iniatr  TA_ASM w肳ꂽꍇ̋@\i[`AZu
ŋLqj̓T|[gĂȂD

(3) VATT_TER			I[`̒ǉiÓIAPIj

yÓIAPIz
	VATT_TER({ ATR teratr, VP_INT exinf, FP terrtn });

yp[^z
	ATR	teratr	I[`
	VP_INT	exinf	I[`̊g
	FP	terrtn	I[`̋NԒn

y@\z

I[`Cw肳ep[^ɊÂĒǉDteratr 
͏I[`̑Cexinf ͏I[`N鎞Ƀp
[^ƂēngCterrtn ͏I[`̋NԒnłD

VATT_TER ɂẮCteratr ̓vvZbT萔p[^łD 
teratr ɂ́CTA_HLNG ̎w肪łDTA_HLNGi0x00jw肳ꂽꍇ
ɂ͍p̃C^tF[XŏI[`ND

VATT_ATR ɂĒǉꂽI[`́CVXeIɎ
sDڂ́Cu2.12 VXeI菇ƏI[`vQ
邱ƁD

3.10 CPUÕVXeԎQ

CPUOnhŁCCPUOReLXgԂQƂ邽
̃T[rXR[ƂāCFI4J[lł́C܂̃T[rXR[Ǝ
T|[gĂDT[rXR[ vxsns_yyy ́CCPUO 
sns_yyy Ăяoꍇ̌ʂôŁCCPUOnhɓn
p[^ p_excinf p[^ƂD

(1) vxsns_ctx			CPUÕReLXg̎Q

yCAPIz
	BOOL state = vxsns_ctx(VP p_excinf);

yp[^z
	VP	p_excinf	CPUOɊւLĂ̈
				擪Ԓn

y^[p[^z
	BOOL	state		ReLXg

y@\z

CPUOReLXgC^XNReLXg̏ꍇ TRUEC^
XNReLXg̏ꍇ FALSE ԂDp_excinf ɂ́CCPUOnh
ɓn p_excinfp[^̂܂ܓnDCPUOnhȊO
яoꍇCp_excinf 𐳂nȂꍇ̐U͕ۏ؂
D

(2) vxsns_loc			CPUOCPUbNԂ̎Q

yCAPIz
	BOOL state = vxsns_loc(VP p_excinf);

yp[^z
	VP	p_excinf	CPUOɊւLĂ̈
				擪Ԓn

y^[p[^z
	BOOL	state		CPUbN

y@\z

CPUOԂCCPUbNԂ̏ꍇ TRUECCPUbN
̏ꍇ FALSE ԂDp_excinf ɂ́CCPUOnhɓn 
p_excinfp[^̂܂ܓnDCPUOnhȊOĂяo
Cp_excinf 𐳂nȂꍇ̐U͕ۏ؂ȂD

(3) vxsns_dsp			CPUÕfBXpb`֎~Ԃ̎Q

yCAPIz
	BOOL state = vxsns_dsp(VP p_excinf);

yp[^z
	VP	p_excinf	CPUOɊւLĂ̈
				擪Ԓn

y^[p[^z
	BOOL	state		fBXpb`֎~

y@\z

CPUOԂCfBXpb`֎~Ԃ̏ꍇ TRUECfBXpb
`Ԃ̏ꍇ FALSE ԂDp_excinf ɂ́CCPUOnhɓn
 p_excinfp[^̂܂ܓnDCPUOnhȊOĂяo
ꍇCp_excinf 𐳂nȂꍇ̐U͕ۏ؂ȂD

y⑫z

CPUOnh̋NɂăfBXpb`֎~^Ԃ͕ωCCPU
Onhł̓fBXpb`̋֎~⋖͍sȂ߁Cvxsns_dsp 
Ԃl sns_dsp ̕ԂlɏɈvD̂߁Cvxsns_dsp  
sns_dsp ̏e͓ƂȂĂD

(4) vxsns_dpn			CPUÕfBXpb`ۗԂ̎Q

yCAPIz
	BOOL state = vxsns_dpn(VP p_excinf);

yp[^z
	VP	p_excinf	CPUOɊւLĂ̈
				擪Ԓn

y^[p[^z
	BOOL	state		fBXpb`ۗ

y@\z

CPUOԂCfBXpb`ۗԂ̏ꍇ TRUECłȂ
ꍇ FALSE ԂDȂ킿CfBXpb`D揇ʂ
sĂCCPUbNԂłуfBXpb`֎~
ł́CTRUE ԂDp_excinf ɂ́CCPUOnhɓn 
p_excinfp[^̂܂ܓnDCPUOnhȊOĂяo
C p_excinf 𐳂nȂꍇ̐U͕ۏ؂ȂD

(5) vxsns_tex			CPUÕ^XNO֎~Ԃ̎Q

yCAPIz
	BOOL state = vxsns_tex(VP p_excinf);

yp[^z
	VP	p_excinf	CPUOɊւLĂ̈
				擪Ԓn

y^[p[^z
	BOOL	state		^XNO֎~

y@\z

CPUOɎsԂł^XNC^XNO֎~
̏ꍇ TRUEC^XNOԂ̏ꍇ FALSE ԂDCPUO
^XNReLXgŔC̎ɎsԂ̃^XNȂꍇ
CFALSE ԂDp_excinf ɂ́CCPUOnhɓn p_excinfp
[^̂܂ܓnDCPUOnhȊOĂяoꍇC
p_excinf 𐳂nȂꍇ̐U͕ۏ؂ȂD

y⑫z

CPUOnh̋Nɂă^XNO֎~^Ԃ͕ωC 
CPUOnhł̓^XNŐ֎~⋖͍sȂ߁C 
vxsns_tex ̕Ԃl sns_tex ̕ԂlɏɈvD̂߁C
vxsns_tex  sns_tex ̏e͓ƂȂĂD

3.11 \]pVXeQƋ@\

FI4J[lł́CFI4J[lœ삷^XNFI4J[lg̐\
v邽߂ɁCVXe萸x̍\]pVXe
ݏo@\C^[QbgˑɃT|[gĂD\]pVXe
́CʕbPʂŕ\邪Cۂ̐x̓^[QbgˑłD̓I
́C^[Qbg̃}jAQƂ邱ƁD

\]pVXeQƋ@\ł́C̃f[^^pD

	SYSUTIM		\]pVXeij

SYSUTIM^̃TCY̓^[QbgˑłD̓Iɂ́C^[Qbg
}jAQƂ邱ƁD

(1) vxget_tim			\]pVXe̎Q

yCAPIz
	ER ercd = vxget_tim(SYSUTIM *p_sysutim);

yp[^z
	Ȃ

y^[p[^z
	ER	ercd		G[R[h
	SYSUTIM	sysutim		݂̐\]pVXe

yG[R[hz
	E_CTX		ReLXgG[

y@\z

݂̐\]pVXeǂݏoCsysutim ɕԂD

̃T[rXR[́C^XNReLXĝ݌ĂяoƂłD
^XNReLXgł΁CCPUbNԂłĂĂяoD^X
NReLXgĂяoꍇɂ́CE_CTXG[ƂȂD


SDVXeO@\

VXeO@\́CJ[lŔُ펖ہiAT[V̎sC
G[R[hԂȂG[jCVXe̊Oɒʒm邽߂̋@\
DJ[l̃g[XOCVXeT[rXAvP[VŔ
ُ펖ۂg[XOɂC@\𗘗p邱ƂłD

4.1 VXeO@\̈ʒut

J[lŔُ펖ۂVXe̊Oɒʒm邽߂̕@ƂāC
VAC^tF[Xɏo͂CfBXNɏoȂǂ̕@l
D

VXeO@\́CJ[lĂяoƂϓ_́CJ[
l̈ꕔƍl̂RłDCVAC^tF[XfBX
NɃANZX邽߂̃T[rXifoCXhCoȂǁj̓J[lœ
삷邽߁CpVXeO@\́CJ[lɎꂽV
XeT[rXƍlRŁCʒuÂłD

FI4J[lł́CJ[l̊g@\ƂāCُ펖ۂɊւ
g[XOiCOƑ̂jCJ[l̃obt@
iOobt@ƌĂԁjɋL^@\ƁCOobt@烍O
ǂݏo@\pӂDCVXeO@\ƌĂԁDO
Oobt@ǂݏoCfoCXɃANZXT[rXpĊOɏo
͂@\́CVXeO^XNƂăJ[lɎD

4.2 Oobt@ւ̋L^ƒ჌xo

q悤ɁCOVXe̊Oɏo͂邽߂ɁCfoCXɃA
NZXT[rXKvɂȂ邪C̃T[rX̓J[lœ삵
Ă邽߁CJ[l̓płȂ悤ȏdȈُ펖ۂN
ꍇɂ́C̃T[rXgƂłȂD܂C̃T[rX
gfobOꍇɂCfoCXɃANZXT[rXgƂ
łȂD

ŁCJ[lœ삷T[rXgȂꍇɂłOo
邽߂ɁC჌xo͋@\pӂD჌xo͋@\́C^[Qbg
ˑɗpӂ჌x̕o͊֐isys_putcjpăOo
@\łD჌x̕o͊֐́C^[Qbgˑŗpӂ邱
ƂƂĂ邪CŏIiɑgݍ܂ꍇȂǂł́Co͂@
Ȃ󋵂lD̂悤ȏꍇC჌x̕o͊֐ɑ
́CɎcĂĈĂĂ܂ȂD

OCOobt@֋L^邩჌xo͋@\pďo͂邩
̐ݒ́CJ[l̊gT[rXR[ivmsk_logjɂčsƂ
Dvmsk_log ̎gɂĂ͌qD

჌xo͋@\pƁCObZ[W̍쐬iprintf ̏
jƒ჌x̕o͏J[lōs߂ɁCJ[l̉
Ȃ邱ƂɒӂȂ΂ȂȂDɁC჌x̕o͏
foCX|[O`Ŏ̂ʏŁC̏ꍇɂ́CJ[l
͎̉pIƌȂɈȂD

CJ[l̓pł悤ȁi܂dłȂjۂɂ
́COJ[l̃Oobt@ɋL^CL^Ȍo
́CfoCXɃANZXT[rXpē삷VXeO^XN
CDVXeO^XN̓J[lœ삷^XNłCJ[l
̊gT[rXR[ivrea_logjpāCOobt@烍O
ݏoDFI4J[l̕WzzLbgɂ́CVXeO^XN̈Ƃ
āCVAC^tF[XɃO𕶎̌`ŏo͂VXeO
^XN܂߂ĂD

4.3 O̎

FI4J[l̃VXeO@\́COɈȉ̎ʂ݂ĂD

	LOG_TYPE_INH		݃nh
	LOG_TYPE_ISR		݃T[rX[`
	LOG_TYPE_CYC		nh
	LOG_TYPE_EXC		CPUOnh
	LOG_TYPE_TEX		^XNO[`
	LOG_TYPE_TSKSTAT	^XNԕω
	LOG_TYPE_DSP		fBXpb`
	LOG_TYPE_SVC		T[rXR[
	LOG_TYPE_COMMENT	Rg
	LOG_TYPE_ASSERT		AT[V̎s

̎ʂ́CITRONfobMOC^tF[XdlQlɒ߂ĂD
CITRONfobMOC^tF[Xdlɂg[XO`́C
RIMiRTOS Interface ModulejfobOc[ɓnꍇ̌`߂
̂łCJ[lo͂`ƈvĂKv͂ȂiRIM ϊ
΂悢߁jDہC̎ʂ̒ŁCLOG_TYPE_CYC  LOG_TYPE_ASSERT 
́CfobMOC^tF[XdlƈvĂȂD

O̎ʂ̒ŁCLOG_TYPE_COMMENT  LOG_TYPE_ASSERT ȊO̓J[l
̃g[XÔ߂̂̂ŁCǂ̂悤ɗp邩̓^[Qbgˑ
CĂi4.5ߎQƁjD

4.4 Ȍdvx

FI4J[l̃VXeO@\́COo͂ۂɎw肷dvx
ɊÂāCۂɏo͂郍O𓮓Iɐݒ肷邱ƂłD́C 
UNIX ̃VXeO@\܂˂̂ŁCȌdvx̎ނw@
UNIX  API QlɂĂD܂C჌xo͋@\pďo͂郍
OCdvxɊÂēIɐݒ肷邱ƂłD

̓Iɂ́CȌdvxƂĎ8iKpӂĂD

	LOG_EMERG	VXeVbg_EׂG[
	LOG_ALERT
	LOG_CRIT
	LOG_ERROR	dv̒ႢVXeG[
	LOG_WARNING	xbZ[WDVXe͈SɌpł
	LOG_NOTICE
	LOG_INFO
	LOG_DEBUG	fobÔ߂̃bZ[W

ȂCAT[V̎śCLOG_EMERG ŏo͂DJ[l̃g[X
ÓCLOG_DEBUG ŏo͂̂WƂi^[QbgˑjD

ǂ̏dvx̃OOobt@ɋL^邩ƁCǂ̏dvx̃O
჌xo͋@\pďo͂邩́CJ[l̊gT[rXR[
ivmsk_logjɂĐݒ肷邱ƂłDvmsk_log ̊ep[^́C
w肷郍ȌW\rbg}bvłD܂Crbg}bv
邽߂̃}NƂāCLOG_MASK  LOG_UPTO pӂĂD

4.5 g[XO@\

FI4J[ĺCJ[l̃g[XO擾邽߂̊{IȎdg݂
Ă邪Cg[XO̎ۂ̎擾@̓^[QbgˑƂȂDJ[
l̃g[XO̎擾ɁCVXeO@\ĝI1ł
DCJ[l̃g[XOVXeO^XNpĎo
@͍lĂȂiVXeO^XN삷邱Ƃɂg[XO
Co葽̃O񂪐\邽߁jD

4.6 VXeO@\̊gT[rXR[

VXeO@\̒񋟂gT[rXR[͎̒ʂłD

(1) ER vwri_log(UINT prio, SYSLOG *p_log)

VXeO@\ɁCdvx prio ŃOo͂iOobt@֋L
^邩჌xo͋@\pďo͂jDSYSLOG ́COi[
邽߂̃f[^^i\́jŁC̊gT[rXR[ɂ́Cւ̃|
C^nD

(2) ER_UINT vrea_log(SYSLOG *p_log)

Oobt@烍O1oDOobt@̎ E_OBJC
łȂꍇ́CꂽO̐iO񂪎ĂȂꍇ 
0jԂDVXeO^XNp邱Ƃz肵ĂD

(3) ER vmsk_log(UINT logmask, UINT lowmask)

Oobt@ɋL^ׂȌdvx̃rbg}XNilogmaskjƁC
჌xo͋@\pďoׂ͂Ȍdvx̃rbg}XN
ilowmaskjݒ肷D

4.7 VXeO@\̂߂̃Cu֐ƃ}N

VXeO@\́CL̃T[rXR[ɉāC̃Cu֐
}N񋟂D

(1) void _syslog_n(UINT prio, UINT type, VP_INT arg1, ..., VP_INT argn)
     n  0`6 ̂ꂩD

Oʂ typeCp[^ arg1`argn ̃OCdvx prio 
o͂邽߂̃Cu֐D

(2) void syslog_n(UINT prio, const char *format, arg1, ..., argn)
     n  0`5 ̂ꂩD

format 񂨂тɑ쐬RgiOʂ 
LOG_TYPE_COMMENT ̃OjCdvx prio ŏo͂邽߂̃}ND

format ̓bZ[W̃tH[}bgLqCarg1`argn ̓tH[}bgLq
ŎQƂlŁCprintf ̃tH[}bgLq̃TuZbgƂȂĂD
arg1`argn  VP_INT^ɃLXg邽߁CVP_INT^Ɍ^ϊłC
̌^nƂłC^`FbN͂ȂDformat  arg1`argn 
ɂ́C̐D

Eformat ̃tH[}bgLq́C̃}N߂ωĂ͂Ȃ
ȂD萔nƂz肵ĂD

Eformat ɎgtH[}bgw͎̒ʂD

    %d    𕄍tƂ݂ȂC10iŕ\
    %u    𕄍Ƃ݂ȂC10iŕ\
    %x    𕄍Ƃ݂ȂC16iip͏jŕ\
    %X    𕄍Ƃ݂ȂC16iip͑啶jŕ\
    %p    |C^Ƃ݂ȂC16iip͏jŕ\
    %c    𕶎R[hƂ݂ȂC\
    %s    𕶎|C^Ƃ݂ȂC\
    %%    '%' \i͎Ȃj

%d, %u, %x, %X ɂẮC'%' ̒ɕ\w肷10ilLq
邱ƂłD̏ꍇC\ׂ񂪎w肵ɖȂ
ɂ́Cw肵ɉEl߂ŕ\D10il '0' Ŏn܂ꍇ
ɂ́C̊Ԃ '0' 𖄂߂D

Earg1`argn Ƀ|C^nꍇi%s ɑΉ̏ꍇjɁC|C
^̎wf[^́C̃}N߂ωĂ͂ȂȂD萔
nƂz肵ĂD

(3) void syslog(UINT prio, const char *format, ...)

format 񂨂тɑ쐬郁bZ[WCdvx 
prio ŃOƂďo͂邽߂̃Cu֐ŁC̐ς
́Dformat ɑ͍ő5܂ŁDformat тɑ
ɂ́Csyslog_n Ɠl̐D

̃Cu֐́Cϐ邽߂ɓŕXL
D̂߁CsԂȂ\C݋֎~ԂŌĂяo
ׂł͂ȂDɃAvP[VvOp邱Ƃz肵Ă
D̂߁C̃Cu֐̃\[Xt@ĆCT|[gCu
̃fBNgɒuĂD

(4) UINT LOG_MASK(UINT prio)

dvx prio ̂݃Zbgꂽrbg}bv}NDvmsk_log ɓn
邽߂ɗpD

(5) UINT LOG_UPTO(UINT prio)

dvx prio ȏ̏dvxׂăZbgꂽrbg}bv}ND 
vmsk_log ɓn邽߂ɗpD

(6) void syslog_printf(char *format, VP_INT *args, void (*putc)(char))
(7) void syslog_print(SYSLOG *p_sys, void (*putc)(char))
(8) void syslog_output(void (*putc)(char))

OtH[}bgo͂邽߂̃Cu֐Dsyslog_printf ͓n
ꂽtH[}bgƈCsyslog_print ͓nꂽOC
syslog_output ̓Oobt@Ɋi[ꂽOtH[}bgo͂D

VXeO^XNp邱Ƃz肵Ă邽߁C̃Cu֐
\[Xt@C̓T|[gCũfBNgɒuĂDC
჌xo͂s߂ɁCVXeO@\łpĂD

4.8 VXeO@\̐ݒ@

FI4J[l̃VXeO@\̑z肳Ăݒ@́Cȉ̒ʂ
D

(a) dȈُ펖ۂO͒჌xo͋@\pďo͂C
łȂȌo͂̓VXeO^XNɔCD

Oobt@ɋL^郍ȌdvxƁC჌xo͂pďo͂
ȌdvxK؂ɐݒ肷D܂COobt@烍Oǂ
oĊO֒ʒmVXeO^XNƁC჌x̕o͊֐p
D

(b) ׂẴOC჌xo͋@\pďo͂D

KvȃOׂ͂Ē჌xo͋@\pďo͂悤ݒ
ivmsk_log ̑1p[^ 0 ɐݒjD܂C჌x̕o
֐pӂDVXeO^XN͕svD

(c) O̓ɋL^邾ŁCVXeOɂ͏o͂ȂD

KvȃOׂ͂ăOobt@֋L^悤ɐݒivmsk_log ̑2
p[^ 0 ɐݒjDVXeO^XN͕svD

(d) O͋L^o͂ȂD

̃OL^^o͂Ȃ悤ɐݒivmsk_log ̗p[^
Ƃ 0 ɐݒjD

ʂ̕@ƂāCOMIT_SYSLOG `ăRpC邱ƂŁCVXe
O@\J[lOCJ[l̃R[hTCY邱Ƃ
łDCAvP[V syslogCsyslog_printfCsyslog_printC
syslog_output ̊e֐ĂяoĂꍇC̊֐̃R[h͊O
ȂD܂CJ[l̃O͋L^^o͂ȂCAvP[V
̃O͋L^^o͂ꍇɂ́CJ[l̂ OMIT_SYSLOG 
`ăRpC΂悢D̏ꍇCVXeO@\̏֐
i_kernel_syslog_initializejƏI֐i_kernel_syslog_teminatej
́CAvP[VĂяoKvD

ȂC(b)`(c) ̐ݒɌŒ肵ĎgpꍇɂCJ[l̈ꕔ̃R[
hsvɂȂCR[hTCYł]n邪CȈՂȕ@͗p
ӂĂȂD


TDVXeT[rX

FI4J[lT|[gĂVXeC^tF[XCiSILj
JSPJ[lƓłBڍׂ́uTOPPERS/FI4J[l [UY}jAv
(user.txt)QƂ̂ƁB

UDT|[gCu

FI4J[lT|[gĂT|[gCúCJSPJ[lƓ
łBڍׂ́uTOPPERS/FI4J[l [UY}jAv(user.txt)
QƂ̂ƁB

VDJECXg[E|[eBO

7.1 fBNgEt@C\

\[Xt@C̃fBNg\͎̒ʂD

    include/    ʃwb_t@C
    kernel/     J[l\[Xt@C
    systask/    VXeT[rX\[Xt@C
    library/     T|[gCu\[Xt@C
    config/     ^[Qbgˑ
        m68k/           M68040 vZbTˑt@C
            dve68k/             DVE-68K/40 VXeˑt@C
        sh3/            SH3 vZbTˑt@C
            ms7727cp01/          MS7727CP01 VXeˑt@C
            solution_engine/     Solution Engine VXeˑt@C
        sh1/            SH1 vZbTˑt@C
            kz_sh1/             KZ-SH1-01 VXeˑt@C
            tokiwa_sh1/         SH1/CPUB VXeˑt@C
        h8/             H8 vZbTˑt@C
            akih8_3048f/        AKI-H8/3048F VXeˑt@C
            akih8_3067f/        AKI-H8/3067F VXeˑt@C
        h8s/            H8S vZbTˑt@C
            mispo_h8s/          MISPO H8S/2350 EVA VXeˑt@C
        arm7tdmi/       ARM7TDMI vZbTˑt@C
            evaluator_7t/       Evaluator-7T VXeˑt@C
        v850/           V850 vZbTˑt@C
            rtev850ema1cb/      RTE-V850E/MA1-CB VXeˑt@C
        m32r/           M32R vZbTˑt@C
            m3a2131g50/         M3A-2131G50 VXeˑt@C
        microblaze/     MicroBlaze vZbTˑt@C
            template/           Œ̃VXe\ł̃VXeˑt@C
            insight_v2mb/       Insight VirtexII V2MB1000 VXeˑt@C
        tms320c54x/     TMS320C54x vZbTˑt@C
            c5402dsk/           TMS320VC5402 DSK VXeˑt@C
        i386/           i386 vZbTˑt@C
            pcat/               PC/AT݊@ VXeˑt@C
        mips3/          MIPS3 vZbTˑt@C
            vr4131/             VR4131 VXeˑt@C
            vr5500/             VR5500 VXeˑt@C
        linux/          Linux̃V~[Vˑt@C
        windows/        Windows̃V~[Vˑt@C
    pdic/       PDICifoCXhCoOSˑj
        simple_sio/     ȈSIOhCoiVAhCogṕj
    cfg/        J[lRtBM[^
    utils/      [eBeB
    sample/     TvvO Makefile
    doc/        hLg

    windev/     Windows T|[gW[
    WINDOWS/    Windows̃TvvOƃvWFNgt@C
    C5402DSK/	TMS320VC5402 DSKp̃TvvOƃvWFNgt@C

^[QbgˑiJ[lRtBM[^͏j̊et@C̊T
v͎̒ʂD

    README		TOPPERS/FI4J[l̊ȒPȏЉ
    configure		RtBM[VXNvg

    include/
	itron.h		ITRONdlʋKɊ֘A`
	kernel.h	ITRON4.0dlɊ֘A`
	kernel_debug.h	ITRON4.0dl fobOpCN[ht@C
	sil.h		VXeC^tF[XCiSILj
	t_stddef.h	J[lEAvP[V ʃCN[ht@C
	t_config.h	^[Qbgˑ̒`
	t_syslog.h	VXeOT[rX֘A̒`
	t_services.h	AvP[Vp WCN[ht@C
	s_services.h	foCXhCop WCN[ht@C
	kernel_cfg.h	kernel_cfg.cp̃CN[ht@C
	timer.h		VXeNbNhCo֘A̒`
	serial.h	VAC^tF[XhCo֘A̒`
	logtask.h	VXeO^XN֘A̒`
	linux_sigio.h	Linuxp mubLOI/OT|[g

    kernel/
	Makefile.kernel	J[l̃t@C\̒`
	jsp_kernel.h	FI4J[lp WCN[ht@C
	jsp_rename.def	J[l̓ʖ̃l[`
	jsp_rename.h	J[l̓ʖ̃l[
	jsp_unrename.h	J[l̓ʖ̃l[
	check.h		G[`FbNp}N
	queue.h		_uNL[̍\Ƒ
	startup.c	J[l̏
	banner.c	J[l̋NbZ[W̏o
	task.h		^XN샋[`֘A̒`
	task.c		^XN샋[`
	wait.h		҂ԑ샋[`֘A̒`
	wait.c		҂ԑ샋[`
	time_event.h	^CCxgǗ֘A̒`
	time_event.c	^CCxgǗ
	syslog.h	VXeO@\֘A̒`
	syslog.c	VXeO@\
	task_manage.c	^XNǗ@\
	task_sync.c	^XNt@\
	task_except.c	^XNO@\
	semaphore.h	Z}tH@\֘A̒`
	semaphore.c	Z}tH@\
	eventflag.h	CxgtO@\֘A̒`
	eventflag.c	CxgtO@\
	dataqueue.h	f[^L[@\֘A̒`
	dataqueue.c	f[^L[@\
	mailbox.h	[{bNX@\֘A̒`
	mailbox.c	[{bNX@\
	mempfix.h	Œ蒷v[֘A̒`
	mempfix.c	Œ蒷v[
	time_manage.c	VXeǗ@\
	cyclic.h	nh@\֘A̒`
	cyclic.c	nh@\
	sys_manage.c	VXeǗ@\
	interrupt.h	݊Ǘ@\֘A̒`
	interrupt.c	݊Ǘ@\
	exception.h	CPUOǗ@\֘A̒`
	exception.c	CPUOǗ@\

    systask/
	timer.c		VXeNbNhCo
	timer.cfg	VXeNbNhCo̐ݒLq
	serial.c	VAC^tF[XhCo
	serial.cfg	VAC^tF[XhCo̐ݒLq
	logtask.c	VXeO^XN
	logtask.cfg	VXeO^XN̐ݒLq
	linux_sigio.c		Linuxp mubLOI/OT|[g
	linux_sigio.cfg		Linuxp mubLOI/OT|[g̐ݒLq
	linux_serial.c		Linuxp ^VAhCo
	linux_serial.cfg	Linuxp ^VAhCo̐ݒLq

    library/
	log_output.c	VXeO@\pCu֐isyslog_outputȂǁj
	strerror.c	itron_strerror֐
	t_perror.c	t_perror֐
	vasyslog.c	syslog֐

    utils/
	makedep		ˑ֌W`̐
	genoffset	offset.h vO
	gencheck	p[^`FbNpt@C̐
	genrename	V{l[`̐
	rename		V{̃l[

    sample/
	Makefile	Tv Makefile
	Makefile.linux	Tv MakefileiLinuxpj
	Makefile.h8s	Tv MakefileiH8Spj
	Makefile.microblaze	Tv MakefileiMicroBlazepj
	sample1.cfg	TvvO(1)̐ݒLq
	sample1.h	TvvO(1)Ɋւ`
	sample1.c	TvvO(1)̖{

    doc/
	user.txt	TOPPERS/JSPJ[l [UY}jA
	gnu_install.txt	GNUJ\z}jA
	m68k.txt	M68040 ^[Qbgˑ}jA
	sh3.txt		SH3 ^[Qbgˑ}jA
	sh1.txt		SH1 ^[Qbgˑ}jA
	h8.txt		H8 ^[Qbgˑ}jA
	h8s.txt		H8S ^[Qbgˑ}jA
	arm7tdmi.txt	ARM7TDMI ^[Qbgˑ}jA
	v850.txt	V850 ^[Qbgˑ}jA
	m32r.txt	M32R ^[Qbgˑ}jA
	microblaze.txt	MicroBlaze ^[Qbgˑ}jA
	tsm320c54x.txt	TMS320C54x ^[Qbgˑ}jA
	i386.txt	i386 ^[Qbgˑ}jA
	mips3.txt	MIPS3 ^[Qbgˑ}jA
	linux.txt	Linux V~[Vˑ}jA
	windows.txt	Windows V~[Vˑ}jA
	config.txt	JSPJ[l ^[Qbgˑ |[eBOKCh
	configurator.txt JSPJ[l RtBM[^dl
	design.txt	JSPJ[l ݌v

7.2 J

FI4J[lpVXe\zɂ́Cȉ̃c[KvłD

    zXgp̃c[
        WKiɏCRpCCCCu
        C++RpCCC++CuCSTL
		mF: GNU C++ 2.95.3C3.2C3.3iLinuxj
			  GNU C++ 3.2iCygwinj
			  Visual C++ 6.0C.NET
        perlimF 5.6.1j
        GNU MakeimF 3.79.1j

    NXp̃c[
        GNUJ
            BINUTILSiAZuCJȂǁj
            GCC ܂ GCC-COREiCRpCj
            GDBifobKj
        NEWLIBiWCCuj

GNUJCXg[@ɂẮCuGNUJ\z}jAv
pӂĂ̂ŁCQƂƂ悢D܂CmFo[Wɂ
ẮC^[Qbg̃}jAQƂ邱ƁD

zXgpCRpCCCúCNXp̃c[̃CX
g[ɕKvɂȂD܂CC++RpCCC++Cu STLiStandard
Template Libraryj́CJ[l̃RtBM[Vc[̃RpC
ɕKvłDNXp̃c[ƃRtBM[Vc[o
Ciœ肵ꍇɂ́C̃c[͕KvȂD

NXp̕WCCúCAvP[VWCCug
pȂꍇɂ́CKvȂDCRpCWCCu֐
imemcpyCmemsetȂǁjĂяoR[h𐶐ꍇC̏ꍇ
͕WCCuKvłDȂ́CR[hĂяo֐
݂̂ŗpӂĂ悢D

ȉł́C̃c[pӂłĂ邱ƂOɁCUNIX}Vi
mF Linuxjō\z菇D܂ȉ̐ł́CmakeR}h
 GNU Make ł̂ƂiFI4J[l Makefile ́CGNU Make ̊g
@\pĂjD

7.3 RtBM[Vc[̍\z

J[l\zOɁC܂CRtBM[Vc[RpC
KviRtBM[Vc[oCiœ肵ꍇ
́C̃Xebv͕KvȂjD

FI4J[l̃RtBM[Vc[́CRtBM[^icfgv
Ojƃp[^`FbNvOichkvOj\
DRtBM[Vc[̎gɂẮCu7.9 RtBM
[Vc[̎gvQƂ邱ƁD

RtBM[Vc[icfgvOchkvOj́CcfgfB
NgɈړCmake dependňˑ֌Wt@CiMakefile.dependj
CmakeR}hɂ萶D

    % cd cfg
    % make depend
    % make

7.4 TvvO̍\z

ɁCTvvO\z@D

܂CTvvÕIuWFNgt@CufBNg쐬
CRtBM[VXNvgsDႦ΁CIuWFNgt@
CufBNgCFI4J[l̃\[Xt@CWJfB
Ng̉OBJƂ̂̃fBNgɂꍇɂ́C̃R}h
sifBNg̏ꏊ͖͔̂CӂɌ߂Ă悢jD

    % mkdir OBJ
    % cd OBJ
    % perl ../configure -C m68k -S dve68k

ŁCm68k̓^[QbgvZbTCdve68k̓^[QbgVXeł
D̃RtBM[VXNvg̃IvVɂẮC
̐߂ŐD

RtBM[VXNvg̎sɂCJgfBNgɂ́C
TvvO\z邽߂MakefileCTvvOp̃R
tBM[Vt@Cisample1.cfgjCTvvO{
isample1.hsample1.cjD

RtBM[VXNvg̎sCKvłMakefileC
DMakefilȅC@ɂẮCu7.7 MakefilȅCvQƂ邱ƁD

̌Cmake dependňˑ֌Wt@CiMakefile.dependj𐶐C
makeR}hɂTvvÕ[hW[ijsp܂
jsp.exejłDˑ֌Wt@C̐ɂ͎኱ԂD

    % make depend
    % make

ō\zTvvOisample1.hCsample1.cCsample1.cfgj
́CFI4J[l̊{IȓmF邽߂̂̂łD̃vO
̊Tv́Csample1.c̐擪̃RgɂD

7.5 AvP[VƃJ[lʁXɍ\z@

O߂Ő@ł́CAvP[VƃJ[l𓯎ɐ邽߁C
IuWFNgt@CufBNgɔɑ̃t@C쐬
āCɂȂDŁCJ[lCpxႢꍇɂ́CJ[
l͎Oɍ\zĂCŃAvP[V\z@p
ĂDȉł́CTvvO\zɁC̎菇ɂĐ
D

܂CJ[l\zfBNg쐬CRtBM[VX
NvgsDႦ΁CJ[l\zfBNgCFI4J[
l̃\[Xt@CWJfBNg̉KERNELƂ̂̃fB
Ngɂꍇɂ́C̃R}hsifBNg̏ꏊ͖
͔̂CӂɌ߂Ă悢jD

    % mkdir KERNEL
    % cd KERNEL
    % perl ../configure -C m68k -S dve68k

ɂCJ[l\zfBNgɁCMakefileCsample1.cfgC
sample1.hCsample1.c邪CMakefileȊO͎gpȂD

make dependňˑ֌Wt@CiMakefile.dependj𐶐Cmake
libkernel.aɂJ[lCuilibkernel.ajłD

    % make depend
    % make libkernel.a

ɁCAvP[V\zfBNg쐬CRtBM[
VXNvgsDႦ΁CAvP[V\zfBN
gCFI4J[l̃\[Xt@CWJfBNg̉APLƂ
̂̃fBNgɂꍇɂ́C̃R}hsifBNg
̏ꏊ͖͔̂CӂɌ߂Ă悢jD

   % cd ..
   % mkdir APL
   % cd APL
   % perl ../configure -C m68k -S dve68k -L ../KERNEL

-LIvVɂ́CJ[l\zfBNg̃pXw肷D

ŌɁCmake dependňˑ֌Wt@CiMakefile.dependj𐶐C
makeR}hɂTvvÕ[hW[ijsp܂
jsp.exejłD

    % make depend
    % make

̎菇ł́CAvP[V\zɂ̓J[l̍č\zKv`Fb
NȂ߁CJ[l̃\[XR[hCꍇɂ́CJ[l\z
fBNgmake libkernel.aĎsKvD܂CAv
P[V\zɃJ[lCuXVꂽ`FbNȂ߁C
AvP[V\zfBNgŁC[hW[폜
makeĎsKvD

ȏł́CJ[lƃAvP[VʁX̃fBNgō\zC
-LIvVɃJgfBNgi"."jw肷邱ƂŁCfB
NgŁiʁXɁj\z邱ƂłD̓Iɂ́C̎菇ƂȂD

    % mkdir OBJ
    % cd OBJ
    % perl ../configure -C m68k -S dve68k -L .
    % make depend
    % make libkernel.a
    % make cleankernel
    % make

ŁCmake cleankerneĺCJ[lCu𐶐邽߂̒ԃt@
C폜̂łD̎菇ł́Cmake dependɂJ[lC
uɊւˑ֌W𐶐Ȃ߁CJ[l̃\[XR[hC
ꍇɂ́CKmake cleankerneli܂́Cmake cleanjĂCmake
libkernel.aKv̂Œӂ邱ƁDɁC[hW[
폜makeĎsKv̂́CȌꍇƓlłD

7.6 RtBM[VXNvg̎g

RtBM[VXNvǵCFI4J[lуAvP[V
vO\z邽߂ɕKvȊ{IȃRtBM[Vs
߂̃vOłDFI4J[lpăAvP[V쐬
ɂ́C܂IuWFNgt@CufBNg쐬C̃fB
NgŃRtBM[VXNvgsDIuWFNgt@C
ufBNg̏ꏊ▼̂́CCӂɌ߂Ă悢D

RtBM[VXNvgɑ΂IvV͎̒ʂD

    -C <vZbT>
	^[QbgvZbT܂̓V~[VCconfigfB
	Ng̉̃fBNĝŎw肷iK{jD

    -S <VXe>
	^[QbgVXeCconfig̉̃vZbT̃fBNg
	̃fBNĝŎw肷DV~[V̏ꍇɂ́C
	w肷KvȂD

    -T <J>
	JCconfig̉̃fBNĝ̌㔼̖̂Ŏw肷
	DGNUJpꍇɂ́Cw肷KvȂD

    -A <AvP[VvO>
	AvP[VvÔ̖w肷Dȗꍇɂ́C
	W̃TvvOisample1jƂȂD

    -U <IuWFNgt@C>
	AvP[VvÕC̃IuWFNgt@Ci-A 
	Ŏw肵AvP[VvO".o"t́j
	OɁCNׂIuWFNgt@Ĉ̖C".o"t
	`Ŏw肷D""ň͂ނƂɂāC̃t@Cw肷邱
	Ƃ\łi-U IvV𕡐gĂ͂ȂȂjD

    -L <J[lCũfBNg>
	Oɍ\zJ[lpāCAvP[V݂̂\z
	ꍇɂ́C̃IvVɃJ[lCuilibkernel.aj
	uꂽfBNgw肷D̃IvV̎gp@ɂ
	ẮCu7.5 AvP[VƃJ[lʁXɍ\z@v
	QƂ邱ƁD

    -D <FI4J[l\[XfBNg>
	FI4J[l̃\[XR[hufBNgw肷D
	ꍇɂ́Cconfigure̒uĂfBNgƂȂD

RtBM[VXNvgs͎̒ʂłD

(1) Makefile̐

samplefBNgK؂MakefileICKvȉӏāC
Makefile𐶐D

(2) TvvO̐

w肵AvP[VvOsamplefBNgɂꍇCK
ȃTvvÕ\[Xt@CICKvȉӏāC
TvvÕ\[Xt@CiႦ΁Csample1.hCsample1.cC
sample1.cfgj𐶐D

7.7 MakefilȅC

FI4J[l̎sɂẮCRtBM[VXNvg
MakefileC邱ƂKvɂȂDł́CMakefile̒ŁCC
KvƂȂ\̍ӏɂĐD

ȂCMakefileCɃRtBM[VXNvgĎs
ƁCCMakefile㏑Ă܂̂Œӂ邱ƁiÂ̂
Makefile.bakɕۑjD

(A) ^[Qbg̒`

CPU̓^[QbgvZbTCSYS̓^[QbgVXeCTOOL͊J
ɒ`D̒`́CRtBM[VXNvgsD

(B) IuWFNgt@C̊gq̐ݒ

CygwinŃRpC鎞ɂ́COBJEXT"exe"ɒ`KvD
́CCygwinł́CIuWFNgvOɊgq"exe"t
̂ɑΉ邽߂̂̂łDCygwinł邱Ƃ𔻒ł΁CR
tBM[VXNvg̒`sD

(C) s̒`i^[Qbgˑj

^[QbgɂẮCsɑΉă^[Qbgˑ̃R[h
ꍇD\ɂ邽߂ɁCs̖̂DBGENVɒ`
ĂDWł́CGDBX^up邱Ƃz肵āCGNU_STUB
`Ă邪C^[Qbgˑ̒`ꂽMakefile.configŏ㏑
ꍇDǂ̃^[Qbgǂ̎sɑΉĂ邩́C^[Qb
g̃}jAQƂ邱ƁD

(D) J[lCũfBNg̒`

KERNEL_LIBɂ́CJ[lCu̒uꂽfBNg`D
̒`́Cʏ̓RtBM[VXNvgsC
KERNEL_LIB̒`ύXĂ܂ȂD

(E) ʃRpCIvV̒`

ŜɋʂRpCIvV̒ǉKvȏꍇɂ́C̕ϐ̒
`ύXD̃RpCIvVC̃^[QbgŏɕKv
ꍇɂ́C^[Qbgˑ̒`ꂽMakefile.configCׂł
Dǉ̉\̂RpCIvVɂẮCu7.8 RpC
IvVvQƂ̂ƁD

    CDEFS	-D IvVLqD
    INCLUDES	-I IvVLqD
    COPTS	RpCɑ΂邻̑̃IvVLqD
    LDFLAGS	Jɑ΂IvVLqD
    LIBS	CuN̂߂̃IvVLqD

(F) AvP[VvOɊւ`

AvP[VvOC\[Xt@Ci*.cĵ݂ō\
Ăꍇɂ́CUNAMEɂ̃t@C`΂悢DAvP[V
vÕ\[Xt@Cō\ꍇɂ́CUNAMEɂ̃A
vP[V`CIuWFNgt@CUTASK_ASMOBJS
UTASK_COBJSɗ񋓂D̏ꍇɂCRtBM[Vt@C
́CUNAMEɒ`OɊgq"cfg"tOƂD

\[Xt@CRpĈƂ͕ʂ̃fBNgɒuꍇɂ́C
UTASK_DIRSɂ̃fBNgǉD܂CAvP[ṼRp
CɕKvȃRpCIvVCAvP[VCuKv
Ƃꍇɂ́CUTASK_CFLAGSUTASK_LIBS ɒ`D

(G) IuWFNgt@C̒`

IuWFNgt@COBJNAMEɒ`DftHgjspłD

(H) ^[Qbgt@C̒`

[hW[̌`w肷D̓Iɂ́CELF`̎$(OBJFILE) 
܂$(OBJNAME).outiPARTNER-J̎jCoCi`̎
$(OBJNAME).binCg[ S`̎$(OBJNAME).srecw肷D
$(OBJFILE) ́CCygwinOBJEXT"exe"ɒ`ɂ$(OBJNAME).exeC
łȂꍇɂ$(OBJNAME)ƂȂD

(I) J[l̃RtBM[Vt@C̐

\tgEFAĩRtBM[^ǉꍇɂ́C̋KC
邱ƂKvłD

7.8 RpCIvV

FI4J[l̃R[hɂ́Cassert}NgĂDassert}ŃC
NDEBUG`邱ƂŁCIuWFNgR[hƂłDJ[
l̃fobOI΁CCDEFS-DNDEBUGw肵ăRpC
悭ȂD

܂CVXeO@\O߂OMIT_SYSLOGpӂĂDڂ
́Cu4.8 VXeO@\̐ݒ@vQƂ邱ƁD

7.9 RtBM[Vc[̎g

ȉł́CcfgvOchkvÕIvVɂĐD
̃vOɂRtBM[V菇ɂẮCu2.10 
IAPIƃRtBM[^vQƂ邱ƁD

cfgvOchkvOɋʂ̃IvV͎̒ʂD

    -cpu <vZbT>
	^[QbgvZbTw肷D

    -system <VXe>
	^[QbgVXew肷D

    -h, --help
	wvbZ[W\D

    -v
	̓rʂ\D

    -le, --english
	bZ[Wpŕ\iftHgjD

    -lj, --japanese
	bZ[W{ŕ\D

cfgvOɑ΂IvV͎̒ʂD

    -s, --source <t@C>
	<t@C>Ŏw肳ꂽVXeRtBM[Vt@C
	iC̃vvZbTŏ́jǂݍށD<t@C>
	ȗꍇ́CVXeRtBM[Vt@CW
	͂ǂݍށiIvVgȗĂ͂ȂȂjD

    -c, --check
	ÓIAPĨp[^`FbNɗpt@Ckernel_chk.cɐ
	iftHgł͐ȂjD

    -obj, --dump-object <t@C>
	ÓIAPỈ͓e܂ރIuWFNg`t@CC<t@C>
	Ŏw肳ꂽt@CɐD<t@C>ȗꍇ́C
	kernel_obj.datɐD

    -z, --nonzero
	_ZERO}N̐}~D

chkvOɑ΂IvV͎̒ʂD

    -m, --module <W[Lq>
	`FbN郍[hW[w肷DWchkvÓC
	[hW[̃V{t@CiGNU BINUTILSnmo͂
	`jƃg[SR[ht@CǂݍŃp[^`Fb
	NsȂD̏ꍇC<W[Lq>ɂ́CV{t@C
	SR[ht@C2","ŋ؂Ďw肷D

    -cs, --script <t@C>
	<t@C>Ŏw肳ꂽ`FbNt@Cpă`FbND
	`FbNt@CƂ́CcfgvOkernel_chk.cC
	RpC utils/gencheck ɂHt@ĈƂ
	D̃IvVȗꍇC̃`FbNs
	ȂȂDIvVw肵ꍇɂ́C<t@C>͏ȗł
	ȂD

    -obj, --load-object <t@C>
	ÓIAPỈ͓e܂ރIuWFNg`t@CC<t@C>
	Ŏw肳ꂽt@CǂݍށD<t@C>ȗꍇ́C
	kernel_obj.datǂݍށD

    -cl <G[x>
	G[oxύXDxLAZYidȃG[̂݌
	ojCSTANDARDiITRONdl͈݂̔͂̂ŌojCTOPPERSiFI4J[
	l̐ᔽ܂ŌojCRESTRICTEDiׂẴG[oj
	4ނ̂IiftHgRESTRICTEDjD

7.10 JXNvgƃ̈

FI4J[l̃N@́C^[Qbgˑ̃JXNvgi*.ldj
LqĂDTvvO Makefile ł́C^[Qbgˑ̒
`ꂽ Makefile.config ̒ LDSCRIPT `ƁC`O
̃t@CJXNvgɗpD

FI4J[l쎞ɂ́Cȉ̃̈悪KvɂȂD

(a) R[ḧ

J[lуAvP[ṼvOђ萔f[^u
DROMɒuƂ\łD擪AhXCJ[lN
ۂ -Ttext IvVŎw肷DTvvO Makefile ł́C
^[Qbgˑ̒`ꂽ Makefile.config ̒ TEXT_START_ADDRESS 
`ƁCN -Ttext IvVtD

(b) f[^̈

J[lуAvP[V̎gpf[^̈DŒIȃf[^̈
ƁCsbrk֐ɂĎq[v̈悩ȂDJ[l̓q[v̈
gpȂD擪AhXCJ[lNۂ -Tdata IvV
Ŏw肷DTvvO Makefile ł́C^[Qbgˑ̒`
ꂽ Makefile.config ̒ DATA_START_ADDRESS `ƁCN
 -Tdata IvVtD

(c) ^XNReLXgp̃X^bN̈

݃nhȂǂ̔^XNReLXggpX^bN̈D̈
ݒ@̓^[Qbgˑł邪Cʏ́C^[QbgVXeˑ̃C
N[ht@Cisys_config.hjŃX^bN̏l`C^[Qbg
vZbTˑ̃X^[gAbvW[istart.SjŏD

7.11 ̃^[Qbgւ̃|[eBO

FI4J[l𑼂̃^[Qbgփ|[eBO邽߂ɕKvȍƂ́CJ[
lg̃|[eBOCVXeT[rX̃|[eBOCJ̍\z
ƕW̊JƂ̍ق̋zȂǂȂDڂ́CuFI4J[l ^
[Qbgˑ |[eBOKChviconfig.txtjQƂ邱ƁD

7.12 J[l̓ʎq̃l[

ITRON4.0dĺCJ[l̓ʎq_kernel_܂_KERNEL_Ŏn߂
ƂvĂDƂ낪CJ[l̃\[XR[hŒڂ̂悤
ʎqpƁCʎq̒ȂCǐ𑹂ȂDFI4J[
lł́CxxxxxƂJ[l̓ʎq_kernel_xxxxxɃl[
dg݂ĂD

Ƃ낪C̎dg݂ɂCfobOƂɂȂP[Xl
D̓Iɂ́C\[XR[h̎ʎqIuWFNgR[h̎ʎq
vȂ߂ɁC\[XR[h̕ϐw肵Ă̒lǂ񂾂C֐
w肵ĂɃu[N|CguƂƂłȂD

̖邽߂ɁCFI4J[lł́C\[XR[h̕KvȎ
ql[邽߂̃[eBeBiutils/renamejpӂĂD
rename[eBeBɁCl[`t@Cixxx_rename.defj̃v
tBbNXixxx̕jƁCl[t@CXg^ƁC
l[sȂDႦ΁CkernelfBNĝׂẴt@Cɑ΂
āCJ[l̓ʖl[ɂ́C̃R}hp΂悢D

    % cd kernel
    % ../utils/rename jsp *


WD̑

8.1 EFuTCg

TOPPERSvWFNgFI4J[l̂߂̃EFuTCgCȉURL
ɗpӂĂD

	http://www.toppers.jp/

ztLbg̍ŐVł́C̃EFuTCg_E[h邱ƂłD
܂Cq̃[OXg̃A[JCuȂǂC̃EFuTCgŉ{
邱ƂłD

8.2 pE쌠

FI4J[l̗ṕCet@C̐擪ɖĂĩhL
g̐擪ɂĂjD쌠́Cet@C̐擪ɕ\Ă
钘쌠҂ۗLĂD

p (3)  (b) ɂāCp̌`ԂTOPPERSvWFNgɕ
@ƂẮCFI4J[l𗘗pi̎ʂƖ́CpFI4J[
l̍\iǂ̃^[QbgˑpjC̃AhXփ[
A@WƂDFI4J[l𐻕iȊOɗpꍇɂ́C
ɏ񍐂̂ƂD

	report@toppers.jp

܂̍ۂɁCFI4J[lgpẴRg₲ӌƍK
łD̕@ł̕񍐂ꍇɂ́CʓrkꂽD

8.3 ۏ؁ET|[gEKp

FI4J[l͖ۏ؂Œ񋟂Ă̂łDJ҂́C̓Kp\
܂߂āCȂۏ؂sȂD܂CT|[g̖񑩂ĂȂD
₪ꍇ́Cq̃[OXg𗘗pĂƍKł
D

FI4J[l͌Eɗp邱Ƃ`IȖړIƂĊJĂ
邽߁CɂẮCs\ǐێ琫dĂ
D̂߁C[J̓̃\tgEFAƔׂāC\Iɂ͗
ȂD܂CiĂITRONdlOSƔׂƁCeXg͕s
\łD

8.4 [OXg

FI4J[l̃[Uɑ΂񋟂у[U݊Ԃ̏e
ɂ邽߂ɁCTOPPERS[UY[OXgpӂĂD̃[
OXgɂ́CNłRɃ[𑗕t邱ƂłD܂Ct
ꂽ[́CNłRɃEFuTCgœǂނƂłDFI4J[l
ɃoO_𔭌ꍇɂ́C̃[OXgɕ񍐂ė~
D

[OXgւ̃[̑t͎̒ʂD

	users@toppers.jp

[OXgɃoO_Ȃǂ񍐂ꍇɂ́CKvɉāC
̏m点ė~D

    ^[QbgɊւ
	E^[QbgvZbT̎
	E^[Qbg{[h̎

    zXgɊւ
	EOS̃o[WiT[rXpbN̓Kp󋵂j
	ERpCȂǂ̊J̃o[WiCygwiño[Wj

̃[OXgւ̓o^]ꍇ́C܂C
users-ctl@toppers.jp ĂɁC{

	subscribe Ȃ̖O
	: subscribe Hiroaki Takada

Ə[𑗕tiL̃R}hɂ͔pp݂̂gƁjD
܂ԂCo^mF̂߂̃[Ă̂ŁC̎wɏ]ēo
^D

8.5 ITRON Club

dE׋E킸 ITRONdl ITRONvWFNgɋ
l̂߂̏Ec_̏ƂāCITRON Club [OXgp
ĂD̃[OXgɂ́CITRON ɋĂlȂN
QłD܂C̃[OXgɑtꂽ[́CNł
RɃEFuTCgœǂނƂłD

̃[OXgւ̓o^]ꍇ́C܂C
itron-club-ctl@ertl.jp ĂɁC{

	subscribe Ȃ̖O
	: subscribe Hiroaki Takada

Ə[𑗕tiL̃R}hɂ͔pp݂̂gƁjD
܂ԂCo^mF̂߂̃[Ă̂ŁC̎wɏ]ēo
^D

8.6 TOPPERSvWFNgւ̎Q

TOPPERSvWFNgł́C\tgEFAJɎQ^vĂ
߂ĂDlIȍvCKIȍvƂɊ}DTOPPERSvWFN
gւ̎Q@ɂẮCTOPPERSvWFNg̃EFuTCgQƂ
ƁD


XDt@X

9.1 T[rXR[ꗗ

(1) ^XNǗ@\

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

(2) ^XNt@\

	ER ercd = slp_tsk();
	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) ^XNO@\

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

(4) EʐM@\

	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) v[Ǘ@\

	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();

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

(7) VXeԊǗ@\

	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();
	ER ercd = iloc_cpu();
	ER ercd = unl_cpu();
	ER ercd = iunl_cpu();
	ER ercd = dis_dsp();
	ER ercd = ena_dsp();
	BOOL state = sns_ctx();
	BOOL state = sns_loc();
	BOOL state = sns_dsp();
	BOOL state = sns_dpn();
	BOOL state = vsns_ini();

(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);
	 xxCxxxxCXXXX ̓^[Qbgɒ߂D

(9) CPUÕVXeԎQ

	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) \]pVXeQƋ@\

	ER ercd = vxget_tim(SYSUTIM *p_sysutim);

9.2 ÓIAPIꗗ

    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 });
    VATT_TER({ ATR teratr, VP_INT exinf, FP terrtn });

    VAID_TSK(num);
    VRID_TSK(tskid);
    VAID_SEM(num);
    VRID_SEM(semid);
    VAID_FLG(num);
    VRID_FLG(flgid);
    VAID_MBX(num);
    VRID_MBX(mbxid);
    VAID_MPF(num);
    VRID_MPF(mpfid);
    VAID_MPL(num);
    VRID_MPL(mplid);
    VAID_MTX(num);
    VRID_MTX(mtxid);
    VAID_MBF(num);
    VRID_MBF(mbfid);
    VAID_POR(num);
    VRID_POR(porid);
    VAID_CYC(num);
    VRID_CYC(cycid);
    VAID_ALM(num);
    VRID_ALM(almid);
    VAID_ISR(num);
    VRID_ISR(isrid);

9.3 CG[R[hꗗiFI4J[lԂ̂̂݁j

    E_PAR	-17		p^[G[
    E_ID	-18		sIDԍ
    E_CTX	-25		ReLXgG[
    E_ILUSE	-28		T[rXR[sgp
    E_OBJ	-41		IuWFNgԃG[
    E_QOVR	-43		L[COI[o[t[
    E_RLWAI	-49		҂Ԃ̋
    E_TMOUT	-50		|[Os܂̓^CAEg
    E_NOMEM
    E_NOID

9.4 o[W

    2003N1130	Release 1.0		ŏ̃[X(IPAO)

ȏ
