* 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.
This commit is contained in:
Sebastian Huber
2010-10-21 13:58:18 +00:00
parent 6366c2e2a6
commit c477be46b8
6 changed files with 85 additions and 22 deletions

View File

@@ -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:

View File

@@ -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

View File

@@ -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);

View File

@@ -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 */

View File

@@ -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 */
}

View File

@@ -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