diff options
author | Steffen Vogel <post@steffenvogel.de> | 2019-02-11 23:44:47 +0100 |
---|---|---|
committer | Steffen Vogel <post@steffenvogel.de> | 2019-02-11 23:44:47 +0100 |
commit | eb64df6c3e5184ee982bb57c8828b80c798ce1b6 (patch) | |
tree | d30af171f188fe67b658e5d948375b3e2d2871cf | |
parent | f3b1246c862c37108f2a472816e2ed2e5b37e269 (diff) | |
download | picorv32-eb64df6c3e5184ee982bb57c8828b80c798ce1b6.tar.gz picorv32-eb64df6c3e5184ee982bb57c8828b80c798ce1b6.zip |
picosoc: use preprocessor for generating target-specific linker script
-rw-r--r-- | picosoc/.gitignore | 3 | ||||
-rw-r--r-- | picosoc/Makefile | 14 | ||||
-rw-r--r-- | picosoc/firmware.c | 4 | ||||
-rw-r--r-- | picosoc/sections.lds | 10 |
4 files changed, 24 insertions, 7 deletions
diff --git a/picosoc/.gitignore b/picosoc/.gitignore index 1817f7d..08067d3 100644 --- a/picosoc/.gitignore +++ b/picosoc/.gitignore @@ -11,6 +11,7 @@ /hx8kdemo_fw.elf /hx8kdemo_fw.hex /hx8kdemo_fw.bin +/hx8kdemo_sections.lds /icebreaker.asc /icebreaker.bin /icebreaker.json @@ -22,5 +23,7 @@ /icebreaker_fw.elf /icebreaker_fw.hex /icebreaker_fw.bin +/icebreaker_sections.lds /testbench.vcd /cmos.log + diff --git a/picosoc/Makefile b/picosoc/Makefile index 29a3b07..ab01df4 100644 --- a/picosoc/Makefile +++ b/picosoc/Makefile @@ -33,8 +33,11 @@ hx8kprog: hx8kdemo.bin hx8kdemo_fw.bin hx8kprog_fw: hx8kdemo_fw.bin iceprog -o 1M hx8kdemo_fw.bin -hx8kdemo_fw.elf: sections.lds start.s firmware.c - riscv32-unknown-elf-gcc -DHX8KDEMO -march=rv32imc -Wl,-Bstatic,-T,sections.lds,--strip-debug -ffreestanding -nostdlib -o hx8kdemo_fw.elf start.s firmware.c +hx8kprog_sections.lds: sections.lds + riscv32-unknown-elf-cpp -P -DHX8KDEMO -o $@ $^ + +hx8kdemo_fw.elf: hx8kdemo_sections.lds start.s firmware.c + riscv32-unknown-elf-gcc -DHX8KDEMO -march=rv32imc -Wl,-Bstatic,-T,hx8kdemo_sections.lds,--strip-debug -ffreestanding -nostdlib -o hx8kdemo_fw.elf start.s firmware.c hx8kdemo_fw.hex: hx8kdemo_fw.elf riscv32-unknown-elf-objcopy -O verilog hx8kdemo_fw.elf hx8kdemo_fw.hex @@ -76,8 +79,11 @@ icebprog: icebreaker.bin icebreaker_fw.bin icebprog_fw: icebreaker_fw.bin iceprog -o 1M icebreaker_fw.bin -icebreaker_fw.elf: sections.lds start.s firmware.c - riscv32-unknown-elf-gcc -DICEBREAKER -march=rv32ic -Wl,-Bstatic,-T,sections.lds,--strip-debug -ffreestanding -nostdlib -o icebreaker_fw.elf start.s firmware.c +icebreaker_sections.lds: sections.lds + riscv32-unknown-elf-cpp -P -DICEBREAKER -o $@ $^ + +icebreaker_fw.elf: icebreaker_sections.lds start.s firmware.c + riscv32-unknown-elf-gcc -DICEBREAKER -march=rv32ic -Wl,-Bstatic,-T,icebreaker_sections.lds,--strip-debug -ffreestanding -nostdlib -o icebreaker_fw.elf start.s firmware.c icebreaker_fw.hex: icebreaker_fw.elf riscv32-unknown-elf-objcopy -O verilog icebreaker_fw.elf icebreaker_fw.hex diff --git a/picosoc/firmware.c b/picosoc/firmware.c index 4a86615..6a498fe 100644 --- a/picosoc/firmware.c +++ b/picosoc/firmware.c @@ -21,9 +21,9 @@ #include <stdbool.h> #ifdef ICEBREAKER - #define MEM_TOTAL 0x20000 +# define MEM_TOTAL 0x20000 /* 128 KB */ #elif HX8KDEMO - #define MEM_TOTAL 0x200 +# define MEM_TOTAL 0x200 /* 2 KB */ #else # error "Set -DICEBREAKER or -DHX8KDEMO when compiling firmware.c" #endif diff --git a/picosoc/sections.lds b/picosoc/sections.lds index 5f74459..f38d813 100644 --- a/picosoc/sections.lds +++ b/picosoc/sections.lds @@ -1,7 +1,15 @@ +#ifdef ICEBREAKER +# define MEM_TOTAL 0x20000 /* 128 KB */ +#elif HX8KDEMO +# define MEM_TOTAL 0x200 /* 2 KB */ +#else +# error "Set -DICEBREAKER or -DHX8KDEMO when compiling firmware.c" +#endif + MEMORY { FLASH (rx) : ORIGIN = 0x00100000, LENGTH = 0x400000 /* entire flash, 4 MiB */ - RAM (xrw) : ORIGIN = 0x00000000, LENGTH = 0x000400 /* 1 KB */ + RAM (xrw) : ORIGIN = 0x00000000, LENGTH = MEM_TOTAL } SECTIONS { |