diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-10-21 13:58:18 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-10-21 13:58:18 +0000 |
commit | c477be46b897fe3965b2e1684cf460fc61c23341 (patch) | |
tree | a70bfb82edd4148e4ec74ff9678e26438a20ba42 /c/src/lib | |
parent | 2010-10-19 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff) | |
download | rtems-c477be46b897fe3965b2e1684cf460fc61c23341.tar.bz2 |
2010-10-21 Sebastian Huber <sebastian.huber@embedded-brains.de>
* include/tm27.h: New file.
* Makefile.am, preinstall.am: Reflect change above.
* include/bsp.h: Fixed lpc32xx_micro_seconds_delay().
* misc/timer.c: Support for timer tests.
Diffstat (limited to 'c/src/lib')
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/ChangeLog | 7 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/Makefile.am | 2 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/include/bsp.h | 8 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/include/tm27.h | 69 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/misc/timer.c | 19 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/preinstall.am | 2 |
6 files changed, 85 insertions, 22 deletions
diff --git a/c/src/lib/libbsp/arm/lpc32xx/ChangeLog b/c/src/lib/libbsp/arm/lpc32xx/ChangeLog index e07819e863..a074d161dc 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/ChangeLog +++ b/c/src/lib/libbsp/arm/lpc32xx/ChangeLog @@ -1,3 +1,10 @@ +2010-10-21 Sebastian Huber <sebastian.huber@embedded-brains.de> + + * include/tm27.h: New file. + * Makefile.am, preinstall.am: Reflect change above. + * include/bsp.h: Fixed lpc32xx_micro_seconds_delay(). + * misc/timer.c: Support for timer tests. + 2010-10-14 Sebastian Huber <sebastian.huber@embedded-brains.de> * include/emc.h, include/i2c.h, include/lpc32xx.h, include/nand-mlc.h: diff --git a/c/src/lib/libbsp/arm/lpc32xx/Makefile.am b/c/src/lib/libbsp/arm/lpc32xx/Makefile.am index 923d929c53..5b5f345de9 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/Makefile.am +++ b/c/src/lib/libbsp/arm/lpc32xx/Makefile.am @@ -21,7 +21,7 @@ dist_project_lib_DATA = bsp_specs ############################################################################### include_HEADERS = include/bsp.h -include_HEADERS += ../../shared/include/tm27.h +include_HEADERS += include/tm27.h nodist_include_HEADERS = ../../shared/include/coverhd.h \ include/bspopts.h diff --git a/c/src/lib/libbsp/arm/lpc32xx/include/bsp.h b/c/src/lib/libbsp/arm/lpc32xx/include/bsp.h index b4c0c1143a..2e1d481feb 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/include/bsp.h +++ b/c/src/lib/libbsp/arm/lpc32xx/include/bsp.h @@ -102,12 +102,12 @@ static inline unsigned lpc32xx_timer(void) static inline void lpc32xx_micro_seconds_delay(unsigned us) { unsigned start = lpc32xx_timer(); - unsigned end = start + us * (LPC32XX_PERIPH_CLK / 1000000); - unsigned now = 0; + unsigned delay = us * (LPC32XX_PERIPH_CLK / 1000000); + unsigned elapsed = 0; do { - now = lpc32xx_timer(); - } while (now < end); + elapsed = lpc32xx_timer() - start; + } while (elapsed < delay); } void lpc32xx_restart(void *addr); diff --git a/c/src/lib/libbsp/arm/lpc32xx/include/tm27.h b/c/src/lib/libbsp/arm/lpc32xx/include/tm27.h new file mode 100644 index 0000000000..03f7c238c2 --- /dev/null +++ b/c/src/lib/libbsp/arm/lpc32xx/include/tm27.h @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2010 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 82178 Puchheim + * Germany + * <info@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#ifndef _RTEMS_TMTEST27 +#error "This is an RTEMS internal file you must not include directly." +#endif + +#ifndef __tm27_h +#define __tm27_h + +#define MUST_WAIT_FOR_INTERRUPT 0 + +#include <assert.h> + +#include <rtems.h> + +#include <bsp/lpc32xx.h> +#include <bsp/irq.h> +#include <bsp/irq-generic.h> + +#define MUST_WAIT_FOR_INTERRUPT 1 + +static void Install_tm27_vector(void (*handler)(rtems_vector_number)) +{ + rtems_status_code sc = RTEMS_SUCCESSFUL; + + LPC32XX_SW_INT = 0; + + sc = rtems_interrupt_handler_install( + LPC32XX_IRQ_SW, + "SW", + RTEMS_INTERRUPT_UNIQUE, + (rtems_interrupt_handler) handler, + NULL + ); + assert(sc == RTEMS_SUCCESSFUL); +} + +static void Cause_tm27_intr(void) +{ + LPC32XX_SW_INT = 0x1; +} + +static void Clear_tm27_intr(void) +{ + LPC32XX_SW_INT = 0; + lpc32xx_irq_set_priority(LPC32XX_IRQ_SW, LPC32XX_IRQ_PRIORITY_LOWEST); +} + +static void Lower_tm27_intr(void) +{ + bsp_interrupt_vector_enable(LPC32XX_IRQ_SW); + lpc32xx_irq_set_priority(LPC32XX_IRQ_SW, LPC32XX_IRQ_PRIORITY_HIGHEST); +} + +#endif /* __tm27_h */ diff --git a/c/src/lib/libbsp/arm/lpc32xx/misc/timer.c b/c/src/lib/libbsp/arm/lpc32xx/misc/timer.c index 5c0246133c..b7900fb4d6 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/misc/timer.c +++ b/c/src/lib/libbsp/arm/lpc32xx/misc/timer.c @@ -22,16 +22,10 @@ #include <rtems.h> #include <rtems/timerdrv.h> -static bool benchmark_timer_find_average_overhead = false; +#include <bsp.h> static uint32_t benchmark_timer_base; -/* TODO */ -static uint32_t lpc32xx_timer(void) -{ - return 0; -} - void benchmark_timer_initialize(void) { benchmark_timer_base = lpc32xx_timer(); @@ -39,17 +33,10 @@ void benchmark_timer_initialize(void) uint32_t benchmark_timer_read(void) { - uint32_t delta = lpc32xx_timer() - benchmark_timer_base; - - if (benchmark_timer_find_average_overhead) { - return delta; - } else { - /* TODO */ - return 0; - } + return lpc32xx_timer() - benchmark_timer_base; } void benchmark_timer_disable_subtracting_average_overhead(bool find_average_overhead) { - benchmark_timer_find_average_overhead = find_average_overhead; + /* VOID */ } diff --git a/c/src/lib/libbsp/arm/lpc32xx/preinstall.am b/c/src/lib/libbsp/arm/lpc32xx/preinstall.am index dc275461f8..176de03027 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/preinstall.am +++ b/c/src/lib/libbsp/arm/lpc32xx/preinstall.am @@ -46,7 +46,7 @@ $(PROJECT_INCLUDE)/bsp.h: include/bsp.h $(PROJECT_INCLUDE)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp.h -$(PROJECT_INCLUDE)/tm27.h: ../../shared/include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp) +$(PROJECT_INCLUDE)/tm27.h: include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h |