diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-02-12 10:31:38 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-02-14 10:28:29 +0100 |
commit | 24bf11eca11947d961cc9bb5f7d92dabff169e93 (patch) | |
tree | b28f3aa8a21df91e8feaf324613aa76460559837 /c/src/lib/libbsp/arm | |
parent | bsps/arm: Fix Cortex-A9 MPCore nanoseconds handler (diff) | |
download | rtems-24bf11eca11947d961cc9bb5f7d92dabff169e93.tar.bz2 |
score: Add CPU counter support
Add a CPU counter interface to allow access to a free-running counter.
It is useful to measure short time intervals. This can be used for
example to enable profiling of critical low-level functions.
Add two busy wait functions rtems_counter_delay_ticks() and
rtems_counter_delay_nanoseconds() implemented via the CPU counter.
Diffstat (limited to '')
20 files changed, 60 insertions, 5 deletions
diff --git a/c/src/lib/libbsp/arm/csb336/Makefile.am b/c/src/lib/libbsp/arm/csb336/Makefile.am index b21206b034..6de07c7e73 100644 --- a/c/src/lib/libbsp/arm/csb336/Makefile.am +++ b/c/src/lib/libbsp/arm/csb336/Makefile.am @@ -33,6 +33,8 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c ../../shared/bsppost.c \ ../../shared/bsppredriverhook.c startup/bspstart.c ../../shared/bspclean.c \ ../../shared/bspreset.c startup/memmap.c ../../shared/bootcard.c \ ../../shared/sbrk.c ../../shared/gnatinstallhandler.c +libbsp_a_SOURCES += ../../shared/cpucounterread.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c # console libbsp_a_SOURCES += console/uart.c # abort diff --git a/c/src/lib/libbsp/arm/csb337/Makefile.am b/c/src/lib/libbsp/arm/csb337/Makefile.am index 5eafd497dd..90d3a2ada6 100644 --- a/c/src/lib/libbsp/arm/csb337/Makefile.am +++ b/c/src/lib/libbsp/arm/csb337/Makefile.am @@ -56,6 +56,8 @@ libbsp_a_SOURCES = ../../shared/bsplibc.c ../../shared/bsppost.c \ ../../shared/bspclean.c startup/bspreset.c \ startup/memmap.c ../../shared/bootcard.c ../../shared/sbrk.c \ ../../shared/gnatinstallhandler.c +libbsp_a_SOURCES += ../../shared/cpucounterread.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c # console libbsp_a_SOURCES += ../../shared/console.c console/uarts.c \ ../../shared/console_select.c ../../shared/console_control.c \ diff --git a/c/src/lib/libbsp/arm/edb7312/Makefile.am b/c/src/lib/libbsp/arm/edb7312/Makefile.am index 236a9925f0..63df39f98c 100644 --- a/c/src/lib/libbsp/arm/edb7312/Makefile.am +++ b/c/src/lib/libbsp/arm/edb7312/Makefile.am @@ -35,6 +35,8 @@ libbsp_a_SOURCES += ../../shared/bsppost.c ../../shared/bsplibc.c \ ../../shared/bsppredriverhook.c startup/bspstart.c \ ../../shared/bspclean.c ../../shared/bootcard.c ../../shared/sbrk.c \ startup/bspreset.c ../../shared/gnatinstallhandler.c +libbsp_a_SOURCES += ../../shared/cpucounterread.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c # clock libbsp_a_SOURCES += clock/clockdrv.c diff --git a/c/src/lib/libbsp/arm/gba/Makefile.am b/c/src/lib/libbsp/arm/gba/Makefile.am index 1b271bc720..dbb656df5c 100644 --- a/c/src/lib/libbsp/arm/gba/Makefile.am +++ b/c/src/lib/libbsp/arm/gba/Makefile.am @@ -38,6 +38,8 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c ../../shared/bsppost.c \ startup/bspreset.c ../../shared/bootcard.c ../../shared/sbrk.c \ ../../shared/gnatinstallhandler.c \ startup/bspstart.c +libbsp_a_SOURCES += ../../shared/cpucounterread.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c # clock libbsp_a_SOURCES += clock/clockdrv.c libbsp_a_SOURCES += ../../shared/clockdrv_shell.h diff --git a/c/src/lib/libbsp/arm/gdbarmsim/Makefile.am b/c/src/lib/libbsp/arm/gdbarmsim/Makefile.am index f03a257471..8a351a2610 100644 --- a/c/src/lib/libbsp/arm/gdbarmsim/Makefile.am +++ b/c/src/lib/libbsp/arm/gdbarmsim/Makefile.am @@ -33,6 +33,8 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c ../../shared/bsppost.c \ ../../shared/bsppredriverhook.c ../../shared/bspstart.c \ ../../shared/bspclean.c startup/bspreset.c ../../shared/bootcard.c \ ../../shared/sbrk.c ../../shared/gnatinstallhandler.c startup/syscalls.c +libbsp_a_SOURCES += ../../shared/cpucounterread.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c # console libbsp_a_SOURCES += ../../shared/console-polled.c console/console-io.c # clock diff --git a/c/src/lib/libbsp/arm/gp32/Makefile.am b/c/src/lib/libbsp/arm/gp32/Makefile.am index 92dfc72b0c..72a41c65d9 100644 --- a/c/src/lib/libbsp/arm/gp32/Makefile.am +++ b/c/src/lib/libbsp/arm/gp32/Makefile.am @@ -34,6 +34,8 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c ../../shared/bsppost.c \ ../../shared/bspclean.c startup/bspreset.c \ startup/memmap.c ../../shared/bootcard.c ../../shared/sbrk.c \ ../../shared/gnatinstallhandler.c +libbsp_a_SOURCES += ../../shared/cpucounterread.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c # console libbsp_a_SOURCES += console/uart.c ../../shared/console.c \ ../../shared/console_select.c ../../shared/console_control.c \ diff --git a/c/src/lib/libbsp/arm/gumstix/Makefile.am b/c/src/lib/libbsp/arm/gumstix/Makefile.am index 6372cafb8b..e55e80caf4 100644 --- a/c/src/lib/libbsp/arm/gumstix/Makefile.am +++ b/c/src/lib/libbsp/arm/gumstix/Makefile.am @@ -33,6 +33,8 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c ../../shared/bsppost.c \ ../../shared/bootcard.c ../../shared/sbrk.c \ ../../shared/gnatinstallhandler.c ../../shared/bsppretaskinghook.c \ ../../shared/bspclean.c startup/bspstart.c startup/bspreset.c startup/memmap.c +libbsp_a_SOURCES += ../../shared/cpucounterread.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c #console libbsp_a_SOURCES += console/uarts.c ../../shared/console.c \ diff --git a/c/src/lib/libbsp/arm/lm3s69xx/Makefile.am b/c/src/lib/libbsp/arm/lm3s69xx/Makefile.am index 589112a715..28a31a6644 100644 --- a/c/src/lib/libbsp/arm/lm3s69xx/Makefile.am +++ b/c/src/lib/libbsp/arm/lm3s69xx/Makefile.am @@ -68,6 +68,8 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c libbsp_a_SOURCES += ../../shared/bsppost.c libbsp_a_SOURCES += ../../shared/bsppredriverhook.c libbsp_a_SOURCES += ../../shared/bsppretaskinghook.c +libbsp_a_SOURCES += ../../shared/cpucounterread.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c libbsp_a_SOURCES += ../../shared/gnatinstallhandler.c libbsp_a_SOURCES += ../../shared/sbrk.c libbsp_a_SOURCES += ../../shared/src/stackalloc.c diff --git a/c/src/lib/libbsp/arm/lpc24xx/Makefile.am b/c/src/lib/libbsp/arm/lpc24xx/Makefile.am index 28ef7088bd..3b5c94fbc0 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/Makefile.am +++ b/c/src/lib/libbsp/arm/lpc24xx/Makefile.am @@ -101,6 +101,7 @@ libbsp_a_SOURCES += ../../shared/bootcard.c \ ../../shared/sbrk.c \ ../../shared/src/stackalloc.c \ ../../shared/src/uart-output-char.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c # Startup libbsp_a_SOURCES += ../shared/startup/bsp-start-memcpy.S diff --git a/c/src/lib/libbsp/arm/lpc24xx/misc/system-clocks.c b/c/src/lib/libbsp/arm/lpc24xx/misc/system-clocks.c index fcd56eaf28..e1ccb5899f 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/misc/system-clocks.c +++ b/c/src/lib/libbsp/arm/lpc24xx/misc/system-clocks.c @@ -7,7 +7,7 @@ */ /* - * Copyright (c) 2008-2012 embedded brains GmbH. All rights reserved. + * Copyright (c) 2008-2014 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Obere Lagerstr. 30 @@ -20,6 +20,8 @@ * http://www.rtems.com/license/LICENSE. */ +#include <rtems/counter.h> + #include <bsp.h> #include <bsp/lpc24xx.h> #include <bsp/system-clocks.h> @@ -59,6 +61,13 @@ void lpc24xx_timer_initialize(void) /* Start timer */ T1TCR = TCR_EN; + + rtems_counter_initialize_converter(LPC24XX_PCLK); +} + +CPU_Counter_ticks _CPU_Counter_read(void) +{ + return lpc24xx_timer(); } void lpc24xx_micro_seconds_delay(unsigned us) diff --git a/c/src/lib/libbsp/arm/lpc32xx/Makefile.am b/c/src/lib/libbsp/arm/lpc32xx/Makefile.am index 1489efce3e..c2c19f69dc 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/Makefile.am +++ b/c/src/lib/libbsp/arm/lpc32xx/Makefile.am @@ -88,6 +88,7 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c libbsp_a_SOURCES += ../../shared/bsppost.c libbsp_a_SOURCES += ../../shared/bsppredriverhook.c libbsp_a_SOURCES += ../../shared/bsppretaskinghook.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c libbsp_a_SOURCES += ../../shared/gnatinstallhandler.c libbsp_a_SOURCES += ../../shared/sbrk.c libbsp_a_SOURCES += ../../shared/src/stackalloc.c diff --git a/c/src/lib/libbsp/arm/lpc32xx/startup/bspstart.c b/c/src/lib/libbsp/arm/lpc32xx/startup/bspstart.c index 2a8bcc76e1..e2f80db535 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/startup/bspstart.c +++ b/c/src/lib/libbsp/arm/lpc32xx/startup/bspstart.c @@ -7,7 +7,7 @@ */ /* - * Copyright (c) 2009-2012 embedded brains GmbH. All rights reserved. + * Copyright (c) 2009-2014 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Obere Lagerstr. 30 @@ -20,14 +20,19 @@ * http://www.rtems.com/license/LICENSE. */ +#include <rtems/counter.h> + #include <bsp.h> #include <bsp/bootcard.h> #include <bsp/irq-generic.h> -#include <bsp/irq.h> -#include <bsp/linker-symbols.h> -#include <bsp/lpc32xx.h> + +CPU_Counter_ticks _CPU_Counter_read(void) +{ + return lpc32xx_timer(); +} void bsp_start(void) { + rtems_counter_initialize_converter(LPC32XX_PERIPH_CLK); bsp_interrupt_initialize(); } diff --git a/c/src/lib/libbsp/arm/nds/Makefile.am b/c/src/lib/libbsp/arm/nds/Makefile.am index 27769747b7..2f83aa3f9a 100644 --- a/c/src/lib/libbsp/arm/nds/Makefile.am +++ b/c/src/lib/libbsp/arm/nds/Makefile.am @@ -35,6 +35,8 @@ startup_rel_SOURCES = ../../shared/bsplibc.c ../../shared/bsppost.c \ startup/bspstart.c ../../shared/bspclean.c startup/bspreset.c \ ../../shared/bspgetworkarea.c ../../shared/bsppredriverhook.c \ ../../shared/bsppretaskinghook.c ../../shared/bootcard.c +libbsp_a_SOURCES += ../../shared/cpucounterread.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c startup_rel_CPPFLAGS = $(AM_CPPFLAGS) -DARM9 -I$(srcdir)/libnds/include startup_rel_LDFLAGS = $(RTEMS_RELLDFLAGS) diff --git a/c/src/lib/libbsp/arm/raspberrypi/Makefile.am b/c/src/lib/libbsp/arm/raspberrypi/Makefile.am index a06979a887..3fb0fafad3 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/Makefile.am +++ b/c/src/lib/libbsp/arm/raspberrypi/Makefile.am @@ -80,6 +80,8 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c libbsp_a_SOURCES += ../../shared/bsppost.c libbsp_a_SOURCES += ../../shared/bsppredriverhook.c libbsp_a_SOURCES += ../../shared/bsppretaskinghook.c +libbsp_a_SOURCES += ../../shared/cpucounterread.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c libbsp_a_SOURCES += ../../shared/gnatinstallhandler.c libbsp_a_SOURCES += ../../shared/sbrk.c libbsp_a_SOURCES += ../../shared/src/stackalloc.c diff --git a/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am b/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am index d5c3957860..d0cee67e44 100644 --- a/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am +++ b/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am @@ -84,6 +84,7 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c libbsp_a_SOURCES += ../../shared/bsppost.c libbsp_a_SOURCES += ../../shared/bsppredriverhook.c libbsp_a_SOURCES += ../../shared/bsppretaskinghook.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c libbsp_a_SOURCES += ../../shared/gnatinstallhandler.c libbsp_a_SOURCES += ../../shared/sbrk.c libbsp_a_SOURCES += ../../shared/timerstub.c diff --git a/c/src/lib/libbsp/arm/rtl22xx/Makefile.am b/c/src/lib/libbsp/arm/rtl22xx/Makefile.am index 31fd115b9f..1c156fabf2 100644 --- a/c/src/lib/libbsp/arm/rtl22xx/Makefile.am +++ b/c/src/lib/libbsp/arm/rtl22xx/Makefile.am @@ -36,6 +36,8 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c ../../shared/bsppost.c \ ../../shared/bspclean.c startup/bspreset.c \ ../../shared/bootcard.c ../../shared/sbrk.c \ ../../shared/gnatinstallhandler.c +libbsp_a_SOURCES += ../../shared/cpucounterread.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c # console libbsp_a_SOURCES += ../../shared/console.c \ ../../shared/console_select.c ../../shared/console_control.c \ diff --git a/c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c b/c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c index 375b392cd3..54f09fa13f 100644 --- a/c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c +++ b/c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c @@ -12,6 +12,8 @@ * http://www.rtems.com/license/LICENSE. */ +#include <rtems/counter.h> + #include <bsp.h> #include <bsp/irq.h> #include <bsp/arm-a9mpcore-regs.h> @@ -94,6 +96,15 @@ static void a9mpcore_clock_initialize(void) | A9MPCORE_GT_CTRL_IRQ_EN | A9MPCORE_GT_CTRL_COMP_EN | A9MPCORE_GT_CTRL_TMR_EN; + + rtems_counter_initialize_converter((uint32_t) periphclk); +} + +CPU_Counter_ticks _CPU_Counter_read(void) +{ + volatile a9mpcore_gt *gt = A9MPCORE_GT; + + return gt->cntrlower; } static void a9mpcore_clock_cleanup(void) diff --git a/c/src/lib/libbsp/arm/smdk2410/Makefile.am b/c/src/lib/libbsp/arm/smdk2410/Makefile.am index e5dee1a99a..24b070c844 100644 --- a/c/src/lib/libbsp/arm/smdk2410/Makefile.am +++ b/c/src/lib/libbsp/arm/smdk2410/Makefile.am @@ -34,6 +34,8 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c ../../shared/bsppost.c \ ../../shared/bsppretaskinghook.c \ ../../shared/bsppredriverhook.c ../../shared/bspgetworkarea.c \ ../../shared/gnatinstallhandler.c +libbsp_a_SOURCES += ../../shared/cpucounterread.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c # console libbsp_a_SOURCES += ../gp32/console/uart.c ../../shared/console.c \ ../../shared/console_select.c \ diff --git a/c/src/lib/libbsp/arm/stm32f4/Makefile.am b/c/src/lib/libbsp/arm/stm32f4/Makefile.am index 8bdaa5e3f8..4eaf08b3ea 100644 --- a/c/src/lib/libbsp/arm/stm32f4/Makefile.am +++ b/c/src/lib/libbsp/arm/stm32f4/Makefile.am @@ -76,6 +76,8 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c libbsp_a_SOURCES += ../../shared/bsppost.c libbsp_a_SOURCES += ../../shared/bsppredriverhook.c libbsp_a_SOURCES += ../../shared/bsppretaskinghook.c +libbsp_a_SOURCES += ../../shared/cpucounterread.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c libbsp_a_SOURCES += ../../shared/gnatinstallhandler.c libbsp_a_SOURCES += ../../shared/sbrk.c libbsp_a_SOURCES += ../../shared/src/stackalloc.c diff --git a/c/src/lib/libbsp/arm/xilinx-zynq/Makefile.am b/c/src/lib/libbsp/arm/xilinx-zynq/Makefile.am index fd5d47acd5..f27b66db0c 100644 --- a/c/src/lib/libbsp/arm/xilinx-zynq/Makefile.am +++ b/c/src/lib/libbsp/arm/xilinx-zynq/Makefile.am @@ -78,6 +78,7 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c libbsp_a_SOURCES += ../../shared/bsppost.c libbsp_a_SOURCES += ../../shared/bsppredriverhook.c libbsp_a_SOURCES += ../../shared/bsppretaskinghook.c +libbsp_a_SOURCES += ../../shared/cpucounterdiff.c libbsp_a_SOURCES += ../../shared/gnatinstallhandler.c libbsp_a_SOURCES += ../../shared/sbrk.c libbsp_a_SOURCES += ../../shared/timerstub.c |