
		TOPPERS/SSPJ[l
		[U[Y}jA

		Ήo[W: Release 1.1.0
		ŏIXV: 2011N329

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

----------------------------------------------------------------------
     TOPPERS/SSP Kernel
         Smallest Set Profile Kernel
 
     Copyright (C) 2011 by Meika Sugimoto
 
 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
 
----------------------------------------------------------------------

ڎ

PDTOPPERS/SSPJ[l̊Tv
	1.1 TOPPERS/SSPJ[l̈ʒut
	1.2 TOPPERS/SSPJ[l̎dl
	1.3 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 VAC^tF[XhCo
		8.1.1 VAC^tF[XhCõT[rXR[
		8.1.2 VAC^tF[XhCô̑̃T[rX
	8.2 J[lNbZ[W̏o
XDT|[gCu
	9.1 L[색Cu֐
PODgp̒ӂƃqg
	10.1 ^C}hCȏg
	10.2 assert}N̏
	10.3 IuWFNgID̊Ǘ
	10.4 J[l̓V{̃l[
	10.5 VXe̋N̏
PPDQl
	11.1 pƗp
	11.2 ۏ؁EKpET|[g
	11.3 oO|[g
	11.4 EFuTCg
	11.5 TOPPERS[U[Y[OXg
	11.6 TOPPERSvWFNg̃õT[rX
	11.7 TOPPERSvWFNgւ̎Q
PQD
	12.1 T[rXR[ꗗ
	12.2 ÓIAPIꗗ
	12.3 o[W


PDTOPPERS/SSPJ[l̊Tv

1.1.  TOPPERS/SSPJ[l̈ʒut

TOPPERS/SSPJ[ĺCTOPPERS/SSPJ[l̎dlɑ΂āC
K̓AvP[VɎdlîłDŏZbg
"ŏ"Ƃ́CJ[lgpROM/RAMgpʂ邽߂
dlœK邱ƂӖD

񋟂@\̓ITRON4.0dl̍Œ@\x[XƂāCꕔ
Ԑpvt@C̋@\荞ށD

̂߁CSSPJ[lSSPJ[l̉ʌ݊łʌ݊łȂD
C^XNgpbP[WKpꍇCSSPJ[l
SSPJ[l̏ʌ݊ƂȂD

1.2. TOPPERS/SSPJ[l̎dl

SSPJ[l̎dl̊TvɂẮCuTOPPERSVJ[ldlv
QƂ邱ƁD

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

_ł́CAhX64rbg̊ɂ͑ΉĂȂD64rbgAh
XT|[g邽߂̍ő̉ۑ́Cg[SR[htH[}bg
64rbgAhXɑΉĂȂƂłD

QD^[Qbgˑ

2.1. ^[Qbgˑ̊Tv

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

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

 ^[Qbgˑ |[eBOKCh݂͖͌ł

2.2. ȈՃpbP[W

ȈՃpbP[ẂCSSPJ[lΉĂ^[QbgVXeɗpӂ
C̃^[QbgVXeSSPJ[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́CSSPJ[l̊JPʖɁC̊JPʂŊJS
Ăt@CꎮpbP[ŴłDSSPJ[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ԍCSSPJ[lŜ̃[XԍƂD^[Qbg
ˑ̃o[Wԍ́CXYCꂪˑ^[Qbgˑƈ
vĂDɑ΂āCZ͈vĂƂ͌ȂDႦ΁C^[Qb
gˑ̃o[W1.0.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 ssp-1.0.0.tar.gz
	% tar xvfz ssp_arch_arm_gcc_1.0.2.tar.gz

^[Qbgˑ̌ʃpbP[Wɂ́Cȉ̃^[Qbgˑ܂܂
ĂDD

	target/cq_starm_gcc	fUCEF[utCortex-M3
						iGNUJjp^[Qbgˑ
	arch/arm_m_gcc		Cortex-M3iGNUJjpvZbTˑ


RDNCbNX^[gKCh

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

3.1. J̏

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

	zXgVXep̃c[
		perl		mFF5.10.1
		GNU Make	mFF3.81

	TOPPERSVJ[lpRtBM[^
		cfg			mFF1.6.0
					 1.5ȑÕo[Wł͓삵ȂD

	^[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ł
̂ƂiSSPJ[l̃TvMakefiléCGNU Make̊g@\p
jD

3.2. RtBM[^̍\z

 {߂̓eSSPJ[lł͖؂łDSSPJ[l̊JɂĂ
   TOPPERSvWFNg̃TCgŌJĂWindowsp̃oCi
   gpĂD

J[l\zOɁC܂CTOPPERSVJ[lpRtBM[^
\zKvDȈՃpbP[WɊ܂܂ĂꍇȂǁCRtBM
[^st@C`œ肵ꍇɂ́C̃Xebv͕KvȂD

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

	zXgVXep̃c[iZtJj
		C++RpCCC++Cu
					mFiMac OS XjFGNU C++ 4.2.1
		Boost		mFF1.42.0
		Visual Studio

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

	% cd SSP
	% tar xvfz cfg-1.6.0.tar.gz

܂́CRtBM[^̃pbP[W𑼂̃fBNgɓWJCSSPJ[
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

ɁCSSPJ[lœ삷TvvO\z@D

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

	% cd ssp
	% 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[iSSP܂
SSP.exejłDˑ֌Wt@C̐ɂ͎኱ԂD

	% make depend
	% make

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

3.4. J[l֐PʂŃCu@

 {߂̓eSSPJ[lł͖؂łD

O߂̎菇ł́CJ[lt@CPʂŃRpCCCu
CJ[l̃R[hTCYk邽߂ɂ́CgpȂT[rXR[
̓NȂ]܂DSSPJ[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@

 {߂̓eSSPJ[lł͖؂łD

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\zfBNgCSSPJ[
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
gCSSPJ[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[iSSP܂
SSP.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

ȂCmake realcleanƁCmake dependmakeɂ萶t@C
ׂč폜Dɑ΂āCmake cleanł́Cmake dependɂ萶
֌Wt@C͍폜Ȃ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ˑ
	pdic/			PDICifoCXhCoOSˑj
	utils/			[eBeBvO
	sample/			TvvOMakefile
	doc/			hLg
	test/			eXgvO
	extension/		gpbP[W

4.2. ^[Qbgˑ̃t@C\

^[QbgˑieXgvOƊgpbP[W͏j̊et@C
̊Tv͎̒ʂD

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

	include/
		kernel.h		SSPJ[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邽߂̒`

	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샋[`
		task_manage.c	^XNǗ@\
		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
		serial.h		VAC^tF[XhCogp邽߂̒`
		serial.c		VAC^tF[XhCo
		serial.cfg		VAhCõRtBM[Vt@C

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

	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

	extension/
		time_event.h	^CCxgǗ֘A̒`
		time_event.c	^CCxgǗ
		time_manage.c	VXeǗ@\
		cyclic.h		nh@\֘A̒`
		cyclic.c		nh@\
		alarm.h			A[nh@\֘A̒`
		alarm.c			A[nh@\


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


TDRtBM[VXNvg̎g

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

SSPJ[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 <SSPJ[l̃\[XfBNg>
		SSPJ[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ȗꍇɂ́CSSPJ[l̃\[Xt@C
		ufBNg̉samplefBNgƂȂD

	-m <ev[gMakefile>
		Makefilẽev[gƂt@Cw肷Dȗꍇ
		ɂ́CMakefileƂȂ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̃pXiSSPJ[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ɒ`DftHgSSP
ł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

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


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

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

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


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

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


8.1.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.2. 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. L[색Cu֐

L[색CúCL[wb_܂ރO\̃_uNL[
CułDL[wb_̎Gg̓L[̐擪̃Gg
COGg̓L[̖̃GgƂD܂CL[̐擪̃G
g̑OGgƁCL[̖̃Gg̎GǵCL[wb_
ƂD̃L[́CGgCOGgƂgwL[wb
_ł킷D

L[색Cu֐pꍇɂ́Cqueue.hCN[hD

L[wb_ƃGĝ߂̃f[^\ƂāCQUEUE\̂pD
QUEUE\̂̒`͎̒ʂDQUEUE^̕ϐ͔zƂĒ`邱ƂO
ĂD

	typedef struct
	{
		QUEIDX	next;
		QUEIDX	prev;
	} QUEUE;

QUEIDXQUEUE^̔z̃CfbNXl\f[^^łD

typedef uint8_t QUEIDX;


L[̂߂ɗpӂĂ֐͎̒ʂD

(1) queue_initialize(QUEUE *queue , QUEIDX queue_null)

L[Dqueueɂ̓L[wb_Cqueue_nullɂ
ȃL[wb_CfbNXlw肷D

(2) queue_insert_prev(QUEUE *top , QUEIDX queue , QUEIDX entry)

queueŎw肷Gg̑OɁCentryŎw肷Gg}D
topqueueCentry܂QUEUE^z̐擪AhXłD
queueɃL[wb_w肵ꍇɂ́CL[̖p_entryŎw肷
Gg}邱ƂɂȂD

(3) queue_delete_next(QUEUE *top , QUEIDX queue)

queueŎw肷Gg̎̃Gg폜C폜Gg
L[z񒆂̃CfbNXԂD
topqueueCentry܂QUEUE^z̐擪AhXłD

(6) queue_empty(QUEUE *queue , QUEIDX queue_null)

L[̏ꍇɂtrueCłȂꍇɂfalseԂDqueueɂ
L[wb_Cqueue_nullɂ͖ȃL[wb_CfbNXl
w肷D


PODgp̒ӂƃqg

10.1. ^C}hCȏg

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

10.2. assert}N̏

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


10.3. IuWFNgID̊Ǘ

TOPPERS/SSPJ[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/SSPJ[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/SSPJ[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/SSPJ[l
́CIDԍɔ̂͋Ȃ߁CIuWFNg̐ꍇ
ɂ́iIDԍ傫̃IuWFNgꍇājG[ƂȂD
̏ꍇɂ́C_~[̃IuWFNg𐶐@ŉ邵ȂD

10.4. J[l̓V{̃l[

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

\[XR[h̉ǐƗ邽߂ɁCSSPJ[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

̏󋵂ɑΉ邽߂ɁCSSPJ[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/cq_starm_gcc/
	% ../../utils/applyrename target *
	% ../../utils/applyrename ../../kernel/kernel *

10.5. VXe̋N̏

VXe̋NɃAvP[VŕKvƂȂ鏉s߂̋@
\Ƃď[`pӂĂ邪C[`s
^C~OŎs邱ƂKvȏꍇD

̂悤ȏꍇɗp邽߂ɁCWIȃX^[gAbvW[C^[
QbgVXeˑ̏tbNihardware_init_hookjĂяoƂ
ĂDhardware_init_hooḱCJ[l̃^[Qbgˑŗpӂ
̂Wł邪CAvP[Vŗpӂ̂ɒuC
̒ŃAvP[VŕKvƂȂ鏉sƂłD

Chardware_init_hook̍쐬ꍇɂ́CbssZNVdataZNV
ĂȂƂCCuĂȂƁCC
ŋLqłƂ͌ȂƂȂǂɒӂKvłD쐬ɂẮC
u^[Qbgˑ |[eBOKChvQƂ邱ƁD

J[l̃X^[gAbvW[hardware_init_hookĂяo悤
ĂȂꍇɂ́CX^[gAbvW[AvP[V
pӂ̂ɒu@𐄏D

 ^[Qbgˑ |[eBOKCh͖łD

PPDQl

11.1. pƗp

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

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

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

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

11.2. ۏ؁EKpET|[g

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

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

11.3. oO|[g

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

11.4. EFuTCg

TOPPERSvWFNg̃EFuTCǵCȉURLɂD

	http://www.toppers.jp/

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

11.5. TOPPERS[U[Y[OXg

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

11.6. TOPPERSvWFNg̃õT[rX

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

(1) TOPPERSJ҃[OXg

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

(2) SSPJ[l̊JxTCg

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

	http://dev.toppers.jp/trac/ssp_core

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

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


PQDt@X

12.1. T[rXR[ꗗ

(1) ^XNǗ@\

	ER ercd = act_tsk(ID tskid)
	ER ercd = iact_tsk(ID tskid)

(2) VXeԊǗ@\

	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)

(3) ݊Ǘ@\

	ER ercd = dis_int(INTNO intno)
	ER ercd = ena_int(INTNO intno)


12.2. ÓIAPIꗗ

(1) ^XNǗ@\

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

(2) ݊Ǘ@\

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

(3) CPUOǗ@\

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

(4) 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 })

12.3. o[W

	2011N 331	Release	1.0.0		ŏ̃[X
	2011N1116	Release	1.1.0		ʃ[X

ȏ
