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

          Release 1.4.3бǽ: 10-May-2007

------------------------------------------------------------------------ 
 TOPPERS/JSP Kernel
     Toyohashi Open Platform for Embedded Real-Time Systems/
     Just Standard Profile Kernel

 Copyright (C) 2000-2007 by Embedded and Real-Time Systems Laboratory
                             Toyohashi Univ. of Technology, JAPAN

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

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

 @(#) $Id: armv4.txt,v 1.11 2007/05/11 06:07:54 honda Exp $
------------------------------------------------------------------------


ARMv4 åȰ¸γ


1.1 åȥƥȳȯĶ

ARMV4 ץåΥåȥƥȤƤϡARMv4ƥCPU
ܤʲΥܡɤ򥵥ݡȤƤ롥ʤThumb̿ϥݡ
ȤƤʤ

  ARM Integrator/CM922T-ETM(ARM922T) + Integrator/AP
  YDK AZ9360MB(ARM926EJ-S)

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

IntegratorǤϡ¹ԴִĶȤJTAG-ICEѤ뤳ȤꤷƤ롥
JTAG-ICEȤƤϡARM Multi-ICE ȡեƥॺ
UniSTAC II/J ETM for ARM9 ưǧƤ롥


1.2 ݡȤ뵡ǽγ

ARMv4 ¸εǽȤơǽɾѥƥﻲȵǽ(vxget_tim)򥵥
ȤƤ롣ߤζػߤȵ(dis_intena_int)ϥݡȤƤʤ


1.3 ¾ΥåȤؤΥݡƥ

¾ΥåȤ˥ݡƥ󥰤뤿ˤϡƥ¸˰ʲΥ
ɬפȤʤ롥
 
  ߤνsys_support.S
  ޡɥ饤
  ꥢɥ饤


1.4 Integrator ν


1.5 ꥢݡ

Integrator ǤIntegrator/AP  UART 򥫡ͥѤ˻Ѥ롥
ǥեȤǤϡ®115200bps,ǡ:8bit,Parity:none,Stop:1bitǤ
롣


1.6 ThumbɤˤĤ

ThumbɤѤˤĤƤϡǤϥݡȤƤʤ


ARMv4 ץå¸εǽ

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


2.1 ǡ

int unsigned intΥ 32ӥåȤǤ롣

2.2 ߴǽȳߥϥɥ

ͥγߤȤƤ FIQ롣äơCPUå֤
롼ǤϡFIQ ʳγߤϤ٤ƶػߤƤ롣Ūˤϡ
CPSR(ȥץ֥쥸)IRQػߥӥå(ӥå7) 1 
ꤵ롣


DEF_INH ǻꤹߥϥɥֹ(inhno)ϡKS32C50100 Ǽե⥸塼
ƤֹǤ롥LH79532 Ǥϳߥȥ
γƥֹͥǤ롣ǡ(INHNO) unsigned intƤ
롣


2.3 CPU㳰ǽCPU㳰ϥɥ

DEF_EXC ǻꤹߥϥɥֹ(excno)ϡARMv4 Ƥ롤
㳰װǤ롥Υǡ(EXCNO) unsigned int Ƥ롣
DEF_EXC ǡ㳰ֹȤͭǤʤͤ䡢CPU㳰бʤֹ
ꤷưݾڤʤ

CPU㳰ϥɥϤp_excinfϡCPU㳰ȯΥƥȤ¸
åؤΥݥ󥿤Ϥ롥åι¤ʲ˼


      ----------------------
     |        CPSR          |  <-- p_excinf
      ----------------------
     |         R0           |
      ----------------------
     |         R1           |
      ----------------------
     |         R2           |
      ----------------------
     |         R3           |
      ----------------------
     |         ip           |
      ----------------------
     |         lr           |
      ----------------------
     |         PC           |
      ----------------------


2.4 ȥåץ⥸塼

ARMv4 ¸Υȥåץ⥸塼(start.S)ǤϡνԤ

(A) ץå⡼ɤνȥåݥ󥿤ν

ǽˡץå⡼ɤ򥹥ѡХ⡼(SVC)IRQ,FIQߤػ
ˤ롥

ˡåݥ(sp) STACKTOP ꤹ롣ǳߥ
ݥ󥿤ꤵ줿åΰϡͥ뵯ư󥿥ƥ
ѤΥåΰȤƻȤ롣STACKTOP ϡsys_config.h 
뤳ȤꤷƤ롣

(B) hardware_init_hook θƽФ

hardware_init_hook  0 Ǥʤˤϡhardware_init_hook ƤӽФ
hardware_init_hook ϡͥ뤬ư˹Ԥɬפ륿
Ȱ¸νԤѰդƤ롣hardware_init_hook ɤǤ
Ƥʤ硢󥫤ǤΥܥ 0 (󥫥
ץ˵Ҥ)

(C) bss dataν

bss򥼥ꥢ롣ޤdata롣

(D) software_init_hook θƽФ

software_init_hook  0 Ǥʤˤϡsoftware_init_hook ƤӽФ
software_init_hook ϡͥ뤬ư˹Ԥɬפ륽եȥ
Ķ(Ūˤϡ饤֥)¸νԤѰդƤ롣
software_init_hook ɤǤƤʤ硢󥫤ǤΥ
 0 (󥫥ץ˵Ҥ)

(E) ͥεư

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



ƥ¸εǽ


3.1 ƥ९åɥ饤

ƥ९åɥ饤Ф isig_tim ƤӽФϡsys_defs.h  
TIC_NUME  TIC_DENO Ƥ(ɸ 1ߥü)
ѹ뤳Ȥǡisig_tim ƤӽФѹ뤳ȤǤ롣
ޤ٤ 1äǤ뤿ᡢ1ñ̤üˤʤͤꤷ
ˤϡisig_tim θƽФ˸뤳Ȥˤʤ롣


3.2 ǽɾѥƥﻲȵǽ

ARMv4 ¸Ǥϡǽɾѥƥﻲȵǽ(vxget_tim)򥵥ݡȤ
Ƥ롣ǽɾѥƥ٤ 1ñ̤Ǥ뤬ޤθ
ɤ߽Ф˰Ū˥ޤߤɬפ뤿ᡢvxget_tim 
٤˥ƥ९åŤ٤뤳Ȥˤʤ롣ʤSYSUTIM UD
(64ӥåȤ̵)Ƥ롣


3.3 ꥢ륤󥿥եɥ饤

Integrator ¸ǤϡIntergrator/AP UART 򥵥ݡȤƤ롥


ȯĶι

ȯĶιˡˤĤƤϡGNUȯĶۥޥ˥奢򻲾ȤΤȡ


4.1 ȯĶΥС
ưǧġΥСϰʲ̤Ǥ롥

    BINUTILS : 2.11.2
    GCC-CORE : 3.0.2
    GDB      : 5.0
    NEWLIB   : 1.9.0

⤷

    BINUTILS : 2.14
    GCC-CORE : 3.3
    GDB      : 5.3
    NEWLIB   : 1.11.0

4.2 ġ륽ν
嵭ΥСΥġۤ뤵ʲνɬפȤʤ롥

4.2.1 GDB
   ./gdb/rdi-share/devsw.c
     39ܡ69 struct tm lmƤԤ򥳥ȥȤ롥
   

4.3 GDB֤ˤץΥ
     ۥPCȥܡɤ򥷥ꥢ륱֥ǷҤgdb˥ɤ
     ץꤹ롥
     ˰ʲΥޥɤ¹Ԥ롥ttySXXXXϥꥢ³Ƥ
     ݡֹǤ롥

           set remotebaud 57600 
           set endian little 
           set rdi /dev/ttySXX 
      ϡloadǥץɤơcontinueǼ¹Ԥ롥
      ޤCtrl-CưΥץߤǤ롥



¾

5.1 ǥ쥯ȥꡦե빽

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

    config/armv4/
        Makefile.config MakefileARMv4¸
        armelf.ld       ӥåǥѥ󥫥ץ
        armv4.h         ARMv4
        cpu_config.c    ץå¸δؿ
        cpu_config.h    ץå¸ι
        cpu_context.h   ƥ
        cpu_defs.h      ץå¸Υץꥱ
        cpu_insn.h      ٥Υץå롼
        cpu_rename.def  ͥ̾Υ͡
        cpu_rename.h    ͥ̾Υ͡
        cpu_support.S   ץå¸Υ֥롼
        cpu_unrename.h  ͥ̾Υ͡
        makeoffset.c    offset.h ݡȥץ
        start.S         ȥåץ⥸塼
        tool_config.h   ȯĶ¸ιGNUȯĶѡ
        tool_defs.h     ȯĶ¸ΥץꥱGNUȯĶѡ

    config/armv4/integrator
        Makefile.config Makefile Integrator ¸
        hw_serial.cfg   SIOɥ饤ФΥե졼ե
        hw_serial.h     SIOɥ饤
        hw_timer.h      롼
        integrator.c    Integrator ϡɥؿ
        integrator.h    Integrator ϡɥ
        integrator.ld   Integrator 󥫥ץ
        sys_config.c    ƥ¸δؿ
        sys_config.h    ƥ¸ι
        sys_defs.h      ƥ¸Υץꥱ
        sys_rename.def  ͥ̾Υ͡
        sys_rename.h    ͥ̾Υ͡
        sys_support.S   ƥ¸Υ֥롼
        sys_unrename.h  ͥ̾Υ͡
