(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ˤ餤Ǥ
Τ餤ѹǡȤꤢǥХåǤ褦ˤʤޤ
ʤְäƤ뤳ȤäƤ뤫⤷ޤΤ
ĤäߤƤȹǤ