             TOPPERS/JSPͥ 桼ޥ˥奢 
                         M32C åȰ¸

            Release 1.4бǽ: 31-Oct-2004

------------------------------------------------------------------------ 
 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 Naoki Saito
            Nagoya Municipal Industrial Research Institute, JAPAN
 Copyright (C) 2003-2004 by Platform Development Center
                                         RIOCH COMPANY,LTD. JAPAN

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

 ܥեȥϡ̵ݾڤ󶡤ƤΤǤ롥嵭Ԥ
 TOPPERSץȤϡܥեȥ˴ؤơŬѲǽ
 ޤơʤݾڤԤʤޤܥեȥѤˤľ
 ŪޤϴŪʤ»˴ؤƤ⡤Ǥʤ

 @(#) $Id: m32c.txt,v 1.2 2007/01/05 02:15:50 honda Exp $
------------------------------------------------------------------------

1.  M32C åȰ¸γ

1.1  åȥƥȳȯĶ

M32CץåΥåȥƥϡŻҳҤOAKS32
ݡȤƤ롥OAKS32M30833FJFP(100pin)M30835FJGP(144pin)
ܤƤ롥

1.2 ȯĶȼ¹ԴĶ

ȯĶϡͥƥΥγȯĶѤ롥
Windows󥹥ȡ뤵ƤꡢꥢݡȤĥѥ󤬤С
ɥ⥸塼ιۡܡɤؤžӥܡɾǤμ¹ԤǽǤ롥

1.3  ݡȤ뵡ǽγ

ǽɾѥƥﻲȵǽ (vxget_tim) ϥݡȤƤ뤬
ߥޥѹ (chg_ixx get_ixx) ߤζػߤȵ
(dis_intena_int) ϥݡȤƤʤ

1.4  ¾ΥåȤؤΥݡƥ

M32CCPU¿ΥǥХƤꡢSFRȤ첽
뤿M32C꡼CPUĥܡɤǤСݡƥ󥰤ưפ
Ȼפ롥

1.5  ꥢݡ

ݡƥ󥰤UART0ݡȤؤбԤƤ롥
UART1ϥǥХåKD3083ѤǥХåѥݡȤȤƻѤ뤳ȤꤷƤ.
UART0ݡȤʲ˼

   ܡ졼ȡ38400[bps]
   ǡĹ8 ӥå
   ȥåץӥåȡ1 ӥå
   ѥƥʤ

2.  M32C ץå¸εǽ

Ǥϡͥ뤪ӥƥॵӥεǽǡM32C¸ʬ
ˤĤƲ⤹롥

2.1  ǡ

int  unsigned int Υ 16ӥåȤǤ롥ޤ_int64_ б
Ƥʤݥ󥿤˴ؤơM32CǤ16ӥåĹnearݥ󥿤32ӥ
Ĺfarݥ󥿤롥nearݥ󥿤RAMǥХΥݡΰǤ
SFR򥢥٤Υݥ󥿤Ǥꡢfarݥ󥿤򤳤˲äROMΰ
ǥǽȤʤ롥Υݡƥ󥰤ǤVP VP_INT϶far
ݥ󥿤Ƥ롥
Ū near  far ꤷʤ硢ѥϥݥѿfar
ݥ󥿤Ȥưᡢ̾λѤǤϥݥ󥿤Υä˰ռɬפ
ʤnearfarƱ˻Ȥϰռɬפ롥

2.2  ߴǽȳߥϥɥ

DEF_INHǻꤹߥϥɥֹinhnoˤϡM32CǤΥեȥ
ֹɽΥǡINHNOˤ charƤ롥
DEF_INHǡ㳰٥ֹȤͭǤʤͤ䡤ߤбʤ
ֹꤷưݾڤʤ

ϡɥߤϳ߶ػߤȤ뤳ȤǤ롥M32Cγߤζػߤ
ե饰쥸γߵĥե饰(Iե饰)ˤäƹԤʤI
饰ξϥޥ֥ߤ϶ػߤ죱ξϵĤ롥

ߥ٥֤Ū֤롥ܳȯĶǤϥե
졼󤫤 kernel_cfg.c Ƥ̤ưŪŪ
ߥ٥ե桼ƥƥѰդƤ롥 
桼ƥƥ줿 kernel_cfg.c Ƥ utils/m16c-renesas
ǥ쥯ȥ m16cvec.exe ޥɤǲϤߥ٥ե
m16cvec.inc 롥m16cvec.inc CPUΥȥåץ⥸塼Ǥ
start.a30 饤󥯥롼ɤ졢ߥ٥ROMŪ֤롥

2.3  CPU 㳰ǽ CPU 㳰ϥɥ

  CPU㳰ȤơϡɥΥޥ֥ߤȥեȥΥޥ
֥ߤ롥ϡɥΥޥ֥ΥꥻåȤ
٥ȥ꤬ǽǤ롥
  CPU㳰٥ϳߥϥɥƱ֤ͤŪ֤롥
CPU㳰ϥɥ˴ؤƤߥϥɥƱͤ m16cvec.exe Ѥơ
CPU㳰٥ưŪ뤳ȤǤ롥Υǡϳ
ϥɥƱͤm16cvec.incꤵ롥

DEF_EXC ǻꤹCPU㳰ϥɥֹexcnoˤϡM32CǤΥեȥ
ֹɽΥǡEXCNOˤ charƤ롥

2.4  ȥåץ⥸塼

  m32c¸Υȥåץ⥸塼 (start.a30) ϼ˼¹
塢ͥ (kernel_start) ư롥 kernel_start 
äƤ뤳ȤꤷƤʤ

(1) åݥ󥿤

(2) CPUϢν

ץå⡼ɤȥåԤ

(3) hardware_init_hook θƽФ(̤¹)

M32C֥Ǥϡhardware_init_hook Ƚ꤬ǤʤȤȡ
M32CΥϡɥ꤬sys_initialize()ؿǹԤäƤ
ʬбǤȹͤ뤳ȤбƤʤ.

(4) bss dataν

bss򥼥ꥢ롥ޤdata롥

(5) software_init_hook θƽФ

software_init_hook 0ǤʤСsoftware_init_hook ƽФsoftware
_init_hook ϥͥ뵯ưˡեȥĶ (饤֥) ¸
ԤѰդƤ롥
software_init_hookcpu_config.c0ǲ˹ԤäƤ롥
software_init_hookϡۻˣåѥȤ
EXTERNAL_SOFT_HOOKСϥѥ뤵줺꤬
ǽȤʤ롥㤨С饤֥νʤɤԤϳ
꤬ǽȤʤ롥

(6) ͥεư

kernel_start ʬͥư롥kernel_start ꥿
Ƥ뤳ȤꤷƤʤ

2.5  ȯΥå̤ˤĤ

  ͥ뵯ưڤӡȯϥѤΥåȤ̤Ρ
ѤΥåꤷƤ롥ΥåRAMENDǻꤵ
RAMΰκǽ֤ǥȤƻѤ롥Τᡢ
ƥˤϤΰݤʤФʤʤ
  ߥͥȥ٥뤬 0ǳߤȯȡƥѥ
˥쥸¸塢ѥåڤؤ뤿ᡢ
ƥѥå̤ ƥ쥸ե饰PC30ХȤǤ롥
ߥͥȥ٥ 1ʾΥϥɥ Ǥϡߥå˾֤¸
(ߤ30Х)ʳˡߥ롼ǻѤ륹
åû롥

3.  ƥ¸εǽ

3.1  ƥ९åɥ饤

  ƥ९åɥ饤Фisig_timƤӽФϡsys_defs.h
TIC_NUMETIC_DENOƤɸ 1ߥüˡ
뤳Ȥǡisig_timƤӽФѹ뤳ȤǤ롥
ޤ٤1äǤ뤿ᡤ1ñ̤üˤʤͤꤷˤϡ
isig_timθƽФ˸뤳Ȥˤʤ롥

3.2  ǽɾѥƥﻲȵǽ

  M32CǤϡǽɾѥƥﻲȵǽ (vxget_tim) 򥵥ݡȤƤ롥
OAKS16Ǥ 0.0333[us]Ǥ롥SYSUTIM UW  (32 ӥåʤ
) Ǥ롥

3.3  ꥢ륤󥿥եɥ饤

  OAKS32ǤUART0UART1ΣĤΥꥢݡȤܡɾ˼Ƥ롥
ꥢ륤󥿥եɥ饤ФǤUART0ΤߤбѤ˻ѤƤ롥
UART1  ǥХå KD3083 ǥۥPCȤ̿ѥݡȤȤƻѤ뤳Ȥ
ꤷƤ뤿ᡢΤޤޤǤϥɥ饤ФǻѤǤʤ.

3.4  ޥå

3.4.1  OAKS32Υޥå

(1)  ¹ԴĶ

     0x000000 - 0x0003ff  SFRΰ
     0x000400 - 0x0077ff  ¡ RAMdata_NEdata_NObss_NEbss_NO
     0x007800 - 0x007fff  ¡ RAMǥХå˥RAMΰʥ˥Ѣ

     0xf80000 - 0x0ffdff  ¢ ROMprogramrom_FErom_FOdata_NEIdata_NOI
     0xffbd00 - 0xffbdff  ¢ ROMϡɡեȳߥ٥ΰ (vvector)
     0xffbe00 - 0xfffdff  ¢ ROMǥХå˥ץΰ袨
     0xfffe00 - 0xffffdb  ¢ ROMڥڡ٥ơ֥ΰ
     0xffffdc - 0xffffff  ¢ ROMϡCPU㳰٥ΰ(fvector)

       ǥХåKD3083Ѥʤ̾ΥȤƻѲǽ

4.  ȯ

4.1  ȯĶ

  ȯĶϡWindows 2000Windows XPѤ۴ĶϰʲΣĤˡ
롥

(1) ͥƥΥ糫ȯĶTM򤽤Τޤ޻Ѥ롥
OAKS32-FullKitˤƱƤ

     оݡOAKS32ܡ
     ͥƥΥҤ糫ȯĶTMѤƹ
           ͥ饤֥경ۤ
     ¾ѥNC308WA
			   ưǧ Version3.10 Release2ȥ꡼Ǥ
			   Version5.10 Release1ǤǹԤʤä

(2) DOS뤫makeޥɤѤƳȯԤĶ
     оݡOAKS32ܡ
     DOS뤫makeȤäƹ
           ͥ饤֥경ˡȤʤˡξб
     ¾ѥNC308WA
			     Version3.10 Release2 ȥ꡼Ǥ
			     Version5.10 Release1 Ǥưǧ
             GNU make (version 3.77 ưǧ)
             Perl (ưǧ Active Perl v5.6.1)

ޤͥ빽ۤˤäƤϡե졼
Ѥ뤿 cfg ǥ쥯ȥcfg.exe ۤƤɬפ롥

4.2  糫ȯĶTMѤ

  m32cѤTOPPERS/JSPۤˤϡͥƥΥγȯĶ
Ѥ롥( OAKS32ե륭åźդCD-ROMˤǼƤ
ġɬפ˱ƥ󥹥ȡ뤷Ƥ
          糫ȯĶ TM
          ѥ NC308WA

ˡϰʲμ˽äƹԤ

4.2.1 ٥եġ(m16cvec.exe)ι

utils/m16c-renesas Υġ m16cvec.exe ۤ(m32cåȤǤ
m16coffset.exeϻѤʤ). utils/m16c-renesas/  
Microsoft Visual C++ ץȥե(m16cutils.dsw)򳫤
 m16cvec.exe . ˥塼֥ץȡ
֥ƥ֥ץȤסm16cvecפ򤷡
ӥɥ˥塼ӥɤ򤹤롥
¹ԥեutils/m16c-renesas/m16cvec.exeȤƺƤ.

4.2.2 TM ǥץȤ򤷥ӥɤ롥

 ӥоݤΥɤƤɥ饤֤ȡѥʤɤγȯġ뤬
󥹥ȡ뤵Ƥɥ饤֤Ʊɥ饤֤ɤǧ.
ƱǤХӥɽ뤳ȤǧƤ. ۤʤϥӥɤ
ǧƤʤᡢ侩ˡȤ.

TM ץȤ򳫤Windows˥塼 TM ư롥
ưOpen Projectץ˥塼򳫤tools/M32C-RENESASǥ쥯ȥ
 Jsp14sample1.tmk 򤹤롥ѥΰ㤤ˤ˥塼
ɽ礬롥ξϸߤδĶ˽äꤹ롥δĶϡ
Cѥ NC308WA Version 3.10  Version 5.10 ɾԤä
塢֥ӥɡץ˥塼򤷥ӥɤԤTMȤ
եΰ¸ԤäƤʤΤǡۻϡ֥ӥɡ
¹Ԥ褦ˤƤˡ
ӥɤλȡΥǥ쥯ȥJsp14sample1.x30
Jsp14sample1.mot롥


4.3 DOS뤫makeޥɤѤ

TM ľ GNU make Ѥm32cѤ TOPPERS/JSPͥۤ
ˡ򼨤ˡбƤܡɤ OAKS32 Ǥ롥ѥ
NC308WA ȥ꡼ǤǤɤǤѲǽǤ. ɾǥѥ
NC308WA Version 3.10 ǥѥ NC308WA Version 5.10 ư
ǧƤ.

ۤˤäƤϡե졼 cfg.exe  cfg ǥ쥯ȥˡ
m16coffset.exe  utils/m16c-renesas ǥ쥯ȥˡ줾
¸ߤƤ뤳ȤȤʤޤޤNC308WA, KD3083 
餫ᥤ󥹥ȡ뤷ƤƤ

ˡϰʲ̤ꡥ

4.3.1 ȯġ

ġϰʲΥȤǤޤ

GNU Make 
http://www.mingw.org/

Active Perl
http://www.activestate.com/

4.3.2 ץץι

 ץץιˡϴŪ doc/user.txt  7.4 ץ
ιۡפǼ줿ˡ˽򤷤Ƥޤե졼
ץ perl ǽ񤫤줿ץȤϤΤޤ Windows  DOS
Windows2000Ǥϡ֥ޥɥץȡסˤξǤϻѤ뤳Ȥ
Ǥޤ󡣤Τᡢutils/m16c-renesas ǥ쥯ȥѰդ줿Ѥ Perl
ץȤѤޤ

4.3.3 ե졼󥹥ץȤμ¹

   > mkdir foo
   > cd foo
   > perl ..\utils\m16c-renesas\configure.m16c -C m32c -S oaks32 -T renesas -D ..

-D ץϥǥ쥯ȥΰ֤ˤŬ˽Ƥ. 
foo ǥ쥯ȥ꤬ JSPͥΥȥåץǥ쥯ȥβˤǤ.

νˤꡢȥǥ쥯ȥˤ MakefileץץѤ
ե졼եsample1.cfgˡץץ
sample1.hsample1.cˤޤMakefileνɬפʤ
ԤΤ¾ΥåȤξƱǤ

4.3.4 Makefile ν

(A) ꥢɥ쥹

RAMEND ϳߥåݥ󥿤ν͡RAM_START_ADR SFR
RAMƬϡROM_START_ADR  ROMƬϤ򤽤줾켨.

(B) ġΥ󥹥ȡǥ쥯ȥ

NC308WA ѥġΥ󥹥ȡ뤵Ƥǥ쥯ȥ
TOOLDIR ꤹ.

(C) KD3083Ѥ뤫
ѤKD3083ͤ1ˡѤʤ0ꤹ

(D) 饤֥ꥢ LB308Ȥɤ

ȥ꡼ǥѥʤɡͥ饤֥ιۤԤʤʤ
USE_LB308 = TRUE
ιԤ򥳥ȥȤ

(E) JSPͥ륽Υȥåץǥ쥯ȥΰ

 ̾ configure ץȤꤵ뤬JSPͥ륽
ǥ쥯ȥΰ֤ѹ SRCDIR ͤѹ.

(F) åȥե

ɤ¹ԥץηꤹ롥IEEE-695ΤȤ
$(OBJNAME).x30ȥ Sλ $(OBJNAME).mot ꤹ롥

(G) ¾

ʲιܤˤĤƤϡdoc/user.txt Ƥ˽򤷤ƤΤ
򻲾ȤΤ.
	ͥ饤֥Υǥ쥯ȥ̾
	̥ѥ륪ץ
	ץꥱץ˴ؤ
	֥ȥե̾
	ͥΥե졼ե

4.3.5 ¸طեӥץμ¹ԥץ

¸طե Makefile.depend Ӽ¹ԥץ jsp.x30  jsp.mot 
ˤϼΤ褦˼¹Ԥ롥

   > make depend
   > make

Ǽ¹ԥץ(jsp.x30,jsp.mot)ȥǥ쥯ȥ.

4.4 ¹ԥץž

ܡɾǼ¹Ԥǧ뤿ˡȤƤ2̤ˡ롥

a. MOTեFlashSta ץѤơܡɾΥեåROM˽񤭹
b. ǥХåKD3083Ѥƥɡ¹Ԥ
	OAKS32ˤϡǥХåKD3083źդƤ롥ΥǥХåϥեåROM
	˥ץUART1Ѥ̿ԤǥХåǽ¸롥
	ܥͥKD3083ѤƥͥΥɡ¹ԤԤȤ롥
	ѤäƤϰ»ब롥ܺ٤ˤĤƤKD3083Υޥ˥奢
	ȤΤȡ

4.4.1 FlashStaѤƥեåROM˽񤭹ˡ

ȯѤΥѥOAKS32ܡɤȤRS-232C֥Ȥä³롥
  OAKS32ܡɤUART1ݡȤ³롥
CNVSSԥ򥸥ѡԥȤäƥ硼Ȥ롥
Ÿ³Ÿå򥪥ˤ롥

FlashStaư롥
Select Program˥塼ˤƥݡȤ򤷤ơOKץܥ򲡤
ID Check˥塼ɽ줿Refer..ץܥ򲡤MOTե򤹤롥
Select Programä顢OKץܥ򲡲Flash Start˥塼ɽ롥

Eraseץܥ򲡤եåROM򥯥ꥢ롥
Program..ץܥ򲡤ץν񤭹ߤԤ
񤭹ߤλ顢Exitץܥ򲡲FlashStaλ롥
ܡɤŸڤꡢCNVSSԥ󤫤饸ѡԥϤ

4.4.2 KD3083Ѥƥɡ¹Ԥˡ

ˡ¹Ԥϡ餫KD3083 ѤΥ˥ץब
¡ ROM ˽񤭹ޤƤ뤫ɤǧ. 񤭹ޤƤʤ
˥ץ嵭4.2.3 FlashSta Ѥƽ񤭹ɬפ.

ȯѤΥѥOAKS32ܡɤȤRS-232C֥Ȥä³롥
  OAKS32ܡɤUART1ݡȤ³롥
Ÿ³Ÿå򥪥ˤ롥

KD3083ư롥
Init̤³PC¦ΥݡȤ̿®٤ꤷOKפ򲡤
˥塼FileDownloadLoad Moduleפ򤷡.x30ե򤹤롥
  ȡɥ⥸塼뤬CPUܡɤž롥
  ȤϡGoץܥ򲡤м¹ԤϤ롥

4.4.3 sample1μ¹ԤɬפPC¦Υꥢ

ѥ˥ꥢ롦ߥʥΩ夲Ƥ
ϰʲ̤Ǥ
Baud rate:38400
Data:8 bit
Parity:none
Stop:1 bit
Flow controlXon/XoffˤƤ.

5.  ե빽

5.1  ǥ쥯ȥꡦե빽

(1)   config/m32c-renesas

      api.h            饤֥경ʤ˻Ѥ롢API
      cpu_config.c     M32Cץå¸ C ؿ
      cpu_config.h     M32Cץå¸ι
      cpu_context.h    M32Cץå¸Υƥ
      cpu_defs.h       M32Cץå¸Υץꥱ
      cpu_insn.h       M32CץåΥ֥ inline ؿ
      cpu_rename.def   ͥ̾Υ͡Ȥβꥹ
      cpu_rename.h     ͥ̾Υ͡
      cpu_support.a30  M32CץåΥ֥ؿ
      cpu_unrename.h   ͥ̾Υ͡
      makeoffset.c     offset.inc ݡȴؿ
      offset.inc       TCBФؤΥեåե
      start.a30        ȥåץ⥸塼
      tool_config.h    M32CץåγȯĶ¸⥸塼
      tool_defs.h      M32CץåγȯĶ¸

(2)   config/m32c-renesas/oak32/

      hw_serial.cfg    SCI Υե졼ե
      hw_serial.h      SCI Υإåե
      hw_timer.h       OAKS32ѥ롼
      Makefile.kernel  ͥΥե빽(M32C)
                       makeޥɤѤm32cTOPPERS/JSPͥ빽ۤǻѤ
      oaks32.h         ץå
      sfr_uart.c       OAKS32SIOɥ饤ФCؿ
      sfr_uart.h       OAKS32SIOɥ饤ФΥإåե
      sys_config.c     OAKS32ܡɰ¸ C ؿ
      sys_config.h     OAKS32ܡɰ¸ι
      sys_defs.h       OAKS32ܡɰ¸Υץꥱ
      sys_rename.def   ͥ̾Υ͡Ȥβꥹ
      sys_rename.h     ͥ̾Υ͡
      sys_unrename.h   ͥ̾Υ͡

(3)   tools/M32C-RENESAS/
                       糫ȯĶTMѤTOPPERS/JSPۤ뤿
                       ץȥե뤬֤줿ǥ쥯ȥ
      Jsp14sample1.tmi,Jsp14sample.tmk
                       TMѤOAKS32ѤTOPPERS/JSPۤ뤿Υץȥե
      sample1.cfg      OAKS32ѤTOPPERS/JSPۤ뤿Υե졼ե

(4)   sample/

      Makefile.m32c-oaks32	GNU make ޥɤѤTOPPERS/JSPͥ
                            뤿 Makefile
