summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleksij Rempel <o.rempel@pengutronix.de>2017-09-29 09:37:44 +0200
committerOleksij Rempel <o.rempel@pengutronix.de>2017-09-29 09:37:44 +0200
commitaa9d495da55638fadaf4cf3f3ac99f69ea475736 (patch)
treeceb9e7324f2f9d81934166844796b427187b8fe9
parent57c946f0f5948e3c60bb1257049e83acf7cccb19 (diff)
downloadOSELAS.BSP-Pengutronix-DualKit-aa9d495da55638fadaf4cf3f3ac99f69ea475736.tar.gz
OSELAS.BSP-Pengutronix-DualKit-aa9d495da55638fadaf4cf3f3ac99f69ea475736.tar.xz
add loader
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
-rw-r--r--loader/imx7m4.S30
-rw-r--r--loader/linker.ld27
-rwxr-xr-xloader/my_run12
3 files changed, 69 insertions, 0 deletions
diff --git a/loader/imx7m4.S b/loader/imx7m4.S
new file mode 100644
index 0000000..5a39711
--- /dev/null
+++ b/loader/imx7m4.S
@@ -0,0 +1,30 @@
+.syntax unified
+.text
+.thumb
+.global _start
+_start:
+ .int 0x18020000 @ Initial SP value
+ .int reset + 1
+
+reset:
+
+#define ADDR_DTB 0x10000200
+#define ADDR_LINUX 0x10008000
+
+ mov r0, #0
+ mov r1, #0xffffffff
+ ldr r2, =(0x18000200)
+ ldr pc, =(0x18008000 + 1)
+
+/* data required by remoteproc loader and actual fw to provide info
+ * about shared resources. It is writable, since it can be updated.
+ */
+.section .resource_table, "aw" @progbits
+.word 1, 0, 0, 0 /* struct resource_table base */
+.word 0 /* uint32_t offset[1] */
+
+.section .dts, "aw" @progbits
+.incbin "imx7d-m4-phyboard-zeta.dtb"
+
+.section .linux, "aw" @progbits
+.incbin "Image"
diff --git a/loader/linker.ld b/loader/linker.ld
new file mode 100644
index 0000000..2b38b6f
--- /dev/null
+++ b/loader/linker.ld
@@ -0,0 +1,27 @@
+OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(_start)
+
+MEMORY {
+ ocram_s (rx) : org = 0x00000000, l = 0x00008000
+ tcmu (w) : org = 0x20000000, l = 0x00008000
+ ddri1 (w) : org = 0x18000000, l = 0x00800000
+ ddri2 (w) : org = 0x18800000, l = 0x00080000
+}
+
+SECTIONS
+{
+ .text : {
+ imx7m4.o (.text)
+ } >ocram_s
+ .fw : {
+ . = 0x0200;
+ imx7m4.o (.dts)
+ . = 0x8000;
+ imx7m4.o (.linux)
+ } >ddri1
+ .resource_table : {
+ imx7m4.o (.resource_table)
+ } >ddri2
+
+}
diff --git a/loader/my_run b/loader/my_run
new file mode 100755
index 0000000..a2cd87b
--- /dev/null
+++ b/loader/my_run
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+MY_IMAGES="../platform-m4/images"
+export CROSS=/opt/OSELAS.Toolchain-2016.06.1/arm-v7a-linux-gnueabihf/gcc-5.4.0-glibc-2.23-binutils-2.26-kernel-4.6-sanitized/bin/arm-v7a-linux-gnueabihf-
+#export CROSS=arm-none-eabi-
+
+cp ${MY_IMAGES}/linuximage Image
+# TODO: dtb can build in to kernel image
+cp ${MY_IMAGES}/imx7d-m4-phyboard-zeta.dtb imx7d-m4-phyboard-zeta.dtb
+${CROSS}as -o imx7m4.o imx7m4.S
+${CROSS}ld -Tlinker.ld -o imx7m4.elf imx7m4.o
+cp imx7m4.elf ${MY_IMAGES}/rproc-imx-rproc-fw