From aa005bc8b667668eb43c0ae62e00aefd1c3c1af5 Mon Sep 17 00:00:00 2001 From: Flavian Kaufmann Date: Wed, 8 May 2024 10:55:45 +0200 Subject: assemble simple rom --- prog/build.sh | 6 ++++++ prog/link.ld | 16 ++++++++++++++++ prog/main.bin | Bin 0 -> 16 bytes prog/main.elf | Bin 0 -> 8764 bytes prog/main.hex | 16 ++++++++++++++++ prog/main.o | Bin 0 -> 4880 bytes prog/main.s | 24 ++++++++++++++++++++++++ 7 files changed, 62 insertions(+) create mode 100755 prog/build.sh create mode 100644 prog/link.ld create mode 100755 prog/main.bin create mode 100755 prog/main.elf create mode 100644 prog/main.hex create mode 100644 prog/main.o create mode 100644 prog/main.s (limited to 'prog') diff --git a/prog/build.sh b/prog/build.sh new file mode 100755 index 0000000..22557b4 --- /dev/null +++ b/prog/build.sh @@ -0,0 +1,6 @@ +#!/bin/sh +riscv64-unknown-elf-as -march=rv32i -mabi=ilp32 -o main.o main.s +riscv64-unknown-elf-ld -T link.ld -m elf32lriscv -o main.elf main.o +riscv64-unknown-elf-objcopy -O binary main.elf main.bin +xxd -g 1 -c 1 -p main.bin >main.hex +cp -f main.hex ../rom/rom.hex diff --git a/prog/link.ld b/prog/link.ld new file mode 100644 index 0000000..98658c3 --- /dev/null +++ b/prog/link.ld @@ -0,0 +1,16 @@ +OUTPUT_ARCH( "riscv" ) +ENTRY(_start) + +MEMORY +{ + ROM (rx) : ORIGIN = 0x00010000, LENGTH = 0xF0000 # 0x0001_0000 - 0x000F_FFFF + RAM (rwx) : ORIGIN = 0x00100000, LENGTH = 0xFEFFFFF # 0x0010_0000 - 0xFF0F_FFFF +} + +SECTIONS +{ + .text : { *(.text) } > ROM + .data : { *(.data) } > RAM + .bss : { *(.bss) } > RAM + .stack : { *(.stack) } > RAM +} diff --git a/prog/main.bin b/prog/main.bin new file mode 100755 index 0000000..ba70022 Binary files /dev/null and b/prog/main.bin differ diff --git a/prog/main.elf b/prog/main.elf new file mode 100755 index 0000000..4c53d74 Binary files /dev/null and b/prog/main.elf differ diff --git a/prog/main.hex b/prog/main.hex new file mode 100644 index 0000000..116b9b4 --- /dev/null +++ b/prog/main.hex @@ -0,0 +1,16 @@ +93 +02 +50 +00 +13 +03 +30 +00 +b3 +83 +62 +00 +6f +00 +00 +00 diff --git a/prog/main.o b/prog/main.o new file mode 100644 index 0000000..e50c4a8 Binary files /dev/null and b/prog/main.o differ diff --git a/prog/main.s b/prog/main.s new file mode 100644 index 0000000..bbae5bb --- /dev/null +++ b/prog/main.s @@ -0,0 +1,24 @@ +.section .text +.globl _start + +_start: + #la sp, stack_top + + #li a0, 10 + #li a1, 20 + #add a2, a0, a1 + addi t0, zero, 5 + addi t1, zero, 3 + add t2, t0, t1 + +halt_loop: + j halt_loop + +.section .data + + +.section .bss + +.section .stack + .space 0x1000 # Allocate stack space +stack_top: -- cgit v1.2.3