diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-03-24 08:02:28 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-08-10 09:05:48 +0200 |
commit | 83098dc18907145e3275339aaf26f9c4f6c85c39 (patch) | |
tree | 9d43722c8629a9f11152461d444983df266e5de8 /c/src/lib/libbsp/arm/xm-tms570/startup | |
parent | 5f44382294b0d3f3e58a20bc97e23994ce01fbbd (diff) |
bsp/xm_tms570: New BSPxtratum
Diffstat (limited to 'c/src/lib/libbsp/arm/xm-tms570/startup')
7 files changed, 184 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/xm-tms570/startup/bspreset.c b/c/src/lib/libbsp/arm/xm-tms570/startup/bspreset.c new file mode 100644 index 0000000000..454ba8e225 --- /dev/null +++ b/c/src/lib/libbsp/arm/xm-tms570/startup/bspreset.c @@ -0,0 +1,25 @@ +/* + * @file bspreset.c + * + * @author Miguel Masmano <mmasmano@fentiss.com> + * + * @copyright + * Copyright 2016 Fent Innovative Software Solutions (FENTISS). + * All rights reserved. + * 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 <bsp.h> +#include <bsp/bootcard.h> +#include <bsp/start.h> + +#include <xm.h> + +void bsp_reset(void) +{ + /* A reset cannot be directly done since the + partition's code is not restored by the bootloader */ + XM_halt_partition(XM_PARTITION_SELF); +} diff --git a/c/src/lib/libbsp/arm/xm-tms570/startup/bspstart.c b/c/src/lib/libbsp/arm/xm-tms570/startup/bspstart.c new file mode 100644 index 0000000000..f4de34fa12 --- /dev/null +++ b/c/src/lib/libbsp/arm/xm-tms570/startup/bspstart.c @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2017 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <rtems@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.org/license/LICENSE. + */ + +#include <bsp/bootcard.h> +#include <bsp/irq-generic.h> + +void bsp_start(void) +{ + bsp_interrupt_initialize(); +} diff --git a/c/src/lib/libbsp/arm/xm-tms570/startup/bspstarthooks.c b/c/src/lib/libbsp/arm/xm-tms570/startup/bspstarthooks.c new file mode 100644 index 0000000000..cf9c190f28 --- /dev/null +++ b/c/src/lib/libbsp/arm/xm-tms570/startup/bspstarthooks.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2017 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <rtems@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.org/license/LICENSE. + */ + +#include <bsp/start.h> + +BSP_START_TEXT_SECTION void bsp_start_hook_0(void) +{ + /* Nothing to do */ +} + +BSP_START_TEXT_SECTION void bsp_start_hook_1(void) +{ + bsp_start_copy_sections(); + bsp_start_clear_bss(); +} diff --git a/c/src/lib/libbsp/arm/xm-tms570/startup/cpucounterread.c b/c/src/lib/libbsp/arm/xm-tms570/startup/cpucounterread.c new file mode 100644 index 0000000000..9cefff34ec --- /dev/null +++ b/c/src/lib/libbsp/arm/xm-tms570/startup/cpucounterread.c @@ -0,0 +1,50 @@ +/* + * @file cpucounterread.c + * + * @author Miguel Masmano <mmasmano@fentiss.com> + * + * @copyright + * Copyright 2016 Fent Innovative Software Solutions (FENTISS). + * All rights reserved. + * + * Copyright 2017 embedded brains GmbH. + * + * 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 <rtems/counter.h> +#include <rtems/sysinit.h> + +#include <libcpu/arm-cp15.h> + +#include <bsp.h> +#include <xm.h> + +CPU_Counter_ticks _CPU_Counter_read(void) +{ +#ifdef XM_TMS570_USE_PMU_FOR_CPU_COUNTER + return arm_cp15_get_performance_monitors_cycle_count(); +#else + xmTime_t cTime; + XM_get_time(XM_HW_CLOCK, &cTime); + + return (CPU_Counter_ticks)cTime; +#endif +} + +static void xm_tms570_cpu_counter_initialize(void) +{ +#ifdef XM_TMS570_USE_PMU_FOR_CPU_COUNTER + rtems_counter_initialize_converter(XM_TMS570_GCLK); +#else + rtems_counter_initialize_converter(1000000); +#endif +} + +RTEMS_SYSINIT_ITEM( + xm_tms570_cpu_counter_initialize, + RTEMS_SYSINIT_BSP_START, + RTEMS_SYSINIT_ORDER_FIRST +); diff --git a/c/src/lib/libbsp/arm/xm-tms570/startup/linkcmds b/c/src/lib/libbsp/arm/xm-tms570/startup/linkcmds new file mode 100644 index 0000000000..7cfdcef7a3 --- /dev/null +++ b/c/src/lib/libbsp/arm/xm-tms570/startup/linkcmds @@ -0,0 +1,5 @@ +MEMORY { + PARTITION_AREA : ORIGIN = 0x80200000, LENGTH = 6M +} + +INCLUDE linkcmds.xm_tms570 diff --git a/c/src/lib/libbsp/arm/xm-tms570/startup/linkcmds.xm_tms570 b/c/src/lib/libbsp/arm/xm-tms570/startup/linkcmds.xm_tms570 new file mode 100644 index 0000000000..e14467ccff --- /dev/null +++ b/c/src/lib/libbsp/arm/xm-tms570/startup/linkcmds.xm_tms570 @@ -0,0 +1,30 @@ +REGION_ALIAS ("REGION_START", PARTITION_AREA); +REGION_ALIAS ("REGION_VECTOR", PARTITION_AREA); +REGION_ALIAS ("REGION_TEXT", PARTITION_AREA); +REGION_ALIAS ("REGION_TEXT_LOAD", PARTITION_AREA); +REGION_ALIAS ("REGION_RODATA", PARTITION_AREA); +REGION_ALIAS ("REGION_RODATA_LOAD", PARTITION_AREA); +REGION_ALIAS ("REGION_DATA", PARTITION_AREA); +REGION_ALIAS ("REGION_DATA_LOAD", PARTITION_AREA); +REGION_ALIAS ("REGION_FAST_TEXT", PARTITION_AREA); +REGION_ALIAS ("REGION_FAST_TEXT_LOAD", PARTITION_AREA); +REGION_ALIAS ("REGION_FAST_DATA", PARTITION_AREA); +REGION_ALIAS ("REGION_FAST_DATA_LOAD", PARTITION_AREA); +REGION_ALIAS ("REGION_BSS", PARTITION_AREA); +REGION_ALIAS ("REGION_WORK", PARTITION_AREA); +REGION_ALIAS ("REGION_STACK", PARTITION_AREA); +REGION_ALIAS ("REGION_NOCACHE", PARTITION_AREA); +REGION_ALIAS ("REGION_NOCACHE_LOAD", PARTITION_AREA); + +bsp_stack_main_size = DEFINED (bsp_stack_main_size) ? bsp_stack_main_size : 1024; +bsp_stack_main_size = ALIGN (bsp_stack_main_size, bsp_stack_align); + +/* + * This is an ugly hack to make the xmImageHdr placement a bit more resilient + * to start section size changes. + */ +bsp_section_xbarrier_align = DEFINED (bsp_section_xbarrier_align) ? bsp_section_xbarrier_align : 256; + +EXTERN(xmImageHdr) + +INCLUDE linkcmds.armv4 diff --git a/c/src/lib/libbsp/arm/xm-tms570/startup/xmhdr.c b/c/src/lib/libbsp/arm/xm-tms570/startup/xmhdr.c new file mode 100644 index 0000000000..20e5abfb09 --- /dev/null +++ b/c/src/lib/libbsp/arm/xm-tms570/startup/xmhdr.c @@ -0,0 +1,27 @@ +/* + * @file xmhdr.c + * + * @author Miguel Masmano <mmasmano@fentiss.com> + * + * @copyright + * Copyright 2016 Fent Innovative Software Solutions (FENTISS). + * All rights reserved. + * 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 <xm.h> + +/* + This header must be included within the partition + in order to be loaded by XtratuM +*/ + +struct xmImageHdr xmImageHdr __XMIHDR = { + .sSignature=XMEF_PARTITION_MAGIC, + .compilationXmAbiVersion=XM_SET_VERSION(XM_ABI_VERSION, XM_ABI_SUBVERSION, XM_ABI_REVISION), + .compilationXmApiVersion=XM_SET_VERSION(XM_API_VERSION, XM_API_SUBVERSION, XM_API_REVISION), + .noCustomFiles=0, + .eSignature=XMEF_PARTITION_MAGIC, +}; |