From: Yuriy Kolerov <[email protected]>
An example of building an application:
$ arc-elf32-gcc -mcpu=em -specs=iotdk.specs main.c -o main
Signed-off-by: Vladimir Isaev <[email protected]>
Signed-off-by: Yuriy Kolerov <[email protected]>
---
libgloss/arc/iotdk-uart-setup.c | 36 +++++++++++++++++++++++++++++++++
libgloss/arc/iotdk.ld | 14 +++++++++++++
libgloss/arc/iotdk.specs | 18 +++++++++++++++++
3 files changed, 68 insertions(+)
create mode 100644 libgloss/arc/iotdk-uart-setup.c
create mode 100644 libgloss/arc/iotdk.ld
create mode 100644 libgloss/arc/iotdk.specs
diff --git a/libgloss/arc/iotdk-uart-setup.c b/libgloss/arc/iotdk-uart-setup.c
new file mode 100644
index 000000000..e6d2ac887
--- /dev/null
+++ b/libgloss/arc/iotdk-uart-setup.c
@@ -0,0 +1,36 @@
+/*
+ * iotdk-setup.c -- provide _setup_low_level() to initialize UART.
+ *
+ * Copyright (c) 2024 Synopsys Inc.
+ *
+ * The authors hereby grant permission to use, copy, modify, distribute,
+ * and license this software and its documentation for any purpose, provided
+ * that existing copyright notices are retained in all copies and that this
+ * notice is included verbatim in any distributions. No written agreement,
+ * license, or royalty fee is required for any of the authorized uses.
+ * Modifications to this software may be copyrighted by their authors
+ * and need not follow the licensing terms described here, provided that
+ * the new terms are clearly indicated on the first page of each file where
+ * they apply.
+ *
+ */
+
+#include "uart-8250.h"
+
+/* Setup UART parameters. */
+int
+_setup_low_level (void)
+{
+ void * const uart_base = (void *) 0x80014000;
+ const uint32_t uart_clk_ena = 0xC0;
+ const int uart_aux_mapped = 1;
+ const uint32_t uart_clock = 16000000;
+ const uint32_t uart_baud = 115200;
+
+ /* For this platform we have to enable UART clock before configuring it. */
+ __builtin_arc_sr (0x01, (uint32_t) uart_base + uart_clk_ena);
+
+ _uart_8250_setup (uart_base, uart_aux_mapped, uart_clock, uart_baud);
+
+ return 0;
+}
diff --git a/libgloss/arc/iotdk.ld b/libgloss/arc/iotdk.ld
new file mode 100644
index 000000000..18874e819
--- /dev/null
+++ b/libgloss/arc/iotdk.ld
@@ -0,0 +1,14 @@
+/* Memory map for ARC IoT DK - EM9D */
+
+MEMORY
+{
+ ICCM : ORIGIN = 0x20000000, LENGTH = 256K
+ DCCM : ORIGIN = 0x80000000, LENGTH = 128K
+}
+
+REGION_ALIAS("startup", ICCM)
+REGION_ALIAS("text", ICCM)
+REGION_ALIAS("data", DCCM)
+REGION_ALIAS("sdata", DCCM)
+
+INCLUDE arcv2elf-common.ld
diff --git a/libgloss/arc/iotdk.specs b/libgloss/arc/iotdk.specs
new file mode 100644
index 000000000..9f9ba433f
--- /dev/null
+++ b/libgloss/arc/iotdk.specs
@@ -0,0 +1,18 @@
+%rename link iotdk_link
+%rename link_gcc_c_sequence iotdk_link_gcc_c_sequence
+%rename startfile iotdk_startfile
+
+*link:
+%(iotdk_link) -T iotdk.ld%s
+
+*iotdk_libgloss:
+-luart_8250 -liotdk_uart
+
+*iotdk_libc:
+%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
+
+*link_gcc_c_sequence:
+%(iotdk_link_gcc_c_sequence) --start-group %G %(iotdk_libc) %(iotdk_libgloss) --end-group
+
+*startfile:
+%(iotdk_startfile) arc-main-helper%O%s
--
2.39.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.