4 * Created on: 14 feb 2011
\r
9 Methods called by MW MSL libraries to perform console IO:
\r
15 #ifdef USE_TTY_WINIDEA
\r
17 #define TWBUFF_SIZE 0x100
\r
18 #define TRBUFF_SIZE 0x100
\r
21 #define TWBUFF_LEN (TWBUFF_SIZE+TBUFF_PTR)
\r
22 #define TRBUFF_LEN (TRBUFF_SIZE+TBUFF_PTR)
\r
23 #define TWBUFF_TPTR (g_TWBuffer[TWBUFF_SIZE+0])
\r
24 #define TWBUFF_CPTR (g_TWBuffer[TWBUFF_SIZE+1])
\r
25 #define TWBUFF_INC(n) ((n + 1)&(TWBUFF_SIZE-1))
\r
26 #define TWBUFF_FULL() (TWBUFF_TPTR==((TWBUFF_CPTR-1)&(TWBUFF_SIZE-1)))
\r
28 volatile char g_TConn;
\r
29 volatile unsigned char g_TWBuffer[TWBUFF_LEN] __attribute__ ((aligned (0x100))); // Transmit to WinIDEA terminal
\r
30 volatile unsigned char g_TRBuffer[TRBUFF_LEN] __attribute__ ((aligned (0x100)));
\r
35 int InitializeUART(void)
\r
40 int ReadUARTN( char* buf, int cnt )
\r
42 #ifdef USE_TTY_WINIDEA
\r
43 (void)g_TRBuffer[0];
\r
47 return 0; // No error
\r
50 int ReadUART1(char* c) {
\r
51 return ReadUARTN( c, 1 );
\r
54 int WriteUARTN( char* buf, int cnt )
\r
56 #ifdef USE_TTY_WINIDEA
\r
59 unsigned char nCnt,nLen;
\r
60 for(nCnt = 0; nCnt < cnt; nCnt++)
\r
62 while( TWBUFF_FULL() ) {}
\r
64 g_TWBuffer[nLen] = buf[nCnt];
\r
65 nLen = TWBUFF_INC(nLen);
\r
70 #if defined(USE_RAMLOG)
\r
73 for (int i = 0; i < cnt; i++) {
\r
74 ramlog_chr (*(pbuf + i));
\r
82 return 0; // No error
\r
85 int WriteUART1(char c) {
\r
86 return WriteUARTN( &c, 1 );
\r
91 void __init_hardware(void)
\r
96 void __flush_cache(register void *address, register unsigned int size)
\r
103 void __init_user(void)
\r
110 void exit(int exit ) {
\r
112 /* !! WARNING !! !! WARNING !! !! WARNING !!
\r
114 * ENDING UP HERE CAN BE VERY BAD:
\r
115 * 1. You got an assert() (calls exit())
\r
116 * 2. For some other reason (deliberately exited main() ?)
\r
118 * TODO: Call reset of card?
\r
120 DisableAllInterrupts();
\r