summaryrefslogtreecommitdiff
path: root/c/src/lib/libbsp/arm/xm-tms570/startup
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-03-24 08:02:28 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-08-10 09:05:48 +0200
commit83098dc18907145e3275339aaf26f9c4f6c85c39 (patch)
tree9d43722c8629a9f11152461d444983df266e5de8 /c/src/lib/libbsp/arm/xm-tms570/startup
parent5f44382294b0d3f3e58a20bc97e23994ce01fbbd (diff)
bsp/xm_tms570: New BSPxtratum
Diffstat (limited to 'c/src/lib/libbsp/arm/xm-tms570/startup')
-rw-r--r--c/src/lib/libbsp/arm/xm-tms570/startup/bspreset.c25
-rw-r--r--c/src/lib/libbsp/arm/xm-tms570/startup/bspstart.c21
-rw-r--r--c/src/lib/libbsp/arm/xm-tms570/startup/bspstarthooks.c26
-rw-r--r--c/src/lib/libbsp/arm/xm-tms570/startup/cpucounterread.c50
-rw-r--r--c/src/lib/libbsp/arm/xm-tms570/startup/linkcmds5
-rw-r--r--c/src/lib/libbsp/arm/xm-tms570/startup/linkcmds.xm_tms57030
-rw-r--r--c/src/lib/libbsp/arm/xm-tms570/startup/xmhdr.c27
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,
+};