[PATCH] Fix GDB build on ArchLinux
From: Andreas Kölbl Archlinux provides both, libguile v2.0 and v2.2. GDB states in configuration its compatibility with both versions of libguile which is false. The SCM_port interface of libguile was removed in v2.2 and therefore breaks GDB as a user. RTEMS does not use libguile and therefore it can be compiled without support. https://sourceware.org/bugzilla/show_bug.cgi?id=21104 Close #3054. --- source-builder/config/gdb-7-1.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/source-builder/config/gdb-7-1.cfg b/source-builder/config/gdb-7-1.cfg index 21591b5..a045c3b 100644 --- a/source-builder/config/gdb-7-1.cfg +++ b/source-builder/config/gdb-7-1.cfg @@ -119,6 +119,7 @@ BuildRoot: %{_tmppath}/%{name}-root-%(%{__id_u} -n) %{?gdb-sim-options:%{gdb-sim-options}} \ --without-zlib \ --with-expat \ +--with-guile=no \ %{!?without_python:%{with_python_option}} \ --prefix=%{_prefix} --bindir=%{_bindir} \ --exec-prefix=%{_exec_prefix} \ -- 2.13.2 ___ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel
[PATCH 3/6] boot_card: Add attribute weak to override
From: Andreas Kölbl If this is omitted, libtests, where this symbol gets overridden, fail to build. Affected tests: sptimecounter01 spinternalerror01 --- c/src/lib/libbsp/shared/bootcard.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/c/src/lib/libbsp/shared/bootcard.c b/c/src/lib/libbsp/shared/bootcard.c index 3e243d2569..6e5df99f1e 100644 --- a/c/src/lib/libbsp/shared/bootcard.c +++ b/c/src/lib/libbsp/shared/bootcard.c @@ -61,7 +61,8 @@ RTEMS_SYSINIT_ITEM( * the system while maximizing shared code and keeping BSP code in C * as much as possible. */ -void boot_card( + +__attribute__((weak)) void boot_card( const char *cmdline ) { -- 2.13.3 ___ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel
[PATCH 2/6] jetson-tk1: Add start.S
From: Andreas Kölbl This own implementation allows for modifications like passing a cmdline parameter. --- c/src/lib/libbsp/arm/jetson-tk1/Makefile.am | 3 +- c/src/lib/libbsp/arm/jetson-tk1/configure.ac | 3 + c/src/lib/libbsp/arm/jetson-tk1/start/start.S | 456 ++ 3 files changed, 461 insertions(+), 1 deletion(-) create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/start/start.S diff --git a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am index 4316e67957..9fc1695cba 100644 --- a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am +++ b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am @@ -50,7 +50,7 @@ include_bsp_HEADERS += include/mmu.h noinst_LIBRARIES = libbspstart.a -libbspstart_a_SOURCES = ../shared/start/start.S +libbspstart_a_SOURCES = start/start.S project_lib_DATA = start.$(OBJEXT) @@ -79,6 +79,7 @@ libbsp_a_SOURCES += ../../shared/sbrk.c libbsp_a_SOURCES += ../../shared/src/stackalloc.c libbsp_a_SOURCES += ../shared/startup/bsp-start-memcpy.S libbsp_a_SOURCES += ../shared/arm-cp15-set-ttb-entries.c +libbsp_a_SOURCES += ../shared/startup/bsp-start-in-hyp-support.S # Cache libbsp_a_SOURCES += ../../../libcpu/shared/src/cache_manager.c diff --git a/c/src/lib/libbsp/arm/jetson-tk1/configure.ac b/c/src/lib/libbsp/arm/jetson-tk1/configure.ac index 7d4dce3008..18e9ed 100644 --- a/c/src/lib/libbsp/arm/jetson-tk1/configure.ac +++ b/c/src/lib/libbsp/arm/jetson-tk1/configure.ac @@ -21,6 +21,9 @@ use]) RTEMS_BSPOPTS_SET([TEGRA_BASE],[*],[0x8000]) RTEMS_BSPOPTS_HELP([TEGRA_BASE],[Base load address]) +RTEMS_BSPOPTS_SET([BSP_START_IN_HYP_SUPPORT],[*],[1]) +RTEMS_BSPOPTS_HELP([BSP_START_IN_HYP_SUPPORT], [Support start of BSP in ARM HYP mode]) + AC_DEFUN([TEGRA_LINKCMD],[ AC_ARG_VAR([$1],[$2; default $3])dnl [$1]=[$]{[$1]:-[$3]} diff --git a/c/src/lib/libbsp/arm/jetson-tk1/start/start.S b/c/src/lib/libbsp/arm/jetson-tk1/start/start.S new file mode 100644 index 00..bb984189ba --- /dev/null +++ b/c/src/lib/libbsp/arm/jetson-tk1/start/start.S @@ -0,0 +1,456 @@ +/** + * @file + * + * @brief Boot and system start code. + */ + +/* + * Copyright (c) 2008, 2016 embedded brains GmbH. All rights reserved. + * + * Authors: + * Andreas Kölbl + * OTH Regensburg + * Seybothstraße 2 + * 93053 Regensburg + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#include +#include +#include + +#include +#include +#include + + /* External symbols */ + .extern bsp_reset + .extern boot_card + .extern bsp_start_hook_0 + .extern bsp_start_hook_1 + .extern bsp_stack_irq_end + .extern bsp_stack_fiq_end + .extern bsp_stack_abt_end + .extern bsp_stack_und_end + .extern bsp_stack_svc_end +#ifdef RTEMS_SMP + .extern bsp_stack_all_size +#endif + .extern _ARMV4_Exception_undef_default + .extern _ARMV4_Exception_swi_default + .extern _ARMV4_Exception_data_abort_default + .extern _ARMV4_Exception_pref_abort_default + .extern _ARMV4_Exception_reserved_default + .extern _ARMV4_Exception_interrupt + .extern _ARMV4_Exception_fiq_default + .extern _ARMV7M_Exception_default + +#ifdef BSP_START_NEEDS_REGISTER_INITIALIZATION + .extern bsp_start_init_registers_core + .extern bsp_start_init_registers_banked_fiq + .extern bsp_start_init_registers_vfp +#endif + +#ifdef BSP_START_IN_HYP_SUPPORT + .extern bsp_start_arm_drop_hyp_mode + .globl bsp_start_hyp_vector_table_begin +#endif + + /* Global symbols */ + .globl _start + .globl bsp_start_vector_table_begin + .globl bsp_start_vector_table_end + .globl bsp_start_vector_table_size + .globl bsp_vector_table_size + .globl bsp_start_hook_0_done + + .section".bsp_start_text", "ax" + +#if defined(ARM_MULTILIB_ARCH_V4) + + .arm + +/* + * This is the exception vector table and the pointers to the default + * exceptions handlers. + */ + +bsp_start_vector_table_begin: + + ldr pc, handler_addr_reset + ldr pc, handler_addr_undef + ldr pc, handler_addr_swi + ldr pc, handler_addr_prefetch + ldr pc, handler_addr_abort + + /* Program signature checked by boot loader */ + .word 0xb8a06f58 + + ldr pc, handler_addr_irq + ldr pc, handler_addr_fiq + +handler_addr_reset: + +#ifdef BSP_START_RESET_VECTOR + .word BSP_START_RESET_VECTOR +#else + .word _start +#endif + +handler_addr_undef: + + .word _ARMV4_Exception_undef_default + +handler_addr_swi: + + .word _ARMV4_Exception_swi_default + +handler_addr_prefetch: + + .word _ARMV4_Exception_pref_abort_default + +ha
[PATCH 5/6] cmdline: Add boot_cpu parser
From: Andreas Kölbl This adds the boot cpu to get parsed via cmdline on address 0x83FF8000 (by default). This allows the shared arm-gic-irq driver to only redirect irqs to the boot cpu. Running into a hypervisor, irq redirecting to different, not available cpus, may crash RTEMS. --- c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h | 9 - c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in | 4 ++-- c/src/lib/libbsp/arm/shared/arm-gic-irq.c | 6 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h b/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h index d50bfaaed0..e02d24dd7e 100644 --- a/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h +++ b/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h @@ -11,7 +11,14 @@ #define LIBBSP_ARM_JETSONTK1_CMDLINE_H #include +#define bsp_mmu_size 0x4000 +#define bsp_cmdline_size 0x4000 -#define BSP_CMDLINE_LOCATION (TEGRA_BASE + MEMORY_SIZE - 0x4000) +#ifndef ASM +uint8_t bsp_get_boot_cpu(void); +#endif + +#define BSP_CMDLINE_LOCATION (TEGRA_BASE + MEMORY_SIZE - bsp_mmu_size - \ +bsp_cmdline_size) #endif /* LIBBSP_ARM_JETSONTK1_CMDLINE_H */ diff --git a/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in b/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in index ddc19c5097..468ec42c63 100644 --- a/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in +++ b/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in @@ -1,5 +1,5 @@ -bsp_mmu_size = 16k; -bsp_cmdline_size = 16k; +bsp_mmu_size = DEFINED (bsp_mmu_size) ? bsp_mmu_size : 16k; +bsp_cmdline_size = DEFINED (bsp_cmdline_size) ? bsp_cmdline_size : 16k; MEMORY { RAM (AIW) : ORIGIN = @TEGRA_BASE@, LENGTH = @MEMORY_SIZE@ - bsp_mmu_size - bsp_cmdline_size diff --git a/c/src/lib/libbsp/arm/shared/arm-gic-irq.c b/c/src/lib/libbsp/arm/shared/arm-gic-irq.c index 5a4a998bfb..b006bb4f7a 100644 --- a/c/src/lib/libbsp/arm/shared/arm-gic-irq.c +++ b/c/src/lib/libbsp/arm/shared/arm-gic-irq.c @@ -15,6 +15,7 @@ #include #include +#include #include @@ -78,6 +79,9 @@ rtems_status_code bsp_interrupt_facility_initialize(void) volatile gic_dist *dist = ARM_GIC_DIST; uint32_t id_count = get_id_count(dist); uint32_t id; + uint8_t boot_cpu; + + boot_cpu = bsp_get_boot_cpu(); arm_cp15_set_exception_handler( ARM_EXCEPTION_IRQ, @@ -89,7 +93,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void) } for (id = 32; id < id_count; ++id) { -gic_id_set_targets(dist, id, 0x01); +gic_id_set_targets(dist, id, 1 << boot_cpu); } cpuif->iccpmr = GIC_CPUIF_ICCPMR_PRIORITY(0xff); -- 2.13.3 ___ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel
[PATCH 6/6] gpio: Add tegra124 gpio support
From: Andreas Kölbl Implements the interface definded in libbsp/shared for Tegra124 processors. bsp specific: The bank parameter has to include the port specified by the tegra124 address map In order to set a pin either in input or output mode requires an additional pointer of type uint32_t passing the pinmux port of the bank --- c/src/lib/libbsp/arm/jetson-tk1/Makefile.am| 5 + c/src/lib/libbsp/arm/jetson-tk1/README | 3 + .../lib/libbsp/arm/jetson-tk1/gpio/tegra124-gpio.c | 271 + c/src/lib/libbsp/arm/jetson-tk1/include/bsp.h | 4 + .../libbsp/arm/jetson-tk1/include/tegra124-gpio.h | 61 + .../arm/jetson-tk1/startup/mm_config_table.c | 14 ++ 6 files changed, 358 insertions(+) create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/gpio/tegra124-gpio.c create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/tegra124-gpio.h diff --git a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am index 37d2ca267e..4ec5c81b14 100644 --- a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am +++ b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am @@ -44,6 +44,7 @@ include_bsp_HEADERS += include/cmdline.h include_bsp_HEADERS += include/irq.h include_bsp_HEADERS += include/memory.h include_bsp_HEADERS += include/mmu.h +include_bsp_HEADERS += include/tegra124-gpio.h ### # Data # @@ -107,6 +108,10 @@ libbsp_a_SOURCES += ../../shared/src/irq-legacy.c libbsp_a_SOURCES += ../../shared/src/irq-server.c libbsp_a_SOURCES += ../../shared/src/irq-shell.c +# GPIO +libbsp_a_SOURCES += ../../shared/gpio.c +libbsp_a_SOURCES += gpio/tegra124-gpio.c + # Restart libbsp_a_SOURCES += startup/bspreset.c diff --git a/c/src/lib/libbsp/arm/jetson-tk1/README b/c/src/lib/libbsp/arm/jetson-tk1/README index 13821c7082..50022cf30c 100644 --- a/c/src/lib/libbsp/arm/jetson-tk1/README +++ b/c/src/lib/libbsp/arm/jetson-tk1/README @@ -4,6 +4,7 @@ This BSP currently supports the following devices: - Console using UART-D on DB9 connector and UART-A on the J3A2 Pin header - Clock using the ARM internal CP15 timer - Benchmark timer using the Nvidia Generic Timer TimerUS + - GPIOs Checkout the options described in include/bspopts.h.in in order to configure the second console or let the consoles operate interrupt driven. @@ -12,6 +13,7 @@ Currently, following IRQs are used: If configured NS8250_CONSOLE_USE_INTERRUPTS=1) - 122 - 68 + - 119 for the GPIO_6 bank (PU0 - PU6) Also allow the following memory regions: - UARTA 0x40@0x70006000 @@ -19,3 +21,4 @@ Also allow the following memory regions: - Nvidia Timers 0x1000@0x60005000 - RAM 64MB@0x9000 - PINMUX AUX 0x1000@0x70003000 + - GPIO 0x1000@0x6000d000 diff --git a/c/src/lib/libbsp/arm/jetson-tk1/gpio/tegra124-gpio.c b/c/src/lib/libbsp/arm/jetson-tk1/gpio/tegra124-gpio.c new file mode 100644 index 00..da35b6dfe0 --- /dev/null +++ b/c/src/lib/libbsp/arm/jetson-tk1/gpio/tegra124-gpio.c @@ -0,0 +1,271 @@ +/* + * Copyright (c) OTH Regensburg, 2017 + * Author: Andreas Kölbl + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#include +#include +#include +#include + +#define GPIO_CNF 0x00 +#define GPIO_OE 0x10 +#define GPIO_OUT 0x20 +#define GPIO_IN 0x30 +#define GPIO_INT_STA 0x40 +#define GPIO_INT_ENB 0x50 +#define GPIO_INT_LVL 0x60 +#define GPIO_INT_CLR 0x70 + +#define GPIO_MSK_CNF 0x80 +#define GPIO_MSK_OE 0x90 +#define GPIO_MSK_OUT 0xa0 +#define GPIO_MSK_INT_STA 0xc0 +#define GPIO_MSK_INT_ENB 0xd0 +#define GPIO_MSK_INT_LVL 0xe0 + +/* + * To achieve a performant and compatible implementation the bank parameter has + * also to include the gpio port address, Tegra K1 TRM, p. 278 + */ + +static inline void tegra_gpio_write( + uintptr_t gpio_reg, + uint32_t bank, + uint32_t value +) +{ + mmio_write( GPIO_BASE + gpio_reg + bank, value ); +} + +static uint32_t tegra_gpio_read( + uintptr_t gpio_reg, + uint32_t bank +) +{ + return mmio_read( GPIO_BASE + gpio_reg + bank ); +} + +static inline void pinmux_write( + uint32_t pinmux_reg, + uint32_t pin, + tegra_pinmux_property property +) +{ + mmio_write( PINMUX_AUX + pinmux_reg + 4 * pin, property ); +} + +static inline uint32_t pinmux_read( + uint32_t pinmux_reg, + uint32_t pin +) +{ + return mmio_read( PINMUX_AUX + pinmux_reg + 4 * pin ); +} + +static inline void gpio_set_level( + uint32_t bank, + uint32_t pin, + rtems_gpio_interrupt sens +) +{ + uint32_t value; + + value = tegra_gpio_read( GPIO_INT_LVL, bank ); + + value &= ~( ( 1 << pin ) | ( ( 1 << 8 ) << pin ) | ( ( 1 << 16 ) << pin ) ); + + if ( sens != NONE ) { +value |=
[PATCH 1/6] Add Jetson-TK1 board support
From: Andreas Kölbl Peripheral device drivers: - RTEMS Timercounter API using the ARM Generic Timer. - Benchmark RTEMS with the Nvidia TMRUS Console: - 8250 UART based driver - Devices UART-A and UART-D (Default: UART-D, UART-A is turned off) - Interrupt driven or polled (Default: Polled) --- Instructions to run RTEMS using this BSP in the Jailhouse hypervisor will be provided later. c/src/lib/libbsp/arm/acinclude.m4 | 2 + c/src/lib/libbsp/arm/jetson-tk1/Makefile.am| 134 ++ c/src/lib/libbsp/arm/jetson-tk1/README | 21 ++ c/src/lib/libbsp/arm/jetson-tk1/TODO | 3 + c/src/lib/libbsp/arm/jetson-tk1/bsp_specs | 13 + c/src/lib/libbsp/arm/jetson-tk1/clock/car.c| 117 + c/src/lib/libbsp/arm/jetson-tk1/clock/clockdrv.c | 138 ++ c/src/lib/libbsp/arm/jetson-tk1/configure.ac | 39 +++ c/src/lib/libbsp/arm/jetson-tk1/console/console.c | 291 + .../libbsp/arm/jetson-tk1/console/debug-console.c | 50 c/src/lib/libbsp/arm/jetson-tk1/include/bsp.h | 25 ++ c/src/lib/libbsp/arm/jetson-tk1/include/car.h | 30 +++ c/src/lib/libbsp/arm/jetson-tk1/include/console.h | 32 +++ c/src/lib/libbsp/arm/jetson-tk1/include/irq.h | 25 ++ c/src/lib/libbsp/arm/jetson-tk1/include/memory.h | 31 +++ c/src/lib/libbsp/arm/jetson-tk1/include/mmu.h | 42 +++ .../arm/jetson-tk1/make/custom/jetson-tk1.cfg | 16 ++ c/src/lib/libbsp/arm/jetson-tk1/misc/timer.c | 64 + c/src/lib/libbsp/arm/jetson-tk1/startup/bspreset.c | 19 ++ c/src/lib/libbsp/arm/jetson-tk1/startup/bspstart.c | 16 ++ .../libbsp/arm/jetson-tk1/startup/bspstarthooks.c | 59 + .../lib/libbsp/arm/jetson-tk1/startup/linkcmds.in | 39 +++ .../arm/jetson-tk1/startup/mm_config_table.c | 56 23 files changed, 1262 insertions(+) create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/Makefile.am create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/README create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/TODO create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/bsp_specs create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/clock/car.c create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/clock/clockdrv.c create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/configure.ac create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/console/console.c create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/console/debug-console.c create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/bsp.h create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/car.h create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/console.h create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/irq.h create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/memory.h create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/mmu.h create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/make/custom/jetson-tk1.cfg create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/misc/timer.c create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/startup/bspreset.c create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/startup/bspstart.c create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/startup/bspstarthooks.c create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/startup/mm_config_table.c diff --git a/c/src/lib/libbsp/arm/acinclude.m4 b/c/src/lib/libbsp/arm/acinclude.m4 index f5ca105eca..26f743a95e 100644 --- a/c/src/lib/libbsp/arm/acinclude.m4 +++ b/c/src/lib/libbsp/arm/acinclude.m4 @@ -18,6 +18,8 @@ AC_DEFUN([RTEMS_CHECK_BSPDIR], AC_CONFIG_SUBDIRS([gdbarmsim]);; gumstix ) AC_CONFIG_SUBDIRS([gumstix]);; + jetson-tk1 ) +AC_CONFIG_SUBDIRS([jetson-tk1]);; lm3s69xx ) AC_CONFIG_SUBDIRS([lm3s69xx]);; lpc176x ) diff --git a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am new file mode 100644 index 00..4316e67957 --- /dev/null +++ b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am @@ -0,0 +1,134 @@ +ACLOCAL_AMFLAGS = -I ../../../../aclocal + +include $(top_srcdir)/../../../../automake/compile.am + +include_bspdir = $(includedir)/bsp +include_libcpudir = $(includedir)/libcpu + +dist_project_lib_DATA = bsp_specs + +### +# Header # +### + +include_HEADERS = include/bsp.h +include_HEADERS += ../realview-pbx-a9/include/tm27.h + +nodist_include_HEADERS = ../../shared/include/coverhd.h include/bspopts.h +nodist_include_bsp_HEADERS = ../../shared/include/bootcard.h + +include_libcpu_HEADERS = ../../../libcpu/arm/shared/include/arm-cp15.h + +include_bsp_HEADERS = +include_bsp_HEADERS += ../../../libbsp/shared/include/mm.h +include_bsp_HEADERS += ../../shared/include/irq-generic.h +include_bs
[PATCH 4/6] cmdline: Add cmdline support
From: Andreas Kölbl --- c/src/lib/libbsp/arm/jetson-tk1/Makefile.am| 2 ++ c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h | 17 ++ c/src/lib/libbsp/arm/jetson-tk1/misc/cmdline.c | 38 ++ c/src/lib/libbsp/arm/jetson-tk1/start/start.S | 6 +++- .../lib/libbsp/arm/jetson-tk1/startup/linkcmds.in | 4 ++- 5 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h create mode 100644 c/src/lib/libbsp/arm/jetson-tk1/misc/cmdline.c diff --git a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am index 9fc1695cba..37d2ca267e 100644 --- a/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am +++ b/c/src/lib/libbsp/arm/jetson-tk1/Makefile.am @@ -40,6 +40,7 @@ include_bsp_HEADERS += ../shared/armv467ar-basic-cache/cache_.h include_bsp_HEADERS += include/car.h include_bsp_HEADERS += include/console.h +include_bsp_HEADERS += include/cmdline.h include_bsp_HEADERS += include/irq.h include_bsp_HEADERS += include/memory.h include_bsp_HEADERS += include/mmu.h @@ -123,6 +124,7 @@ libbsp_a_SOURCES += startup/mm_config_table.c libbsp_a_SOURCES += ../shared/mminit.c # misc +libbsp_a_SOURCES += misc/cmdline.c libbsp_a_SOURCES += misc/timer.c ### diff --git a/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h b/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h new file mode 100644 index 00..d50bfaaed0 --- /dev/null +++ b/c/src/lib/libbsp/arm/jetson-tk1/include/cmdline.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) OTH Regensburg, 2017 + * Author: Andreas Kölbl + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#ifndef LIBBSP_ARM_JETSONTK1_CMDLINE_H +#define LIBBSP_ARM_JETSONTK1_CMDLINE_H + +#include + +#define BSP_CMDLINE_LOCATION (TEGRA_BASE + MEMORY_SIZE - 0x4000) + +#endif /* LIBBSP_ARM_JETSONTK1_CMDLINE_H */ diff --git a/c/src/lib/libbsp/arm/jetson-tk1/misc/cmdline.c b/c/src/lib/libbsp/arm/jetson-tk1/misc/cmdline.c new file mode 100644 index 00..fae2769ef4 --- /dev/null +++ b/c/src/lib/libbsp/arm/jetson-tk1/misc/cmdline.c @@ -0,0 +1,38 @@ +/* + * Copyright (c) OTH Regensburg, 2017 + * Author: Andreas Kölbl + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#include +#include +#include +#include + +#define ARM_MAX_CPU_COUNT 4 + +#define DEFAULT_BOOT_CPU (1 << 0) + +uint8_t bsp_get_boot_cpu( void ) { + char boot_cpu_str[32]; + char c; + + if ( rtems_bsp_cmdline_get_param_rhs("boot_cpu", boot_cpu_str, + sizeof(boot_cpu_str)) == NULL ) { +printk("No boot cpu argument provided %x\n", BSP_CMDLINE_LOCATION); + +return DEFAULT_BOOT_CPU; + } + + c = boot_cpu_str[0]; + if ( (c >= '0') && (c < '0' + ARM_MAX_CPU_COUNT) ) { +return c - '0'; + } + + printk("Warning: Invalid boot CPU '%c'\n", c == 0 ? '?' : c); + + return DEFAULT_BOOT_CPU; +} diff --git a/c/src/lib/libbsp/arm/jetson-tk1/start/start.S b/c/src/lib/libbsp/arm/jetson-tk1/start/start.S index bb984189ba..af9107188f 100644 --- a/c/src/lib/libbsp/arm/jetson-tk1/start/start.S +++ b/c/src/lib/libbsp/arm/jetson-tk1/start/start.S @@ -30,6 +30,7 @@ #include #include +#include #include /* External symbols */ @@ -363,7 +364,7 @@ bsp_vector_table_copy_done: bl bsp_start_hook_1 /* Branch to boot card */ - mov r0, #0 + ldr r0, bsp_cmdline_location bl boot_card twiddle: @@ -373,6 +374,9 @@ twiddle: b twiddle +bsp_cmdline_location: + .word BSP_CMDLINE_LOCATION + #elif defined(ARM_MULTILIB_ARCH_V7M) #include diff --git a/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in b/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in index f37a62faed..ddc19c5097 100644 --- a/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in +++ b/c/src/lib/libbsp/arm/jetson-tk1/startup/linkcmds.in @@ -1,7 +1,9 @@ bsp_mmu_size = 16k; +bsp_cmdline_size = 16k; MEMORY { - RAM (AIW) : ORIGIN = @TEGRA_BASE@, LENGTH = @MEMORY_SIZE@ - bsp_mmu_size + RAM (AIW) : ORIGIN = @TEGRA_BASE@, LENGTH = @MEMORY_SIZE@ - bsp_mmu_size - bsp_cmdline_size + CMD (AR) : ORIGIN = @TEGRA_BASE@ + @MEMORY_SIZE@ - bsp_mmu_size - bsp_cmdline_size, LENGTH = bsp_cmdline_size RAM_MMU (AIW) : ORIGIN = @TEGRA_BASE@ + @MEMORY_SIZE@ - bsp_mmu_size, LENGTH = bsp_mmu_size } -- 2.13.3 ___ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel