
         TOPPERS/ASPͥ 桼ޥ˥奢 
      monitornetDevicenewlibɸϤб

        Release 1.1.0 бǽ: 16-03-2008

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

 Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
                             Toyohashi Univ. of Technology, JAPAN
 Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
             Graduate School of Information Science, Nagoya Univ., JAPAN
 Copyright (C) 2003-2008 by Ryosuke Takeuchi
                     GJ Business Division RICOH COMPANY,LTD. JAPAN

 嵭Ԥϡʲ (1)(4) ξ狼Free Software Foundation 
 ˤäƸɽƤ GNU General Public License  Version 2 ˵
 ҤƤ˸¤ꡤܥեȥܥեȥ
 ѤΤޤࡥʲƱˤѡʣѡۡʰʲ
 ѤȸƤ֡ˤ뤳Ȥ̵ǵ롥
 (1) ܥեȥ򥽡ɤηѤˤϡ嵭
     ɽѾ浪Ӳ̵ݾڵ꤬Τޤޤηǥ
     ˴ޤޤƤ뤳ȡ
 (2) ܥեȥ򡤥饤֥ʤɡ¾Υեȥȯ˻
     ѤǤǺۤˤϡۤȼɥȡ
     ԥޥ˥奢ʤɡˤˡ嵭ɽѾ浪Ӳ
     ̵ݾڵǺܤ뤳ȡ
 (3) ܥեȥ򡤵Ȥ߹ʤɡ¾Υեȥȯ˻
     ѤǤʤǺۤˤϡΤ줫ξ
     ȡ
   (a) ۤȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭
       ɽѾ浪Ӳ̵ݾڵǺܤ뤳ȡ
   (b) ۤη֤̤ˡˤäơTOPPERSץȤ
       𤹤뤳ȡ
 (4) ܥեȥѤˤľŪޤϴŪ뤤ʤ»
     ⡤嵭ԤTOPPERSץȤդ뤳ȡ

 ܥեȥϡ̵ݾڤ󶡤ƤΤǤ롥嵭Ԥ
 TOPPERSץȤϡܥեȥ˴ؤơŬѲǽ
 ޤơʤݾڤԤʤޤܥեȥѤˤľ
 ŪޤϴŪʤ»˴ؤƤ⡤Ǥʤ
------------------------------------------------------------------------
/*
 * 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.
 */

monitorˤĤ

ݣ
ܥ˥ϡTOPPERSץȶףǤμѤ˺줿ץ
ǤTOPPERS/JSP1.4.1ǥȤƼ¹Ԥޤ¹ԳǧϰʲΣĤ
ĶĶǼ¹ԳǧԤäƤޤ
m16c(OAKS16-miniOAKS16)   ͥƥΥTM
h8(AKIH8-3048,AKIH8-3069F)  PizzaFactory2+GNU(h8300-hms)
                                cygwin+GNU(h8300-hms)
sh2(hsb7616it)              cygwin+GNU(sh-hitachi-elf)

ݣ󥽡λ
˥Υ󥽡̾ϥꥢǥХоݤȤƤޤ
MONTSK(˥Υ)εưΰϤexinfͤ˥
̿ϥǥХȤƤޤânetDeviceΥФȤƵư
󥽡WindowsnetTermȤʤޤ

ݣѥ륹å
˥ΥӥɤǼ¹Եǽꤹ륳ѥ륹åˤĤޤ

MONITOR_PORTID
˥ΥǥեȥݡȤϥꥢ륳󥽡CONSOLE_PORTIDˤǤ
˥εư󥽡ѹ硢ѥ륹å
-DMONITOR_PORTID=nꤹѹǽǤΤȤݡȤΥץ
˥εư˹Ԥޤ(Ver1.1.0NEED_OPENΥåϺޤ)

SUPPORT_PIPE
ΥåȡդΥޥɤĥޤ
դޥɤ1ޥ"PIPE"ǵưޤ
դޥɤϢؿpipe_command(B *command);ꤷƤ

SUPPORT_ETHER
TINETΥޥɥӥڤnetDeviceΥޥɳĥԤޤ
Υޥɤ1ޥ"NET"ǵưޤ

NETSERV
netDeviceΥХ⡼ɤǵưΥѥ륹åǤ
ƤϡnetDeviceˤĤơפ򻲾Ȥ

START_TASKID
netDEvice³ư¹Ԥ륿ֹꤷޤ
-DSTART_TASKID=1
Τ褦˻ꤹȡnetDevice³塢ΥץबưŪ˼¹Ԥޤ

NEED_MONITOR
Υѥ륹åꤹȡ˥εưneed_monitor()ؿƤ
ФޤδؿͤFALSEξ硢˥λޤ

MONITOR_DELAY
Υѥ륹åꤵ줿硢˥εư󥽡νϤ
MONITOR_DELAY(ms)ԤԤäǹԤޤ

ݣTOPPERS/JSPμĥˤĤ
˥ΰʲεǽ¸뤿TOPPERS/JSPμ¸config
Ĥβ¤ɬפǤ

_kernel_break_waitɲ(ɬ)
JSPͥΥӥǤԤ֤ȽΤˡ_kernel_break_wait
٥򥵡ӥԤץ֤ɬפޤ
ӥԤץ֤̾ƣãУդcpu_support.Sβ줫
֤ˤޤ

iana_tskΥ󥯥ݥȤɬܤǤϤʤ
˥Ǥϳƥμ¹dispatchΥڤؤiana_tsk
ؿƤӽФȤǾԤäƤޤΤiana_tskθƤӽФ
ꡢå󥰻֤礭㲼ޤ"log task"ޥɤˤ
ϥꥢ륿ॷƥθڤˤͭѤʼʤǤ
̾ϥѥ륹åMONˤꡢ곰ǽȤɬפΤʤ
곰ơѤƤ
dispatchؿ̾ƣãУդcpu_support.Sˤޤ

ݣ˥Υޥ˥奢
displayޥ
display byte [<start address> [<end address>]]
        <start address><end address>ޤǤΥޤϥݡΰ
        Хñ̤ɽ롣<end address>ά128ХȤ
        ɽԤ<start adress>άϡɽԤä
        ɥ쥹ɽԤ

display half [<start address> [<end address>]]
        <start address><end address>ޤǤΥޤϥݡΰ
        Хñ̤ɽ롣<end address>ά128ХȤ
        ɽԤ<start adress>άϡɽԤä
        ɥ쥹ɽԤ

display word [<start address> [<end address>]]
        <start address><end address>ޤǤΥޤϥݡΰ
        Хñ̤ɽ롣<end address>ά128ХȤ
        ɽԤ<start adress>άϡɽԤä
        ɥ쥹ɽԤ

display task
        Ͽ줿Ƥɽ롣ɽƤϰʲ̤ꡣ
        cur     	ȥ*˥monɽ롣
        id          IDɽ롣
        pri         ͤΥͥ
        state       ξ
        pc          RUNְʳʤ顢ߤΥץ५
        stack       ߤΥåɥ쥹
        inistack    ͥåƬɥ쥹
        inisize     ͥåΥХȥ

diaplay register
        ȥԤ֤Ȥʤä硢Ԥ֤Υ쥸Ƥ
        ɽ롣ӥԤǤϥ쥸¸Ԥʤ١
        쥸ɽϹԤʤ쥸ƤCPUˤäưۤʤ롣

setޥ
set byte [<start address>]
        <start address>Ƥ򣱥ХɽԤȤʤ롣ʿϸ
        <RETURN>ˤƥХͤϤ<start address>ͤ߸塢
        <start address>Ƥɽ<start address>+1ƤԤȤʤ
        .<RETURN>ˤsetޥɤλץץɽ롣<start address>
        ά硢Ǹ˽Υɥ쥹νߤԤ

set half [<start address>]
        <start address>Ƥ򣲥ХɽԤȤʤ롣ʿϸ
        <RETURN>ˤƥХͤϤ<start address>ͤ߸塢
        <start address>Ƥɽ<start address>+2ƤԤȤʤ
        .<RETURN>ˤsetޥɤλץץɽ롣<start address>
        ά硢Ǹ˽Υɥ쥹νߤԤ

set ward [<start address>]
        <start address>Ƥ򣲥ХɽԤȤʤ롣ʿϸ
        <RETURN>ˤƥХͤϤ<start address>ͤ߸塢
        <start address>Ƥɽ<start address>+2ƤԤȤʤ
        .<RETURN>ˤsetޥɤλץץɽ롣<start address>
        ά硢Ǹ˽Υɥ쥹νߤԤ

set command [<mode>]
        ޥɥ⡼ɤꤹ롣⡼ɤϣ(1ޥ)(2ޥ)⡼ɤ
        ǥեȤϣޥɥ⡼(㡧displaybyteΣĤΥޥɤ
        ޥԤ)Ǥ롣ޥɤϣޥɤƬ1ʸȤ߹
        碌ĤΥޥɤǥޥԤ(㡧display byteǤdb)
        <mode>άȸߤΥޥɥ⡼ɤɽԤ
        ޥɥ⡼ɤǤ⡢ޥɤκǽ1ʸϤǼ¹ԲǽǤ롣
        (㡧display byteǤ d b)

set serial [<portid>]
        ˥бΥꥢΥݡֹ<porid>ѹ
        <portid>άȸߤΥݡֹɽ롣

set task [<task id>]
        <task id>ǻꤷ˥ȥѹ롣
        <task id>άȥ˥򥫥ȥꤹ롣

taskޥ
task activate
        ȥact_tsk(<ȥID>)ӥȯԤ롣

task terminate
        ȥter_tsk(<ȥID>)ӥȯԤ롣

task suspend
        ȥsus_tsk(<ȥID>)ӥȯԤ롣

task resume
        ȥrsm_tsk(<ȥID>)ӥȯԤ롣

task priority [pir]
        ȥchg_tsk(<ȥID>, <pri>)ӥ
        ȯԤ롣

logޥ
log mode [<logmask> [<lowmask>]]
        syslogɽ⡼ɤѹ롣<logmask><lowmask>ά
        ߤ<logmask><lowmask>ɽ롣ͤΥޥб
        ʲ̤Ǥ롣
        <ޥ>   <>
        LOG_EMERG     0     åȥͤ륨顼:lowmask default
        LOG_ALERT     1
        LOG_CRIT      2
        LOG_ERROR     3     ƥ२顼
        LOG_WARNING   4     ٹå
        LOG_NOTICE    5                                 :logmask default
        LOG_INFO      6
        LOG_DEBUG     7     ǥХåѥå
        logmask defaultlowmask defaultŸRTOSưΥǥե

log task [<cycle time>]
        <cycle time>ms˳ƥΥμ¹Ի֤ɽ롣
        <cycle time>ά硢log taskɽγƥ
        ¹Ի֤ɽ롣

log port [<no> <logno> [<portaddress>]]
        ݡȥ˥ǽꡣ<portaddress>ꤷ<portaddress>
        뤿Ӥ<logno>ˤƥǡsyslogˤƥɽ
        롣
         <no> <logno> <portaddress>ˤ<portaddress><no>logmask
         <logno>ˤƥݡȥ˥Ԥâ<logno>1ʾ7ޤǤ͡
         <no> <0>ˤƥݡȥ˥βԤ
         άȡݡȥ˥Ͽ֤ɽԤ

netޥ
TINETͭǤꡢSUPPORT_ETHERѥ륹åͭξΤ߻Ѳǽ
ޥɤǤ롣
net ping <ipaddress>
         <ipaddress>ФpingԤץ饤äץ饤<ms>
         ɽ롣

net ifconfig [<ipaddress> [<ipmask>]]
         <ipaddress><ipmask>Ԥά硢ߤ
         ip addressip maskɽ롣

net open [<ipaddress> [<portno>]]
         netDeviceΥץԤ<portno>ά硢49150Ȥ롣
         <ipaddress>ά硢ܡɤip addressξ3ХȤ
         ǽХȤ6򥻥åȤip address(XX.XX.XX.006)<ipaddress>
         Ȥ롣
         ΥޥɤDEVSEVѥ륹åƤʤ(ܡɤ
         饤)ξΤͭǤ롣

net close
         netDevice򥯥롣
         ΥޥɤDEVSEVѥ륹åƤʤ(ܡɤ
         饤)ξΤͭǤ롣


pipeޥ
SUPPORT_PIPEѥ륹åͭǡĥޥɤѰդƤΤ
ͭʥޥɤǤꡢޥɻͤϳĥ줿桼ꥳޥɤλͤ
ɥޥɤ桼ꥳޥɤȤʤ롣

helpޥ
˥ޥɤΥإ׾ɽ롣

netDeviceˤĤ

ݣ
netDeviceTOPPERSץȶףǤˤơѤ˺ETHERNET
TCP/IPץȥTINETˤѤǥХߥ졼󥿡ե
ץǤоݥܡɤETHERNETСѤWindowsѥ
Υ(netDevice)ޤϥ饤ȥץ(netTerm)̿Ԥޤ
WindowsѥΥФޤϥ饤ȥץϡǥХޥ͡
(COM)̿ԤWindowsΥߥ졼椹뤳ȤǤޤ
ʤΥС(monitor1.1.0)Ǥϥ󥰵ǽϥݡȤƤޤ
ǥХޥ͡ˤĤƤϡdoc/windows.txt򻲾ȤƤ
¹ԳǧԤäĶϰʲ̤Ǥ
h8(AKIH8-3048,AKIH8-3069F)  PizzaFactory2+GNU(h8300-hms)
                                cygwin+GNU(h8300-hms)
sh2(hsb7616it)              cygwin+GNU(sh-hitachi-elf)

netDeviceϥϡɥΥѥåȤȤƥѥ̿ޤΤ
󥿥ƥȤΥϡɥϤǤޤ


ݣФȥ饤
netDevice̿Ω뤿ˤϡܡɾǥФȤƵư֤
饤ȤȤƵư֤ǤޤTOPPERSץȤζ
饤ȤǼ¹ԤΤѤƤޤ

˥饤ȷ
ܡɤ򥯥饤ȤȤΩ夲ȡWindowsϥХץ
(netDevice)̿Ԥ֤ȤʤޤѥnetDeviceȥߥ졼
ư˥net openޥɤѤơѥ³Ԥޤ

	mon>net open 192.168.11.6(return)

³ˤnet closeޥɤѤޤ

	mon>net close(return)

³SIL󥿡եѤϡɥ򥵡Ф̿ޤ

˥з
ܡɤ򥵡ФȤΩ夲ȡWindowsϥ饤ȥץ(netTerm)
̿Ԥ֤ȤʤޤnetTermϥ󥽡뵡ǽޤΤǡѥ󤫤
³塢netTerm򥿥˥üȤƻѤǤޤΤᡢܡɾ夫
ꥢ̤ƥ˥Ѥ뤳ȤϤǤޤ
ܡɾΥץΥӥɤΥǥեȤϥ饤ȷӥɤȤʤä
ޤΤǡзΥӥɤԤˤϡȯĶΰʲ2ν
ɬפȤʤޤ

tinet_xxxx.cfgν
зΥӥɤˤϡTCPμոɬפȤޤεҤtinet_xxxx.cfg
ɲäƤ

/* TCP ո */

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

Makefileν
зϥѥ륹åDEVSERVǻꤷƤޤMakefileΥǥե
-DDEVSERVɲäƤ
λ˥NEED_MONITORΥǥե̵뤵ޤ

#
#  ̥ѥ륪ץ
#
COPTS := $(COPTS) -DMON -DDEVSERV
CDEFS := $(CDEFS)

ݣϡɥ
TOPPERS/JSPǤ̾ΥϡɥΥSIL󥿡եѤ
ԤޤSILˤĤƤϡ֦ITRON4.0͸ǥХɥ饤ꥬɥ饤
ף-ģɣåƥ-פ򻲾ȤƤ
SILΥؿinclude/sil.h˵ҤޤnetDeviceǥϡɥ
Ԥϡinclude/sil.hmonitor/monsil.hϡɥ
Υե˥󥯥롼ɤޤmonsil.hnetDevice³
ߤơϡɥ˥Ԥѥ䤤碌뤫Ƚꤷ
Ԥޤ



ɸϤб

ݣ
ɸϤnewlibǤȴʰǤǤޤ
newlibǤϴʰǤ١H8Υ32KBۤ礭ʤޤ
˱ơ򤷤Ƥ
newlibǤh8δĶΤ߼¹ԳǧԤäƤޤ¾δĶǤ
¹ԳǧԤäƤޤ


ݣʰɸ
monitorǥ쥯ȥꥣΰʲΥեѤޤ
stdio.hnewlibstdio.hͥ褷ƻȤ
  printf.c(printfʸ)
  sprintf.c   (sprintfʸ)
ݡȤƤɸϴؿstdio.h򻲾ȤƤ
ޤprintfؿsprintfؿlibc.aͥ褷ƥ󥯤褦
饤֥ꥣˡprintf.osprintf.o褦ˤƤ
ޤOAKS16ѤγȯĶTMǻѤstdio.hMTOOL
stdio.hѤ褦ˤƤ

ݣnewlibɸ
monitorǥ쥯ȥꥣstdio.hstddev.cprintf.csprintf.c򻲾Ȥʤ
褦ˡΥեƤ
ޤmonitor/Makefile.config椫stddev.oprintf.osprintf.oӥɻ
˥󥯤ʤ褦˺Ƥ
newlibɸϤϡputcharputcΤ褦ʰʸϴؿ\n()ɤ
ʤɽԤޤ󡣤ޤprintfputsΤ褦ʸϴؿ\nɤ
դƽϤޤ
putcharputcбԤˤϡȤƥХåեΤʤԤ
ǤޤζǤnewlibrc.c¤˥ν
setbuf(stdio, 0);ؿˤơϥХåեʤλԤäƤޤ
˥ѤʤϡsetbufʬǹԤäƤ
printfputsΤ褦ʸνϴؿ˴ؤƤϡnewlibputs.c
뤳Ȥˤꡢ򤹤뤳Ȥޤ
ܺ٤ϣnewlibβ¤򻲾ȤƤ

饤֥ꥣΥӥɼϰʲ̤Ǥ
/home/roi/gnunewlibե򥳥ԡ
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

ץꥱΥӥɻɸѤμȤƲ¤
systask/newlibrt.c󥯤ɬפޤ


ݣnewlibβ¤(newlib-1.11.0/newlib/libc/stdio/)
puts.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');
}


ޤɸѤΥ٥ؿsystask/newlibrt.c˵ܤƤޤ
¸newlibrt.cnewlibѤC饤֥ꥣC++饤֥ꥣ
ץबä˵ҤƤޤΤǰʲΣĤΥ
ʬޤnewlibɸϤѤϿnewlibrt.c
ץΥӥɻ˥󥯤褦ˤƤ
newlibrt.cCѤnewlib饤֥ꥣTOPPERSȤI/F
cpplibrt.cC++ѤδؿȽץ

jspǤκʬˤĤ
ʲΥ˽ꡢjspǤȤϰۤʤޤ

Makefile.config
	STASK_DIR -> APPL_DIR
	STASK_CFLAG -> APPL_DIR
monitor.cfg
	includeʸεܤν
monitor.h
	#include <t_services.h>-> #include <itron.h>
	CONSOLE_PORTIDɲ
task_expansion.h
monitor.c
stddev.c
	󥯥롼ʸν
armv4.c
	󥯥롼ʸν
	CPU
task_expansion.c
	פʳĥӥκ
	logaspˤ碌

