
              TOPPERS/JSPJ[l [UY}jA 
                  iMicroblaze ^[Qbgˑj

             iRelease 1.4.2ΉCŏIXV: 27-Jul-2005j
            iEmbedded Development KitiEDKj7.1Ήj

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


PDMicroblaze ^[Qbgˑ̊Tv

1.1 ^[QbgVXe

Microblaze vZbT̃^[QbgVXeƂẮCMicroblaze T|[g
Ă FPGA 𓋍ڂVXeT|[gĂDȂCJSPJ[l
삳ɂ́C64Kbytex̃KvłDVXeˑƂĈȉ
̃{[hT|[gĂD

EYDKeNmW[Y MIREFiFPGA:XCV400E-QFP240j
EYDKeNmW[Y MIREF-MULTIiFPGA:XC2V3000-FF1152j
E Xilinx Xilinx MultiMedia BoardiFPGA:XC2V2000-FF896j


1.2 J

Jɂ́CEDKɊ܂܂ĂGCC Ȃǂ GNUJpCIuWFN
gt@CtH[}bg ELF WƂD

PCł́CEDKCg[ƁCGNŮJ𓮍삳邽 xygwin C
Xg[DJSPJ[l̍\zɂ́Cperlg++(zXg)Ђ
Ȃ߁CCygwin CXg[KvD̃}VCygwin C
Xg[Cxygwin CXg[ Cygwin ̃AvP[V
삵Ȃ߁Cxygwin ̃CXg[ɁCCygwin CXg[
邱Ƃ𐄏D

EDKɊ܂܂GNŮJ́Cxygwinœ삷邱ƑOɍ쐬Ă邽
߁CCygwin make ĂяoꍇG[\ȂƂ
D̂߁CXilinx  Web TCgi
http://www.xilinx.com/guest_resources/gnu/index.htmjGNŨ\[X_
E[h Cygwin pɍ\zD


1.2 VXe\

ʏ̃^[Qbg̏ꍇ́C./config ȉ

   ivZbTj/i^[Qbg{[h1j
                 /i^[Qbg{[h2j

Ƃ\ŃfBNg쐬ĂCivZbTj̓vZbTR
AvZbTpbP[WICɃpbP[Wꂽ̂CvZb
TˑƌĂԁDi^[Qbg{[hj͂IC𓋍ڂ{[hˑ̋@\
ɂẴR[huĂꏊŃ^[QbgˑƌĂԁD
Microblaze ́CVXe\RɕύXł邽߁Ĉ悤ɖmȐ
蕪͂łȂDŁCJSPJ[l𓮍삳邽߂̕Kvŏ̍\
vZbTˑƂāivZbTjɒuDvZbTˑƂ
́CJSPJ[l𓮍삳邽߂̍ŏ\ȉɎD

 EINTCi݃Rg[j
   WX^ IVRCSIECCIEWX^Kv
 ETIMCUARTLITE
   INTCɐڑi݂Lɂj

ȊŐ@\̃R[h̓^[QbgˑƂāCi^[Qbg{[hj
̃fBNgɔzuD

zzpbP[WɊ܂܂Ă^[QbgˑȉɎDꂼ̈ˑ
͏L̃foCX̃AhXRpCIvVقȂ邾ŃR[h
قړD

  E./miref
   ijYDKfNmW[Y MIREF {[hp

  E./miref_multi
   ijYDKfNmW[Y MIREF-MULTI {[hp

  E./multimedia 
    Xilinx Xilinx MultiMedia Board p



1.4 VXeRtBM[V

    VȃVXeJSPJ[l𓮍삳ꍇ́CKȃ^[Qbgˑ
    ̃t@Cx[XɃVXe\ɂ킹ď΂悢D
    VXeɕҏWKv鍀ڂȉɎD

      E./sys_defs.h
        STACKTOP    : X^bNAhX
        TIMER_CLOCK : ^C}[NbN
        TIC_NUME    : ^CeBbN̕q
        TIC_DENO    : ^CeBbN̕
        INTC_BASE   : INTC̃x[XAhX
        TIMER_BASE  : TIMER̃x[XAhX
        UART_BASE   : UARTx[XAhX
        TIMINTLVL   : TIMER̊ݔԍ
        UARTINTLVL  : UART̊ݔԍ

      E./Makefile.config
        COPTS              : RpCIvV
        LIBS               : Cuw
        LDFLAGS            : JIvV
        TEXT_START_ADDRESS : TEXTZNṼX^[gAhX
        DATA_START_ADDRESS : DATAZNṼX^[gAhX
        


     fBtHgƂ̃JXNvgƂẮC./microblaze/mbelf.l 
     pӂĂD̃JXNvgł́CAhXtext,dataZNV
     2w肷邱Ƃ\łDɕGȃ}bsOs
     ꍇ́CJXNvgVɍ L LDSCRIPT Ɏw肷
     ΂悢D


1.3 T|[g@\̊Tv

Microblaze ˑ̋@\ƂāC\]pVXeQƋ@\ivxget_timj
T|[gĂD݃}XN̕ύXEQ(chg_ixxCget_ixx)ƁC
݂̋֎~Ƌidis_intCena_intj̓T|[gĂȂD


1.4 
 ECPUO@\CPUOnh
   Microblaze ɂCPUÕxN^͂邪CvȂD̂߁C
   CPUO@\CPUOnh̓T|[gȂD



QDMicroblaze vZbTˑ̋@\

̐߂ł́CJ[lуVXeT[rX̋@\̒ŁCMicroblaze 
̕ɂĉD

2.1 f[^^

signed int^ unsigned int^̃TCY 32rbgłD

2.2 ݊Ǘ@\Ɗ݃nh

DEF_INH Ŏw肷銄݃nhԍiinhnoj́CMHSt@CŃfoCX
Ɏw肵ݗDx\C̃f[^^iINHNOj unsigned int^
`ĂDDEF_INH ŁCݗDxƂėLłȂlCۂ̊
ݗDxƂ͈قȂԍw肵ꍇ͕̓ۏ؂ȂD


2.4 X^[gAbvW[

Microblaze ˑ̃X^[gAbvW[istart.Sjł́C̏
sD

(A) MSȐ

LbV̐ݒ𔽉fMSRDMDMgpĂꍇȂǂ́C
BIPrbg'1'ƂȂĂꍇ邽߁Crtbd߂ɂNAD

(B) X[f[^AJ[̐ݒƃX^bN|C^̏

ŏɁCRead-only small data area anchoriR2jRead-write small data
area anchoriR13j

ɁC݃X^bN|C^iR1j STACKTOP - 4 ɐݒ肷D-4 
̂́CX^[gAbv[`̃[NpłD


(C) O/݃xN^ւ̃nh̓o^

0x0C-0x10 ̗OxN^ɗOnhiexception_entryjC0x10-0x14
݃xN^Ɋ݃nhiinterrupt_entryjo^D


(D) hardware_init_hook ̌ďo

hardware_init_hook  0 łȂꍇɂ́Chardware_init_hook ĂяoD
hardware_init_hook ́CJ[lNOɍsKv^[Qb
gˑ̏s߂ɗpӂĂDhardware_init_hook ǂł
`ĂȂꍇCJł̃V{ 0 ɒ`iJXN
vgɋLqjD

(E) bssZNV̏

bssZNV[NADȂCdataZNVɂẮCRAM̎g
pʂ炷ړIŁCROMɑΉ͍sĂȂD

(F) software_init_hook ̌ďo

software_init_hook  0 łȂꍇɂ́Csoftware_init_hook ĂяoD
software_init_hook ́CJ[lNOɍsKv\tgEF
Ai̓Iɂ́CCujˑ̏s߂ɗpӂĂD
software_init_hook ǂł`ĂȂꍇCJł̃V{
 0 ɒ`iJXNvgɋLqjD

(G) J[l̋N

kernel_start ֕򂵁CJ[lNDkernel_start 烊^[
Ă邱Ƃ͑z肵ĂȂD


2.5 \]pVXeQƋ@\

Microblaze ˑł́C\]pVXeQƋ@\ivxget_timjT
|[gĂD\]pVXe̐x̓^C}ɋNbN
ɂČ܂DȂCSYSUTIM^ UD^i64rbg̕^jɒ
`ĂD


2.6 VAC^tF[XhCo

Microblze ˑ̃VAC^tF[XhCóCUART T|[g
ĂDJ[l̃Oo͂ƂĎgp UART  INTCɐڑĊ
LɂāC̃AhX./sys_config.h  UART_BASE ƂĒ`
΂悢D


2.7 LbV

LbV̗L/̓VXe̋NI܂ňꗥŒƂC[U[
ύXĂ̕ύX͂̃^XN݂̂ŗLƂDLbVLƂ
ɂ́CVXeˑ sys_defs.h ŁCD_CACHE_ENABLE  I_CACHE_ENABLE
 define ΂悢D

TD̑

5.1 fBNgEt@C\

Microblaze ^[Qbgˑ̊et@C̊Tv͎̒ʂD

    config/microblze/
        Makefile.config    Makefile  Microblazeˑ`
        cpu_defs.h         vZbTˑ̃AvP[Vp`
        cpu_config.h       vZbTˑ̍\`
        cpu_config.c       vZbTˑ̊֐
        cpu_support.S      vZbTˑ̃Tu[`
        cpu_context.h      ReLXg
        makeoffset.c       offset.h T|[gvO
        cpu_insn.h         ჌x̃vZbT샋[`
        start.S            X^[gAbvW[
        mbelf.ld           JXNvg
        cpu_rename.def     J[l̓ʖ̃l[`
        cpu_rename.h       J[l̓ʖ̃l[
        cpu_unrename.h     J[l̓ʖ̃l[
        microblaze.h       Microblaze ̒`
        microblaze.c       Microblaze pR[h
        microblaze_asm.inc Microblaze ̃AZu}N
        hw_serial.h        SIOhCo
        hw_serial.cfg      SIOhCõRtBM[Vt@C
        hw_timer.h         ^C}샋[`
        tool_defs.h        Jˑ̃AvP[Vp`iGNUJpj
        tool_config.h      Jˑ̍\`iGNUJpj

    config/microblaze/miref
        Makefile.config    Makefile  MIREF ˑ`
        sys_defs.h         VXeˑ̃AvP[Vp`
        sys_config.h       VXeˑ̍\`
        sys_config.c       VXeˑ̊֐
        sys_support.S      VXeˑ̃Tu[`
        sys_rename.def     J[l̓ʖ̃l[`
        sys_rename.h       J[l̓ʖ̃l[
        sys_unrename.h     J[l̓ʖ̃l[

    config/microblaze/mire_multi
        Makefile.config    Makefile  MIRE_MULTI ˑ`
        sys_defs.h         VXeˑ̃AvP[Vp`
        sys_config.h       VXeˑ̍\`
        sys_config.c       VXeˑ̊֐
        sys_support.S      VXeˑ̃Tu[`
        sys_rename.def     J[l̓ʖ̃l[`
        sys_rename.h       J[l̓ʖ̃l[
        sys_unrename.h     J[l̓ʖ̃l[

    config/microblaze/multimedia
        Makefile.config    Makefile  MIRE_MULTI ˑ`
        sys_defs.h         VXeˑ̃AvP[Vp`
        sys_config.h       VXeˑ̍\`
        sys_config.c       VXeˑ̊֐
        sys_support.S      VXeˑ̃Tu[`
        sys_rename.def     J[l̓ʖ̃l[`
        sys_rename.h       J[l̓ʖ̃l[
        sys_unrename.h     J[l̓ʖ̃l[




5.2 ^[Qbgւ̃_E[hƎs

^[Qbgւ̃_E[hƎs菇ɂẮCGNUJ\z}j
AɐĂDJSPJ[l̓^[Qbg xmdstub gݍ񂾏
Ԃ GDB _E[hs邱ƂłD



5.3 T|[g

oO𔭌ꍇ toppers-users  ML ɕ񍐂́CMicroblaze 
̊J҂̈ȉ̃[AhXɘAĒ

  honda@ertl.jp


܂Cȉ̃y[WłT|[gs\łD

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


ȏ


