                TOPPERS/JSPͥ 桼ޥ˥奢 
                            H8 åȰ¸
   
               Release 1.3бǽ: 10-Apl-2002
   
   ------------------------------------------------------------------------ 
    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
    Copyright (C) 2001 by Industrial Technology Institute,
                                Miyagi Prefectural Government, JAPAN
    Copyright (C) 2001,2002 by Dep. of Computer Science and Engineering
                     Tomakomai National College of Technology, JAPAN
   
    嵭ԤϡFree Software Foundation ˤäƸɽƤ 
    GNU General Public License  Version 2 ˵ҤƤ狼
    (1)(4)ξ˸¤ꡤܥեȥܥեȥ
    ѤΤޤࡥʲƱˤѡʣѡۡʰʲ
    ѤȸƤ֡ˤ뤳Ȥ̵ǵ롥
    (1) ܥեȥ򥽡ɤηѤˤϡ嵭
        ɽѾ浪Ӳ̵ݾڵ꤬Τޤޤηǥ
        ˴ޤޤƤ뤳ȡ
    (2) ܥեȥѲǽʥХʥꥳɡʥ֥륪
        ȥե饤֥ʤɡˤηѤˤϡ
        ȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭ɽ
        Ѿ浪Ӳ̵ݾڵǺܤ뤳ȡ
    (3) ܥեȥԲǽʥХʥꥳɤηޤϵ
        ߹ѤˤϡΤ줫ξȡ
      (a) ѤȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭
          ɽѾ浪Ӳ̵ݾڵǺܤ뤳ȡ
      (b) Ѥη֤̤ˡˤäơ嵭Ԥ𤹤
          ȡ
    (4) ܥեȥѤˤľŪޤϴŪ뤤ʤ»
        ⡤嵭Ԥդ뤳ȡ
   
    ܥեȥϡ̵ݾڤ󶡤ƤΤǤ롥嵭Ԥϡ
    ܥեȥ˴ؤơŬѲǽޤơʤݾڤԤ
    ʤޤܥեȥѤˤľŪޤϴŪ
    ʤ»˴ؤƤ⡤Ǥʤ
   
    @(#) $Id: h8.txt,v 1.3 2002/04/10 10:40:53 honda Exp $
   ------------------------------------------------------------------------

1.  H8 åȰ¸γ

1. 1  åȥƥȳȯĶ

  H8 ץåΥåȥƥϡH8/3048F  H8/3067F ܤ
ʲΥܡɤǤ롣

   () Ż̾ AKI-H8/3048F
   () Ż̾ AKI-H8/3067F

ʤ⤷ʤ 1 ĤκǾǤ⡢ɬפ RAM ̤ H8 ¢
RAM ̤ 4[Kbyte] Ķ롣Τᳰ RAM ߤɬפǡ 
ɥ쥹֤ͭˤɬפ롣 ߤιǤϡH8/3048F ⡼ 5
¢ ROM ͭĥ 1M Хȥ⡼ɡH8/3067F ⡼ 5 ¢ ROM ͭ
ĥ 16M Хȥ⡼ɤꤷƤ롣
  ȯĶϡWindows 2000  cygwin γȯĶѤޤ ǥХ
⡼ɤȥ꡼⡼ɤǥ⥸塼μ¹ˡۤʤäƤ롣ǥХå
⡼ɤǤ () Ż̾Υ˥ǥХå H8 ¢եå
ROM ˽񤭹ߡ ǥХå⥸塼 RAM ˥ɤƥǥХå
Ԥ꡼⡼ɤǤϡǥХåνλ⥸塼¢եå
ROM ˽񤭹ळȤꤷƤ롣ǥХå⡼ɤȥ꡼⡼ɤڤ
ؤϡ ǥ쥯ȥ $(CPU)/$(SYS) ˤ Makefile.config 
AKI_MONITOR ˤ롣

1. 2  ݡȤ뵡ǽγ

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

1. 3  ¾ΥåȤؤΥݡƥ

  H8/300H ꡼ǤСݡƥ󥰤ưפ˽Ȼפ롣ޤ
H8S ꡼ H8S/2350 ؤΥݡƥ󥰤ԤƤꡢŪ H8 
H8S ꡼礹ͽǤ롣

1. 4  ꥢݡ (SCI)

  H8/3048F ˤ SCI0  SCI1  2 ܡ H8/3067F ˤ SCI0  SCI2 
3 ܤΥꥢݡȤꡢ sys_config.h Ƥ NUM_PORT ˤ
겿ܻѤ뤫Ǥ롣 ߤμǤ 2 ܤޤǻѤǤ롣JSP 
ͥΥѤˤ SCI1 ѤƤ롣ꥢݡȤʲ


   ܡ쥤ȡH8/3048F  9600[bps]H8/3067F  19200[bps]
   ǡĹ8 ӥå
   ȥåץӥåȡ1 ӥå
   ѥƥʤ

2.  H8 ץå¸εǽ

  ͥȥƥॵӥǽǡ H8 ¸ʬˤĤƲ⤹롣 

2. 1  ǡ

  int  unsigned int Υ 32 ӥåȤǤ롣

2. 2  ߴǽȳߥϥɥ

  NMI ϥͥγߤǤ롣 CCR 쥸 I ӥåȤ UI
ӥåȤ򥻥åȤ뤳ȤˤäơCPU å롼ǡ NMI
ʳγߤƶػ߲ǽǤ롣 
  H8 γߥޥϡCCR 쥸 I ӥåȤ UI ӥåȤǤ뤬
Ǥ SYSCR 쥸 UE ӥåȤ򥯥ꥢI ӥåȤ 1 ˸ꤷơ
UI ӥåȤΤγߤ椷Ƥ롣
  ¢ǥХ䳰ߤϸ̤Υ쥸ˤӥåȤΥޥȡ
ͥ쥸 (IPRA  IPRB) θ̳ߤͥ٤椷Ƥ롣
ޥʬƤΤǡ chg_ipm  IPM ǽϥݡȤƤ
ʤ

2. 3  CPU 㳰ǽ CPU 㳰ϥɥ

  ߥϥɥֹΥǡ (EXCNO)  unsigned int 
롣 H8 γߤ CPU 㳰٥ ROM ΰˤꡢưŪƤѹ
뤿ˤ̤ˡɬפǤ뤿ᡢưŪʥϥɥϿǽϤʤ
äơߥϥɥؿ define_inh CPU 㳰ϥɥ
 define_exc ϡ⤷ʤؿǤ롣

2. 4  ȥåץ⥸塼

  H8 ¸Υȥåץ⥸塼 (start.S) ϼ˼¹Ԥ
塢 ͥ (kernel_start) ư롣kernel_start 
Ƥ뤳ȤꤷƤʤ

   (1)   åݥ󥿤

   (2)   hardware_init_hook θƽФ
           hardware_init_hook  0 ǤʤСhardware_init_hook 
         Фhardware_init_hook ϥͥưˡå
         ¸ΥϡɥŪʽԤѰդƤ롣 ܼ
         Ǥϡ SYSCR 쥸 UE ӥåȤΥꥢͥ쥸
          (IPRA  IPRB) θ̳ߤͥ٤ꡢ 
         ֤ͭԤäƤ롣hardware_init_hook ̤ξ硢
         󥫥ץȤεҤˤꤳΥܥ뤬 0 롣 

   (3)   bss ν
           bss ΰ 0 ꥢ롣

   (4)   data ν
           data  RAM ž롣

   (5)   software_init_hook θƽФ
           software_init_hook  0 ǤʤСsoftware_init_hook 
         Фsoftware_init_hook ϥͥưˡեȥ
         Ķ (饤֥) ¸νԤѰդƤ롣
         㤨С饤֥νʤɤǤ롣software_init_hook 
         ̤ξ硢󥫥ץȤεҤˤꤳΥܥ뤬 0 
         롣

2. 5  ȯΥå̤ˤĤ

  ߥͥȥ٥뤬 0 ǳߤȯȡ Ωѥå
˥쥸¸塢ѥåڤؤ뤿ᡢΩ
ѥå̤ PC+CCR  ER0  ER6  32 ХȤǤ롣 SP(ER7)
ϳѤΥå¸롣 
  ߥͥȥ٥ 0 Ǥϡ Ωѥå˥쥸¸
뤿ᡢѤΥå̤ PC+CCR  ER0  ER6  32 Х
(ͥȿ-1) ȡߥͥȥ٥ 0 ¸ SP(ER7) 

   32Хȡ(ͥȿ - 1) + 4Х

Ǥ롣ǾǤϡ¿ųߤȯǥХϡޤȥꥢ
Ϥ 3 ĤʤΤǡѤΥå̤

   32Хȡ(3 - 1) + 4Х = 68 Х

Ǥ롣

3.  ƥ¸εǽ

3. 1  ƥ९åɥ饤

  ƥ९åɥ饤Ф isig_tim ƽФϡ sys_defs.h 
TIC_NUME  TIC_DENO ƤꡢǥեȤ 1[ms] Ǥ롣
ѹ뤳Ȥǡ isig_tim ƽФѹǤ롣
H8/3048F Υå 16[MHz] H8/3067F Υå 20[MHz] ξ硢
ޤ٤ 0.5[us] Τᡢ 0.5[us] ñ̤üˤʤͤꤹȡ
|isig_tim θƽФ˸ȯ롣
  ǥեȤΥåǥХ H8/3048F  ITU0 H8/3067F  16
ӥåȥޥ˥å 0 ѤƤ롣

3. 2  ǽɾѥƥﻲȵǽ

  H8 Ǥϡǽɾѥƥﻲȵǽ (vxget_tim) 򥵥ݡȤƤ
롣٤ 0.5[us] ǡSYSUTIM  UD  (64 ӥåʤ) 
롣

3. 3  ꥢ륤󥿥եɥ饤

  H8/3048F ˤ SCI0  SCI1  2 ܡ H8/3067F ˤ SCI0  SCI2 
3 ܤΥꥢݡȤꡢ sys_config.h Ƥ NUM_PORT ˤ
겿ܻѤ뤫Ǥ롣 ߤμǤ 2 ܤޤǻѤǤ롣JSP 
ͥΥѤˤ SCI1 ѤƤ롣

3. 4  ޥå

3. 4. 1  H8/3048F Υޥå

  ɥ쥹֤ͭˤɬפ뤿ᡢ⡼ 5 ¢ ROM ͭ
ĥ 1M Хȥ⡼ɤꤷƤ롣

   (1)   ǥХå

         0x00000 - 0x1ffff  ¢ ROM() Ż̾Υ˥ǥХå
         0x20000 - 0x3ffff   RAM.text.rodata
         0x40000 - 0xfef0f   RAM.data.bss
         0xfef10 - 0xfefff  ¢ RAM() Ż̾Υ˥ǥХå
         0xff000 - 0xff0ff  ¢ RAM۳ߥ٥ΰ (.vectors)
         0xff100 - 0xfff0f  ¢ RAMΩѥå
         0xfff10 - 0xfff1b   RAM
         0xfff1c - 0xfffff  ¢ I/O 쥸

   (2)   ꡼

         0x00000 - 0x1ffff  ¢ ROM.vectors.text.rodata
         0x20000 - 0xfef0f   RAM.data.bss
         0xfef10 - 0xfff0f  ¢ RAMΩѥå
         0xfff10 - 0xfff1b   RAM
         0xfff1c - 0xfffff  ¢ I/O 쥸

3. 4. 2  H8/3067F Υޥå

  ɥ쥹֤ͭˤɬפ뤿ᡢ⡼ 5 ¢ ROM ͭ
ĥ 16M Хȥ⡼ɤꤷƤ롣

   (1)   ǥХå

         0x000000 - 0x1fffff  ¢ ROM() Ż̾Υ˥ǥХå
         0x200000 - 0x2000ff  ¢ RAM۳ߥ٥ΰ (.vectors)
         0x200100 - 0x207f23   RAM.text.rodata.data.bss
         0x207f24 - 0x207fff   RAM() Ż̾Υ˥ǥХå
         0xee0000 - 0xee0081  ¢ I/O 쥸
         0xffef20 - 0xffff1f  ¢ RAMΩѥå
         0xffff20 - 0xffffe9  ¢ I/O 쥸

   (2)   ꡼

         0x000000 - 0x01ffff  ¢ ROM.vectors.text.rodata
         0x200000 - 0x207fff   RAM.data.bss
         0xee0000 - 0xee0081  ¢ I/O 쥸
         0xffef20 - 0xffff1f  ¢ RAMΩѥå
         0xffff20 - 0xffffe9  ¢ I/O 쥸

4.  ȯ

4. 1  ȯĶι

  ȯĶϡWindows 2000  cygwin γȯĶѤ ܼ
Сʲ˼

   binutils-2.11.2
   gcc-2.95.3
   newlib-1.9.0

configure Υץ --target=h8300-hms Ǥ롣 ޤbinutils 
configure Υץˤ --disable-nls ꤹ뤳ȡ
  ޤǥХåΤᡢ () Ż̾Υ˥ǥХåѤ
롣

4. 2  Makefile 

  Makefile դ٤ʲ˼

   (1)   CYGWIN
           Cygwin ǥѥ뤹 CYGWIN = true ͭˤ롣

   (2)   all: jsp.S
           ǽåȤ S 쥳ɥեΤᡢ all: $(JSPOBJ)
         򥳥ȥȤall: jsp.S ͭˤ롣

4. 3  åȤؤΥɤȼ¹

  åȤؤΥɤȼ¹Ԥˤϡ () Ż̾Υ˥
ХåѤˡľ H8/3048F Υեå ROM ˽񤭹Ǽ¹
ˡ롣

   (1)   H8/3048F  () Ż̾Υ˥ǥХåѤˡ
         (ǥХå⡼)
           ǥ쥯ȥ $(CPU)/$(SYS) ˤ Makefile  AKI_MONITOR =
         true ͭˤ make 롣ˡH8/3048F γ RAM ؤΥ
         ͭˤʤФʤʤ RAM ιˤۤʤ뤬
         ɥ쥹Х A0  A19 ȥǡХ D8  D15 ͭˤ
         ˤϡʲ˼ݡȤ 0xff 񤭹ࡣ

            Port   Address
            P1DDR  0xfffc0
            P2DDR  0xfffc1
            P3DDR  0xfffc4
            P5DDR  0xfffc8

         ǸüեȤѤ jsp.S  H8/3048F ž¹Ԥ
         롣

   (2)   H8/3067F  () Ż̾Υ˥ǥХåѤˡ
         (ǥХå⡼)
           ǥ쥯ȥ $(CPU)/$(SYS) ˤ Makefile  AKI_MONITOR =
         true ͭˤ make 롣H8/3067F Ǥϳ RAM ؤΥ
         ǤͭˤʤäƤ뤿ᡢä˲⤻ˡ üե
         Ѥ jsp.S  H8/3067F ž¹Ԥ뤳ȤǤ롣

   (3)   ¡եå ROM ˽񤭹Ǽ¹Ԥˡ (꡼⡼)
           ǥ쥯ȥ $(CPU)/$(SYS) ˤ Makefile.config Υǥ
         ȥ $(CPU)/$(SYS) ˤ Makefile  AKI_MONITOR = true 
         ȥȤ make 롣ˡ() Ż̾Υ
         å ROM 񤭹ߥץǡեå ROM ˽񤭹ࡣ

4. 4  H8/3048F γ RAM ͭ

  ꡼⡼ɤǤϡ sys_support.S  _hardware_init_hook ǡɥ
Х A0  A19 ȥǡХ D8  D15 ͭˤ塢ͥ
¹Ԥ롣 ʳ˥ɥ쥹ХȥǡХͭˤϡ
sys_config.h ΰʲʬŬԽ롣

   /*
    *  ɥ쥹
    */
   
   #if 0
   
   #define ENABLE_LOWER_DATA
   
   #define ENABLE_P8_CS    (H8P8DDR_CS0|H8P8DDR_CS1|\
                            H8P8DDR_CS2|H8P8DDR_CS3)
   #define ENABLE_PA_CS    (H8PADDR_CS4|H8PADDR_CS5|\
                            H8PADDR_CS6)
   #define ENABLE_PB_CS     H8PBDDR_CS7
   
   #endif      /* of #if 0 */

4. 5  H8/3067F γ RAM ͭ

  ꡼⡼ɤǤϡ sys_support.S  _hardware_init_hook ǡɥ
Х A0  A23 ǡХ D8  D15 åץ쥯 CS0 
CS3 ͭˤ塢ͥ¹Ԥ롣ʳ˥ɥ쥹Хȥǡ
Хͭˤϡsys_config.h ΰʲʬŬԽ롣

   /*
    *  ɥ쥹
    */
   
   #define ENABLE_P8_CS    (H8P8DDR_CS0|H8P8DDR_CS1|\
                            H8P8DDR_CS2|H8P8DDR_CS3)
   
   #if 0
   
   #define ENABLE_LOWER_DATA
   #define ENABLE_PB_CS    (H8PADDR_CS4|H8PADDR_CS5|\
                            H8PADDR_CS6|H8PBDDR_CS7)
   
   #endif      /* of #if 0 */

5.  ե빽

5. 1  ǥ쥯ȥꡦե빽

   (1)   config/h8/

            Makefile.config  Makefile  H8 ¸
            cpu_config.c     H8 ץå¸ C ؿ
            cpu_config.h     H8 ץå¸ι
            cpu_context.h    H8 ץå¸Υƥ
            cpu_defs.h       H8 ץå¸Υץꥱ
            cpu_insn.h       H8 ץåΥ֥ inline ؿ
            cpu_support.S    H8 ץåΥ֥ؿ
            hw_serial.h      SCI 
            hw_timer.h       ITU 
            makeoffset.c     offset.h ݡȴؿ
            start.S          ȥåץ⥸塼

   (2)   config/h8/akih8_3048f/
           () Ż̾ AKI-H8/3048F ܡɤΰ¸ʬ

            Makefile.config  Makefile  AKI-H8/3048F ܡɰ¸
            h8_3048f.h       H8/3048F ץå
            debug.ld         ǥХåѥ󥫥ץ
            release.ld       ꡼ѥ󥫥ץ
            sys_config.c     AKI-H8/3048F ܡɰ¸ C ؿ
            sys_config.h     AKI-H8/3048F ܡɰ¸ι
            sys_defs.h       AKI-H8/3048F ܡɰ¸Υץꥱ
            sys_support.S    AKI-H8/3048F ܡɰ¸Υ֥ؿ

   (3)   config/h8/akih8_3067f/
           () Ż̾ AKI-H8/3067F ܡɤΰ¸ʬ

            Makefile.config  Makefile  AKI-H8/3067F ܡɰ¸
            h8_3067f.h       H8/3048F ץå
            debug.ld         ǥХåѥ󥫥ץ
            release.ld       ꡼ѥ󥫥ץ
            sys_config.c     AKI-H8/3067F ܡɰ¸ C ؿ
            sys_config.h     AKI-H8/3067F ܡɰ¸ι
            sys_defs.h       AKI-H8/3067F ܡɰ¸Υץꥱ
            sys_support.S    AKI-H8/3067F ܡɰ¸Υ֥ؿ
