diff options
author | Oleksij Rempel <o.rempel@pengutronix.de> | 2017-09-29 09:37:44 +0200 |
---|---|---|
committer | Oleksij Rempel <o.rempel@pengutronix.de> | 2017-09-29 09:37:44 +0200 |
commit | aa9d495da55638fadaf4cf3f3ac99f69ea475736 (patch) | |
tree | ceb9e7324f2f9d81934166844796b427187b8fe9 | |
parent | 57c946f0f5948e3c60bb1257049e83acf7cccb19 (diff) | |
download | OSELAS.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.S | 30 | ||||
-rw-r--r-- | loader/linker.ld | 27 | ||||
-rwxr-xr-x | loader/my_run | 12 |
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 |