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

            Release 1.2бǽ: 14-Nov-2001

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

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

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

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

 @(#) $Id: arm7tdmi.txt,v 1.5 2001/11/14 10:14:44 honda Exp $
------------------------------------------------------------------------


ARM7TDMI åȰ¸γ

1.1 åȥƥȳȯĶ

ARM7TDMIץåΥåȥƥȤƤϡCPUARM7TDMIѤƤ
KS32C50100ܤARMҤEvaluator-7T򥵥ݡȤƤ롣
ȯĶˤϡGCC ʤɤ GNUȯĶѤ֥ȥեե
ޥåȤ ELF ɸȤ롣

1.2 ݡȤ뵡ǽγ

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


1.3 ¾ΥåȤؤΥݡƥ

СǤϡKS32C50100˰¸߷פȤʤäƤ롥Τᡤ¾
ARM7TDMIѤCPU˰ܿ硤cpu_support.cΥǥѥåϢ
CPUξִطΥѹɬפ롥ʤߴϢεǽ
ϡƥ¸˵ҤƤ롥


1.4 GDB 

TOPPERS/JSP ͥ GDB ֤ȶ˻Ѥ뤳ȤˤƤ롣
Τᡢsys_putc ϥָƤӽФǼ¸ߥϥɥϥ
ͳǸƤФ롣


1.5 ꥢݡ

֤ˤ GDB Ȥ̿ȡͥΥѤ2ĤΥꥢݡ
Ѥ롣GDBѤ̿ݡȤȥͥΥѥݡȤϼ
ˤʤäƤ롥ʤƤΥݡȤˤ ǡ:
8bit,Parity:none,Stop:1bitǤ롣

                  GDB ̿          ͥ
Evaluator-7T   COM1:57600bps         COM2:19200bps     


1.6 ThumbɤˤĤ

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



ARM7TDMI ץå¸εǽ

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


2.1 ǡ

int unsigned intΥ 32ӥåȤǤ롣

2.2 ߴǽȳߥϥɥ

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


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


2.3 CPU㳰ǽCPU㳰ϥɥ

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

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


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


2.4 ȥåץ⥸塼

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

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

ǽˡץå⡼ɤø⡼ɡ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 ǽɾѥƥﻲȵǽ

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


3.3 ꥢ륤󥿥եɥ饤

ꥢ륤󥿥եɥ饤ФϡKS32C50100UART0򥵥ݡȤƤ롣


3.4 ޥå

CARD-E09A
¸Ǥϡΰ 0x00008000  0x00039fff 200KBǡΰ 
0x0003A000  200KB󥿥ƥѤΥåΰ 
0x00073fff ˳ݤƤ롣0x0c074000ʲϡ֤ΥꥢȤʤ
ƤꡢѤ뤳ȤǤʤ



ȯĶι

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


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

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

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

4.2.1 GCC-CORE
  Τޤޥѥ뤹ȡlibgcc,libcinterworkбˤʤʤᡤ
    ./gcc/config/arm/t-arm-elf
           MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork 
           MULTILIB_DIRNAMES += normal interwork 
           MULTILIB_EXCEPTIONS += *mapcs-26/*mthumb-interwork* 
   ˤĤƤ"#"򳰤ͭˤ롥   

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

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

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



¾

5.1 ǥ쥯ȥꡦե빽

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

    config/arm7tdmi/
	Makefile.config	MakefileARM7TDMI¸
    arm7tdmi.h      ARM7TDMI
	armelf.ld	    ӥåǥѥ󥫥ץ
	cpu_defs.h	    ץå¸Υץꥱ
	cpu_config.h	ץå¸ι
	cpu_config.c	ץå¸δؿ
	cpu_support.S	ץå¸Υ֥롼
	cpu_context.h	ƥ
	makeoffset.c	offset.h ݡȥץ
	cpu_insn.h	    ٥Υץå롼
    start.S         ȥåץ⥸塼



    config/arm7tdmi/evaluator_7t
	Makefile.config	MakefileEvaluator-7T¸
	evaluator7t.h   Evaluator-7Tϡɥ
	hw_serial.h	    ꥢ륤󥿥եǥХ롼
	hw_timer.h      롼
	sys_config.c	ƥ¸δؿ
	sys_config.h	ƥ¸ι
	sys_defs.h      ƥ¸Υץꥱ
	sys_support.S	ƥ¸Υ֥롼
