diff options
| -rw-r--r-- | libcpu/arm/lpc214x/cpu.c | 42 | ||||
| -rw-r--r-- | libcpu/arm/lpc214x/cpuport.c (renamed from libcpu/arm/lpc214x/interrupt.c) | 133 | ||||
| -rw-r--r-- | libcpu/arm/lpc214x/stack.c | 61 | ||||
| -rw-r--r-- | libcpu/arm/lpc214x/startup_gcc.S | 8 | ||||
| -rw-r--r-- | libcpu/arm/lpc214x/trap.c | 40 |
5 files changed, 108 insertions, 176 deletions
diff --git a/libcpu/arm/lpc214x/cpu.c b/libcpu/arm/lpc214x/cpu.c deleted file mode 100644 index 5e228171f5..0000000000 --- a/libcpu/arm/lpc214x/cpu.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * File : cpu.c - * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2006, RT-Thread Develop Team - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rt-thread.org/license/LICENSE - * - * Change Logs: - * Date Author Notes - * 2006-08-23 Bernard first version - */ - -#include <rtthread.h> -#include "lpc214x.h"
- -/** - * @addtogroup LPC214x - */ -/*@{*/ - -/** - * this function will reset CPU - * - */ -void rt_hw_cpu_reset() -{ -} - -/** - * this function will shutdown CPU - * - */ -void rt_hw_cpu_shutdown() -{ - rt_kprintf("shutdown...\n"); - - while (1); -} - -/*@}*/ diff --git a/libcpu/arm/lpc214x/interrupt.c b/libcpu/arm/lpc214x/cpuport.c index 3c4e78e855..3af1d61a72 100644 --- a/libcpu/arm/lpc214x/interrupt.c +++ b/libcpu/arm/lpc214x/cpuport.c @@ -1,36 +1,76 @@ -/* - * File : trap.c - * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2006, RT-Thread Development Team - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://openlab.rt-thread.com/license/LICENSE - * - * Change Logs: - * Date Author Notes - * 2006-08-23 Bernard first version - */ - -#include <rtthread.h> +/*
+ * File : cpuport.c
+ * This file is part of RT-Thread RTOS
+ * COPYRIGHT (C) 2009 - 2011, RT-Thread Development Team
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rt-thread.org/license/LICENSE
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2011-06-15 aozima the first version for lpc214x
+ */
+
+#include <rtthread.h>
#include "lpc214x.h"
+
+#define MAX_HANDLERS 32
+#define SVCMODE 0x13
-#define MAX_HANDLERS 32 - -extern rt_uint32_t rt_interrupt_nest; - -rt_uint32_t rt_interrupt_from_thread, rt_interrupt_to_thread; -rt_uint32_t rt_thread_switch_interrput_flag; +extern rt_uint32_t rt_interrupt_nest;
/** * @addtogroup LPC214x */ -/*@{*/ +/*@{*/
+
+/** + * This function will initialize thread stack + * + * @param tentry the entry of thread + * @param parameter the parameter of entry + * @param stack_addr the beginning stack address + * @param texit the function will be called when thread exit + * + * @return stack address + */ +rt_uint8_t *rt_hw_stack_init(void *tentry, void *parameter, + rt_uint8_t *stack_addr, void *texit) +{ + unsigned long *stk; + + stk = (unsigned long *)stack_addr; + *(stk) = (unsigned long)tentry; /* entry point */ + *(--stk) = (unsigned long)texit; /* lr */ + *(--stk) = 0; /* r12 */ + *(--stk) = 0; /* r11 */ + *(--stk) = 0; /* r10 */ + *(--stk) = 0; /* r9 */ + *(--stk) = 0; /* r8 */ + *(--stk) = 0; /* r7 */ + *(--stk) = 0; /* r6 */ + *(--stk) = 0; /* r5 */ + *(--stk) = 0; /* r4 */ + *(--stk) = 0; /* r3 */ + *(--stk) = 0; /* r2 */ + *(--stk) = 0; /* r1 */ + *(--stk) = (unsigned long)parameter; /* r0 : argument */ + *(--stk) = SVCMODE; /* cpsr */ + *(--stk) = SVCMODE; /* spsr */ + /* return task's current stack address */ + return (rt_uint8_t *)stk; +}
+ +/* exception and interrupt handler table */
+rt_uint32_t rt_interrupt_from_thread, rt_interrupt_to_thread;
+rt_uint32_t rt_thread_switch_interrput_flag;
+
void rt_hw_interrupt_handler(int vector) { rt_kprintf("Unhandled interrupt %d occured!!!\n", vector); -} +}
/** * This function will initialize hardware interrupt @@ -39,7 +79,7 @@ void rt_hw_interrupt_init() { rt_base_t index; rt_uint32_t *vect_addr, *vect_ctl;
-
+
/* initialize VIC*/
VICIntEnClr = 0xffffffff;
VICVectAddr = 0;
@@ -60,7 +100,7 @@ void rt_hw_interrupt_init() rt_interrupt_from_thread = 0; rt_interrupt_to_thread = 0; rt_thread_switch_interrput_flag = 0; -} +}
/** * This function will mask a interrupt. @@ -69,8 +109,8 @@ void rt_hw_interrupt_init() void rt_hw_interrupt_mask(int vector) {
VICIntEnClr = (1 << vector);
-} - +}
+
/** * This function will un-mask a interrupt. * @param vector the interrupt number @@ -78,8 +118,8 @@ void rt_hw_interrupt_mask(int vector) void rt_hw_interrupt_umask(int vector) {
VICIntEnable = (1 << vector); -} - +}
+
/** * This function will install a interrupt service routine to a interrupt. * @param vector the interrupt number @@ -100,6 +140,41 @@ void rt_hw_interrupt_install(int vector, rt_isr_handler_t new_handler, rt_isr_ha if (old_handler != RT_NULL) *old_handler = (rt_isr_handler_t) *vect_addr; if (new_handler != RT_NULL) *vect_addr = (rt_uint32_t) new_handler; } +}
+
+/** + * this function will reset CPU + * + */ +void rt_hw_cpu_reset() +{ +} + +/** + * this function will shutdown CPU + * + */ +void rt_hw_cpu_shutdown() +{ + rt_kprintf("shutdown...\n"); + + while (1); +}
+
+void rt_hw_trap_irq() +{
+ rt_isr_handler_t isr_func;
+
+ isr_func = (rt_isr_handler_t) VICVectAddr;
+ isr_func(0);
+
+ /* acknowledge Interrupt */
+ // VICVectAddr = 0;
} +void rt_hw_trap_fiq() +{ + rt_kprintf("fast interrupt request\n"); +} +
/*@}*/ diff --git a/libcpu/arm/lpc214x/stack.c b/libcpu/arm/lpc214x/stack.c deleted file mode 100644 index 177545f374..0000000000 --- a/libcpu/arm/lpc214x/stack.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * File : stack.c - * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2006, RT-Thread Development Team - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://openlab.rt-thread.com/license/LICENSE - * - * Change Logs: - * Date Author Notes - * 2006-08-23 Bernard the first version - */ -#include <rtthread.h>
- -#define SVCMODE 0x13
- -/** - * @addtogroup LPC214x - */ -/*@{*/ - -/** - * This function will initialize thread stack - * - * @param tentry the entry of thread - * @param parameter the parameter of entry - * @param stack_addr the beginning stack address - * @param texit the function will be called when thread exit - * - * @return stack address - */ -rt_uint8_t *rt_hw_stack_init(void *tentry, void *parameter, - rt_uint8_t *stack_addr, void *texit) -{ - unsigned long *stk; - - stk = (unsigned long *)stack_addr; - *(stk) = (unsigned long)tentry; /* entry point */ - *(--stk) = (unsigned long)texit; /* lr */ - *(--stk) = 0; /* r12 */ - *(--stk) = 0; /* r11 */ - *(--stk) = 0; /* r10 */ - *(--stk) = 0; /* r9 */ - *(--stk) = 0; /* r8 */ - *(--stk) = 0; /* r7 */ - *(--stk) = 0; /* r6 */ - *(--stk) = 0; /* r5 */ - *(--stk) = 0; /* r4 */ - *(--stk) = 0; /* r3 */ - *(--stk) = 0; /* r2 */ - *(--stk) = 0; /* r1 */ - *(--stk) = (unsigned long)parameter; /* r0 : argument */ - *(--stk) = SVCMODE; /* cpsr */ - *(--stk) = SVCMODE; /* spsr */ - - /* return task's current stack address */ - return (rt_uint8_t *)stk; -} - -/*@}*/ diff --git a/libcpu/arm/lpc214x/startup_gcc.S b/libcpu/arm/lpc214x/startup_gcc.S index f14bec39ae..13e01c7dc2 100644 --- a/libcpu/arm/lpc214x/startup_gcc.S +++ b/libcpu/arm/lpc214x/startup_gcc.S @@ -1,7 +1,7 @@ .extern main /* �����ⲿC��� */
.extern __bss_beg__
- .extern __bss_end__
+ .extern __bss_end
.extern __stack_end__
.extern __data_beg__
.extern __data_end__
@@ -66,9 +66,9 @@ .equ PLLCON_PLLE, (1<<0) /* PLL Enable */
.equ PLLCON_PLLC, (1<<1) /* PLL Connect */
.equ PLLSTAT_LOCK, (1<<10) /* PLL Lock Status */
- .equ PLLCFG_MSEL, ((PLL_MUL - 1) << 0)
+ //.equ PLLCFG_MSEL, ((PLL_MUL - 1) << 0)
.equ PLLCFG_PSEL, (0x02 << 5)
- .equ PLLCFG_Val, (PLLCFG_MSEL|PLLCFG_PSEL)
+ //.equ PLLCFG_Val, (PLLCFG_MSEL|PLLCFG_PSEL)
.equ MEMMAP, 0xE01FC040 /*Memory Mapping Control*/
@@ -208,7 +208,7 @@ endless_loop: .LC1:
.word __bss_beg__
.LC2:
- .word __bss_end__
+ .word __bss_end
.LC3:
.word __data_beg__
.LC4:
diff --git a/libcpu/arm/lpc214x/trap.c b/libcpu/arm/lpc214x/trap.c deleted file mode 100644 index e0237e8b25..0000000000 --- a/libcpu/arm/lpc214x/trap.c +++ /dev/null @@ -1,40 +0,0 @@ -/* - * File : trap.c - * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2006, RT-Thread Development Team - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://openlab.rt-thread.com/license/LICENSE - * - * Change Logs: - * Date Author Notes - * 2006-08-25 Bernard first version - */ - -#include <rthw.h> -#include <rtthread.h> -#include "lpc214x.h"
- -/** - * @addtogroup LPC214x - */ -/*@{*/ - -void rt_hw_trap_irq() -{
- rt_isr_handler_t isr_func;
-
- isr_func = (rt_isr_handler_t) VICVectAddr;
- isr_func(0);
-
- /* acknowledge Interrupt */
- // VICVectAddr = 0;
-} - -void rt_hw_trap_fiq() -{ - rt_kprintf("fast interrupt request\n"); -} - -/*@}*/ |
