
		TOPPERS/ASPJ[l
		[U[Y}jA

		Ήo[W: Release 1.4.0
		ŏIXV: 2009N511

̃hLǵCTOPPERS/ASPJ[lgp邽߂ɕKvȎ
̂łD

----------------------------------------------------------------------
 TOPPERS/ASP Kernel
     Toyohashi Open Platform for Embedded Real-Time Systems/
     Advanced Standard Profile Kernel

 Copyright (C) 2005-2009 by Embedded and Real-Time Systems Laboratory
             Graduate School of Information Science, Nagoya Univ., JAPAN
 
 L쌠҂́Cȉ(1)`(4)̏𖞂ꍇɌC{\tgEF
 Ai{\tgEFAς̂܂ށDȉjgpEE
 ρEĔzziȉCpƌĂԁ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
     ܂C{\tgEFÃ[U܂̓Gh[ÛȂ闝
     RɊÂCL쌠҂TOPPERSvWFNg
     Ɛӂ邱ƁD
 
 {\tgEFÁCۏ؂Œ񋟂Ă̂łDL쌠҂
 TOPPERSvWFNǵC{\tgEFAɊւāC̎gpړI
 ɑ΂K܂߂āCȂۏ؂sȂD܂C{\tgEF
 A̗pɂ蒼ړI܂͊ԐړIɐȂ鑹QɊւĂC
 ̐ӔC𕉂ȂD
 
 @(#) $Id: user.txt 1550 2009-05-11 03:38:34Z ertl-hiro $
----------------------------------------------------------------------

ڎ

PDTOPPERS/ASPJ[l̊Tv
	1.1 TOPPERS/ASPJ[l̈ʒut
	1.2 TOPPERS/ASPJ[l̎dl
	1.3 }CO[VKCh
	1.4 m̖
QD^[Qbgˑ
	2.1 ^[Qbgˑ̊Tv
	2.2 ȈՃpbP[W
	2.3 ʃpbP[W
RDNCbNX^[gKCh
	3.1 J̏
	3.2 RtBM[^̍\z
	3.3 TvvO̍\zƎs
	3.4 J[l֐PʂŃCu@
	3.5 AvP[VƃJ[lʁXɍ\z@
SDfBNg\Et@C\
	4.1 zzpbP[W̃fBNg\
	4.2 ^[Qbgˑ̃t@C\
TDRtBM[VXNvg̎g
UDMakefilȅC@
	6.1 Makefile̕ϐ`
	6.2 RpCIvV
VDRtBM[^̎g
WDVXeT[rX
	8.1 VXeO@\
		8.1.1 VXeO@\̈ʒut
		8.1.2 Oobt@ւ̋L^ƒ჌xo
		8.1.3 O̎
		8.1.4 Ȍdvx
		8.1.5 VXeO@\̃T[rXR[
		8.1.6 VXeO@\̂߂̃Cu֐ƃ}N
	8.2 VAC^tF[XhCo
		8.2.1 VAC^tF[XhCõT[rXR[
		8.2.2 VAC^tF[XhCô̑̃T[rX
	8.3 VXeO^XN
		8.3.1 VXeO^XÑT[rXR[
		8.3.2 VXeO^XN̂̑̃T[rX
	8.4 J[lNbZ[W̏o
XDT|[gCu
	9.1 {IȃCu֐
	9.2 VXeOo͗pCu֐
	9.3 sԕzWvW[
PODeXgvO
	10.1 eXgvOpCu
	10.2 J[l̐
	10.3 @\eXgvO
	10.4 \]vO
PPDgp̃qg
	11.1 ^C}hCȏg
	11.2 assert}N̏
	11.3 IuWFNgID̊Ǘ
	11.4 J[l̓V{̃l[
	11.5 g[XOL^̃TvR[h̎gp@
PQDQl
	12.1 pƗp
	12.2 ۏ؁EKpET|[g
	12.3 oO|[g
	12.4 EFuTCg
	12.5 TOPPERS[U[Y[OXg
	12.6 TOPPERSvWFNg̃õT[rX
	12.7 TOPPERSvWFNgւ̎Q
PRDt@X
	13.1 T[rXR[ꗗ
	13.2 ÓIAPIꗗ
	13.3 o[W


PDTOPPERS/ASPJ[l̊Tv

1.1 TOPPERS/ASPJ[l̈ʒut

TOPPERS/ASPJ[liȉCASPJ[lj́CTOPPERSVJ[l̊
io_jƂȂ̂ƂāCTOPPERSvWFNgɂĊJA^
CJ[lłDITRON4.0dl̃X^_[hvt@C̃A
^CJ[lłTOPPERS/JSPJ[lgEǂ`ŊJD

1.2 TOPPERS/ASPJ[l̎dl

ASPJ[l̎dl̊TvɂẮCuTOPPERS/ASPJ[l̎dlTvv
QƂ邱ƁD܂CASPJ[l܂TOPPERSVJ[l̎dl̏ڍ
ɂẮCʓrPDFt@Č`ŔzzĂuTOPPERSVJ[l
dlvi_ŁCׂĂ͊ĂȂjQƂ邱ƁD

1.3 }CO[VKCh

]TOPPERSJ[l⑼̃ITRON4.0dl̃J[lCTOPPERSV
J[lɈڍs邽߂̕@i܂̓qgjuTOPPERSV
J[lւ̃}CO[VKChvCʓrPDFt@Č`Ŕzz
DKvɉĎQƂ邱ƁD

1.4 m̖

kernel_cfg.cicfg1_out.cj́CJ[lCVXeT[rXCAv
P[V̂̃CN[ht@CCN[hC̃V
{QƂ\D̂߁CJ[lCVXeT[rXCAv
P[VŃV{Փ˂ĂꍇCRpCIvVH
ĂꍇɁCkernel_cfg.cicfg1_out.cjRpC
łȂȂꍇlDJ[l̃V{l[Ȃǂ̕
@ŌyĂ͂邪C肪ȂȂĂ킯ł͂ȂD

VXeRtBM[Vt@CCRtBM[^ɑ΂
INCLUDEfBNeBuɂ葼̃RtBM[Vt@CCN[
hĂꍇɁC̒Ɋ܂܂CvvZbT̃CN[hfB
NeBui#includejŁCRtBM[Vt@C̒uĂ
fBNgCt@CpXɂ͂ȂƂ肪D
΁Csyssvc/syslog.cfgɁu#include "syslog.h"vƋLqłȂ̂́C
̖肪邽߂łD


QD^[Qbgˑ

2.1 ^[Qbgˑ̊Tv

ASPJ[l̃^[QbgˑƁCẽ^[QbgVXeɑΉ邽
߂̃^[Qbgˑ́CʁXɊJĂD̂߁CASPJ[l
Ă邷ׂẴ^[QbgˑCo[W𐮍ăpbP[W
邱Ƃ͍łDŁCɏ̃[UΏۂɂȈՃpbP[
WƁC㋉̃[UJ[lJ҂ΏۂɂʃpbP[Wpӂ
D

ASPJ[l𖢃T|[g̃^[QbgVXeփ|[eBO邽߂ɕKv
ȍƂ́CJ̍\zƕW̊JƂ̍ق̋zCJ[lg
|[eBOCVXeT[rX̃|[eBOȂǂȂDڂ́C
u^[Qbgˑ |[eBOKChvQƂ邱ƁD

2.2 ȈՃpbP[W

ȈՃpbP[ẂCASPJ[lΉĂ^[QbgVXeɗpӂ
C̃^[QbgVXeASPJ[l𓮍삳邽߂ɕKvȃt@C
ꎮpbP[ŴłDȈՃpbP[WɊ܂܂t@ĆC
o[WĂ邱ƂmFĂD

ȈՃpbP[W̃o[Wԍ́CpbP[WtƂ邱Ƃ
Ƃ邪C^[QbgVXe̎ɂ肱̌ɏ]ȂꍇD

ȈՃpbP[ẂC{Iɂ́CɐʃpbP[W𕡐܂Ƃ߂
̂łD̂߁CΏۃ^[QbgVXeɕKv̂Ȃt@C܂
ĂD܂CȈՃpbP[WɊ܂܂ĂʃpbP[W̃o[W
́CʃpbP[WMANIFESTt@CQƂ邱ƂŒm邱ƂłD

2.3 ʃpbP[W

ʃpbP[ẂCASPJ[l̊JPʖɁC̊JPʂŊJS
Ăt@CꎮpbP[ŴłDASPJ[l̃^[Qbg
ˑC̌ʃpbP[WƂĔzzDʃpbP[W
gp邽߂ɂ́Cʂɂ́ČʃpbP[WKvƂȂD^[Qbg
ˑ̌ʃpbP[Wgp邽߂ɕKvƂȂʃpbP[WƂ̃o[
WɂẮC^[Qbgˑ̃[U[Y}jAQƂ邱ƁD
gpʃpbP[W̃o[W𐮍邱Ƃ́C[U̐ӔCł
D

ʃpbP[W̃o[Wԍ́CX.Y.Ž`ŕ\D^[Qbg
̃o[WԍCASPJ[lŜ̃[XԍƂD^[Qbg
ˑ̃o[Wԍ́CXYCꂪˑ^[Qbgˑƈ
vĂDɑ΂āCZ͈vĂƂ͌ȂDႦ΁C^[Qb
gˑ̃o[W1.1.0ɑΉ^[Qbgˑ́Co[W
1.1.Ž`ƂȂD^[Qbgˑ݂̂o[WAbvꍇɂ́CZ
ύXD

gpʃpbP[ẂĈ̗悤ɁC^[Qbgˑ̌ʃpb
P[WWĴƓfBNgœWJD

	% tar xvfz asp-1.1.0.tar.gz
	% tar xvfz asp_arch_arm_gcc_1.1.2.tar.gz

^[Qbgˑ̌ʃpbP[Wɂ́Cȉ̃^[Qbgˑ܂܂
Ă邪C͑̃^[QbgVXeɃ|[eBOۂ̎Qlɂ
邽߂ɗpӂĂ̂łC̓ɂĂ͖؂łD

	target/dve68k_gcc	DVE-68K/40iGNUJjp^[Qbgˑ
	arch/m68k_gcc		M68040iGNUJjpvZbTˑ
	pdic/upd72001		PD72001p ȈSIOhCo


RDNCbNX^[gKCh

ł́C^[QbgˑpӂĂ^[QbgVXeŁCASPJ[
lœ삷TvvO\zE삳܂ł̎菇D

3.1 J̏

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

	zXgVXep̃c[
		perl		mFF5.8.6
		GNU Make	mFF3.80

	TOPPERSVJ[lpRtBM[^
		cfg			mFF1.5.0

	^[QbgVXep̃c[iNXJj
		WKiɏCRpC
		AZuCJCCuA
		V{t@Co̓c[CwLTt@Co̓c[
		WCCuiK{ł͂Ȃj

^[QbgVXep̃c[GNUJpꍇɂ́Cȉ̃c[
KvłD

	^[QbgVXepGNUJc[
		BINUTILSiasCldCarCnmCranlibCobjcopyCobjdumpj
		GCC܂GCC-COREigccтĂяoc[j
		NEWLIBiWCCuCK{ł͂Ȃj

mFĂ^[QbgVXep̃c[ɂẮC^[Qbg
̃[U[Y}jAQƂ邱ƁD

^[QbgVXep̕WCCúCAvP[VWCCu
gpȂꍇɂ́CKvȂDCRpCWCCu
֐imemcpyCmemsetȂǁjĂяoR[h𐶐ꍇC̏
ɂ͕WCCuKvłDWCCupӂɁC
R[hĂяo֐݂̂ŗpӂĂ悢D

ȉł́C̃c[pӂłĂ邱ƂOɁCUNIX}Vł
\z菇D܂ȉ̐ł́CmakeR}hGNU Makeł
̂ƂiASPJ[l̃TvMakefiléCGNU Make̊g@\p
jD

3.2 RtBM[^̍\z

J[l\zOɁC܂CTOPPERSVJ[lpRtBM[^
\zKvDRtBM[^oCiœ肵ꍇɂ́C
̃Xebv͕KvȂD

RtBM[^̍\zɂ́Cȉ̃c[KvłD

	zXgVXep̃c[iZtJj
		C++RpCCC++Cu
					mFiMac OS XjFGNU C++ 4.0.1
		Boost		mFF1.33.1
		GNU Make	mFF3.80

ŏɁCpbP[WɃRtBM[^̃\[Xt@C܂܂ĂȂ
ꍇɂ́CRtBM[^̃pbP[WCASPJ[l̃\[Xt@C
WJfBNg̉ɓWJD

	% cd asp
	% tar xvfz cfg-1.5.0.tar.gz

܂́CRtBM[^̃pbP[W𑼂̃fBNgɓWJCASPJ[
l̃\[Xt@CWJfBNgV{bNN͂
Ă悢D

\[Xt@CWJłƁCcfgfBNgɈړCRtBM[
VXNvgiconfigurejMakefile̊ˑiMakefile.configj
𐶐CmakeR}hɂRtBM[^icfgvOj\
złD

	% cd cfg
	% ./configure
	% make

CBoostCXg[fBNgі̂Wőz肵Ă
̂Ƃ͈Ⴄꍇɂ́Cconfigure--with-headers--with-libraries
IvVɂCwb_t@CуCu̒uꂽfBNg
w肷KvD

܂CzXgVXeɂẮCœKxグƐRpC
łȂƂmĂD̂悤ȏꍇɂ́CœKx邩C
œK}~悤ɁCMakefileCKvD

ȂCRtBM[^̎gp@ɂẮCuVDRtBM[^
̎gv̏͂ŐD

3.3 TvvO̍\zƎs

ɁCASPJ[lœ삷TvvO\z@D

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

	% cd asp
	% mkdir OBJ
	% cd OBJ
	% perl ../configure -T <^[Qbg>

ŁC<^[Qbg>́CtargetfBNg̉ɒuĂ^[Qb
gˑfBNĝ̖łDRtBM[VXNvg̃I
vVɂẮCuTDRtBM[VXNvg̎gv
͂ŐD

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

RtBM[VXNvg̎sCKvłMakefileC
DMakefilȅC@ɂẮCuUDMakefilȅC@v̏͂Ő
D

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

	% make depend
	% make

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

3.4 J[l֐PʂŃCu@

O߂̎菇ł́CJ[lt@CPʂŃRpCCCu
CJ[l̃R[hTCYk邽߂ɂ́CgpȂT[rXR[
̓NȂ]܂DASPJ[lł́CJ[l֐P
ŃRpCCCu@pӂĂD

̕@ŃTvvO\zɂ́CRtBM[VXN
vgɁCwIvVi-fjt邾ł悢D

	% mkdir OBJ_LIB
	% cd OBJ_LIB
	% perl ../configure -T <^[Qbg> -f

ŁCOBJ_LIBƂfBNg̏ꏊƖ̂́CCӂɌ߂Ă悢D
ȍ~̎菇́CO߂ƓłD

3.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\zfBNgCASPJ[
l̃\[Xt@CWJfBNg̉KERNEL_LIBƂ̂
fBNgɂꍇɂ́C̃R}hsifBNg̏ꏊ
Ɩ͔̂CӂɌ߂Ă悢jD

	% mkdir KERNEL_LIB
	% cd KERNEL_LIB
	% perl ../configure -T <^[Qbg> -f

ɂCJ[l\zfBNgɁCMakefileCsample1.cfgC
sample1.hCsample1.c邪CMakefileȊO͎Iɂ͎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
gCASPJ[l̃\[Xt@CWJfBNg̉APLƂ
̂̃fBNgɂꍇɂ́C̃R}hsifBNg
̏ꏊƖ͔̂CӂɌ߂Ă悢jD

	% cd ..
	% mkdir APL
	% cd APL
	% perl ../configure -T <^[Qbg> -L ../KERNEL_LIB

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

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

	% make depend
	% make

̎菇ł́CAvP[V\zɂ̓J[l̍č\zKv`Fb
NȂ߁CJ[l̃\[XR[hCꍇɂ́CJ[l\z
fBNgmake libkernel.aĎsKvD

ȏł́CJ[lƃAvP[VʁX̃fBNgō\zC
-LIvVɃJgfBNgiC"."ƂLqł͕sjw
肷邱ƂŁCJ[lƃAvP[V𓯂fBNgŕʁXɍ\z
邱ƂłD̓Iɂ́C̎菇ƂȂD

	% mkdir OBJ
	% cd OBJ
	% perl ../configure -T <^[Qbg> -L ../OBJ
	% 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


SDfBNg\Et@C\

4.1 zzpbP[W̃fBNg\

	include/		AvP[Vwb_t@C
	kernel/			J[l\[Xt@C
	syssvc/			VXeT[rXwb_t@CC\[Xt@C
	library/		T|[gCu\[Xt@C
	target/			^[Qbgˑ
	arch/			^[Qbgˑ̋ʕ
		gcc/		GCCJˑ
		logtrace/	g[XOL^̃TvR[h
	pdic/			PDICifoCXhCoOSˑj
	utils/			[eBeBvO
	sample/			TvvOMakefile
	doc/			hLg
	test/			eXgvO
	extension/		gpbP[W

4.2 ^[Qbgˑ̃t@C\

^[QbgˑiJ[lRtBM[^ƃeXgvO͏j
̊et@C̊Tv͎̒ʂD

	README.txt			TOPPERS/ASPJ[l̊ȒPȏЉ
	configure			RtBM[VXNvgiGNUJpj
	MANIFEST			ʃpbP[W̃t@CXg

	include/
		kernel.h		ASPJ[lgp邽߂̒`
		sil.h			VXeC^tF[XCgp邽߂̒`
		t_stddef.h		TOPPERSʃwb_t@C
		itron.h			ITRONdlʋK̃f[^^E萔E}N
		t_syslog.h		VXeOo͂s߂̒`
		t_stdlib.h		{IȃCu֐gp邽߂̒`
		queue.h			L[색Cugp邽߂̒`
		histogram.h		sԕzWvW[gp邽߂̒`
		log_output.h	VXeÕtH[}bgo͂gp邽߂̒`

	kernel/
		Makefile.kernel		J[l̃t@C\̒`
		kernel_impl.h		J[lpWwb_t@C
		kernel_int.h		kernel_cfg.cp̃wb_t@C
		kernel_rename.def	J[l̓ʖ̃l[`
		kernel_rename.h		J[l̓ʖ̃l[
		kernel_unrename.h	J[l̓ʖ̃l[	
		kernel_api.csv		RtBM[^̐ÓIAPIe[u
		kernel_def.csv		RtBM[^̒l擾V{e[u
		kernel.tf			RtBM[^̃pX2̃ev[gt@C
		kernel_check.tf		RtBM[^̃pX3̃ev[gt@C
		allfunc.h		ׂĂ̊֐RpC邽߂̒`
		check.h			G[`FbNp}N
		startup.c		J[l̏ƏI
		task.h			^XN샋[`֘A̒`
		task.c			^XN샋[`
		wait.h			҂ԑ샋[`֘A̒`
		wait.c			҂ԑ샋[`
		time_event.h	^CCxgǗ֘A̒`
		time_event.c	^CCxgǗ
		task_manage.c	^XNǗ@\
		task_refer.c	^XNԎQƋ@\
		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[@\
		pridataq.h		Dxf[^L[@\֘A̒`
		pridataq.c		Dxf[^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@\
		alarm.h			A[nh@\֘A̒`
		alarm.c			A[nh@\
		sys_manage.c	VXeԊǗ@\
		interrupt.h		݊Ǘ@\֘A̒`
		interrupt.c		݊Ǘ@\
		exception.h		CPUOǗ@\֘A̒`
		exception.c		CPUOǗ@\

	syssvc/
		banner.h		J[lNbZ[W̏o͂̂߂̒`
		banner.c		J[lNbZ[W̏o
		banner.cfg		J[lNbZ[W̏o͂̃RtBM[
						Vt@C
		logtask.h		VXeO^XNgp邽߂̒`
		logtask.c		VXeO^XN
		logtask.cfg		VXeO^XÑRtBM[Vt@C
		serial.h		VAC^tF[XhCogp邽߂̒`
		serial.c		VAC^tF[XhCo
		serial.cfg		VAhCõRtBM[Vt@C
		syslog.h		VXeO@\gp邽߂̒`
		syslog.c		VXeO@\
		syslog.cfg		VXeO@\̃RtBM[Vt@C
		vasyslog.c		ϐ̃VXeOCu

	library/
		histogram.c		sԕzWvW[
		log_output.c	VXeÕtH[}bgo
		strerror.c		G[bZ[WԂ֐
		t_perror.c		G[bZ[W̏o

	arch/gcc/
		MANIFEST		ʃpbP[W̃t@CXg
		tool_stddef.h	t_stddef.h̊JˑiGCCpj

	arch/logtrace/
		MANIFEST		ʃpbP[W̃t@CXg
		trace_config.h	g[XOɊւݒ
		trace_config.c	g[XO@\
		trace_dump.c	g[XÕ_v

	utils/
		applyrename		t@CɃl[Kp
		genoffset		offset.h̐iGNUJpj
		genrename		l[wb_t@C̐
		gentest			eXgvO̐
		makedep			ˑ֌WXg̐iGNUJpj
		makerelease		[XpbP[W̐

	sample/
		Makefile		TvMakefileiGNUJpj
		sample1.h		TvvO(1)Ɋւ`
		sample1.c		TvvO(1)
		sample1.cfg		TvvO(1)̃RtBM[Vt@C

	doc/
		user.txt			[U[Y}jA
		asp_spec.txt		TOPPERS/ASPJ[l̎dlTv
		extension.txt		@\gE`[jOKCh
		porting.txt			^[Qbgˑ |[eBOKCh
		configurator.txt	RtBM[^dl
		design.txt			݌v
		version.txt			ύX


TDRtBM[VXNvg̎g

RtBM[VXNvgiconfigurej́CASPJ[lуAv
P[VvO\z邽߂ɕKvȊ{IȃRtBM[V
s߂̃vOłD

ASPJ[lpăAvP[V쐬ꍇɂ́C܂IuWFNg
t@CufBNg쐬C̃fBNgŃRtBM[
VXNvgsDIuWFNgt@CufBNg̏
Ɩ̂́CCӂɌ߂Ă悢D

RtBM[VXNvgɑ΂IvV͎̒ʂD

	-T <^[Qbg>
		^[QbgVXê̖CtargetfBNg̉ɒuĂ
		^[QbgˑfBNĝ̖Ŏw肷iK{jD

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

	-a <AvP[ṼfBNg>
		AvP[VvÕ\[Xt@CiVXeRtBM
		[Vt@CjufBNgw肷D
		ꍇɂ́CIuWFNgt@CufBNgɒu
		Ă邱Ƃ肷DVXeRtBM[Vt@ĆC
		IuWFNgt@CufBNgɒuƁ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-UIvV𕡐gĂ͂ȂȂjD

	-L <J[lCũfBNg>
		Oɍ\zJ[lCuilibkernel.ajpāCAv
		P[V݂̂\zꍇɂ́C̃IvVɃJ[lC
		u̒uꂽfBNgw肷D̃IvV̎gp
		ɂẮCu3.5 AvP[VƃJ[lʁXɍ\z
		@v̐߂QƂ邱ƁD

	-f
		J[l֐PʂŃRpCCuꍇɁC̃I
		vVw肷D̃IvV̎gpɂẮCu3.4 J[
		l֐PʂŃCu@v̐߂QƂ邱ƁD

	-D <ASPJ[l̃\[XfBNg>
		ASPJ[l̃\[Xt@CufBNgw肷D
		ꍇɂ́Cconfigure̒uĂfBNgƂȂD

	-l <vO~O>
		AvP[VvÕvO~Ow肷D
		_ł́Ccc++݂̂T|[gĂD

	-t <ev[gfBNg>
		MakefileTvvÕev[g̒uꂽfBNg
		w肷Dȗꍇɂ́CsamplefBNgƂȂD

	-d <s>
		^[QbgVXeł̃vO̎siȂ́Cfob
		Oĵ̖w肷D̃IvVw肷ƁCs
		w肷V{iTOPPERS_<fobO>j}N`
		Dȗꍇɂ́Csw肷V{̓}N`
		ȂD

	-r
		g[XOL^̃TvR[hLɂꍇɁC̃IvV
		w肷D̃IvV̎gpɂẮCu11.5 g[X
		OL^̃TvR[h̎gp@v̐߂QƂ邱ƁD

	-p <perl̃pX>
		perl̃pXw肷Dȗꍇɂ́C/usr/local/bin
		/usr/binTCperl̃pX肷D

	-g <RtBM[^̃pX>
		RtBM[^icfgj̃pXw肷Dȗꍇɂ́C
		ftHg̃pXiASPJ[l̃\[XfBNg̉
		cfg/cfg/cfgjƂȂD

RtBM[VXNvgs͎̒ʂłD

(1) Makefile̐

ev[gfBNgiftHgł́CsamplejK؂Makefile
ICKvȉӏāCMakefile𐶐D

(2) TvvO̐

w肵AvP[VvOev[gfBNgɂꍇC
K؂ȃAvP[VvÕ\[Xt@CICKvȉӏ
āCAvP[VvÕ\[Xt@CiႦ΁C
sample1.hCsample1.cCsample1.cfgj𐶐D

(3) RtBM[^pӂłĂ邩̃`FbN

RtBM[^icfgj̎st@C邩`FbNCt@C
ꍇɂ́C̎|o͂D


UDMakefilȅC@

Ȍ͂Ő悤ɁCRtBM[VXNvgɗ^IvV
Makefile邪CRtBM[VXNvgőΉ
łȂꍇɂ́CMakefile𒼐ڏCKvDł́CMakefile
̒ŁCCKvƂȂ\̍ӏɂĐD

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

6.1 Makefile̕ϐ`

(A) ^[Qbg

TARGETɂ́C^[QbgVXê̖CtargetfBNg̉ɒu
Ă^[QbgˑfBNĝ̖Ŏw肷D̒`́Cʏ́C
RtBM[VXNvgɑ΂-TIvVɂsD

(B) IuWFNgt@C̊gq

CygwinŃRpC鎞ɂ́COBJEXT"exe"ɒ`KvD
́CCygwinł́C[hW[̃t@CɊgq".exe"t
̂ɑΉ邽߂̂̂łDCygwinł邱Ƃ𔻒ł΁C
RtBM[VXNvg̒`sD

(C) si^[Qbgˑj

^[QbgɂẮCsɑΉă^[Qbgˑ̃R[h
ꍇD\ɂ邽߂ɁCs̖̂DBGENVɒ`
ĂD̒`́Cʏ́CRtBM[VXNvgɑ΂
-DIvVɂsDǂ̃^[Qbgǂ̎sɑΉĂ邩
́C^[Qbgˑ̃[U[Y}jAQƂ邱ƁD

(D) J[lCũfBNg

KERNEL_LIBɂ́CJ[lCu̒uꂽfBNg`D
̒`́Cʏ́CRtBM[VXNvgɑ΂-LIvV
ɂsD

(E) J[l֐PʂŃRpC邩ǂ

KERNEL_FUNCOBJŚCJ[l֐PʂŃRpCꍇɂtrueɒ`
Ct@CPʂŃRpCꍇɂ͖`ƂD̒`́Cʏ
́CRtBM[VXNvgɑ΂-fIvVɂsD

(F) ʃRpCIvV

ׂẴvOɋʂRpCIvV̒ǉKvȏꍇɂ́C
̕ϐ̒`ύXD̃RpCIvVC̃^[Qbg
ŏɕKvȏꍇɂ́C^[Qbgˑ̒`ꂽMakefile.targetC
ׂłD

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

ǉ̉\̂RpCIvVɂẮCu6.2 RpCIv
Vv̐߂QƂ̂ƁD

(G) AvP[VvO

APPLNAMEɂ́CAvP[VvO`DVXeRtB
M[Vt@ĆCAPPLNAMEɒ`OɊgq".cfg"t
OƂD܂CAvP[ṼCt@ĆCAPPLNAMEɒ
`OɊgq".c"tOƂD̒`́Cʏ́CRtB
M[VXNvgɑ΂-AIvVɂsD

(H) AvP[ṼfBNg

AvP[Ṽ\[Xt@CCIuWFNgt@CûƂ͕
̃fBNgɒuꍇɂ́CAPPLDIRɂ̃fBNg`D
̒`́Cʏ́CRtBM[VXNvgɑ΂-aIvV
ɂsDAvP[Ṽ\[Xt@CufBNg
ꍇɂ́CAPPL_DIR̒`ύX邱ƂőΉD

(I) AvP[ṼvOt@C

AvP[Ṽ\[Xt@Cō\ꍇɂ́C̃IuWF
Ngt@CCAPPL_ASMOBJSCAPPL_COBJSCAPPL_CXXOBJSɗ񋓂D

(J) AvP[ṼRpCIvV

AvP[ṼRpCɕKvȃRpCIvVCAvP[
VCuKvƂꍇɂ́CAPPL_CFLAGSAPPL_LIBSɒ
`D

(K) [hW[̃t@C

W̃[hW[̃t@COBJNAMEɒ`DftHgasp
łD

(L) ^[Qbgt@C̒`

^[Qbg"all"̈ˑt@CƂāC[hW[̌`w肷D
̓Iɂ́CELF`̎$(OBJFILE)CoCi`̎$(OBJNAME).binC
g[ S`̎$(OBJNAME).srecw肷D$(OBJFILE)́CCygwin
OBJEXT"exe"ɒ`ɂ$(OBJNAME).exeCłȂꍇɂ
$(OBJNAME)ƂȂD

(M) makedep̃IvV̒`

CygwinŃ[gfBNg"cygdrive"łȂꍇɂ́Cmakedep-RI
vVŃ[gfBNg^KvDmakedep̃IvV́C
̗̂悤ɁCMAKEDEP_OPTSɒ`D

MAKEDEP_OPTS = -R cygdrive

6.2 RpCIvV

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

^[QbgˑɂāCRpCIvV-WerrorixG[
jw肵ĂꍇD̂悤ȃ^[QbgɂāCAv
P[VŌxȂꍇɂ́C^[QbgˑCăR
pCIvV폜KvD

܂CTOPPERS_OMIT_SYSLOG`ăRpC邱ƂŁCVXeOo
͂}~邱ƂłD


VDRtBM[^̎g

RtBM[^icfgj́CTOPPERSVJ[ldl2.12.5
̋Lq̒ʂC3̃pXō\D

RtBM[^́CVXeRtBM[Vt@Cp[
^ɎCȉ̃IvVidvȂ̂̂݁jD

	--help
		IvṼXgƐ\D

	-vm--versionn
		RtBM[^̃o[W\D

	-km--kerneln<J[l>
		J[l̖̂w肷DftHgaspD

	-pm--passn<pXԍ>
		pXԍw肷D1`3̂ꂩD

	-Im--include-pathn<CN[hpX>
		INCLUDEfBNeBuɂāCCN[hRtBM[
		Vt@CTpXw肷D

	-Tm--template-filen<ev[gt@C>
		ev[gt@Ĉ̖w肷DpX2ƃpX3ŗLD

	--api-table <ÓIAPIe[ut@C>
		ÓIAPIe[ũt@Cw肷D

	--cfg1-def-table <l擾V{e[ut@C>
		l擾V{e[ũt@Cw肷D

	-rm--rom-imagen<[hW[>
		[hW[SR[htH[}bǧ`ɕϊt@C
		̂w肷DpX3ł̂ݗLD

	-s [--symbol-table] <V{t@C>
		[hW[̊eV{ƃAhX̑Ή\܂ރV{
		t@Ĉ̖w肷DpX3ł̂ݗLD

	--id-output-file <IDԍo̓t@C>
		IuWFNgIDԍ̊tʂCw肵Õt@Cɏ
		oDpX2ł̂ݗLD

	--id-input-file <IDԍ̓t@C>
		IuWFNgIDԍ̊tCw肵Õt@C
		ށDpX2ł̂ݗLD

	--external-id
		IuWFNgIDԍێϐ̒`𐶐DpX2ł̂
		LD

	-Mm--print-dependenciesn<^[QbgV{>
		VXeRtBM[Vt@C̈ˑ֌Wo͂D
		Makefilëˑ֌W𐶐ۂɗpD

RtBM[^̏ڍ׎dlɂẮCʓrPDFt@Č`ŔzzĂ
uTOPPERSVJ[lpRtBM[^dlvQƂ邱ƁD


WDVXeT[rX

8.1 VXeO@\

VXeO@\́CJ[lŔُ펖ۂJ[l̃g[X
OCVXeT[rXAvP[VŔُ펖ۂg[XO
COƂċL^邽߂̋@\łD܂CL^O
o@\D

VXeO@\́CVXeRtBM[Vt@Csyslog.cfg
CN[h邱ƂŁCVXeɑgݍނƂłDVXeO
o͂s\[Xt@Cł́Ct_syslog.hCN[hD܂CVX
eO@\̂̑̃T[rXR[Ăяo\[Xt@Cł́C
syslog.hCN[hD

8.1.1 VXeO@\̈ʒut

VXeO@\́CJ[lĂяoƂł邽߁CJ[l
艺̊Kw̃W[ƈʒut邱ƂłD̈Ӗł́C̃V
XeT[rXƂ͈ʒutقȂD

COVXeOɏo͂邽߂ɂ́CVAC^tF[X
hCoȂǁCJ[lœ삷VXeT[rXpKvD
ŁCOVXeOɏo͂邽߂̃T[rXiCVXe
O^XNƌĂԁj́CVXeO@\Ƃ͕Ď邱ƂƂC
VXeO@\̓ŐL^Eô߂̋@\ɍiĂD

ȏ̂悤ɁCVXeO@\̓J[l艺̊Kw̃W[ł
CVXeO@\̒ŃOo߂ɁCJ[l̋@\K
vƂD́CJ[l̓ϐ𒼐ڎQƂĂD̂߁CJ[
l̎sJnOÍCO͐L^ȂD

8.1.2 Oobt@ւ̋L^ƒ჌xo

q悤ɁCOVXe̊Oɏo͂邽߂ɂ́CJ[l
œ삷VXeT[rXpKv邽߁CJ[l̓p
łȂ悤ȏdȈُ펖ۂNꍇɂ́COo͂łȂ
ȂD܂C̃VXeT[rXgfobOꍇɂCO
̏o͂łȂD

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

OCOobt@֋L^邩჌xo͋@\pďo͂邩
̐ݒ́CVXeO@\̃T[rXR[isyslog_msk_logjɂčs
ƂłDsyslog_msk_log̎gɂĂ͌qD

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

8.1.3 O̎

VXeO@\́COɈȉ̎ʂ݂ĂD

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

O̎ʂ̒ŁCLOG_TYPE_COMMENTLOG_TYPE_ASSERTȊÓCJ[l
̃g[XOɗp邽߂̂̂ł邪Cgp邩ǂ̓^[Qbg
ˑɔCĂD

8.1.4 Ȍdvx

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

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

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

ǂ̏dvx̃OOobt@ɋL^邩ƁCǂ̏dvx̃O
჌xo͋@\pďo͂邩́CVXeO@\̃T[rXR[
isyslog_msk_logjɂĐݒ肷邱ƂłD

8.1.5 VXeO@\̃T[rXR[

VXeO@\̒񋟂T[rXR[͎̒ʂłD̃T[
rXR[Ăяo\[Xt@Cł́Csyslog.hCN[hKv
D

(1) ER syslog_wri_log(uint_t prio, const SYSLOG *p_syslog)

VXeO@\ɁCdvxprioŃOo͂iOobt@֋L^
邩჌xo͋@\pďo͂jDSYSLOǴCOi[
߂̃f[^^i\́jŁC̃T[rXR[ɂ̓Oi[
ւ̃|C^nD

vg^Cv錾ɂāC*p_syslogconstw肪Ă邪Cۂɂ́C
̊֐̒ŁC*p_sysloglogtimtB[hɃVXeł
D

(2) ER_UINT syslog_rea_log(SYSLOG *p_syslog)

Oobt@烍O1oDOobt@̎E_OBJC
łȂꍇ́COobt@̃I[ot[ɂ莸ꂽO̐
iO񂪎ĂȂꍇ0jԂDVXeO^XNp邱
Ƃz肵ĂD

(3) ER syslog_msk_log(uint_t logmask, uint_t lowmask)

Oobt@ɋL^ׂȌdvx̎rbg}bvilogmaskjƁC
჌xo͋@\pďoׂ͂Ȍdvxrbg}bv
ilowmaskjݒ肷Drbg}bv邽߂̃}NƂāCLOG_MASK
LOG_UPTOpӂĂD

(4) ER_UINT syslog_ref_log(T_RLOG *pk_rlog)

VXeO@\̏ԂQƂD̓Iɂ́COobt@ɋL^
郍O̐COobt@̃I[ot[ɂ莸ꂽO̐C
Oobt@ɋL^ׂȌdvx̎rbg}bvC჌xo
͋@\pďoׂ͂Ȍdvxrbg}bvQƂ邱
ƂłD

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

VXeOo͂̂߂̃Cu֐ƃ}N͎̒ʂłD
Ăяo\[Xt@Cł́Ct_syslog.hCN[h΂悢D

(1) void _syslog_n(uint_t prio, uint_t type, intptr_t arg1, ..., intptr_t argn)
     n0`6̂ꂩD

OʂtypeCp[^arg1`argñOCdvxprioŏo͂
邽߂̊֐D

(2) void syslog_n(uint_t prio, const char *format, arg1, ..., argn)
     n0`5̂ꂩD

format񂨂тɑ쐬郁bZ[WCOʂ
LOG_TYPE_COMMENT̃OƂāCdvxprioŏo͂邽߂̃}ND

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

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

EformatɎgtH[}bgw͎̒ʂD

	%d		int_t^Ƃ݂ȂC10iŕ\
	%u		uint_t^Ƃ݂ȂC10iŕ\
	%x		uint_t^Ƃ݂ȂC16iip͏jŕ\
	%X		uint_t^Ƃ݂Ȃ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

܂Cintptr_t^̃TCYlong^̃TCYȏłɂẮC
tH[}bgwgp邱ƂłD̑̃tH[}bgw'l'
tꍇɂ͖i%lc%lsɂ͑ΉĂȂjD

	%ld		long_t^Ƃ݂ȂC10iŕ\
	%lu		ulong_t^Ƃ݂ȂC10iŕ\
	%lx		ulong_t^Ƃ݂ȂC16iip͏jŕ\
	%lX		ulong_t^Ƃ݂ȂC16iip͑啶jŕ\

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

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

format񂨂тɑ쐬郁bZ[WCOʂ
LOG_TYPE_COMMENT̃OƂāCdvxprioŏo͂邽߂̊֐ŁC
̐ςɂ́Dformatɑ͍ő5܂ŁDformatт
ɑɂ́Csyslog_nƓl̐D

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

(4) UINT LOG_MASK(UINT prio)

dvxpriô݃Zbgꂽrbg}bv}NDsyslog_msk_logɓn
邽߂ɗpD

(5) UINT LOG_UPTO(UINT prio)

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

8.1.7 VXeO@\̂̑̃T[rX

VXeO@\́COL̃T[rXR[ɉāĈ߂
֐D

(1) void syslog_initialize(intptr_t exinf)

VXeO@\Dsyslog.cfgɂāCJ[lɏ[
`Ƃēo^Dexinf͖D

8.2 VAC^tF[XhCo

VAC^tF[XhCóCVA|[g߂̃hCo
D

VAC^tF[XhCóCVXeRtBM[Vt@C
serial.cfgCN[h邱ƂŁCVXeɑgݍނƂłD
VAC^tF[XhCoĂяo\[Xt@Cł́Cserial.h
CN[hD

VAC^tF[XhCóC|[gɃZ}tH2gpD
Z}tH𐶐ÓIAPÍCserial.cfgɊ܂܂ĂD

8.2.1 VAC^tF[XhCõT[rXR[

VAC^tF[XhCoĂяoT[rXR[̎dl͎̒ʂ
łD̒ŁCVA|[gIDԍiportidj̉߂̓^[Qbg
ƂȂD

̃T[rXR[́C^XNReLXgĂяoƂ͂ł
D܂Cserial_rea_datserial_wri_dat́CfBXpb`ۗԂŌĂ
oƂ͂łȂDCĂяoꍇɂE_CTXG[ƂȂD

(1) ER serial_opn_por(ID portid)

portidŎw肳ꂽVA|[gI[vCM^M\ȏԂ
D

(2) ER serial_cls_por(ID portid)

portidŎw肳ꂽVA|[gN[YD

(3) ER_UINT serial_rea_dat(ID portid, char_t *buf, uint_t len)

portidŎw肳ꂽVA|[gClenoCg̕MCbuf
̗̈ɓDlenoCgM܂ŁC҂ԂƂȂDM
܂̓G[R[hԂD

(4) ER_UINT serial_wri_dat(ID portid, const char_t *buf, uint_t len)

portidŎw肳ꂽVA|[gɁCbuflenoCg̕𑗐M
DlenoCgMobt@ɓ܂ŁC҂ԂƂȂDM
̓G[R[hԂD

(5) ER serial_ctl_por(ID portid, uint_t ioctl)

portidŎw肳ꂽVA|[g̐CioctlŎlɐݒ肷
D

ioctlɂ́Cȉ̐\萔Crbgɘ_aƂ̂
w肷D

	IOCTL_ECHOiGR[obN[hj
		̃rbgݒ肷ƁCVAC^tF[XhCoGR[
		obNsD̓Iɂ́Cobt@當oxɁC
		oD

	IOCTL_CRLFis[hj
		LFiline feedjoƁCCRicarriage returnj{LFɕϊ
		ďoD

	IOCTL_FCSNDiMt[j
		𑗐M鏈ɑ΂āCXON/XOFFɂt[sD
		Ȃ킿CSTOPiRg[-SjMƑM~C
		STARTiRg[-QjMƑMĊJD

	IOCTL_FCANYiMt[ŔCӂ̕őMĊJj
		IOCTL_FCSNDw肵Ă鎞ɁCM~ɎMCӂ̕
		őMĊJD

	IOCTL_FCRCViMt[j
		M鏈ɑ΂āCXON/XOFFɂt[sD
		Ȃ킿CMobt@̎c̈悪ȂȂSTOPiRg[
		-Sj𑗏oCc̈悪STARTiRg[-Qj
		oD

ȂCI[ṽftHg̐ݒl(IOCTL_ECHO | IOCTL_CRLF |
IOCTL_FCSND | IOCTL_FCRCV)łD

(6) ER serial_ref_por(ID portid, T_SERIAL_RPOR *pk_rpor)

portidŎw肳ꂽVA|[g̏ԂQƂCpk_rporŎw肳pPb
gɕԂDpPbgreacntɂ͎Mobt@̕Cwricntɂ͑
Mobt@̕ԂD

8.2.2 VAC^tF[XhCô̑̃T[rX

VAC^tF[XhCóCOL̃T[rXR[ɉāC
ƖM̎oD́CJ[lɏ[
`Ƃēo^D܂C^[QbgˑŁCCIC
݃T[rX[`D̓o^serial.cfgɊ܂܂D

(1) void serial_initialize(intptr_t exinf)

VAC^tF[XhCoDJ[lɏ[`
ēo^Dexinf͖D

(2) bool_t serial_get_chr(ID portid, char_t *p_c)

portidŎw肳ꂽVA|[g̑Mobt@̕Cp_c̎wԒn
ɎoCtrueԂ֐DȂɂ́CfalseԂDI
[`ŌĂяoƂz肵ĂD

8.3 VXeO^XN

VXeO^XŃCVXeO@\烍OoCV
Xe̊Oɏo͂邽߂̃T[rXłD

ASPJ[l̃[XpbP[WɊ܂܂VXeO^XŃCVA
|[gɃO𕶎̌`ŏo͂̂ŁCVXeO^XN̈
ƂʒutŒ񋟂ĂD

̃VXeO^XŃCVXeRtBM[Vt@C
logtask.cfgCN[h邱ƂŁCVXeɑgݍނƂłDV
XeO^XÑT[rXĂяo\[Xt@Cł́Clogtask.hC
N[hD

8.3.1 VXeO^XÑT[rXR[

VXeO^XÑT[rXĂяoT[rXR[̎dl͎̒ʂ
D

(1) ER logtask_flush(uint_t count)

VXeO@\̃Oobt@̃O̐countȉɂȂ܂ő҂D
count0̏ꍇɂ́CVAC^tF[XhCȏMobt@
Ȃ̂҂D

8.3.2 VXeO^XN̂̑̃T[rX

VXeO^XŃCOL̃T[rXR[ɉāCCƏI
DC̓^XNƂāCI͏I[`Ƃēo
^D̓o^logtask.cfgɊ܂܂D

(1) void logtask_main(intptr_t exinf)

VXeO^XÑCDexinfɂ́COo͂VA|[
gIDԍnD

(2) void logtask_terminate(intptr_t exinf)

VXeO^XN̏IDVAC^tF[XhCȏMob
t@ɒ~ςꂽf[^ƁCOobt@ɋL^ꂽOC჌x
o͋@\pďo͂Doׂ͂O񂪂ꍇɂ́Co
OɁC"-- buffered messages --"Ƃo͂Dexinf͖
D

̊֐I[`Ƃēo^邱ƂŁCJ[lI_Ŗo
͂̃ÔقƂǂo͂邱ƂłDCo͂̃O
̓CVXeO^XÑCOobt@oC
VAC^tF[XhCoɑMĂȂ́Co͂ȂD

8.4 J[lNbZ[W̏o

J[lNbZ[W̏o͂́CJ[l̋NɁCJ[l̖̂o[
WԍC쌠\Ȃǂo͂邽߂̋@\łD

J[lNbZ[W̏o͂́CVXeRtBM[Vt@C
banner.cfgCN[h邱ƂŁCVXeɑgݍނƂłD

J[lNbZ[W̏o͂́C̊֐ō\D

(1) void print_banner(intptr_t exinf)

VXeO@\pāCJ[lNbZ[Wo͂Dbanner.cfg
ɂāCJ[lɏ[`Ƃēo^Dexinf͖D


XDT|[gCu

T|[gCúCAvP[VVXeT[rX쐬邽
ɗpł郉Cu֐QłD

9.1 {IȃCu֐

{IȃCu֐pꍇɂ́Ct_stdlib.hCN[hD

(1) const char *itron_strerror(ER ercd)

ercdŎG[R[hɑΉ郁CG[R[h̕ԂD

(2) void t_perror(uint_t prio, const char *file, int_t line,
										const char *expr, ER ercd);

T[rXR[G[Ԃꍇɗp邱Ƃz肵֐ŁCt@C
CsԍCCG[R[hCdvxprioŁCVXeO@\
pďo͂D

9.2 VXeOo͗pCu֐

VXeOo͗pCu֐́COtH[}bgo͂邽
ɁCVXeO^XNуVXeO@\ŗp邽߂̊֐QłD

VXeOo͗pCu֐Ăяo\[Xt@Cł́C
log_output.hCN[hD

(1) void syslog_printf(const char *format, const intptr_t *args,
												void (*putc)(char_t))

formatŎw肳tH[}bgLqp_argsŎw肳񂩂쐬
bZ[WC1o͊֐putcpďo͂D

(2) void syslog_print(const SYSLOG *p_sys, void (*putc)(char_t))

p_syslogŎw肳郍O𕶎ɒC1o͊֐putcpďo
͂D

(3) void syslog_lostmsg(uint_t lost, void (*putc)(char_t))

lost̃O񂪎ꂽ|̃bZ[WC1o͊֐putcpďo
͂D

9.3 sԕzWvW[

sԕzWvW[́CVXẽA^C\]邽
ɁCvOԂ̎sԂvC̕zWvE\邽߂̃
Cu֐QłD

sԕzWvW[Ăяo\[Xt@Cł́Chistgram.hC
N[hD

sԕzWvW[́C̃vOԂ̎sԂvEW
vE\邱ƂłDvOԖɁCsԕzL^邽
߂̃f[^\Dǂ̃f[^\p邩CIDԍihistidjŎw
肷Dgpłf[^\̐́CTNUM_HISTŒ`DȂ킿C
IDԍƂāC1`TNUM_HISTw肷邱ƂłDTNUM_HIST́CftH
glhistgram.c̒Œ`ĂCRpCIvV^[Qbg
ˑitarget_test.h܂͂CN[ht@Cjɂ
X邱ƂłD

^[QbgˑŐݒύXĂȂꍇCsԕzWvW[
́CJ[l̐\]pVXeQƂ@\iget_utmjpĎ
sԂvD̂߁CsԂ̓}CNbPʂŋL^ix
̓^[QbgˑjD܂CL^鎞Ԃɂ́Cv̂߂̃I[owbh
iget_utm̎sԁ{j܂܂D

^[QbgˑŐݒύXĂꍇ̎dlɂẮC^[Qbg
̃[U[Y}jAQƂ邱ƁD

(1) void init_hist(ID histid, uint_t maxval, uint_t *hist)

histidŎw肳ꂽf[^\Dmaxvalɂ͋L^ő厞ԂC
histɂ͋L^̈̐擪Ԓnw肷DhistŎn܂L̈́Cvf
maxvalɎw肵l+1uint_t^̔zƂĊmۂDႦ΁Cmaxval
1000w肷ꍇɂ́Chistɂ͗vf1001uint_t^̔z̐擪Ԓn
nD

(2) void begin_measure(ID histid)

sԂvvOԂ̒OɌĂяo֐DhistidŎw肳
f[^\ɁC݂̃VXeL^D

(3) void end_measure(ID histid)

sԂvvOԂ̒ɌĂяo֐D݂̃VXe
ƁChistidŎw肳ꂽf[^\ɋL^ꂽJnCvO
Ԃ̎sԂ߁ČʂL^D

(4) void print_hist(ID histid)

VXeO@\pāCsԕžvʂo͂D


PODeXgvO

eXgvÓCJ[l̋@\eXgѐ\]s߂̃v
OQłD

10.1 eXgvOpCu

eXgvOpCúCvÕ`FbN|Cg
ŎsꂽƂȂǁCvO삵Ă邱Ƃ`FbN
邽߂̊֐QłDvO삵ĂȂƂo
ꍇɂ́CvOID

̃CuŃvOI鎞ɂ́C̎_Ŗo͂̃O
񓙂o͂悤Ƃ邪Cꕔ̏񂪔ꍇDڂ́C
u8.3.2 VXeO^XN̂̑̃T[rXv̐߂(2)QƂ邱ƁD

eXgvOpCu֐pꍇɂ́Ctest_lib.hCN[
hCtest_lib.cRpCEND

(1) void check_point(uint_t count)

`FbN|Cgʉ߂ۂɌĂяo֐Dcountɂ́CԖڂ̃`FbN
|Cgł邩w肷iŏ̃`FbN|Cgł1w肷jD
count̒lCŏ̃`FbN|CgɂĂ1łȂꍇɁCȍ~
`FbN|CgɂẮCÕ`FbN|CgʉߎcountɎw肵
l1lłȂꍇɁCvO삵ĂȂƌȂC
vOID

(2) void check_finish(uint_t count)

Ō̃`FbN|CgɓBۂɌĂяo֐Dcountɂ́CԖڂ
`FbN|Cgł邩w肷iŏ̃`FbN|Cgł1w肷
jDcount̒lCÕ`FbN|CgʉߎcountɎw肵l1
lłȂꍇɁCvO삵ĂȂƌȂD̊֐
́CvO삵Ă^ȂɊւ炸CvOI
D

(3) void check_assert(bool_t exp)

exp^ł邱Ƃ`FbNꍇɌĂяo֐DexpUłꍇ
ɁCvO삵ĂȂƌȂCvOID

(4) void check_ercd(ER ercd, ER expected_ercd)

ercdexpected_ercdɈvĂ邱Ƃ`FbNꍇɌĂяo֐D
ercdexpected_ercdɈvĂȂꍇɁCvO삵Ă
ȂƌȂCvOID

(5) void check_state(bool_t ctx, bool_t loc, PRI ipm,
						bool_t dsp, bool_t dpn, bool_t tex)

^XNReLXgɂāCVXeԂ҂̂ɂȂĂ邩
`FbNɌĂяo֐DctxClocCdspCdpnCtexɂ͂ꂼ
sns_ctx()Csns_loc()Csns_dsp()Csns_dpn()Csns_tex()̕ԒlƂĊ҂
lCipmɂget_ipm()ŎQƂł銄ݗDx}XNƂĊ҂
lw肷D̓̂ꂩ҂lƈvĂȂꍇɁC
vO삵ĂȂƌȂCvOID

(6) void check_state_i(bool_t ctx, bool_t loc,
						bool_t dsp, bool_t dpn, bool_t tex)

^XNReLXgɂāCVXeԂ҂̂ɂȂĂ邩
`FbNɌĂяo֐DctxClocCdspCdpnCtexɂ͂ꂼ
sns_ctx()Csns_loc()Csns_dsp()Csns_dpn()Csns_tex()̕ԒlƂĊ҂
lw肷D̓̂ꂩ҂lƈvĂȂꍇɁC
vO삵ĂȂƌȂCvOID

(7) void set_bit_func(BIT_FUNC bit_func)

`FbN|CgɂČĂяoȐff֐ݒ肷邽߂̊֐D

10.2 J[l̐

`FbN|CgɂČĂяoȐffɎg߂̃vOƂāC
J[l̐pӂĂDJ[l̐́CJ[l
̊ef[^\̈ѐi_ł͖jD

J[l̐pꍇɂ́Cbit_kernel.cRpCEN
D

(1) ER bit_kernel(void)

J[l̊ef[^\̈ѐCѐmFłꍇE_OKC
łȂꍇE_SYSG[Ԃ֐DE_SYSG[Ԃۂ̃TuG[
R[hƂāCѐmFłȂڂR[hԂD

10.3 @\eXgvO

testfBNgɒuꂽ"test"Ŏn܂vÓCJ[l̋@\e
Xgs߂̃vOłD

o[WŗpӂĂ鐫\]vO͎̒ʂD

(1) test_cpuexc1			CPUÕeXg(1)
(2) test_cpuexc2			CPUÕeXg(2)
(3) test_cpuexc3			CPUÕeXg(3)
(4) test_cpuexc4			CPUÕeXg(4)
(5) test_cpuexc5			CPUÕeXg(5)
(6) test_cpuexc6			CPUÕeXg(6)
(7) test_cpuexc7			CPUÕeXg(7)
(8) test_cpuexc8			CPUÕeXg(8)
(9) test_cpuexc9			CPUÕeXg(9)
(10) test_cpuexc10			CPUÕeXg(10)
(11) test_cpuexc11			CPUÕeXg(11)
(12) test_cpuexc12			CPUÕeXg(12)
(13) test_cpuexc13			CPUÕeXg(13)
(14) test_dlynse			sil_dly_nseɊւeXg
(15) test_sem1				Z}tH@\̃eXg(1)
(16) test_sem2				Z}tH@\̃eXg(2)
(17) test_sysstat1			VXeԂɊւeXg(1)
(18) test_task1				^XNǗW[̃eXg(1)
(19) test_tex1				^XNOɊւeXg(1)
(20) test_tex2				^XNOɊւeXg(2)

CPUÕeXgvÖꕔ́CCPUOnh烊^[
ꍇɁCCPUO𔭐߂̎sp邱ƂOɍ쐬
ĂD̑O񂪐藧Ȃꍇɂ́CeXgvÕ^[Qb
gˑ`ɂāCCANNOT_RETURN_CPUEXC}N`邱ƂKvł
Dڂ́Cu^[Qbgˑ |[eBOKChvQƂ邱ƁD

10.4 \]vO

testfBNgɒuꂽ"perf"Ŏn܂vÓCJ[l̐\]
s߂̃vOłD

\]vÓCvΏۂƂȂ鏈JԂsC̎s
vāCsԕz\D

vsԂɂ́CԌṽI[owbhiԌv̎sɂ
鎞ԁj܂܂DvΏۂ̏̐̎sԂ߂邽߂ɂ́Cv
ꂽԂCԌṽI[owbhv邽߂̃vO
iperf0jŌvꂽԂZKvD

܂CsԂ̌v́CʂɋLqȂ芄݂܂܍s߁C
݃nhiȂƂC^C}݃nhj̏Ԃ܂܂ꂽ
sʂvD

ȂCsԂ̌v́CVXeO^XN͋҂ƂĂ邽߁C
VXeO^XNe邱Ƃ͂ȂD

J[l̐\]ɂẮCn[hEFAiɃLbVj̐ݒ
ӂKvD

o[WŗpӂĂ鐫\]vO͎̒ʂD

(1) perf0		ԌṽI[owbh̕]

ԌṽI[owbhv邽߂̃vOD̓Iɂ́C̃v
Oibegin_mearsureend_measure𑱂ČĂяovOj̎s
ԂvD

̐\]vOŌvꂽԂC̃vOŌvꂽ
ԂZԂCvΏۂ̏̐̎sԂłD

(2) perf1		slp_tskCwup_tskɂ^XN؊Ԃ̕]

slp_tskCwup_tskɂ^XN؊Ԃv邽߂̃vOD
Iɂ́CDx̃^XNN҂Ԃł鎞ɁCႢDx̃^XN
wup_tskɂ荂Dx̃^XNNCDx̃^XNɐ؂芷
܂ł̎ԂƁCDx̃^XNslp_tskɂN҂ԂƂȂC
Dx̃^XNɐ؂芷܂ł̎ԂvD

(3) perf2		snd_pdq̏Ԃ̕]

Dxf[^L[ɒ~ςĂf[^̐ɂCsnd_pdq̏Ԃ
ǂ̂悤ɕω邩v邽߂̃vOD̓Iɂ́CDxf[
^L[ɍDx̃f[^n~ςĂ鎞ɁCsnd_dtqɂ
Dx̃f[^̂ɂ鎞ԂvDn0C10C20C30C40C
50C100C200C300ƕωČvD

(4) perf3		set_flg̏Ԃ̕]

҂^XN̐ɂCset_flg̏Ԃǂ̂悤ɕω邩
v邽߂̃vOD̓Iɂ́CTA_WMUL̃CxgtOɑ΂
āCn̃^XN҂Ă鎞ɁCset_flgɂ肻ׂ̂Ă҂
̂ɂ鎞ԂvDn0C1C2C3C4C5C10C20ƕωČv
D

(5) perf4		act_tskCiact_tsk̏Ԃƃ^XN؊Ԃ̕]

act_tskCiact_tsk̏Ԃƃ^XN؊Ԃv邽߂̃vOD
̓Iɂ́C(1) ^XN؊NȂact_tsk̏ԁC(2) ^XN
Nact_tsk̏ԁi^XN؊Ԃ܂ށjC(3) ^XN؊
Niact_tsk̏ԁi^XN؊Ԃƃ^C}ݒŎs
VXe̍XVԂ܂ށj3̎ԂvD

PPDgp̃qg

11.1 ^C}hCȏg

^C}hCoVXeɑgݍނ߂ɁCVXeRtBM[V
t@C̐擪target_timer.cfgCN[hKvD

11.2 assert}N̏

ASPJ[l̃R[hɂ́Cassert}NgĂDassert}N̒
`t_stddef.hɊ܂܂Cassertsꍇ̍Ō̏iʏ́Cv
O~鏈j́C^[QbgˑTOPPERS_assert_abortŌ
肳D

assertsꍇCVXeJ̓fobKɗƂ̂]܂C
VXeғ̑Ώ@́CVXeɑ΂vɈˑDŁC^[
QbgˑTOPPERS_assert_abortCVXevɍvK؂ȏ
ɒuKvDVXevɂẮCNDEBUG`assert
}N̏IuWFNgR[hiu6.2 RpCIvVv
̐߂QƁj@lD

11.3 IuWFNgID̊Ǘ

TOPPERS/ASPJ[lł́CIuWFNgIDԍCRtBM[^
t@{ƂȂĂD

AvP[VvOŃIuWFNgIDԍQƂꍇɂ́C
2̕@lD

(1) IuWFNgʖp

IuWFNĝ߂̐ÓIAPIiCRE_YYYj̑1p[^ɋLqIu
WFNgʖCAvP[VvOłp@D

RtBM[^́CIuWFNgʖCtIDԍɃ}N
`CvvZbT̃fBNeBui#definejkernel_cfg.hɐ
邽߁CAvP[VvOkernel_cfg.hCN[h
KvD

̕@́CIuWFNgR[hIDԍږߍ܂邽߂Ɏs
ǂŁCRtBM[^skernel_cfg.h
xɁCAvP[VvO̍ăRpCKvɂȂƂ_
D̂߁CAvP[VvO\t@C̒ŁC
̃t@Ĉ݂ŃIuWFNgʖQƂ\ɂƂHv
邱Ƃ]܂D

(2) IuWFNgIDԍێϐp

IuWFNgIDԍێconsttϐpӂCAvP[
VvOł́C̕ϐp@D

Ⴆ΁CTASK1ƂIuWFNgʖ̃^XNɑ΂āĈ悤ȕϐ
pӂD

const ID TASK1_id = TASK1;

AvP[VvOł́C̕ϐiTASK1_idjp邱ƂŁC
RtBM[^skernel_cfg.hxɁCL̕ϐ
`܂񂾃t@Ĉ݂ăRpC΂悢ƂɂȂD

̕@́CAvP[VvO̍ăRpCŏɂł闘
_ŁCϐ̂߂̃̈悪KvɂȂ邱ƂɉāCiv
ZbTɂẮjϐANZX̂߂̃I[owbhƂ_
D܂C萔ł͂Ȃϐł邱ƂC̕ϐ̏ɂ͎g
ƂD

ȂCTOPPERS/ASPJ[l̃RtBM[^́C--external-idIvV
t邱ƂɂCL̕ϐ`kernel_cfg.cɐ@\
Ă̂ŁCׂẴIuWFNgID̕@ŎQƂꍇɂ́C
̋@\p邱Ƃ𐄏D

RtBM[^ɂIDԍt̂1̉ۑƂāCRtBM
[Vt@C̏CɂCIuWFNgID̊tςĂ܂
ƂD́CAvP[V\tgEFA̐݌vdlID
ԍLڂĂꍇCfobOƂɂIDԍ𒼐ڈĂ
ꍇɁCƌቺ\lD

̖ɑΉ邽߂ɁCTOPPERS/ASPJ[l̃RtBM[^ɁC
IDԍ̊tʂt@Cɏo@\i--id-output-fileIvVj
ƁCIDԍ̊tt@C荞ދ@\i--id-input-fileIvVj
pӂĂD̋@\pāCRtBM[^sxɁC
OɎsɃt@CɏoIDԍ̊t荞ނƂŁC
OsƓtsƂłDCTOPPERS/ASPJ[l
́CIDԍɔ̂͋Ȃ߁CIuWFNg̐ꍇ
ɂ́iIDԍ傫̃IuWFNgꍇājG[ƂȂD
̏ꍇɂ́C_~[̃IuWFNg𐶐@ŉ邵ȂD

11.4 J[l̓V{̃l[

ASPJ[lł́CW[̖̂̃W[̖̂ƏՓ˂
邱Ƃ邽߂ɁCJ[l̓V{́CCꃌxŁC擪
"_kernel_"܂"_KERNEL_"ł閼̂ƂĂD

\[XR[h̉ǐƗ邽߂ɁCASPJ[lł́C\[XR[
h͎RȖOpċLqCCvvZbT̃}N`i#definej
pāC"_kernel_"܂"_KERNEL_"Ŏn܂閼OiRȖO
yyyyy̏ꍇɂ́C_kernel_yyyyyjɃl[dg݂pĂD

̓Iɂ́C֘AfBNgxxx_rename.defuC烊l[
̂߂̃wb_t@Cixxx_rename.hxxx_unrename.hj𐶐
c[iutils/genrenamejpӂĂD

̎dǵ݂C\[XR[h̉ǐɖ𗧂ŁCQDႦ
΁C̃fobKŁC\[XR[ĥ̖ƃIuWFNgR[h̖
قȂ邽߂ɁC\[XR[h̕ϐw肵Ēlǂ񂾂C֐
w肵ău[N|CguƂƂłȂD

̏󋵂ɑΉ邽߂ɁCASPJ[lł́C\[XR[h̊Y閼
l[邽߂̃[eBeBiutils/applyrenamejpӂĂD
applyrename[eBeBɁCl[`t@Cixxx_rename.defj̃v
tBbNXixxx̕jƁCl[t@CXg^ƁC
l[sȂDႦ΁CkernelfBNĝׂẴt@Cɑ΂
āCJ[l̓V{l[ɂ́C̃R}hs
悢D

	% cd kernel
	% ../utils/applyrename kernel *

܂C^[Qbgˑ̃fBNĝׂẴt@Cɑ΂āCJ[l
̓V{l[ɂ́Ĉ悤ȃR}hs΂悢D

	% cd target/dve68k_gcc/
	% ../../utils/applyrename target *
	% ../../utils/applyrename ../../kernel/kernel *

11.5 g[XOL^̃TvR[h̎gp@

g[XOL^̃TvR[h^[Qbgˑɑgݍ܂Ă
ɂ́CRtBM[VXNvgɂgp邱Ƃw
IvVi-rjt邱ƂŁCɃg[XOL^@\
LɂȂD

g[XOL^̎gp@̈ƂāCVXeNɃg[XO
L^JnCVXeIɋL^g[XO_v邽߂ɂ́C
VXeRtBM[Vt@CɎ̂悤ȋLqǉD

	#include "logtrace/trace_config.h"
	ATT_INI({ TA_NULL, TRACE_AUTOSTOP, trace_initialize });
	ATT_TER({ TA_NULL, target_fput_log, trace_dump });

ŁC[`itrace_initializejւ̈́C̃g[
XO̓샂[hw肷̂łDwł铮샂[hɂẮC
arch/logtrace/trace_config.h̃RgɐD

I[`itrace_dumpj́CL^ꂽg[XO^[Qbg
̒჌xo͋@\itarget_fput_logj𗘗pă_v邽߂̂̂
Dg[XOʂ̕@Ŏoꍇɂ́CI[`o^
Kv͂ȂD


PQDQl

12.1 pƗp

ASPJ[l̗ṕCet@C̐擪ɕ\ĂD쌠́Ce
t@C̐擪ɕ\Ă钘쌠҂ۗLĂD

p(3)(b)ɂāCp̌`ԂTOPPERSvWFNgɕ񍐂
@ƂẮCASPJ[l𗘗pî̖ƉpCiЖ
ƋƎ퓙̏CȉURL̃y[W񍐂̂ƂD

	http://www.toppers.jp/report.html

܂̍ۂɁCASPJ[lgpẴRg₲ӌƍK
łD

12.2 ۏ؁EKpET|[g

ASPJ[l͖ۏ؂Œ񋟂Ă̂łDJ҂TOPPERSv
WFNǵCASPJ[lɊւāC̎gpړIɑ΂K܂߂āC
Ȃۏ؂sȂD܂CASPJ[l̗pɂ蒼ړI܂͊ԐړI
ɐȂ鑹QɊւĂC̐ӔC𕉂ȂD

J҂TOPPERSvWFNǵCASPJ[lɊւT|[g̖񑩂
ĂȂDASPJ[lɊւĎ₪ꍇ́CqTOPPERS[U[
Y[OXg𗘗pĂƍKłDmȃT|[gK
vȏꍇɂ́CLŃT|[gT[rX񋟂ĂЂɑkꂽD

12.3 oO|[g

ASPJ[lɃoO_𔭌ꂽꍇɂ́CqTOPPERS[U[Y
[OXgɕ񍐂ė~D

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

	gpĂJ[lɊւ
		E^[Qbgˑ̃o[W
		EgpĂ^[QbgˑƂ̃o[W
		ETOPPERSvWFNg̃[Xɑ΂ӏi΁j

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

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

12.4 EFuTCg

TOPPERSvWFNg̃EFuTCǵCȉURLɂD

	http://www.toppers.jp/

TOPPERSvWFNgASPJ[lɊւŐV́C̃EFuTCg
瓾邱ƂłD܂CASPJ[l̍ŐVł́C̃EFuTCg_
E[h邱ƂłD

12.5 TOPPERS[U[Y[OXg

ASPJ[l܂TOPPERSvWFNg̊Jʕ̃[Uɑ΂
у[U݊Ԃ̏eՂɂ邽߂ɁCTOPPERS[U[Y[
OXgiusers@toppers.jpjpӂĂD

̃[OXgɂ́CNłRɓo^C[𑗕t邱Ƃ
io^҈ȊO̓[𑗕tłȂjD܂Ctꂽ[́CN
łRɃEFuTCgœǂނƂłD

[OXgւ̓o^@ɂẮCȉURL̃y[WɐD

	http://www.toppers.jp/community.html

12.6 TOPPERSvWFNg̃õT[rX

TOPPERSvWFNg̃oɑ΂ẮCLɉāCASPJ[lɊ֘A
Ď̃T[rXpӂĂD

(1) TOPPERSJ҃[OXg

TOPPERSvWFNg̃óCASPJ[lɊւ鎿CoO_
ǂ̕񍐂ɁCTOPPERSJ҃[OXgidev@toppers.jpj𗘗p邱
ƂłD

(2) ASPJ[l̊JxTCg

ASPJ[l̊Jx̂߂TRACioOgbLOVXejCȉ
URLɂiTRACւ̃ANZXɂ́CpX[hKvłjD

	http://dev.toppers.jp/proj/asp/

TOPPERSvWFNg̃óC̃TCgCEFuC^tF[X
subversionT[oɂCASPJ[l̊J̃o[W𓾂邱Ƃ
D܂CoOgbLOf[^x[XɃANZX邱ƂłCߋ
̃oOւ̃ANZXCoO̓o^邱ƂłD

12.7 TOPPERSvWFNgւ̎Q

TOPPERSvWFNgł́Č`ŃvWFNgɍvĂC
vWFNgŊJ\tgEFAg̕CvWFNgɋ
̎̕Q߂ĂDTOPPERSvWFNgւ̎Q@ɂẮC
ȉ̃y[WɐD

	http://www.toppers.jp/joinus.html


PRDt@X

13.1 T[rXR[ꗗ

(1) ^XNǗ@\

	ER ercd = act_tsk(ID tskid)
	ER ercd = iact_tsk(ID tskid)
	ER_UINT	actcnt = can_act(ID tskid)
	ER ercd = 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)
	ER ercd = get_inf(intptr_t *p_exinf)
	ER ercd = ref_tsk(ID tskid, T_RTSK *pk_rtsk)

(2) ^XNt@\

	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 = 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(void)
	ER ercd = ena_tex(void)
	bool_t state = sns_tex(void)
	ER ercd = ref_tex(ID tskid, T_RTEX *pk_rtex)

(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 = ini_sem(ID semid)
	ER ercd = ref_sem(ID semid, T_RSEM *pk_rsem)

	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 = ini_flg(ID flgid)
	ER ercd = ref_flg(ID flgid, T_RFLG *pk_rflg)

	ER ercd = snd_dtq(ID dtqid, intptr_t data)
	ER ercd = psnd_dtq(ID dtqid, intptr_t data)
	ER ercd = ipsnd_dtq(ID dtqid, intptr_t data)
	ER ercd = tsnd_dtq(ID dtqid, intptr_t data, TMO tmout)
	ER ercd = fsnd_dtq(ID dtqid, intptr_t data)
	ER ercd = ifsnd_dtq(ID dtqid, intptr_t data)
	ER ercd = rcv_dtq(ID dtqid, intptr_t *p_data)
	ER ercd = prcv_dtq(ID dtqid, intptr_t *p_data)
	ER ercd = trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout)
	ER ercd = ini_dtq(ID dtqid)
	ER ercd = ref_dtq(ID dtqid, T_RDTQ *pk_rdtq)

	ER ercd = snd_pdq(ID pdqid, intptr_t data, PRI datapri)
	ER ercd = psnd_pdq(ID pdqid, intptr_t data, PRI datapri)
	ER ercd = ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri)
	ER ercd = tsnd_pdq(ID pdqid, intptr_t data, PRI datapri, TMO tmout)
	ER ercd = rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri)
	ER ercd = prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri)
	ER ercd = trcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri, TMO tmout)
	ER ercd = ini_pdq(ID pdqid)
	ER ercd = ref_pdq(ID pdqid, T_RPDQ *pk_rpdq)

	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)
	ER ercd = ini_mbx(ID mbxid)
	ER ercd = ref_mbx(ID mbxid, T_RMBX *pk_rmbx)

(5) v[Ǘ@\

	ER ercd = get_mpf(ID mpfid, void **p_blk)
	ER ercd = pget_mpf(ID mpfid, void **p_blk)
	ER ercd = tget_mpf(ID mpfid, void **p_blk, TMO tmout)
	ER ercd = rel_mpf(ID mpfid, void *blk)
	ER ercd = ini_mpf(ID mpfid)
	ER ercd = ref_mpf(ID mpfid, T_RMPF *pk_rmpf)

(6) ԊǗ@\

	ER ercd = get_tim(SYSTIM *p_systim)
	ER ercd = get_utm(SYSUTM *p_sysutm)

	ER ercd = sta_cyc(ID cycid)
	ER ercd = stp_cyc(ID cycid)
	ER ercd = ref_cyc(ID cycid, T_RCYC *pk_rcyc)

	ER ercd = sta_alm(ID almid, RELTIM almtim)
	ER ercd = ista_alm(ID almid, RELTIM almtim)
	ER ercd = stp_alm(ID almid)
	ER ercd = istp_alm(ID almid)
	ER ercd = ref_alm(ID almid, T_RALM *pk_ralm)

(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(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_t state = sns_ctx(void)
	bool_t state = sns_loc(void)
	bool_t state = sns_dsp(void)
	bool_t state = sns_dpn(void)
	bool_t state = sns_ker(void)
	ER ercd = ext_ker(void)

(8) ݊Ǘ@\

	ER ercd = dis_int(INTNO intno)
	ER ercd = ena_int(INTNO intno)
	ER ercd = chg_ipm(PRI intpri)
	ER ercd = get_ipm(PRI *p_intpri)

(9) CPUOǗ@\

	bool_t stat = xsns_dpn(void *p_excinf)
	bool_t stat = xsns_xpn(void *p_excinf)

13.2 ÓIAPIꗗ

(1) ^XNǗ@\

	CRE_TSK(ID tskid, { ATR tskatr, intptr_t exinf, TASK task,
								PRI itskpri, SIZE stksz, STK_T *stk })

(3) ^XNO@\

	DEF_TEX(ID tskid, { ATR texatr, TEXRTN texrtn })

(4) EʐM@\

	CRE_SEM(ID semid, { ATR sematr, uint_t isemcnt, uint_t maxsem })
	CRE_FLG(ID flgid, { ATR flgatr, FLGPTN iflgptn })
	CRE_DTQ(ID dtqid, { ATR dtqatr, uint_t dtqcnt, void *dtqmb })
	CRE_PDQ(ID pdqid, { ATR pdqatr, uint_t pdqcnt, PRI maxdpri, void *pdqmb })
	CRE_MBX(ID mbxid, { ATR mbxatr, PRI maxmpri, void *mprihd })

(5) v[Ǘ@\

	CRE_MPF(ID mpfid, { ATR mpfatr, uint_t blkcnt, uint_t blksz,
										MPF_T *mpf, void *mpfmb })

(6) ԊǗ@\

	CRE_CYC(ID cycid, { ATR cycatr, intptr_t exinf, CYCHDR cychdr,
								RELTIM cyctim, RELTIM cycphs })
	CRE_ALM(ID almid, { ATR almatr, intptr_t exinf, ALMHDR almhdr })

(8) ݊Ǘ@\

	ATT_ISR({ ATR isratr, intptr_t exinf, INTNO intno, ISR isr, PRI isrpri })
	DEF_INH(INHNO inhno, { ATR inhatr, INTHDR inthdr })
	CFG_INT(INTNO intno, { ATR intatr, PRI intpri })

(9) CPUOǗ@\

	DEF_EXC(EXCNO excno, { ATR excatr, EXCHDR exchdr })

(10) VXe\Ǘ@\

	DEF_ICS({ SIZE istksz, STK_T *istk })
	ATT_INI({ ATR iniatr, intptr_t exinf, INIRTN inirtn })
	ATT_TER({ ATR teratr, intptr_t exinf, TERRTN terrtn })

13.3 o[W

	2006N1029	Release	1.A.0		ŏ̃[X
	2007N220	Release	1.A.1
	2007N220	Release	1.A.2
	2007N712	Release	1.B.0		RtBM[^Vo[W
	2007N712	Release	1.B.1		CZX̓ꊷ
	2007N716	Release	1.B.2
	2007N721	Release	1.B.3		fBNg\̕ύX
	2007N820	Release	1.B.4		gpbP[W̒ǉ
	2007N1016	Release 1.B.5
	2007N1115	Release 1.0.0		ł̃[X
	2007N1223	Release 1.1.0
	2008N319	Release 1.2.0
	2008N321	Release 1.2.1
	2008N412	Release 1.3.0		ʌJɌĂ̍ŏIC
	2008N513	Release 1.3.1		ŏ̈ʌJ
	2008N821	Release 1.3.2
	2009N511	Release 1.4.0

ȏ
