
              TOPPERS/JSPJ[l [UY}jA 
                    (Linux V~[V)

             iRelease 1.4ΉCŏIXV: 1-Dec-2003j

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

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

 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: linux.txt,v 1.1 2008/06/17 00:04:40 suikan Exp $
------------------------------------------------------------------------


1DLinux ł̓̊Tv

TOPPERS/JSP ̃V~[VƂāALinux œ삷ݒp
ĂB̃V~[V́ALinux  1̃vZX̒ŕ
̃^XN؂ւē삳B


1.1. T|[gĂȂ@\

Linux ̃V~[Vł́ATOPPERS/JSP Ă@\̓A
ȉ̋@\̓T|[gĂȂB

ECPUOnh
Edef_int VXeR[
E\]pVXeQƋ@\

CPUOnhɂẮCCPUOnĥ̓o^͉\ł邪C
CPUOnhŁCCPUORgLXgԂQƂł
vxsns_XXX CPUOnhɃbp[Ԃ邱ƂŎłƎv
邪݂̂Ƃ̓T|[gĂȂD


1.2. 

TOPPERS/JSP Linux ̃V~[V́AVOiX^bN̋@\g
p邽߁Ão[W Linux J[lglibcKvƂȂD

           EJ[l :  2.2 ȏ
           Eglibc    :  2.1 ȏ          

̃fBXgr[Vł̓mFĂD
            
            EVine Linux 2.5,2.6
            EDebian GNU/Linux 3.0



1.3. 

Linux ̃V~[Vł́AVOi݂ɑΉDVOi
nh͊݃nhƂĈAVOi}XN݃}XN
ΉB[UVOinh`邱Ƃ\ł邪A
[ɏ]ƂKvłB

Linux ̃VOi̓ASIGUSR1 NA^XNfBXpb`̂
ɗpĂ邽߁A[Up邱Ƃ͂łȂB܂ASIGALRM ̓J[
l̃^C}݂ƂėpĂDݒɂẮCSIGIO ̃nh
J[lŒ`iSIGIO ̈ɂĂ͂R͂QƁjB



1.4. ԊǗ

݂̊Ԋu 10~bWƂĂ邪A^[Qbgˑ̃^C}
W[݂̂̏CŕύXłBV~[VŜ 1̃v
ZXƂĎs邽߁CV~[VŜɊ蓖Ă CPU
Ԃ UNIX ̃XPW[ɂČ߂B̂߁AԐx
҂邱Ƃ͂łȂB




QDVXeR[dl̈Ⴂ

ȉł́CBSD UNIXł̃V~[Vł́CeVXeR[̎d
l̈ႢɂďqׂD

(1) loc_cpu             ݂ƃfBXpb`̋֎~

Eloc_cpu ́CׂẴVOi}XNԂɐݒ肷D

(2) unl_cpu             ݂ƃfBXpb`̋

Eunl_cpu ́CׂẴVOi}XNԂɐݒ肷D

(3) chg_iXX             ݃}XNύX

Ê chg_ims ƂĂBchg_ims T|[g邩ǂA
SUPPRT_CHG_IMS `邩ǂŕύXłBchg_ims ́AVOi}
XNw肵lɐݒ肷B^XNReLXgł́AfBXpb`
яo SIGUSR1 VOĩ}XNݒ肷邱Ƃ͂łȂB(ݒ肵悤
 E_PAR G[ɂȂ)B܂A^XNReLXgł SIGUSR1 
邱Ƃ͂łȂB(悤Ƃ E_PAR G[ɂȂ)B^X
NReLXgchg_ims ɂݒ肵l̓fBXpb`Ă
^XNɈpB^XNReLXgŐݒ肵ꍇ́A̔^X
NReLXg̒ł̂ݗLłB

(4) get_iXX             ݃}XNQ

Ê get_ims ƂĂBref_ims ́AVOi}XŇݒlǂ
oVXeR[łB


(5) vget_tim            \]pVXeQ

ET|[gĂȂD



3DmubLOI/O

3.1. mubLOI/O ̕Kv

TOPPERS/JSP ̃V~[VŜ 1̃vZXƂē삵Ă
邽߁ATOPPERS/JSP ̃^XN UNIX J[lŃubNVXe
R[ĂяoꍇAV~[VŜubNÃ^
XNs邱ƂłȂȂiɂ́CubNɃVOi
ꍇɂ́CubNĎspłjB̂߁CUNIX 
J[lł̃ubNNȂ悤ɁAᑬ I/OANZX́Amu
bLO[hōsKvB

Linux ̃mubLOI/O[hł́Aʏł΃J[lŃub
N悤 read/writeVXeR[Ƀ^[Ă 
i̎C̃VXeR[ EWOULDBLOCK G[񍐂jD
ɔ񓯊I/O[h𕹗pƁÃVXeR[ĂяoĂ
ubNȂ󋵂ɂȂɁAUNIXJ[l SIGIO VOig
Ă̂ƂvZXɒm点B


3.2. TOPPERS/JSP ɂT|[g

Linux ̃mubLOI/O  TOPPERS/JSP ̃^XN痘p邽߂
́ASIGIO ߂܂VOinh`A߂܂VOi炩
̌`Ń^XNɒʒmKvB̂߂̎iƂāATOPPERS/JSP 
́ASIGIO VOi̔ɂĂяoR[obN֐o^@
\pӂĂB

̓Iɂ́ASIGIO VOiɂR[obN֐sꍇɂ́A
SIGIO ʒmCxgubNiSIGIOEBjpӂA callback tB[
hɃR[obN֐ւ̃|C^Aarg tB[hɃR[obN֐֓n
ݒ肵Aeneuque_sigioeb p SIGIO ʒmCxgL[ɓo
^BSIGIO VOiƁAo^R[obN֐ׂČ
яoBR[obN֐ 0 ԂƁA֘A SIGIO ʒmCxg
ubN̓L[ɓo^ꂽ܂܂ƂȂA SIGIO VOiōĂѓ
R[obN֐ĂяoBR[obN֐ 0 ȊOԂƁA
SIGIO ʒmCxgubN̓L[폜AR[obN֐͂
ȍ~ĂяoȂȂiinclude/linux_sigio.h,systask/linux_sigio.cjB
ȂASIGIO ʒmCxgL[ɓo^ eneuque_sigioeb ̓Z}tH
gp邽߂ɁA^XNReLXgĂׂȂ߁AVXeN
[`́Aenqueue_sigioeb_initialize pB

mubLOI/O T|[gW[́AR[obN֐Ăяo
߂ɁAŃ^XN 1itskid = TSK_LINUX_SIGIOjƁASIGIO ʒmCx
gL[ɑ΂rANZX̂߂ɃZ}tH 1isemid =
SEM_LINUX_SIGIOjpĂBmubLOI/O T|[gW[
p邽߂ɂ́AVXe\ݒt@CŁAŗp^XN
Z}tHg悤ɐݒ肵Ȃ΂ȂȂB


3.5. ^VAhCo

Linux ̃V~[VAlCeBuƂȂׂ߂̂Ƃ
邽߂ɁAlCeBu̃VAC^tF[XhCoƓ̋@\
^VAhCopӂĂisystask/linux_serial.cjB^
VAhCóAŏqׂmubLOI/O ̋@\pāAV
A|[gɑ΂o͂AWo͂ɑ΂čŝłB


SDCXg[Ȇ

4.1. CXg[

Linux ̃V~[VCXg[ɂ́ATOPPERS/JSP ̕W
[XɊ܂܂ȊOɁAȉ̃c[KvłB

    GNU CRpC
    BINUTILS AZuCJȂ
    perl 5imF 5.005_03j
    GNU MakeimF 3.78.1j


4.2. ^VAhCogp̒

^VAhCóAW͂mubLO RAW[hɐݒ肷
BW͂mubLO RAW[hɐݒ肵܂܂̏ԂŃvO
IƁAVF삵ȂȂB̂߁CTOPPERS/JSP 
IOɕKW͂̏Ԃɖ߂Kv邪AvZXI
VOi͐ÂׂĂɂ͑ΏĂȂB܂A[U
vOŕ߂܂邱Ƃ̂łȂVOiASɑΏ邱Ƃ
s\łB


4.3. fobKgp̃qg

Linux̃V~[V́AUNIX̃V{bNfobKƑgݍ
킹ĎgƂŁATOPPERS/JSP pVXẽfobOɗ͂𔭊
킯AfobKƑgݍ킹ĎgŁATOPPERS/JSP ^XN؂ւ
 SIGUSR1VOigĂ邽߂ɁA^XN؂ւ̓xɃfobKɐ
䂪߂Ă܂Ƃ肪BGNU V{bNfobKiGDBj̏
ɂ́ÃR}hɂfobK SIGUSR1 ߂܂Ȃ悤ɐݒ肷
邱ƂłB

    (gdb) handle SIGUSR1 nostop noprint

̃R}hA.gdbinit ɐݒ肵Ăƕ֗łB

܂Atu[N|CgT|[gĂfobK̏ꍇ́A
^XÑAhXsꍇɌĎs~邱Ƃł
i~̂́AVXeŜŁÃ^XNł͂ȂjBႦ΁A
GDB ̏ꍇɂ́ÃR}hɂAID  TSKID ̃^XN֐ FUNC 
Ăяoꍇɂ̂ݎs~邱Ƃłiɂ́A̎w
@ł́AID  TSKID ̃^XNsɋNꂽ݃nh FUNC 
Ăяoꍇɂ~jB

    (gdb) break FUNC if _kernel_runtsk == &_kernel_tcb_table[TSKID-1]






