
         TOPPERS/JSPJ[l [UY}jA 
      imonitorAnetDevice̐AnewlibWo͂̑Ήj

        iRelease 1.4.1 ΉCŏIXV: 08-01-2006j

------------------------------------------------------------------------
 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
 Copyright (C) 2003-2004 by Takagi Nobuhisa
 Copyright (C) 2003-2005 by Ryosuke Takeuchi
                     GJ Business Division RICOH COMPANY,LTD. 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
------------------------------------------------------------------------
/*
 * Copyright (c) 1990 The Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the above copyright notice and this paragraph are
 * duplicated in all such forms and that any documentation,
 * advertising materials, and other materials related to such
 * distribution and use acknowledge that the software was developed
 * by the University of California, Berkeley.  The name of the
 * University may not be used to endorse or promote products derived
 * from this software without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

PDmonitorɂ

P|PD
{j^́ATOPPERSvWFNgvf̎pɍ쐬ꂽvO
łBTOPPERS/JSP1.4.1Ń^XNƂĎs܂BsmF͈ȉ̂S
ŎsmFsĂ܂B
Pjm16c(OAKS16-miniOAKS16)   lTXeNmWTM
Qjh8(AKIH8-3048,AKIH8-3069F)  PizzaFactory2+GNU(h8300-hms)
                                cygwin+GNU(h8300-hms)
Rjsh2(hsb7616it)              cygwin+GNU(sh-hitachi-elf)

P|QDR\[̎w
^XNj^̃R\[͒ʏ̓VAfoCXΏۂƂĂ܂B
MONTSK(^XNj^̃^XN)̋N̈œnexinf̒lj^
ʐMo̓foCXƂĂ܂BAAnetDevicẽT[oƂċNꍇ
R\[WindowsnetTermƂȂ܂B

P|RDRpCXCb`
^XNj^̃rhŎs@\w肷RpCXCb`ɂĐ܂B

PjMONITOR_PORTID
j^̃ftHg|[g̓VAR\[iCONSOLE_PORTIDjłA
j^̋NR\[ύXꍇARpCXCb`
-DMONITOR_PORTID=nw肷ƕύX\łB̂ƂAw|[g̃I[v
j^̋Nɍs܂B(Ver1.1.0NEED_OPEÑXCb`͍폜܂)

QjSUPPORT_PIPE
̃XCb``ƁAOt̃R}hg܂B
OtR}h͑1R}h"PIPE"ŋN܂B
OtR}h̘A֐pipe_command(B *command);Őݒ肵ĂB

RjSUPPORT_ETHER
TINET̃R}hT[rXynetDevicẽR}hgs܂B
̃R}h͑1R}h"NET"ŋN܂B

SjNETSERV
netDevicẽT[o[hŋNꍇ̃RpCXCb`łB
éunetDeviceɂāvQƂB

TjSTART_TASKID
netDEvice̐ڑAs^XNԍw肵܂B
-DSTART_TASKID=1
̂悤Ɏw肷ƁAnetDevice̐ڑAނ̃vOIɎs܂B

UjNEED_MONITOR
̃RpCXCb`w肷ƁAj^̋Nneed_monitor()֐Ă
o܂B̊֐̖߂lFALSȄꍇAj^^XNI܂B

VjMONITOR_DELAY
̃RpCXCb`w肳ꂽꍇAj^̋NAR\[̏o͂
MONITOR_DELAY(ms)҂sōs܂B

P|SDTOPPERS/JSP̎gɂ
^XNj^̈ȉ̋@\邽߂TOPPERS/JSP̎ˑconfig
̉KvłB

Pj_kernel_break_wait̒`̒ǉ(K{)
JSPJ[l̃T[rXR[ł̑҂Ԃ̔̂߂ɁA_kernel_break_wait
xT[rXR[̑҂vOʒuɒ`Kv܂B
T[rXR[̑҂vOʒu͒ʏebotcpu_support.S̉ꂩ
ʒuɂ܂B

Qjiana_tsk̃N|Cg̐ݒiK{ł͂Ȃj
^XNj^ł͊e^XN̎sdispatch̃^XN؂ւiana_tsk
֐ĂяoƂŏWsĂ܂B̂iana_tsǩĂяo
AXCb`OԂ傫ቺ܂BA"log task"R}hɂ
^XN̓A^CVXě؂ɂ͗LpȎiłB
ʏ̓RpCXCb`MONɂAO\ƂAKv̂Ȃꍇ
OāAgpĂB
dispatch֐͒ʏebotcpu_support.Sɂ܂B

P|TD^XNj^̃}jA
PjdisplayR}h
display byte [<start address> [<end address>]]
        <start address><end address>܂ł̃܂̓|[g̈
        PoCgPʂɕ\B<end address>ȗꍇ128oCg
        \sB<start adress>ȗꍇ́AO\s
        AhX\sB

display half [<start address> [<end address>]]
        <start address><end address>܂ł̃܂̓|[g̈
        QoCgPʂɕ\B<end address>ȗꍇ128oCg
        \sB<start adress>ȗꍇ́AO\s
        AhX\sB

display word [<start address> [<end address>]]
        <start address><end address>܂ł̃܂̓|[g̈
        SoCgPʂɕ\B<end address>ȗꍇ128oCg
        \sB<start adress>ȗꍇ́AO\s
        AhX\sB

display task
        o^ꂽ^XN̓e\B\e͈ȉ̒ʂB
        cur     	Jg^XN*Aj^^XNmon\B
        id          ^XNID\B
        pri         l̃^XNDx
        state       ^XN̏
        pc          RUNԈȊOȂÃ݂vOJE^l
        stack       ݂̃X^bNAhX
        inistack    lX^bN̐擪AhX
        inisize     lX^bÑoCgTCY

diaplay register
        Jg^XN҂ԂƂȂꍇA҂Ԃ̃WX^̓e
        \BT[rXR[̑҂ł̓WX^̕ۑsȂׁA
        WX^̕\͍sȂBWX^̓eCPUɂĈقȂB

QjsetR}h
set byte [<start address>]
        <start address>̓ePoCg\͑҂ƂȂBPUi͌
        <RETURN>ɂăoCgl͂<start address>ɒl݌A
        <start address>̓eĕ\<start address>+1̓e̓͑҂ƂȂ
        .<RETURN>ɂsetR}hIvvg\ɖ߂B<start address>
        ȗꍇAŌɏ񂾎̃AhX݂̏sB

set half [<start address>]
        <start address>̓eQoCg\͑҂ƂȂBPUi͌
        <RETURN>ɂăoCgl͂<start address>ɒl݌A
        <start address>̓eĕ\<start address>+2̓e̓͑҂ƂȂ
        .<RETURN>ɂsetR}hIvvg\ɖ߂B<start address>
        ȗꍇAŌɏ񂾎̃AhX݂̏sB

set ward [<start address>]
        <start address>̓eQoCg\͑҂ƂȂBPUi͌
        <RETURN>ɂăoCgl͂<start address>ɒl݌A
        <start address>̓eĕ\<start address>+2̓e̓͑҂ƂȂ
        .<RETURN>ɂsetR}hIvvg\ɖ߂B<start address>
        ȗꍇAŌɏ񂾎̃AhX݂̏sB

set command [<mode>]
        R}h[hݒ肷B[h͂P(1R}h)AQ(2R}h)[h
        ftHg͂QR}h[h(FdisplaybytêQ̃R}h
        R}hݒs)łBPR}h͂QR}h̐擪1gݍ
        킹P̃R}hŃR}hݒsB(Fdisplay bytełdb)
        <mode>ȗƌ݂̃R}h[h̕\sB
        QR}h[hłAR}h̍ŏ1̓͂Ŏs\łB
        (Fdisplay byteł d b)

set serial [<portid>]
        ^XNj^̓o͑Ή̃VÃ|[gԍ<porid>ŕύX
        <portid>ȗƌ݂̃|[gԍ\B

set task [<task id>]
        <task id>Ŏw肵^XNɃJg^XNύXB
        <task id>ȗƃj^^XNJg^XNɐݒ肷B

RjtaskR}h
task activate
        Jg^XNact_tsk(<Jg^XNID>)T[rXR[𔭍sB

task terminate
        Jg^XNter_tsk(<Jg^XNID>)T[rXR[𔭍sB

task suspend
        Jg^XNsus_tsk(<Jg^XNID>)T[rXR[𔭍sB

task resume
        Jg^XNrsm_tsk(<Jg^XNID>)T[rXR[𔭍sB

task priority [pir]
        Jg^XNchg_tsk(<Jg^XNID>, <pri>)T[rXR[
        sB

SjlogR}h
log mode [<logmask> [<lowmask>]]
        syslog̕\[hύXB<logmask><lowmask>ȗꍇ
        ݂<logmask><lowmask>\Bݒl̃}XN̑Ή
        ȉ̒ʂłB
        <}XN>   <ݒl>
        LOG_EMERG     0     Vbg_EɒlG[:lowmask default
        LOG_ALERT     1
        LOG_CRIT      2
        LOG_ERROR     3     VXeG[
        LOG_WARNING   4     xbZ[W
        LOG_NOTICE    5                                 :logmask default
        LOG_INFO      6
        LOG_DEBUG     7     fobOpbZ[W
        logmask defaultlowmask default͓dRTOSÑftHgl

log task [<cycle time>]
        <cycle time>msɊe^XN̑Õ^XN̎sԂ\B
        <cycle time>ȗꍇAOlog task\̊e^XN
        sԂ\B

log port [<no> <logno> [<portaddress>]]
        |[gj^@\̐ݒB<portaddress>ݒ肵ꍇ<portaddress>
        ANZX邽т<logno>ɂăANZXf[^syslogɂăO\
        B
         <no> <logno> <portaddress>̐ݒɂ<portaddress><no>logmask
         <logno>ɂă|[gj^̐ݒsBAA<logno>1ȏ7܂ł̒lB
         <no> <0>̐ݒɂă|[gj^̉sB
         ȗƁA|[gj^̓o^Ԃ̕\sB

TjnetR}h
TINETLłASUPPORT_ETHERRpCXCb`L̏ꍇ̂ݎgp\
R}hłB
net ping <ipaddress>
         <ipaddress>ɑ΂pingsAvCꍇvC<ms>
         \B

net ifconfig [<ipaddress> [<ipmask>]]
         <ipaddress><ipmask>̐ݒsBȗꍇA݂
         ip addressip mask\B

net open [<ipaddress> [<portno>]]
         netDevicẽI[vsB<portno>ȗꍇA49150ƂB
         <ipaddress>ȗꍇA{[hip address̏3oCg
         ŏIoCg6Zbgip address(XX.XX.XX.006)<ipaddress>
         ƂB
         ̃R}hDEVSEVRpCXCb``ĂȂ({[h
         NCAg)̏ꍇ̂ݗLłB

net close
         netDeviceN[YB
         ̃R}hDEVSEVRpCXCb``ĂȂ({[h
         NCAg)̏ꍇ̂ݗLłB


UjpipeR}h
SUPPORT_PIPERpCXCb`LŁAgR}hpӂĂꍇ̂
LȃR}hłAR}hdl͊gꂽ[UݒR}h̎dl
]AZJhR}h[UݒR}hƂȂB

VjhelpR}h
j^R}h̃wv\B

QDnetDeviceɂ

Q|PD
netDeviceTOPPERSvWFNgvfɂāApɍ쐬ETHERNET
TCP/IPvgRiTINETjgpfoCXV~[^C^[tFCX
vOłBΏۃ{[hETHERNET΁ApWindowsp\R
̃T[o(netDevice)܂̓NCAgvO(netTerm)ƒʐMs܂B
Windowsp\R̃T[o܂̓NCAgvÓAfoCX}l[W
(COM)ƒʐMsAWindows̃V~[^𐧌䂷邱Ƃł܂B
ȂÃo[W(monitor1.1.0)ł̓MO@\̓T|[gĂ܂B
foCX}l[WɂẮAdoc/windows.txtQƂĂB
smFs͈ȉ̒ʂłB
Pjh8(AKIH8-3048,AKIH8-3069F)  PizzaFactory2+GNU(h8300-hms)
                                cygwin+GNU(h8300-hms)
Qjsh2(hsb7616it)              cygwin+GNU(sh-hitachi-elf)

netDevice̓n[hEFÃANZXpPbgƂăp\RƒʐM܂̂
^XNReLXg̃n[hEFAANZX͂ł܂B


Q|QDT[oƃNCAg
netDevice̒ʐMm邽߂ɂ́A{[hŃT[oƂċN`Ԃ
NCAgƂċN`ԂIł܂BTOPPERSvWFNg̋ނ
NCAgŎŝgpĂ܂B

PjNCAg^
{[hNCAgƂėグƁAWindows̓T[ovO
(netDevice)ƒʐMs`ԂƂȂ܂Bp\RnetDeviceƃV~[^
NA^XNj^net openR}hpāAp\RƐڑs܂B

	mon>net open 192.168.11.6(return)

ڑɂnet closeR}hp܂B

	mon>net close(return)

ڑSILC^[tFCXpn[hEFAANZXT[oɒʐM܂B

QjT[o^
{[hT[oƂėグƁAWindows̓NCAgvO(netTerm)
ʐMs`ԂƂȂ܂BnetTerm̓R\[@\܂̂ŁAp\R
ڑAnetTerm^XNj^̒[ƂĎgpł܂B̂߁A{[hォ
VAʂă^XNj^gp邱Ƃ͂ł܂B
{[h̃vÕrh̃ftHg̓NCAg^rhݒƂȂ
܂̂ŁAT[o^̃rhs߂ɂ́AJ̈ȉ2_̏C
KvƂȂ܂B

tinet_xxxx.cfg̏CF
T[o^̃rhɂ́ATCP̎tKvƂ܂B̋Lqtinet_xxxx.cfg
ǉĂB

/* TCP t */

TCP_CRE_REP (TCP_NETDEVICE_REPID,	{ 0, { IPV4_ADDRANY, NET_DEVICE_PORTNO } } );

MakefilȅCF
T[o^̐ݒ̓RpCXCb`DEVSERVŎw肵Ă܂BMakefilẽft@
C-DDEVSERVǉĂB
̎A^XNj^NEED_MONITOR̃ft@C͖܂B

#
#  ʃRpCIvV̒`
#
COPTS := $(COPTS) -DMON -DDEVSERV
CDEFS := $(CDEFS)

Q|RDn[hEFAANZX
TOPPERS/JSPł̒ʏ̃n[hEFÃANZXSILC^[tFCXp
s܂BSILɂẮuITRON4.0dlfoCXhCoݒKChC
vfԕ񍐏-chbA[LeN`̒-vQƂĂB
SIL̃ANZX֐include/sil.hɋLq܂BnetDeviceŃn[hEFA
ANZXsꍇ́Ainclude/sil.h̑monitor/monsil.hn[hEFA
ANZX̃\[Xt@CɃCN[h܂Bmonsil.hnetDevice̐ڑ
݂āAn[hEFAɃANZXsAp\Rɖ₢킹邩𔻒肵
ANZXs܂B



RDWo͂̑Ή

R|PD
Wo͂newlibłƊȈՔłIł܂B
newlibł͊ȈՔłɔׁAH8̃TCY32KBقǑ傫Ȃ܂B
󋵂ɉāAIĂB
newlibłh8̊̂ݎsmFsĂ܂B̊ł
smFsĂ܂B


R|QDȈՔŕWo
monitorfNgB̈ȉ̃t@Cgp܂
@stdio.h@@inewlibstdio.hɗD悵ĎQƂj
  printf.c@@(printf)
  sprintf.c   (sprintf)
T|[gĂWo͊֐stdio.hQƂĂ
܂Aprintf֐sprintf֐libc.aɗD悵ăN悤
CuBOɁAprintf.osprintf.o荞ނ悤ɂĂB
܂AOAKS16p̊JTMŎgpꍇstdio.h폜MTOOL
stdio.hgp悤ɂĂB

R|RDnewlibŕWo
monitorfNgBstdio.hAstddev.cAprintf.cAsprintf.cQƂȂ
悤ɁÃt@C폜ĂB
܂Amonitor/Makefile.configstddev.oAprintf.oAsprintf.orh
ɃNȂ悤ɍ폜ĂB
newlib̕Wo͂́Aputcharputĉ悤Ȉꕶo͊֐\n(s)R[h
Ȃƕ\s܂B܂Aprintfputŝ悤ȕo͊֐\nR[h
tďo͂܂B
putcharputc̑Ήsɂ́AƂăobt@̂Ȃws
ł܂B̋ނłnewlibrc.cA^XNj^̏A
setbuf(stdio, 0);֐ɂāAo̓obt@Ȃ̎wsĂ܂B
^XNj^gpȂꍇ́Asetbuf̐ݒōsĂB
printfputŝ悤ȕ̏o͊֐ɊւẮAnewlibputs.c
C邱ƂɂA邱Ƃo܂B
ڍׂ͂RDnewlib̉QƂĂB

CuB̃rh菇͈ȉ̒ʂłB
/home/roi/gnunewlib̓t@CRs[
gnu>tar zxvf newlib-1.11.0.tar.gz
gnu>mkdir /usr/local/h8300-hms
gnu>mkdir newlib-objdir
gnu>cd newlib-objdir
gnu>export TARGET_CFLAGS=-DREENTRANT_SYSCALLS_PROVIDED
gnu>/home/roi/gnu/newlib-1.11.0/configure --target=h8300-hms --prefix=/usr/local/h8300-hms
gnu>make
gnu>make install

AvP[ṼrhAWo͗p̎Ƃĉ
systask/newlibrt.cNKv܂B


R|SDnewlib̉(newlib-1.11.0/newlib/libc/stdio/)
puts.c̏C
/*
 * Write the given string to stdout, appending a newline.
 */

int
_DEFUN (_puts_r, (ptr, s),
	struct _reent *ptr _AND
	_CONST char * s)
{
  size_t c = strlen (s);
  struct __suio uio;
  struct __siov iov[2];

  iov[0].iov_base = s;
  iov[0].iov_len = c;
#if 0	/* TOPPERS.JSP */
  iov[1].iov_base = "\n";
#else	/* TOPPERS.JSP */
  iov[1].iov_base = "\0";
#endif	/* TOPPERS.JSP */
  iov[1].iov_len = 1;
  uio.uio_resid = c + 1;
  uio.uio_iov = &iov[0];
  uio.uio_iovcnt = 2;

  _REENT_SMALL_CHECK_INIT(_stdout_r (ptr));
  return (__sfvwrite (_stdout_r (ptr), &uio) ? EOF : '\n');
}


܂AWo͗p̃[x֐systask/newlibrt.cɋLڂĂ܂B
newlibrt.cnewlibpCꃉCuBC++ꃉCuB
vOɋLqĂ܂̂ňȉ̂Q̃\[X
܂Bnewlib̕Wo͂gpꍇ͐Vnewlibrt.c
vÕrhɃN悤ɂĂB
EVnewlibrt.cFCpnewlibCuBTOPPERSƂI/F
Ecpplibrt.cFC++p̊֐ƏvO

