From b03fdc82654d2ae665b796e6db63485575473464 Mon Sep 17 00:00:00 2001 From: Eyck-Alexander Jentzsch Date: Mon, 15 Apr 2024 12:39:48 +0200 Subject: [PATCH] adds bsp as submodule --- .gitmodules | 3 +++ fw/bsp | 1 + fw/hello-world/.gitignore | 2 +- fw/hello-world/Makefile | 25 ++++++++++++++++++------- fw/hello-world/hello.c | 2 -- fw/hello-world/prebuilt/hello.elf | Bin 29716 -> 64092 bytes 6 files changed, 23 insertions(+), 10 deletions(-) create mode 160000 fw/bsp diff --git a/.gitmodules b/.gitmodules index ddd97f0..34ccdc6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "tgc-iss/dbt-rise-tgc"] path = tgc-iss/dbt-rise-tgc url = https://git.minres.com/DBT-RISE/DBT-RISE-TGC.git +[submodule "fw/bsp"] + path = fw/bsp + url = https://git.minres.com/Firmware/MNRS-BM-BSP.git diff --git a/fw/bsp b/fw/bsp new file mode 160000 index 0000000..71c7fd6 --- /dev/null +++ b/fw/bsp @@ -0,0 +1 @@ +Subproject commit 71c7fd698176a45313b50428905837b444050aa9 diff --git a/fw/hello-world/.gitignore b/fw/hello-world/.gitignore index ebea2da..0ccceea 100644 --- a/fw/hello-world/.gitignore +++ b/fw/hello-world/.gitignore @@ -1,3 +1,3 @@ /hello /hello.dis -/firmware.map +/hello.map diff --git a/fw/hello-world/Makefile b/fw/hello-world/Makefile index 6e7d998..4995b74 100644 --- a/fw/hello-world/Makefile +++ b/fw/hello-world/Makefile @@ -1,17 +1,28 @@ TARGET = hello +ISA?=imc + C_SRCS = $(wildcard *.c) HEADERS = $(wildcard *.h) -CFLAGS += -O0 -g +OPT ?= -O2 +CFLAGS += $(OPT) -g -BOARD=tgfs-vp -LINK_TARGET=flash -RISCV_ARCH:=rv32i -RISCV_ABI:=ilp32 -LDFLAGS := -march=$(RISCV_ARCH) -mabi=$(RISCV_ABI) +BOARD=tgc_vp +LINK_TARGET=link +RISCV_ARCH:=rv32$(ISA) +ifeq ($(ISA),e) + RISCV_ABI:=ilp32e +else + RISCV_ABI:=ilp32 +endif +LDFLAGS += -g -Wl,--wrap=printf -compiler := $(shell which riscv32-unknown-elf-gcc) +compiler := $(shell which riscv64-unknown-elf-gcc) TOOL_DIR=$(dir $(compiler)) +TRIPLET=riscv64-unknown-elf BSP_BASE = ../bsp include $(BSP_BASE)/env/common-gcc.mk + +$(TARGET).vlog:$(TARGET) + riscv32-unknown-elf-objcopy -O verilog $(TARGET) $(TARGET).vlog diff --git a/fw/hello-world/hello.c b/fw/hello-world/hello.c index b687874..219ed8a 100644 --- a/fw/hello-world/hello.c +++ b/fw/hello-world/hello.c @@ -17,8 +17,6 @@ int factorial(int i){ int main() { - *(uint32_t*)(GPIO_CTRL_ADDR+GPIO_IOF_SEL) &= ~IOF0_UART0_MASK; - *(uint32_t*)(GPIO_CTRL_ADDR+GPIO_IOF_EN) |= IOF0_UART0_MASK; volatile int result = factorial (10); printf("Factorial is %d\n", result); printf("End of execution"); diff --git a/fw/hello-world/prebuilt/hello.elf b/fw/hello-world/prebuilt/hello.elf index 9b63df72a75d994b5d4fdb0d8ea230a51171fbb3..bebbe7c3d45c96e5cfaf3b07f9081b7d2985af2c 100755 GIT binary patch literal 64092 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 PNmifyqxA1;t@-{1kHG}! literal 29716 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