
              TOPPERS/FDMPͥ 桼ޥ˥奢 
                     Microblaze åȰ¸

             Release 1.1 бǽ: 14-Mar-2006
                 Embedded Development Kit 6.2.1 б

----------------------------------------------------------------------
 TOPPERS/FDMP Kernel
    Toyohashi Open Platform for Embedded Real-Time Systems/
     Function Distributed Multiprocessor Kernel 

 Copyright (C) 2004-2006 by Embedded and Real-Time Systems Laboratory
             Graduate School of Information Science, Nagoya Univ., JAPAN

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

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

 @(#) $Id: microblaze.txt,v 1.1 2006/03/14 04:28:57 honda Exp $
----------------------------------------------------------------------

Microblaze åȰ¸γ

1.1 åȥƥ

Microblaze ץåΥåȥƥȤƤϡMicroblaze ݡ
ȤƤ FPGA ܤƥ򥵥ݡȤƤ롥ʤFDMPͥ
ưˤϡ64Kbyte٤Υ꤬ɬפǤ롥ƥ¸Ȥ
ưʲΥܡɤ򥵥ݡȤƤ롥

 Xilinx Xilinx MultiMedia BoardFPGA:XC2V2000-FF896

ޤMicrobalzeѤޥץåƥܥͥư
ˤϡɸڥե˴ޤޤƤʤץåֳ߲ϩMutex
ϩɬפȤʤ롥Υڥեϡ
./tools/MICROBLAZE/peripheral/ ʲˤ롥


1.2 ȯĶ

ȯĶˤϡEDK˴ޤޤƤGCC ʤɤ GNUȯĶѤ֥
ȥեեޥåȤ ELF ɸȤ롥

PCǤϡEDK򥤥ȡ뤹ȡGNUγȯĶư뤿 xygwin 
󥹥ȡ뤵롥FDMPͥιۤˤϡperlg++(ۥȴĶ)
ҤĤ褦ʤᡤCygwin 򥤥󥹥ȡ뤹ɬפ롥ƱΥޥ
Cygwin 򥤥󥹥ȡ뤷塤xygwin 򥤥󥹥ȡ뤹 Cygwin Υ
ץꥱưʤᡤxygwin Υ󥹥ȡˡ
Cygwin 򥤥󥹥ȡ뤹뤳Ȥ侩롥

EDK˴ޤޤGNUγȯĶϡxygwinư뤳˺Ƥ뤿
ᡤCygwin make ƤӽФ票顼ɽʤȤä
롥ΤᡤXilinx  Web ȡ
http://www.xilinx.com/guest_resources/gnu/index.htmˤGNUΥ
ɤ Cygwin Ѥ˹ۤ롥


1.2 ƥ๽

̾ΥåȤξϡ./config ʲ

   ʥץå/ʥåȥܡ1
                 /ʥåȥܡ2

Ȥǥǥ쥯ȥ꤬Ƥꡤʥץåˤϥץå
ץåѥåIC˥ѥå줿Τ򼨤ץ
å¸ȸƤ֡ʥåȥܡɡˤϤICܤܡɰ¸ε
ǽˤĤƤΥɤ֤ƤǥåȰ¸ȸƤ֡
Microblaze ϡƥ๽ͳѹǤ뤿ᡤΤ褦Τ
ʬϤǤʤǡFDMPͥư뤿ɬ׺Ǿ¤ι
ץå¸Ȥơʥץåˤ֤ץå¸Ȥ
ΡFDMPͥư뤿κǾʲ˼

 INTCʳߥȥ
   쥸 IVRSIECIE쥸ɬ
 TIMUARTLITE
   INTC³ʳߤͭˤ
 OPB_SPIN_LOCK/SPIN_LOCK
   ¾ϩ
 OPB_INTERPROC_INT
   ץåֳ߲ϩ

ʳεǽΥɤϥåȰ¸Ȥơʥåȥܡɡ˰
Υǥ쥯ȥ֤롥

ۥѥå˴ޤޤƤ륿åȰ¸ʲ˼줾ΰ¸
Ͼ嵭ΥǥХΥɥ쥹䥳ѥ륪ץ󤬰ۤʤǥɤ
ۤ

  ./multimedia 
    Xilinx Xilinx MultiMedia Board 

1.4 ƥॳե졼

    ʥƥFDMPͥưϡŬʥåȰ
    ¸Υե١˥ƥ๽ˤ碌ƽ񤭴Ф褤
    ƥԽɬפܤʲ˼

      ./sys_defs.h
        STACKTOP    : åɥ쥹
        TIMER_CLOCK : ޡå
        TIC_NUME    : ƥåʬ
        TIC_DENO    : ƥåʬ
        INTC_BASE   : INTCΥ١ɥ쥹
        TIMER_BASE  : TIMERΥ١ɥ쥹
        UART_BASE   : UART١ɥ쥹
        TIMINTLVL   : TIMERγֹ
        UARTINTLVL  : UARTγֹ

      ./Makefile.config
        COPTS              : ѥ륪ץ
        LIBS               : 饤֥
        LDFLAGS            : 󥫥ץ
        TEXT_START_ADDRESS : TEXTΥȥɥ쥹
        DATA_START_ADDRESS : DATAΥȥɥ쥹
        


     ǥեȤȤΥ󥫥ץȤȤƤϡ./microblaze/mbelf.l 
     ѰդƤ롥Υ󥫥ץȤǤϡɥ쥹text,data
     2Ĥꤹ뤳ȤǽǤ롥ʣʥޥåԥ󥰤Ԥ
     ϡ󥫥ץȤ򿷤˺ 嵭 LDSCRIPT ˻ꤹ
     Ф褤


1.3 ݡȤ뵡ǽγ

Microblaze ¸εǽȤơǽɾѥƥﻲȵǽvxget_tim
򥵥ݡȤƤ롥ߥޥѹ(chg_ixxget_ixx)ȡ
ߤζػߤȵġdis_intena_intˤϥݡȤƤʤ


1.4 »
 CPU㳰ǽCPU㳰ϥɥ
   Microblaze ˤCPU㳰Υ٥Ϥ뤬ȯװʤΤᡤ
   CPU㳰ǽCPU㳰ϥɥϥݡȤʤ



Microblaze ץå¸εǽ

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

2.1 ǡ

signed int unsigned intΥ 32ӥåȤǤ롥

2.2 ߴǽȳߥϥɥ

DEF_INH ǻꤹߥϥɥֹinhnoˤϡMHSեǥǥХ
˻ꤷͥ٤ɽΥǡINHNOˤ unsigned int
Ƥ롥DEF_INH ǡͥ٤ȤͭǤʤͤ䡤ºݤγ
ͥ٤Ȥϰۤʤֹꤷưݾڤʤ


2.4 ȥåץ⥸塼

Microblaze ¸Υȥåץ⥸塼start.SˤǤϡν
Ԥ

(A) MSRν

åȿǤMSR롥MDMѤƤʤɤϡ
BIPӥåȤ'1'ȤʤäƤ礬뤿ᡤrtbd̿ˤꥯꥢ롥

(B) ⡼ǡ󥫡ȥåݥ󥿤ν

ǽˡRead-only small data area anchorR2ˤRead-write small data
area anchorR13ˤ

ˡߥåݥ󥿡R1ˤ STACKTOP - 4 ꤹ롥-4 
Τϡȥåץ롼ΥѤǤ롥


(C) 㳰/ߥ٥ؤΥϥɥϿ

0x0C-0x10 㳰٥㳰ϥɥexception_entryˤ0x10-0x14
ߥ٥˳ߥϥɥinterrupt_entryˤϿ롥


(D) hardware_init_hook θƽФ

hardware_init_hook  0 Ǥʤˤϡhardware_init_hook ƤӽФ
hardware_init_hook ϡͥ뤬ư˹Ԥɬפ륿
Ȱ¸νԤѰդƤ롥hardware_init_hook ɤǤ
Ƥʤ硤󥫤ǤΥܥ 0 ʥ󥫥
ץ˵Ҥˡ

(E) bssν

bss򥼥ꥢ롥ʤdataˤĤƤϡRAMλ
̤򸺤餹ŪǡROMбϹԤäƤʤ

(F) software_init_hook θƽФ

software_init_hook  0 Ǥʤˤϡsoftware_init_hook ƤӽФ
software_init_hook ϡͥ뤬ư˹Ԥɬפ륽եȥ
ĶʶŪˤϡ饤֥˰¸νԤѰդƤ롥
software_init_hook ɤǤƤʤ硤󥫤ǤΥ
 0 ʥ󥫥ץ˵Ҥˡ

(G) ͥεư

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


2.5 ǽɾѥƥﻲȵǽ

Microblaze ¸Ǥϡǽɾѥƥﻲȵǽvxget_timˤ
ݡȤƤ롥ǽɾѥƥ٤ϥޤ˶뤹륯å
ˤäƷޤ롥ʤSYSUTIM UD64ӥåȤ̵ˤ
Ƥ롥


2.6 ꥢ륤󥿥եɥ饤

Microblze ¸Υꥢ륤󥿥եɥ饤ФϡUART 򥵥ݡȤ
Ƥ롥ͥΥϤȤƻѤ UART  INTC³Ƴ
ͭˤơΥɥ쥹./sys_config.h  UART_BASE Ȥ
Ф褤


2.7 å

åͭ/̵ϥƥεư齪λޤǰΧȤ桼
ѹƤ⤽ѹϤΥΤߤͭȤ롥åͭȤ
ˤϡƥ¸ sys_defs.h ǡD_CACHE_ENABLE  I_CACHE_ENABLE
 define Ф褤

¾

5.1 ǥ쥯ȥꡦե빽

Microblaze åȰ¸γƥեγפϼ̤ꡥ

    config/microblze/
        Makefile.config    Makefile  Microblaze¸
        cpu_defs.h         ץå¸Υץꥱ
        cpu_config.h       ץå¸ι
        cpu_config.c       ץå¸δؿ
        cpu_support.S      ץå¸Υ֥롼
        cpu_context.h      ƥ
        makeoffset.c       offset.h ݡȥץ
        cpu_insn.h         ٥Υץå롼
        start.S            ȥåץ⥸塼
        mbelf.ld           󥫥ץ
        mp_config.h        ޥץåѤΥץå¸      
        mp_config.c        ޥץåѤΥץå¸δؿ
        cpu_rename.def     ͥ̾Υ͡
        cpu_rename.h       ͥ̾Υ͡
        cpu_unrename.h     ͥ̾Υ͡
        microblaze.h       Microblaze 
        microblaze.c       Microblaze ѥ
        microblaze_asm.inc Microblaze Υ֥ޥ
        hw_serial.h        SIOɥ饤
        hw_serial.cfg      SIOɥ饤ФΥե졼ե
        hw_timer.h         롼
        tool_defs.h        ȯĶ¸ΥץꥱGNUȯĶѡ
        tool_config.h      ȯĶ¸ιGNUȯĶѡ


    config/microblaze/multimedia
        Makefile.config    Makefile  MIRE_MULTI ¸
        sys_defs.h         ƥ¸Υץꥱ
        sys_config.h       ƥ¸ι
        sys_config.c       ƥ¸δؿ
        sys_support.S      ƥ¸Υ֥롼
        sys_rename.def     ͥ̾Υ͡
        sys_rename.h       ͥ̾Υ͡
        sys_unrename.h     ͥ̾Υ͡




5.2 ݡ

Хȯ toppers-users  ML ⤷ϡMicroblaze 
¸γȯԤΰʲΥ᡼륢ɥ쥹Ϣĺ

  honda@ertl.jp


ޤʲΥڡǤ⥵ݡȤԤͽǤ롥

  http://www.ertl.jp/~honda/microblaze


ʾ


