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

This commit is contained in:
gdisirio 2008-02-22 11:09:02 +00:00
parent 58ab6d53dd
commit 0ea8e4c99f
20 changed files with 38 additions and 195 deletions

View File

@ -62,8 +62,8 @@ UDEFS =
UADEFS = UADEFS =
# List ARM-mode C source files here # List ARM-mode C source files here
ASRC = ../../ports/ARM7-AT91SAM7X/GCC/chcore.c \ ASRC = ../../ports/ARM7-AT91SAM7X/chcore.c \
../../ports/ARM7-AT91SAM7X/GCC/sam7x_serial.c \ ../../ports/ARM7-AT91SAM7X/sam7x_serial.c \
../../src/chinit.c ../../src/chdebug.c ../../src/chlists.c ../../src/chdelta.c \ ../../src/chinit.c ../../src/chdebug.c ../../src/chlists.c ../../src/chdelta.c \
../../src/chschd.c ../../src/chthreads.c ../../src/chsem.c ../../src/chmtx.c \ ../../src/chschd.c ../../src/chthreads.c ../../src/chsem.c ../../src/chmtx.c \
../../src/chevents.c ../../src/chmsg.c ../../src/chsleep.c ../../src/chqueues.c \ ../../src/chevents.c ../../src/chmsg.c ../../src/chsleep.c ../../src/chqueues.c \
@ -78,11 +78,11 @@ ASRC = ../../ports/ARM7-AT91SAM7X/GCC/chcore.c \
TSRC = TSRC =
# List ASM source files here # List ASM source files here
ASMSRC = ../../ports/ARM7-AT91SAM7X/GCC/crt0.s ../../ports/ARM7/chsys.s ASMSRC = ../../ports/ARM7-AT91SAM7X/crt0.s ../../ports/ARM7/chsys.s
# List all user directories here # List all user directories here
UINCDIR = ../../src/include ../../src/lib \ UINCDIR = ../../src/include ../../src/lib \
../../ports/ARM7 ../../ports/ARM7-AT91SAM7X/GCC ../../ports/ARM7 ../../ports/ARM7-AT91SAM7X
# List the user directory to look for the libraries here # List the user directory to look for the libraries here
ULIBDIR = ULIBDIR =

View File

@ -67,8 +67,8 @@ ASRC =
# List THUMB-mode C sources here # List THUMB-mode C sources here
# NOTE: If any module is compiled in thumb mode then -mthumb-interwork is # NOTE: If any module is compiled in thumb mode then -mthumb-interwork is
# enabled for all modules and that lowers performance. # enabled for all modules and that lowers performance.
TSRC = ../../ports/ARM7-AT91SAM7X/GCC/chcore.c \ TSRC = ../../ports/ARM7-AT91SAM7X/chcore.c \
../../ports/ARM7-AT91SAM7X/GCC/sam7x_serial.c \ ../../ports/ARM7-AT91SAM7X/sam7x_serial.c \
../../src/chinit.c ../../src/chdebug.c ../../src/chlists.c ../../src/chdelta.c \ ../../src/chinit.c ../../src/chdebug.c ../../src/chlists.c ../../src/chdelta.c \
../../src/chschd.c ../../src/chthreads.c ../../src/chsem.c ../../src/chmtx.c \ ../../src/chschd.c ../../src/chthreads.c ../../src/chsem.c ../../src/chmtx.c \
../../src/chevents.c ../../src/chmsg.c ../../src/chsleep.c ../../src/chqueues.c \ ../../src/chevents.c ../../src/chmsg.c ../../src/chsleep.c ../../src/chqueues.c \
@ -78,11 +78,11 @@ TSRC = ../../ports/ARM7-AT91SAM7X/GCC/chcore.c \
board.c main.c board.c main.c
# List ASM source files here # List ASM source files here
ASMSRC = ../../ports/ARM7-AT91SAM7X/GCC/crt0.s ../../ports/ARM7/chsys.s ASMSRC = ../../ports/ARM7-AT91SAM7X/crt0.s ../../ports/ARM7/chsys.s
# List all user directories here # List all user directories here
UINCDIR = ../../src/include ../../src/lib \ UINCDIR = ../../src/include ../../src/lib \
../../ports/ARM7 ../../ports/ARM7-AT91SAM7X/GCC ../../ports/ARM7 ../../ports/ARM7-AT91SAM7X
# List the user directory to look for the libraries here # List the user directory to look for the libraries here
ULIBDIR = ULIBDIR =

View File

@ -62,10 +62,10 @@ UDEFS =
UADEFS = UADEFS =
# List ARM-mode C source files here # List ARM-mode C source files here
ASRC = ../../ports/ARM7-LPC214x/GCC/chcore.c \ ASRC = ../../ports/ARM7-LPC214x/chcore.c \
../../ports/ARM7-LPC214x/GCC/vic.c \ ../../ports/ARM7-LPC214x/vic.c \
../../ports/ARM7-LPC214x/GCC/lpc214x_serial.c \ ../../ports/ARM7-LPC214x/lpc214x_serial.c \
../../ports/ARM7-LPC214x/GCC/lpc214x_ssp.c \ ../../ports/ARM7-LPC214x/lpc214x_ssp.c \
../../src/chinit.c ../../src/chdebug.c ../../src/chlists.c ../../src/chdelta.c \ ../../src/chinit.c ../../src/chdebug.c ../../src/chlists.c ../../src/chdelta.c \
../../src/chschd.c ../../src/chthreads.c ../../src/chsem.c ../../src/chmtx.c \ ../../src/chschd.c ../../src/chthreads.c ../../src/chsem.c ../../src/chmtx.c \
../../src/chevents.c ../../src/chmsg.c ../../src/chsleep.c ../../src/chqueues.c \ ../../src/chevents.c ../../src/chmsg.c ../../src/chsleep.c ../../src/chqueues.c \
@ -79,10 +79,11 @@ ASRC = ../../ports/ARM7-LPC214x/GCC/chcore.c \
TSRC = TSRC =
# List ASM source files here # List ASM source files here
ASMSRC = ../../ports/ARM7-LPC214x/GCC/crt0.s ASMSRC = ../../ports/ARM7-LPC214x/crt0.s
# List all user directories here # List all user directories here
UINCDIR = ../../src/include ../../src/lib ../../ports/ARM7-LPC214x/GCC UINCDIR = ../../src/include ../../src/lib \
../../ports/ARM7 ../../ports/ARM7-LPC214x
# List the user directory to look for the libraries here # List the user directory to look for the libraries here
ULIBDIR = ULIBDIR =
@ -131,6 +132,7 @@ ODFLAGS = -x --syms
# Thumb interwork enabled only if needed because it kills performance. # Thumb interwork enabled only if needed because it kills performance.
ifneq ($(TSRC),) ifneq ($(TSRC),)
CPFLAGS += -D THUMB_PRESENT CPFLAGS += -D THUMB_PRESENT
ASFLAGS += -D THUMB_PRESENT
ifneq ($(ASRC),) ifneq ($(ASRC),)
# Mixed ARM and THUMB case. # Mixed ARM and THUMB case.
CPFLAGS += -mthumb-interwork CPFLAGS += -mthumb-interwork

View File

@ -67,10 +67,10 @@ ASRC =
# List THUMB-mode C sources here # List THUMB-mode C sources here
# NOTE: If any module is compiled in thumb mode then -mthumb-interwork is # NOTE: If any module is compiled in thumb mode then -mthumb-interwork is
# enabled for all modules and that lowers performance. # enabled for all modules and that lowers performance.
TSRC = ../../ports/ARM7-LPC214x/GCC/chcore.c \ TSRC = ../../ports/ARM7-LPC214x/chcore.c \
../../ports/ARM7-LPC214x/GCC/vic.c \ ../../ports/ARM7-LPC214x/vic.c \
../../ports/ARM7-LPC214x/GCC/lpc214x_serial.c \ ../../ports/ARM7-LPC214x/lpc214x_serial.c \
../../ports/ARM7-LPC214x/GCC/lpc214x_ssp.c \ ../../ports/ARM7-LPC214x/lpc214x_ssp.c \
../../src/chinit.c ../../src/chdebug.c ../../src/chlists.c ../../src/chdelta.c \ ../../src/chinit.c ../../src/chdebug.c ../../src/chlists.c ../../src/chdelta.c \
../../src/chschd.c ../../src/chthreads.c ../../src/chsem.c ../../src/chmtx.c \ ../../src/chschd.c ../../src/chthreads.c ../../src/chsem.c ../../src/chmtx.c \
../../src/chevents.c ../../src/chmsg.c ../../src/chsleep.c ../../src/chqueues.c \ ../../src/chevents.c ../../src/chmsg.c ../../src/chsleep.c ../../src/chqueues.c \
@ -79,10 +79,11 @@ TSRC = ../../ports/ARM7-LPC214x/GCC/chcore.c \
board.c buzzer.c mmcsd.c main.c board.c buzzer.c mmcsd.c main.c
# List ASM source files here # List ASM source files here
ASMSRC = ../../ports/ARM7-LPC214x/GCC/crt0.s ASMSRC = ../../ports/ARM7-LPC214x/crt0.s
# List all user directories here # List all user directories here
UINCDIR = ../../src/include ../../src/lib ../../ports/ARM7-LPC214x/GCC UINCDIR = ../../src/include ../../src/lib \
../../ports/ARM7 ../../ports/ARM7-LPC214x
# List the user directory to look for the libraries here # List the user directory to look for the libraries here
ULIBDIR = ULIBDIR =
@ -131,6 +132,7 @@ ODFLAGS = -x --syms
# Thumb interwork enabled only if needed because it kills performance. # Thumb interwork enabled only if needed because it kills performance.
ifneq ($(TSRC),) ifneq ($(TSRC),)
CPFLAGS += -D THUMB_PRESENT CPFLAGS += -D THUMB_PRESENT
ASFLAGS += -D THUMB_PRESENT
ifneq ($(ASRC),) ifneq ($(ASRC),)
# Mixed ARM and THUMB case. # Mixed ARM and THUMB case.
CPFLAGS += -mthumb-interwork CPFLAGS += -mthumb-interwork

View File

@ -1,128 +0,0 @@
/*
ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
This file is part of ChibiOS/RT.
ChibiOS/RT is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
ChibiOS/RT is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _CHCORE_H_
#define _CHCORE_H_
typedef void *regarm;
/*
* Interrupt saved context.
*/
struct extctx {
regarm spsr_irq;
regarm lr_irq;
regarm r0;
regarm r1;
regarm r2;
regarm r3;
regarm r12;
};
/*
* System saved context.
*/
struct intctx {
regarm r4;
regarm r5;
regarm r6;
#ifndef CH_CURRP_REGISTER_CACHE
regarm r7;
#endif
regarm r8;
regarm r9;
regarm r10;
regarm r11;
regarm lr;
};
/*
* Port dependent part of the Thread structure, you may add fields in
* this structure.
*/
typedef struct {
struct intctx *r13;
} Context;
/*
* Platform dependent part of the \p chThdCreate() API.
*/
#define SETUP_CONTEXT(workspace, wsize, pf, arg) { \
tp->p_ctx.r13 = (struct intctx *)((BYTE8 *)workspace + \
wsize - \
sizeof(struct intctx)); \
tp->p_ctx.r13->r4 = pf; \
tp->p_ctx.r13->r5 = arg; \
tp->p_ctx.r13->lr = threadstart; \
}
#ifdef THUMB
extern void chSysLock(void);
extern void chSysUnlock(void);
#else /* !THUMB */
#define chSysLock() asm("msr CPSR_c, #0x9F")
#define chSysUnlock() asm("msr CPSR_c, #0x1F")
#endif /* THUMB */
#ifdef THUMB
#define INT_REQUIRED_STACK 0x10
#else /* !THUMB */
#define INT_REQUIRED_STACK 0
#endif /* !THUMB */
#define StackAlign(n) ((((n) - 1) | 3) + 1)
#define UserStackSize(n) StackAlign(sizeof(Thread) + \
sizeof(struct intctx) + \
sizeof(struct extctx) + \
(n) + \
INT_REQUIRED_STACK)
#define WorkingArea(s, n) ULONG32 s[UserStackSize(n) >> 2];
#ifdef THUMB
#define chSysIRQEnterI() { \
asm(".code 32 \n\t" \
"stmfd sp!, {r0-r3, r12, lr} \n\t" \
"add r0, pc, #1 \n\t" \
"bx r0 \n\t" \
".code 16 \n\t"); \
}
#define chSysIRQExitI() { \
asm("ldr r0, =IrqCommon \n\t" \
"bx r0 \n\t"); \
}
#else /* !THUMB */
#define chSysIRQEnterI() { \
asm("stmfd sp!, {r0-r3, r12, lr} \n\t"); \
}
#define chSysIRQExitI() { \
asm("b IrqCommon \n\t"); \
}
#endif /* !THUMB */
/* It requires zero bytes, but better be safe.*/
#define IDLE_THREAD_STACK_SIZE 8
void _IdleThread(void *p) __attribute__((noreturn));
void chSysHalt(void);
void chSysSwitchI(Thread *otp, Thread *ntp);
void chSysPuts(char *msg);
void threadstart(void);
#endif /* _CHCORE_H_ */

View File

@ -1,47 +0,0 @@
/*
ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
This file is part of ChibiOS/RT.
ChibiOS/RT is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
ChibiOS/RT is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _CHTYPES_H_
#define _CHTYPES_H_
/*
* Generic types often dependant on the compiler.
*/
#define BOOL char
#define BYTE8 unsigned char
#define SBYTE8 char
#define WORD16 short
#define UWORD16 unsigned short
#define LONG32 int
#define ULONG32 unsigned int
typedef BYTE8 t_tmode;
typedef BYTE8 t_tstate;
typedef UWORD16 t_tid;
typedef ULONG32 t_prio;
typedef LONG32 t_msg;
typedef LONG32 t_eventid;
typedef ULONG32 t_eventmask;
typedef ULONG32 t_time;
typedef LONG32 t_cnt;
typedef ULONG32 t_size;
#define INLINE inline
#endif /* _CHTYPES_H_ */

View File

@ -37,10 +37,24 @@ ARM7-AT91SAM7X-GCC - Port for Atmel AT91SAM7X256. The demo program targets
the Olimex SAM7-EX256 board. the Olimex SAM7-EX256 board.
AVR-AT90CANx-GCC - Port on AVR AT90CAN128, not complete yet. AVR-AT90CANx-GCC - Port on AVR AT90CAN128, not complete yet.
*****************************************************************************
*** Plans ***
*****************************************************************************
- Restart the work on the AVR port ASAP.
- Look into importing or implementing a TCP/IP stack and a File System.
- Start the work on a Cortex-M3 port as soon GCC 4.3.0 will be released.
- Evaluate other architectures for a possible ChibiOS/RT port.
***************************************************************************** *****************************************************************************
*** Releases *** *** Releases ***
***************************************************************************** *****************************************************************************
*** 0.5.5 ***
- Reorganized the code of the two ARM7 ports, now all the common ARM7 code
is in ./ports/ARM7. This will make maintenance and new ARM7 ports much
easier.
*** 0.5.4 *** *** 0.5.4 ***
- Port for Atmel AT91SAM7X256 introduced, the port should be useable also on - Port for Atmel AT91SAM7X256 introduced, the port should be useable also on
SAM7S and SAM7XC but no tests were performed. Other SAM7 processors should SAM7S and SAM7XC but no tests were performed. Other SAM7 processors should