I couldn't get this patch to apply. Are you sure it came from the right branch and has no merge commits ahead of it?
Kinsey On Wed, Apr 10, 2024 at 9:24 AM Ning Yang <yan...@qq.com> wrote: > The clock from the ARM timer is derived from the system clock. This clock > can change dynamically e.g. if the system goes into reduced power or in low > power mode. Thus the clock speed adapts to the overall system performance > capabilities. For accurate timing it is recommended to use the system > timers. > > if BSP_CLOCK_USE_SYSTEMTIMER = 1, use the System Timer, otherwise use the > ARM Timer. > --- > .../aarch64/raspberrypi/include/bsp/bcm2711.h | 28 ++++++++++++ > .../raspberrypi/include/bsp/raspberrypi.h | 43 +++++++++++++++++++ > bsps/aarch64/raspberrypi/start/bspstartmmu.c | 8 ++++ > spec/build/bsps/aarch64/raspberrypi/bsp4b.yml | 1 + > spec/build/bsps/aarch64/raspberrypi/obj.yml | 3 ++ > .../bsps/aarch64/raspberrypi/objclock.yml | 4 +- > .../aarch64/raspberrypi/objsystemtimer.yml | 22 ++++++++++ > .../aarch64/raspberrypi/optsystemtimer.yml | 24 +++++++++++ > 8 files changed, 132 insertions(+), 1 deletion(-) > create mode 100644 bsps/aarch64/raspberrypi/include/bsp/raspberrypi.h > create mode 100644 spec/build/bsps/aarch64/raspberrypi/objsystemtimer.yml > create mode 100644 spec/build/bsps/aarch64/raspberrypi/optsystemtimer.yml > > diff --git a/bsps/aarch64/raspberrypi/include/bsp/bcm2711.h > b/bsps/aarch64/raspberrypi/include/bsp/bcm2711.h > index e6c77fa025..8707582ebb 100644 > --- a/bsps/aarch64/raspberrypi/include/bsp/bcm2711.h > +++ b/bsps/aarch64/raspberrypi/include/bsp/bcm2711.h > @@ -11,6 +11,7 @@ > /* > * Copyright (C) 2022 Mohd Noor Aman > * Copyright (C) 2023 Utkarsh Verma > + * Copyright (C) 2024 Ning Yang > * > * > * Redistribution and use in source and binary forms, with or without > @@ -91,6 +92,27 @@ > #define BCM2711_UART5_BASE (BCM2711_PL011_BASE + 0xa00) > #define BCM2711_UART5_SIZE BCM2711_PL011_DEVICE_SIZE > > +/* System Timer */ > +/** > + * NOTE: The GPU uses Compare registers 0 and 2 for > + * it's own RTOS. 1 and 3 are available for use in > + * RTEMS. > + */ > +#define BCM2835_GPU_TIMER_BASE (BCM2711_PERIPHERAL_BASE + 0x2000000+ > 0x3000) > +#define BCM2835_GPU_TIMER_SIZE 0x1C > + > +#define BCM2835_GPU_TIMER_CS (BCM2835_GPU_TIMER_BASE + 0x00) > +#define BCM2835_GPU_TIMER_CS_M0 0x00000001 > +#define BCM2835_GPU_TIMER_CS_M1 0x00000002 > +#define BCM2835_GPU_TIMER_CS_M2 0x00000004 > +#define BCM2835_GPU_TIMER_CS_M3 0x00000008 > +#define BCM2835_GPU_TIMER_CLO (BCM2835_GPU_TIMER_BASE + 0x04) > +#define BCM2835_GPU_TIMER_CHI (BCM2835_GPU_TIMER_BASE + 0x08) > +#define BCM2835_GPU_TIMER_C0 (BCM2835_GPU_TIMER_BASE + 0x0C) > +#define BCM2835_GPU_TIMER_C1 (BCM2835_GPU_TIMER_BASE + 0x10) > +#define BCM2835_GPU_TIMER_C2 (BCM2835_GPU_TIMER_BASE + 0x14) > +#define BCM2835_GPU_TIMER_C3 (BCM2835_GPU_TIMER_BASE + 0x18) > + > /* ARM Local */ > #define BCM2711_ARM_LOCAL_BASE 0xff800000LL > #define BCM2711_ARM_LOCAL_SIZE 0x800000 > @@ -114,4 +136,10 @@ > #define BCM2711_IRQ_AUX (BCM2711_IRQ_VC_PERIPHERAL_BASE + > 29) > #define BCM2711_IRQ_PL011_UART (BCM2711_IRQ_VC_PERIPHERAL_BASE + > 57) > > +/* Interrupt Vectors: System Timer */ > +#define BCM2835_IRQ_ID_GPU_TIMER_M0 (BCM2711_IRQ_VC_PERIPHERAL_BASE + > 0) > +#define BCM2835_IRQ_ID_GPU_TIMER_M1 (BCM2711_IRQ_VC_PERIPHERAL_BASE + > 1) > +#define BCM2835_IRQ_ID_GPU_TIMER_M2 (BCM2711_IRQ_VC_PERIPHERAL_BASE + > 2) > +#define BCM2835_IRQ_ID_GPU_TIMER_M3 (BCM2711_IRQ_VC_PERIPHERAL_BASE + > 3) > + > #endif /* LIBBSP_AARCH64_RASPBERRYPI_BSP_BCM2711_H */ > diff --git a/bsps/aarch64/raspberrypi/include/bsp/raspberrypi.h > b/bsps/aarch64/raspberrypi/include/bsp/raspberrypi.h > new file mode 100644 > index 0000000000..2e1c673bfb > --- /dev/null > +++ b/bsps/aarch64/raspberrypi/include/bsp/raspberrypi.h > @@ -0,0 +1,43 @@ > +/* SPDX-License-Identifier: BSD-2-Clause */ > + > +/** > + * @file > + * > + * @ingroup RTEMSBSPsAArch64RaspberryPi > + * > + * @brief RaspberryPi shared Register Definitions > + */ > + > +/* > + * Copyright (C) 2024 Ning Yang > + * > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > "AS IS" > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, > THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR > PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS > BE > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR > BUSINESS > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > THE > + * POSSIBILITY OF SUCH DAMAGE. > + */ > + > +#ifndef LIBBSP_AARCH64_RASPBERRYPI_RASPBERRYPI_H > +#define LIBBSP_AARCH64_RASPBERRYPI_RASPBERRYPI_H > + > +#include <bsp/bcm2711.h> > +#define BCM2835_REG(addr) *(volatile uint32_t*)(addr) > + > +#endif /* LIBBSP_AARCH64_RASPBERRYPI_RASPBERRYPI_H */ > \ No newline at end of file > diff --git a/bsps/aarch64/raspberrypi/start/bspstartmmu.c > b/bsps/aarch64/raspberrypi/start/bspstartmmu.c > index d5d1381357..eb59b8f31b 100644 > --- a/bsps/aarch64/raspberrypi/start/bspstartmmu.c > +++ b/bsps/aarch64/raspberrypi/start/bspstartmmu.c > @@ -11,6 +11,7 @@ > /* > * Copyright (C) 2022 Mohd Noor Aman > * Copyright (C) 2023 Utkarsh Verma > + * Copyright (C) 2024 Ning Yang > * > * > * Redistribution and use in source and binary forms, with or without > @@ -45,6 +46,7 @@ > #include "bsp/irq.h" > #include "bsp/mbox.h" > #include "bsp/rpi-gpio.h" > +#include "bsp/bcm2711.h" > > #define CONSOLE_DEVICE_MMU_CONFIG(_port, _file, base, size, ...) \ > {.begin = base, .end = base + size, .flags = AARCH64_MMU_DEVICE}, > @@ -52,6 +54,12 @@ > BSP_START_DATA_SECTION static const aarch64_mmu_config_entry > bsp_mmu_config_table[] = { > AARCH64_MMU_DEFAULT_SECTIONS, > + { > + /* System Timer */ > + .begin = BCM2835_GPU_TIMER_BASE, > + .end = BCM2835_GPU_TIMER_BASE + BCM2835_GPU_TIMER_SIZE, > + .flags = AARCH64_MMU_DEVICE, > + }, > > /* clang-format off */ > CONSOLE_DEVICES(CONSOLE_DEVICE_MMU_CONFIG) > diff --git a/spec/build/bsps/aarch64/raspberrypi/bsp4b.yml > b/spec/build/bsps/aarch64/raspberrypi/bsp4b.yml > index 4347235208..fd1f1ab33f 100644 > --- a/spec/build/bsps/aarch64/raspberrypi/bsp4b.yml > +++ b/spec/build/bsps/aarch64/raspberrypi/bsp4b.yml > @@ -17,6 +17,7 @@ includes: [] > install: > - destination: ${BSP_INCLUDEDIR}/bsp > source: > + - bsps/aarch64/raspberrypi/include/bsp/raspberrypi.h > - bsps/aarch64/raspberrypi/include/bsp/bcm2711.h > > source: [] > diff --git a/spec/build/bsps/aarch64/raspberrypi/obj.yml > b/spec/build/bsps/aarch64/raspberrypi/obj.yml > index 4a320336b7..9692cc955f 100644 > --- a/spec/build/bsps/aarch64/raspberrypi/obj.yml > +++ b/spec/build/bsps/aarch64/raspberrypi/obj.yml > @@ -2,6 +2,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause > copyrights: > - Copyright (C) 2022 Mohd Noor Aman > - Copyright (C) 2023 Utkarsh Verma > + - Copyright (C) 2024 Ning Yang > > type: build > enabled-by: true > @@ -31,6 +32,8 @@ links: > uid: objcache > - role: build-dependency > uid: objclock > + - role: build-dependency > + uid: objsystemtimer > - role: build-dependency > uid: objconsole > - role: build-dependency > diff --git a/spec/build/bsps/aarch64/raspberrypi/objclock.yml > b/spec/build/bsps/aarch64/raspberrypi/objclock.yml > index 550df8029a..317919026e 100644 > --- a/spec/build/bsps/aarch64/raspberrypi/objclock.yml > +++ b/spec/build/bsps/aarch64/raspberrypi/objclock.yml > @@ -2,9 +2,11 @@ SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause > copyrights: > - Copyright (C) 2022 Mohd Noor Aman > - Copyright (C) 2023 Utkarsh Verma > + - Copyright (C) 2024 Ning Yang > > type: build > -enabled-by: true > +enabled-by: > + not: BSP_CLOCK_USE_SYSTEMTIMER > > build-type: objects > cflags: [] > diff --git a/spec/build/bsps/aarch64/raspberrypi/objsystemtimer.yml > b/spec/build/bsps/aarch64/raspberrypi/objsystemtimer.yml > new file mode 100644 > index 0000000000..7fc4118d0e > --- /dev/null > +++ b/spec/build/bsps/aarch64/raspberrypi/objsystemtimer.yml > @@ -0,0 +1,22 @@ > +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause > +copyrights: > + - Copyright (C) 2024 Ning Yang > + > +type: build > +enabled-by: > +- BSP_CLOCK_USE_SYSTEMTIMER > + > +build-type: objects > +cflags: [] > +cppflags: [] > +cxxflags: [] > +includes: [] > +install: [] > + > +source: > + - bsps/shared/dev/clock/bcm2835-system-timer.c > + - bsps/shared/dev/cpucounter/cpucounterfrequency.c > + - bsps/shared/dev/cpucounter/cpucounterread.c > + - bsps/shared/dev/getentropy/getentropy-cpucounter.c > + > +links: [] > \ No newline at end of file > diff --git a/spec/build/bsps/aarch64/raspberrypi/optsystemtimer.yml > b/spec/build/bsps/aarch64/raspberrypi/optsystemtimer.yml > new file mode 100644 > index 0000000000..1cceebf22b > --- /dev/null > +++ b/spec/build/bsps/aarch64/raspberrypi/optsystemtimer.yml > @@ -0,0 +1,24 @@ > +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause > +copyrights: > + - Copyright (C) 2024 Ning Yang > + > +type: build > +build-type: option > + > +enabled-by: true > +name: BSP_CLOCK_USE_SYSTEMTIMER > +description: | > + The clock from the ARM timer is derived from the system clock. This > clock can change dynamically e.g. if the system > + goes into reduced power or in low power mode. Thus the clock speed > adapts to the overall system performance > + capabilities. For accurate timing it is recommended to use the system > timers. > + > +actions: > + - get-boolean: null > + - define-condition: null > + - env-enable: null > +default: > + - enabled-by: > + - aarch64/raspberrypi4b > + value: false > + > +links: [] > \ No newline at end of file > -- > 2.34.1 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel >
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel