forked from Imagelibrary/rtems
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.
This commit is contained in:
@@ -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>
|
2010-10-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
* include/emc.h, include/i2c.h, include/lpc32xx.h, include/nand-mlc.h:
|
* include/emc.h, include/i2c.h, include/lpc32xx.h, include/nand-mlc.h:
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ dist_project_lib_DATA = bsp_specs
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
include_HEADERS = include/bsp.h
|
include_HEADERS = include/bsp.h
|
||||||
include_HEADERS += ../../shared/include/tm27.h
|
include_HEADERS += include/tm27.h
|
||||||
|
|
||||||
nodist_include_HEADERS = ../../shared/include/coverhd.h \
|
nodist_include_HEADERS = ../../shared/include/coverhd.h \
|
||||||
include/bspopts.h
|
include/bspopts.h
|
||||||
|
|||||||
@@ -102,12 +102,12 @@ static inline unsigned lpc32xx_timer(void)
|
|||||||
static inline void lpc32xx_micro_seconds_delay(unsigned us)
|
static inline void lpc32xx_micro_seconds_delay(unsigned us)
|
||||||
{
|
{
|
||||||
unsigned start = lpc32xx_timer();
|
unsigned start = lpc32xx_timer();
|
||||||
unsigned end = start + us * (LPC32XX_PERIPH_CLK / 1000000);
|
unsigned delay = us * (LPC32XX_PERIPH_CLK / 1000000);
|
||||||
unsigned now = 0;
|
unsigned elapsed = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
now = lpc32xx_timer();
|
elapsed = lpc32xx_timer() - start;
|
||||||
} while (now < end);
|
} while (elapsed < delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lpc32xx_restart(void *addr);
|
void lpc32xx_restart(void *addr);
|
||||||
|
|||||||
69
c/src/lib/libbsp/arm/lpc32xx/include/tm27.h
Normal file
69
c/src/lib/libbsp/arm/lpc32xx/include/tm27.h
Normal 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 */
|
||||||
@@ -22,16 +22,10 @@
|
|||||||
#include <rtems.h>
|
#include <rtems.h>
|
||||||
#include <rtems/timerdrv.h>
|
#include <rtems/timerdrv.h>
|
||||||
|
|
||||||
static bool benchmark_timer_find_average_overhead = false;
|
#include <bsp.h>
|
||||||
|
|
||||||
static uint32_t benchmark_timer_base;
|
static uint32_t benchmark_timer_base;
|
||||||
|
|
||||||
/* TODO */
|
|
||||||
static uint32_t lpc32xx_timer(void)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void benchmark_timer_initialize(void)
|
void benchmark_timer_initialize(void)
|
||||||
{
|
{
|
||||||
benchmark_timer_base = lpc32xx_timer();
|
benchmark_timer_base = lpc32xx_timer();
|
||||||
@@ -39,17 +33,10 @@ void benchmark_timer_initialize(void)
|
|||||||
|
|
||||||
uint32_t benchmark_timer_read(void)
|
uint32_t benchmark_timer_read(void)
|
||||||
{
|
{
|
||||||
uint32_t delta = lpc32xx_timer() - benchmark_timer_base;
|
return lpc32xx_timer() - benchmark_timer_base;
|
||||||
|
|
||||||
if (benchmark_timer_find_average_overhead) {
|
|
||||||
return delta;
|
|
||||||
} else {
|
|
||||||
/* TODO */
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void benchmark_timer_disable_subtracting_average_overhead(bool find_average_overhead)
|
void benchmark_timer_disable_subtracting_average_overhead(bool find_average_overhead)
|
||||||
{
|
{
|
||||||
benchmark_timer_find_average_overhead = find_average_overhead;
|
/* VOID */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ $(PROJECT_INCLUDE)/bsp.h: include/bsp.h $(PROJECT_INCLUDE)/$(dirstamp)
|
|||||||
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h
|
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h
|
||||||
PREINSTALL_FILES += $(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
|
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h
|
||||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h
|
PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user