(toppers-users 1207) Re: tinet h8 3068f_lan AKI_MONITOR

Katsuhiro Amano amano toyotamacs.co.jp
2003ǯ 9 11 () 08:45:41 JST


ⶶëܤ󡢤ˤϡ

ȥ西ޥåŷǤ
h8300-elfĶǥǥХå()褦ˤʤޤ
ޤϤꤽǤ

| ȤǡRedbootϰʲΤȤ饲åȤΤǤϡ
| http://sourceforge.jp/projects/ecos-h8/files/
|
| ȤСelfǤ
| gccʤɤΥ򥲥åȤƾ嵭ΥѥåƤ
| ġ뤫
ȯĶǤǡѥå򤢤Ƥƹۤޤ
̤ToppersȯĶΤƱǤh8300-elfˤǤ

|
/usr/local/bin/h8300-elf-gcc -S -mh -mint32 -mrelax -O2  -DLABEL_ASM -DCPU_C
LOCK
|
=20000000 -DGDB_STUB -DSUPPORT_INET4 -DSUPPORT_TCP  -DSUPPORT_ETHER -DIF_ETH
ER_C
|
FG_ED -I. -I../include -I../config/h8net -I../config/h8net/akih8_3068f_lan -
I../
| tinet/include -g -Werror   -I../kernel ../config/h8net/makeoffset.c
| ../utils/genoffset makeoffset.s > offset.h
| genoffset: cannot parse:        .type   _ref_4, @object
| genoffset: cannot parse:        .size   _ref_4, 4
| genoffset: cannot parse:        .type   _ref_2, @object
| genoffset: cannot parse:        .size   _ref_2, 2
| genoffset: cannot parse:        .type   _ref_1, @object
| genoffset: cannot parse:        .size   _ref_1, 1
| genoffset: cannot parse:        .type   _TCB_enatex, @object
| genoffset: cannot parse:        .size   _TCB_enatex, 32
| genoffset: unknown directive:   .long   0
| make: *** [offset.h] Error 1
| 
| Ф餯ϡCOFFǤäƤΤǡޤɤޤ󤬡⤷
| ˴ؤƥҥȤˤʤ뤳ȤСֿйǤ

ƱͤξɾȯޤкϣǤ
к","θΥڡǧ
utils/genoffset
113:
#  elsif ($line =~ /[ \t]*\.([a-zA-Z0-9]+)[ \t]*([^ \t]*)$/
  elsif ($line =~ /[ \t]*\.([a-zA-Z0-9]+)[ \t]*([^\t]*)$/
217:
#  elsif ($line =~ /[ \t]*\.([a-zA-Z0-9]+)[ \t]*([^ \t]*)$/
  elsif ($line =~ /[ \t]*\.([a-zA-Z0-9]+)[ \t]*([^\t]*)$/

кlong֥饳ɤǥ褵ʤΤ
.zero Ǥ"=1"ˤȥ֥饳ɤѤΤǥ狼

config/h8/makeoffset.c
//asm("! BIT_REF");
//UW ref_4 = 0;
//UH ref_2 = 0;
//UB ref_1 = 0;
//asm("! END");
asm("! BIT_REF");
UW ref_4 = 1;
UH ref_2 = 1;
UB ref_1 = 1;
asm("! END");

| ʤ衡make ǻߤޤäƤޤ
| ե졼ѹƤޤ
make dependmake.dependedǤޤ
<commnd line> <bin-->ȸʸäƤޤ
Ϥmake.dependեͤѹ
utils/makedep
#  if ($line =~ /^\#\s*([0-9]+)\s*\"([^\"]+)\"/) {
  if ($line =~ /^\#\s*([0-9]+)\s*\"([^\"<>]+)\"/) {

ȥåǥ顼Ϣȯ롣Ȥꤢȥ
åʤɡκ̵롣
# $(JSPDIR)/cfg/$(TARGET_PREFIX)chk $(JSPOBJ) -cs jsp.chk \
#    -cpu $(CPU) -system $(SYS) -obj

ʤ.vectors 󤬣ӥ쥳ɤˤʤäȤ
äƤޤ֥ȷˤʤäˡALLOC LOADե饰ʤᡣ
sys_support.S
 .section ".vectors","ax"
/* .section .vectors */

ȥǥХåΣԣң̿㳰ȯƤޤ
/* .long _no_reg_exception */ /*  8, 0x0020: trap */
/* .long _no_reg_exception */ /*  9, 0x0024: trap */
/* .long _no_reg_exception */ /* 10, 0x0028: trap */
/* .long _no_reg_exception */ /* 11, 0x002c: trap */
 .long 0  /*  8, 0x0020: trap */
 .long 0  /*  9, 0x0024: trap */
 .long 0  /* 10, 0x0028: trap */
 .long 0  /* 11, 0x002c: trap */

(toppers-users 1074) ˤʬѹ
#define VECTOR_TABLE_ADDR  0x00fffd20
#define JMP_OPECODE   0x5a000000
extern void vectors(void);
void vector_table_copy(void)
{
    unsigned int n = 0x100/sizeof(unsigned int);   /* ٥ơ֥륵
*/
    unsigned int *o = (unsigned int *)VECTOR_TABLE_ADDR; /* ٥ơ֥륳
ԡ */
    unsigned int *i = (unsigned int *)vectors;    /* ٥ơ֥륳ԡ
*/

    while (n -- > 0) {
        if (*i != 0) {              /* NOPϤʤˤ⤷ʤ */
            *o = JMP_OPECODE | *i;  /* jmp̿ղ */
        }
        o++; i++;
    }
}

åΰѹ
//#define STACKTOP     0x00ffff20  /* Ωѥåν */
#define STACKTOP     0x005b0000  /* Ωѥåν */

ȤϥꥢνϤSCI0ˤ餤Ǥ
Τ餤ѹǡȤꤢǥХåǤ褦ˤʤޤ
ʤְäƤ뤳ȤäƤ뤫⤷ޤΤ
Ĥäߤ򤤤ƤȹǤ