git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@117 35acf78f-673a-0410-8e92-d51de3d6d3f4

This commit is contained in:
gdisirio 2007-11-27 16:02:12 +00:00
parent b74cb5bc1a
commit 6f0569444d
11 changed files with 64 additions and 58 deletions

View File

@ -24,7 +24,6 @@
//#include "lpc214x_serial.h" //#include "lpc214x_serial.h"
//#include "lpc214x_ssp.h" //#include "lpc214x_ssp.h"
//#include "mmcsd.h" //#include "mmcsd.h"
//#include "buzzer.h" //#include "buzzer.h"
extern void IrqHandler(void); extern void IrqHandler(void);
@ -165,6 +164,12 @@ void chSysHalt(void) {
; ;
} }
/*
* System console message (not implemented).
*/
void chSysPuts(char *msg) {
}
/* /*
* Non-vectored IRQs handling here. * Non-vectored IRQs handling here.
*/ */

View File

@ -97,7 +97,8 @@ extern void chSysUnlock(void);
#define UserStackSize(n) StackAlign(sizeof(Thread) + \ #define UserStackSize(n) StackAlign(sizeof(Thread) + \
sizeof(struct intctx) + \ sizeof(struct intctx) + \
sizeof(struct extctx) + \ sizeof(struct extctx) + \
(n) + (INT_REQUIRED_STACK)) (n) + \
INT_REQUIRED_STACK)
#define WorkingArea(s, n) ULONG32 s[UserStackSize(n) >> 2]; #define WorkingArea(s, n) ULONG32 s[UserStackSize(n) >> 2];
/* It requires zero bytes, but better be safe.*/ /* It requires zero bytes, but better be safe.*/

View File

@ -97,7 +97,8 @@ extern void chSysUnlock(void);
#define UserStackSize(n) StackAlign(sizeof(Thread) + \ #define UserStackSize(n) StackAlign(sizeof(Thread) + \
sizeof(struct intctx) + \ sizeof(struct intctx) + \
sizeof(struct extctx) + \ sizeof(struct extctx) + \
(n) + (INT_REQUIRED_STACK)) (n) + \
INT_REQUIRED_STACK)
#define WorkingArea(s, n) ULONG32 s[UserStackSize(n) >> 2]; #define WorkingArea(s, n) ULONG32 s[UserStackSize(n) >> 2];
/* It requires zero bytes, but better be safe.*/ /* It requires zero bytes, but better be safe.*/

View File

@ -68,7 +68,7 @@ void ChkIntSources(void) {
} }
} }
t_msg _IdleThread(void) { t_msg _IdleThread(void *p) {
chThdSetPriority(IDLEPRIO); chThdSetPriority(IDLEPRIO);

View File

@ -29,7 +29,7 @@ typedef void *regx86;
/* /*
* Stack saved context. * Stack saved context.
*/ */
struct stackregs { struct intctx {
regx86 ebx; regx86 ebx;
regx86 edi; regx86 edi;
regx86 esi; regx86 esi;
@ -38,33 +38,36 @@ struct stackregs {
}; };
typedef struct { typedef struct {
struct stackregs *esp; struct intctx *esp;
} Context; } Context;
#define APUSH(p, a) (p) -= sizeof(void *), *(void **)(p) = (void*)(a) #define APUSH(p, a) (p) -= sizeof(void *), *(void **)(p) = (void*)(a)
#define SETUP_CONTEXT(workspace, wsize, pf, arg) \ #define SETUP_CONTEXT(workspace, wsize, pf, arg) \
{ \ { \
BYTE8 *esp = (BYTE8 *)workspace + wsize; \ BYTE8 *esp = (BYTE8 *)workspace + wsize; \
APUSH(esp, arg); \ APUSH(esp, arg); \
APUSH(esp, threadexit); \ APUSH(esp, threadexit); \
esp -= sizeof(struct stackregs); \ esp -= sizeof(struct intctx); \
((struct stackregs *)esp)->eip = pf; \ ((struct intctx *)esp)->eip = pf; \
((struct stackregs *)esp)->ebx = 0; \ ((struct intctx *)esp)->ebx = 0; \
((struct stackregs *)esp)->edi = 0; \ ((struct intctx *)esp)->edi = 0; \
((struct stackregs *)esp)->esi = 0; \ ((struct intctx *)esp)->esi = 0; \
((struct stackregs *)esp)->ebp = 0; \ ((struct intctx *)esp)->ebp = 0; \
tp->p_ctx.esp = (struct stackregs *)esp; \ tp->p_ctx.esp = (struct intctx *)esp; \
} }
#define chSysLock() #define chSysLock()
#define chSysUnlock() #define chSysUnlock()
#define chSysPuts(msg) {} #define chSysPuts(msg) {}
#define INT_REQUIRED_STACK 0x0 #define INT_REQUIRED_STACK 0
#define UserStackSize(n) (sizeof(Thread) + sizeof(void *)*2 + \ #define StackAlign(n) ((((n) - 1) | 3) + 1)
sizeof(struct stackregs) + (n) + (INT_REQUIRED_STACK)) #define UserStackSize(n) StackAlign(sizeof(Thread) + \
sizeof(void *) * 2 + \
sizeof(struct intctx) + \
(n) + \
INT_REQUIRED_STACK)
#define WorkingArea(s, n) ULONG32 s[UserStackSize(n) >> 2]; #define WorkingArea(s, n) ULONG32 s[UserStackSize(n) >> 2];
#define IDLE_THREAD_STACK_SIZE 16384 #define IDLE_THREAD_STACK_SIZE 16384

View File

@ -29,7 +29,7 @@ typedef void *regx86;
/* /*
* Stack saved context. * Stack saved context.
*/ */
struct stackregs { struct intctx {
regx86 ebx; regx86 ebx;
regx86 edi; regx86 edi;
regx86 esi; regx86 esi;
@ -38,33 +38,36 @@ struct stackregs {
}; };
typedef struct { typedef struct {
struct stackregs *esp; struct intctx *esp;
} Context; } Context;
#define APUSH(p, a) (p) -= sizeof(void *), *(void **)(p) = (void*)(a) #define APUSH(p, a) (p) -= sizeof(void *), *(void **)(p) = (void*)(a)
#define SETUP_CONTEXT(workspace, wsize, pf, arg) \ #define SETUP_CONTEXT(workspace, wsize, pf, arg) \
{ \ { \
BYTE8 *esp = (BYTE8 *)workspace + wsize; \ BYTE8 *esp = (BYTE8 *)workspace + wsize; \
APUSH(esp, arg); \ APUSH(esp, arg); \
APUSH(esp, threadstart); \ APUSH(esp, threadstart); \
esp -= sizeof(struct stackregs); \ esp -= sizeof(struct intctx); \
((struct stackregs *)esp)->eip = pf; \ ((struct intctx *)esp)->eip = pf; \
((struct stackregs *)esp)->ebx = 0; \ ((struct intctx *)esp)->ebx = 0; \
((struct stackregs *)esp)->edi = 0; \ ((struct intctx *)esp)->edi = 0; \
((struct stackregs *)esp)->esi = 0; \ ((struct intctx *)esp)->esi = 0; \
((struct stackregs *)esp)->ebp = 0; \ ((struct intctx *)esp)->ebp = 0; \
tp->p_ctx.esp = (struct stackregs *)esp; \ tp->p_ctx.esp = (struct intctx *)esp; \
} }
#define chSysLock() #define chSysLock()
#define chSysUnlock() #define chSysUnlock()
#define chSysPuts(msg) {} #define chSysPuts(msg) {}
#define INT_REQUIRED_STACK 0x0 #define INT_REQUIRED_STACK 0
#define UserStackSize(n) (sizeof(Thread) + sizeof(void *) * 2 + \ #define StackAlign(n) ((((n) - 1) | 3) + 1)
sizeof(struct stackregs) + (n) + (INT_REQUIRED_STACK)) #define UserStackSize(n) StackAlign(sizeof(Thread) + \
sizeof(void *) * 2 + \
sizeof(struct intctx) + \
(n) + \
INT_REQUIRED_STACK)
#define WorkingArea(s, n) ULONG32 s[UserStackSize(n) >> 2]; #define WorkingArea(s, n) ULONG32 s[UserStackSize(n) >> 2];
#define IDLE_THREAD_STACK_SIZE 16384 #define IDLE_THREAD_STACK_SIZE 16384

View File

@ -244,7 +244,8 @@ PREDEFINED = __JUST_STUBS__ \
CH_USE_MESSAGES_TIMEOUT \ CH_USE_MESSAGES_TIMEOUT \
CH_USE_MESSAGES_EVENT \ CH_USE_MESSAGES_EVENT \
CH_USE_SEMSW \ CH_USE_SEMSW \
CH_USE_DEBUG CH_USE_DEBUG \
CH_USE_TRACE
EXPAND_AS_DEFINED = EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES SKIP_FUNCTION_MACROS = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------

View File

@ -13,7 +13,7 @@ Homepage</h2>
</tr> </tr>
<tr> <tr>
<td style="text-align: center; vertical-align: top; width: 150px;">Current <td style="text-align: center; vertical-align: top; width: 150px;">Current
Version 0.4.2<br> Version 0.4.3<br>
-<br> -<br>
<a href="http://sourceforge.net/projects/chibios/" rel="me" target="_top">Project on SourceForge</a><br> <a href="http://sourceforge.net/projects/chibios/" rel="me" target="_top">Project on SourceForge</a><br>
<a href="html/index.html" target="_top" rel="me">Documentation</a><br> <a href="html/index.html" target="_top" rel="me">Documentation</a><br>

View File

@ -40,13 +40,15 @@ AVR-AT90CANx-GCC - Port on AVR AT90CAN128, not complete yet.
***************************************************************************** *****************************************************************************
*** 0.4.3 *** *** 0.4.3 ***
- Minor improvement in the LPC214x serial driver, unneeded events were
generated.
- Size optimization in the events code, now the chEvtWait() reuses the - Size optimization in the events code, now the chEvtWait() reuses the
chEvtWaitTimeout() code if it is enabled. chEvtWaitTimeout() code if it is enabled.
- Size optimization in the semaphores code, now the chSemWaitTimeout() just - Size optimization in the semaphores code, now the chSemWaitTimeout() just
invokes the chSemWaitTimeoutS() inside its system mutex zone. invokes the chSemWaitTimeoutS() inside its system mutex zone.
- Minor improvement in the LPC214x serial driver, unneeded events were
generated in some rare cases.
- Fixed a chSysInit() documentation error. - Fixed a chSysInit() documentation error.
- Added a new debug switch: CH_USE_TRACE, previously the trace functionality
was associated to the CH_USE_DEBUG switch.
*** 0.4.2 *** *** 0.4.2 ***
- Added a minimal ARM7-LPC demo, you can use this one as template in order to - Added a minimal ARM7-LPC demo, you can use this one as template in order to

View File

@ -21,7 +21,7 @@
#ifdef CH_USE_DEBUG #ifdef CH_USE_DEBUG
char *dbglastmsg; char *panicmsg;
/** /**
* Debug subsystem initialization. * Debug subsystem initialization.
@ -34,23 +34,14 @@ void chDbgInit(void) {
#endif #endif
} }
/**
* Prints a message on the console/debugger. The latest message pointer
* is retained.
*/
void chDbgPuts(char *msg) {
dbglastmsg = msg;
chSysPuts(msg);
}
/** /**
* Prints a panic message on the console/debugger and then halts the system. * Prints a panic message on the console/debugger and then halts the system.
*/ */
void chDbgPanic(char *msg) { void chDbgPanic(char *msg) {
panicmsg = msg;
chSysPuts("PANIC: "); chSysPuts("PANIC: ");
chDbgPuts(msg); chSysPuts(msg);
chSysHalt(); chSysHalt();
} }

View File

@ -61,7 +61,6 @@ extern "C" {
#else /* CH_USE_DEBUG */ #else /* CH_USE_DEBUG */
#define chDbgInit() #define chDbgInit()
#define chDbgPuts(msg) {}
#define chDbgPanic(msg) {} #define chDbgPanic(msg) {}
#endif /* CH_USE_DEBUG */ #endif /* CH_USE_DEBUG */