MTS: EEѥǥХå桼ƥƥå饤֥

	2000/05/19	K.Uehara

	$Id: readme.txt,v 1.10 2002/09/11 06:18:37 usr01475 Exp $



ǥХơT10000ξǻѤǤ㳰פȡåå

ǽȤƻġåɴؿ<MTS>Ѱդ

åɵư򤳤δؿǹԤʤȤˤꡢǥХƤǤ⡢

㳰סååǽˤʤ롣



file:

	mts.h

		MTS إå

	debugutil.h

		㳰סååإå

	mts.a

		饤֥

	mts_m.a

		ޥѥ饤֥ꡣMTS_*Ϥδؿ㳰פ

		ååƤӽФʤprintfϤʤ

		<<ɬޥϤѤ뤳ȡ>>



MTSѤϡDEBUG_*Ϥδؿۤ˸ƤӽФ뤬

MTSѤʤǤľܸƤӽФȤǻѤ뤳ȤǤ롣



㳰פ˴ؤƤϡEE-kernelؿѤƼ¸Ƥ뤿ᡢ

EE-kernelκΥС󥢥åפκݤ˻ǽˤʤǽ롣

EE-kernelΥСϡ1.5.3

ɵ˥饤֥1.6.0SetDebugHandlerؿݡȤ줿

 eretǥϥɥƤӽФפΤᡢǥХåʤ

 SetDebugHandlerǤ⡢mtsäƤ뤳ȤȤۤƱȤäƤΤǡ

 mtsǤϡȤꤢԤΤ꤫ΤޤޤǤ



㳰ХåǤϡsyscallȤäkernel̿θƽФϰڤǤʤ

iϤδؿ᡿쥸ͤΥͥؤ꤬Ǥʤ



ޤ㳰פˤĤƤϡ٥򸵤Υɥ쥹᤻ʤᡢ

LoadExecǵưʤˤϿΥץǺꤹɬפ롣

# MTSȤäƤ뤫DEBUG_InitExceptionʤܡ

# ϿϤΥ㡼θǤΥޥmts_m.aȤΤ̵



ʤäexception.cդgccγĥǽ򤫤ʤȤäƤ뤿ᡢ

gccʳδĶǤΥѥϤǤʤʤȻפ



printf򥪡С饤ɤط塢ɬlibcǥ󥯤뤳ȡ



------ åȥ졼ɤ --------



02/09/11ꡢ㳰׻˴ʰץåȥ졼ɽ褦ˤʤä

ʤˤꡢ쥸פä



åȥ졼ȤϤäƤ⡢֥å򥵡ƴؿؤƤ餷

ɥ쥹ͤäɽפäơδؿǰѿ˴ؿؤΥݥ󥿤

ѤϡͤɽƤޤ



ɤ.text󤫤ϳƥץμˤ뤿ᡢ

void MTS_SetIsTextFunc( int (*func)( void *addr ) );

ǡΥɥ쥹ƥȥꥢɤ֤ؿϿʤ

εǽƯʤ



ޤ֥åꥢɥ쥹פʤΤǡǥХåɽ륢ɥ쥹Ȥ

+8 ƤΤդɬס(ꥢɥ쥹+8ˤʤΤ)



---------------------------------------



ؿϰʲ̤ꡣ



------------------ mts.h ---------------------

-- MTS



ͥΥޥåɵǽȡ㳰åϤδؿȤäơ

EEǤΥåɤεư뤿Υӥ˥󥹴ؿ

åɤͥʤɤδEE-kernelΤΤ򤽤Τޤ޻Ȥ

åɤMTS_THREAD_MAXǵꤵƤ롣

δؿѤϡDEBUG_*ѤɬפϤʤ



ŪˤϡʲΤ褦main񤱤Ф

---

void Main( int id, void *arg )

{

	// main

}



#define STACKSIZE (16*1024)	// ƤȤ

static u_long128 main_stack[ STACKSIZE/sizeof( u_long128 ) ];



void main( void )

{

	MTS_BootThread( "MAIN", Main, 24, main_stack, STACKSIZE, NULL );// 24ϤƤȤ

}

---



**** ܥåɴ



void MTS_BootThread( char *name, void (*func)( int id, void *arg )

					, int pri, void *stack_top, int stack_size, void *arg );

	MTSươfuncꤷץ饤ƥΥåɤȤư

	nameϰդμ̻ҤǤʤƤϤʤʤ(12ʸޤ)

	funcΰEE-kernelΥåID

	main()ؿDMAϤνȤ

	mainؿΥåƱΤꤷƤưϤ

	Ǥ̤ΥåΰȤȤ˾ޤ

	δؿǵưåɤSleep롣

	㳰ȯˤϡꤵƤstack(app.cmdstack)Ѥ롣



int  MTS_NewThread( char *name, void (*func)( int id, void *arg )

					, int pri, void stack_top, int stack_size, void *arg );

	funcꤷץ饤ƥΥåɤȤư

	CreateStart롣

	nameϰդμ̻ҤǤʤƤϤʤʤ(12ʸޤ)

	֤͡funcΰEE-kernelΥåID



void MTS_ExitThread( void );

	ζλ



int MTS_GetThreadId( char *name );

	ID̾Ǹ롣



void MTS_SetExceptionCallback( void (*func)( void ) );

	㳰ХåϿ롣

	Ϥξɽθ˼¹Ԥ롣



void MTS_PANIC( char *format, ... );

	ǥɥ쥹顼򤪤㳰̤ɽ롣

	ޥѤΥ⥸塼󥯤ϡʤˤ⤷ʤäƤ롣



**** åɴ桼ƥƥ



<<EVENT FLAG>>



EEIOPΥ٥ȥե饰ȤۤƱεǽ¸롣

ʲ¤ꡣ

MTS_EventFlag¤Τϥ桼ץstaticǳݤ롣

1ĤΥ٥ȥե饰Ԥ륹åɤ1ġ

顼åϤ

31ӥåȡ



typedef struct {

	int value;

	int mask;

	int wait_threadid;

	int mode;

} MTS_EVENTFLAG;



MTS_EVENTFLAG *MTS_CreateEventFlag( MTS_EVENTFLAG *eventflag );



٥ȥե饰ꤹ롣



int MTS_WaitEventFlag( MTS_EVENTFLAG *ev, int mask, int mode, int timeout );



mode

#define MTS_EW_MODE_AND		0x0001

#define MTS_EW_MODE_OR		0x0002

#define MTS_EW_MODE_CLEAR	0x0004



֤

enum {

	MTS_EW_OK = 0,			// ｪλ

	MTS_EW_NO_WAIT  = -1,	// Ǥ˾郎ΩƤ

	MTS_EW_TIMEOUT = -2,	// timeout(hsync)вᤷƤ郎Ωʤä

};



int MTS_SetEventFlag( MTS_EVENTFLAG *ev, int mask );

int MTS_iSetEventFlag( MTS_EVENTFLAG *ev, int mask );



int MTS_CancelEventFlag( MTS_EVENTFLAG *ev );



<<DELAY THREAD>>

HSYNC꡼פ롣



void MTS_DelayThread( int wait_time );

wait_time  HSYNCñ̡



---------------- debugutil.h -----------------

-- 㳰



Υ⥸塼뤬󥯤ȡprintfС饤ɤ롣

㳰ȯ˲̤˥쥸פprintfΥɽ롣

ɸǤϡ512*448 VRAMΣϤɽ

printfΥϺԡХȡ

printfϺ128ʸޤǤ¤롣

ѹϡexception.cƬ#defineѹ롣



㳰β̥פΤ쥸ꥹȤr1-r24ɽƤ롣

r25,26ϥͥ롢r27-31gp,sp,fp,ra,pc



void DEBUG_InitException( void *stacktop );

	㳰ȯ˲̤˥פ⥸塼ΥåȥåפԤʤ

	ɬΰǸƤӽФȡ

	mainƬꤷƤסIOP֡ȤƤ¸Ƥ褦

	stacktopϡ㳰⥸塼ǻѤ륹åɥ쥹<>

	NULLꤹȡ0x001FFFF0ꤵ롣



void DEBUG_SetExceptionCallback( void (*func)( unsigned long *regs ) );

	㳰ȯ˸ƤФ륳ХåؿϿ

	1ĤϿǤʤΤǡա

	regsϥ֤줿쥸$0äƤʤᡢ1Ƥ뤳Ȥա



int cprintf( const char *format, ... );

	Ȥʤprintf



void excep_printf( const char *format, ... );

	㳰ХåΤ߸ƤӽФǽ

	̤ɽprintf



-- å



typedef struct _debug_stackcheck_info {

	struct _debug_stackcheck_info *next;

	char *name;

	void *top;

	int size;

} DEBUG_STACKCHECK_INFO;



void DEBUG_SetStackCheck( DEBUG_STACKCHECK_INFO *stack, char *name, void *top, int size );

	ååԤʤˡåΰѤͤĤ

	ߤ$spåơޤǤʤ褦ˤƤ뤬

	ȤΥåɤΥåˤϻѤʤ̵



DEBUG_STACKCHECK_INFO *DEBUG_ReleaseStack( void );

	åɤνλɬƤӽФ

	åݥ󥿤ͤ饫ȤΥå򸡺

	åˤΥåڤΥ



int DEBUG_GetStackUseSize( void );

	ߤΥåɤΥå̤򤫤

	åСʤɤƤСϥ󥰥åפ롣

	spľܻȤΤǡХåʤɤϸƤӽФʤ

	ΥMTSǵưƤ뤫DEBUG_SetStackCheckѤƤɬפ롣

	mts_m.aǤϡ֤(ϥޥ֤ǸƤФ٤ΤǤϤʤ

