mirror of https://github.com/YosysHQ/picorv32.git
Removed dead code and cleanup before pull request
This commit is contained in:
parent
73318eaeab
commit
5c0e137792
|
@ -14,24 +14,16 @@ test: testbench.vvp firmware32.hex
|
||||||
vvp -l testbench.log -N testbench.vvp
|
vvp -l testbench.log -N testbench.vvp
|
||||||
|
|
||||||
testbench.vvp: testbench.v ../../picorv32.v firmware_dbg.v
|
testbench.vvp: testbench.v ../../picorv32.v firmware_dbg.v
|
||||||
iverilog -D WRITE_VCD=1 -o testbench.vvp testbench.v ../../picorv32.v
|
iverilog -o testbench.vvp testbench.v ../../picorv32.v
|
||||||
chmod -x testbench.vvp
|
chmod -x testbench.vvp
|
||||||
|
|
||||||
firmware32.hex: firmware.elf hex8tohex32.py
|
firmware32.hex: firmware.elf hex8tohex32.py
|
||||||
$(RISCV_TOOLS_PREFIX)objcopy -O verilog firmware.elf firmware.tmp
|
$(RISCV_TOOLS_PREFIX)objcopy -O verilog firmware.elf firmware.tmp
|
||||||
python3 hex8tohex32.py firmware.tmp > firmware32.hex
|
python3 hex8tohex32.py firmware.tmp > firmware32.hex
|
||||||
|
|
||||||
#firmware32.hex: firmware.elf start.elf hex8tohex32.py
|
|
||||||
# $(RISCV_TOOLS_PREFIX)objcopy -O verilog start.elf start.tmp
|
|
||||||
# $(RISCV_TOOLS_PREFIX)objcopy -O verilog firmware.elf firmware.tmp
|
|
||||||
# cat start.tmp firmware.tmp > firmware.hex
|
|
||||||
# python3 hex8tohex32.py firmware.hex > firmware32.hex
|
|
||||||
# rm -f start.tmp firmware.tmp
|
|
||||||
|
|
||||||
firmware_dbg.v: firmware.map
|
firmware_dbg.v: firmware.map
|
||||||
python3 map2debug.py
|
python3 map2debug.py
|
||||||
#firmware.o: firmware.c
|
|
||||||
# $(CC) -c $^
|
|
||||||
|
|
||||||
start.o: start.S
|
start.o: start.S
|
||||||
$(CC) -c -nostdlib start.S $(LDLIBS)
|
$(CC) -c -nostdlib start.S $(LDLIBS)
|
||||||
|
@ -40,10 +32,6 @@ firmware.elf: firmware.o syscalls.o start.o
|
||||||
$(CC) $(LDFLAGS),-Map=firmware.map -o $@ $^ -T sections.lds $(LDLIBS)
|
$(CC) $(LDFLAGS),-Map=firmware.map -o $@ $^ -T sections.lds $(LDLIBS)
|
||||||
chmod -x firmware.elf
|
chmod -x firmware.elf
|
||||||
|
|
||||||
start.elf: start.S start.ld
|
|
||||||
$(CC) -nostdlib -o start.elf start.S -T start.ld $(LDLIBS)
|
|
||||||
chmod -x start.elf
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *.d *.tmp start.elf
|
rm -f *.o *.d *.tmp start.elf
|
||||||
rm -f firmware.elf firmware.hex firmware32.hex
|
rm -f firmware.elf firmware.hex firmware32.hex
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
symbol = re.compile("\s*0x([0-9a-f]+)\s+([\w_]+)\s*$")
|
symbol = re.compile("\s*0x([0-9a-f]+)\s+([\w_]+)")
|
||||||
symbol_map = {}
|
symbol_map = {}
|
||||||
with open("firmware.map", "r") as fh:
|
with open("firmware.map", "r") as fh:
|
||||||
for fd in fh:
|
for fd in fh:
|
||||||
|
@ -12,6 +12,8 @@ with open("firmware.map", "r") as fh:
|
||||||
symbol_map[addr] = sym.group(2)
|
symbol_map[addr] = sym.group(2)
|
||||||
|
|
||||||
with open("firmware_dbg.v", "w") as fh:
|
with open("firmware_dbg.v", "w") as fh:
|
||||||
|
for k, v in symbol_map.items():
|
||||||
|
fh.write("`define C_SYM_{1:s} 32'h{0:08x}\n".format(k, v.upper()))
|
||||||
fh.write(" task firmware_dbg;\n")
|
fh.write(" task firmware_dbg;\n")
|
||||||
fh.write(" input [31:0] addr;\n");
|
fh.write(" input [31:0] addr;\n");
|
||||||
fh.write(" begin\n");
|
fh.write(" begin\n");
|
||||||
|
|
|
@ -7,13 +7,12 @@ binary, for any purpose, commercial or non-commercial, and by any
|
||||||
means.
|
means.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* starting address needs to be > 0 due to known bug in RISCV/GNU linker */
|
||||||
MEMORY {
|
MEMORY {
|
||||||
rom(rwx) : ORIGIN = 0x00000100, LENGTH = 63k
|
rom(rwx) : ORIGIN = 0x00000100, LENGTH = 63k
|
||||||
ram(rwx) : ORIGIN = 0x00020000, LENGTH = 16k
|
ram(rwx) : ORIGIN = 0x00020000, LENGTH = 16k
|
||||||
}
|
}
|
||||||
|
|
||||||
C_STACK_SIZE = 512;
|
|
||||||
|
|
||||||
ENTRY(_pvstart);
|
ENTRY(_pvstart);
|
||||||
|
|
||||||
SECTIONS {
|
SECTIONS {
|
||||||
|
@ -34,7 +33,6 @@ SECTIONS {
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
_edata = .;
|
_edata = .;
|
||||||
} >ram AT>rom
|
} >ram AT>rom
|
||||||
/* } >ram */
|
|
||||||
|
|
||||||
.bss : {
|
.bss : {
|
||||||
_bss_start = .;
|
_bss_start = .;
|
|
@ -1,8 +1,6 @@
|
||||||
.section .text
|
.section .text
|
||||||
.global _start
|
.global _start
|
||||||
.global _pvstart
|
.global _pvstart
|
||||||
.global _data
|
|
||||||
.global _data_lma
|
|
||||||
|
|
||||||
_pvstart:
|
_pvstart:
|
||||||
/* zero-initialize all registers */
|
/* zero-initialize all registers */
|
||||||
|
@ -42,10 +40,7 @@ addi x31, zero, 0
|
||||||
|
|
||||||
lui sp, %hi(4*1024*1024)
|
lui sp, %hi(4*1024*1024)
|
||||||
addi sp, sp, %lo(4*1024*1024)
|
addi sp, sp, %lo(4*1024*1024)
|
||||||
/*
|
|
||||||
lui sp, %hi(0x100000)
|
|
||||||
addi sp, sp, %lo(0x100000)
|
|
||||||
*/
|
|
||||||
/* push zeros on the stack for argc and argv */
|
/* push zeros on the stack for argc and argv */
|
||||||
/* (stack is aligned to 16 bytes in riscv calling convention) */
|
/* (stack is aligned to 16 bytes in riscv calling convention) */
|
||||||
addi sp,sp,-16
|
addi sp,sp,-16
|
||||||
|
@ -54,32 +49,4 @@ sw zero,4(sp)
|
||||||
sw zero,8(sp)
|
sw zero,8(sp)
|
||||||
sw zero,12(sp)
|
sw zero,12(sp)
|
||||||
|
|
||||||
/*
|
|
||||||
// Load data section
|
|
||||||
la a0, _data_lma
|
|
||||||
la a1, _data
|
|
||||||
la a2, _edata
|
|
||||||
bgeu a1, a2, 2f
|
|
||||||
1:
|
|
||||||
lw t0, (a0)
|
|
||||||
sw t0, (a1)
|
|
||||||
addi a0, a0, 4
|
|
||||||
addi a1, a1, 4
|
|
||||||
bltu a1, a2, 1b
|
|
||||||
2:
|
|
||||||
|
|
||||||
// Clear bss section
|
|
||||||
la a0, _bss_start
|
|
||||||
la a1, _bss_end
|
|
||||||
bgeu a0, a1, 2f
|
|
||||||
1:
|
|
||||||
sw zero, (a0)
|
|
||||||
addi a0, a0, 4
|
|
||||||
bltu a0, a1, 1b
|
|
||||||
2:
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* jump to libc init */
|
|
||||||
/*j _ftext
|
|
||||||
*/
|
|
||||||
j _start
|
j _start
|
||||||
|
|
|
@ -3,8 +3,9 @@
|
||||||
//`undef WRITE_VCD
|
//`undef WRITE_VCD
|
||||||
`undef MEM8BIT
|
`undef MEM8BIT
|
||||||
|
|
||||||
|
// define the size of our ROM
|
||||||
|
// simulates ROM by suppressing writes below this address
|
||||||
`define ROM_SIZE 32'h0001_00FF
|
`define ROM_SIZE 32'h0001_00FF
|
||||||
//`define ROM_SIZE 32'h0000_0000
|
|
||||||
|
|
||||||
module testbench;
|
module testbench;
|
||||||
reg clk = 1;
|
reg clk = 1;
|
||||||
|
@ -52,10 +53,10 @@ module testbench;
|
||||||
end
|
end
|
||||||
`else
|
`else
|
||||||
reg [31:0] memory [0:MEM_SIZE/4-1];
|
reg [31:0] memory [0:MEM_SIZE/4-1];
|
||||||
`define data_lma 32'hc430
|
|
||||||
`define data 32'h20000
|
|
||||||
`define edata 32'h209b0
|
|
||||||
integer x;
|
integer x;
|
||||||
|
|
||||||
|
// simulate hardware assist of clearing RAM and copying ROM data into
|
||||||
|
// memory
|
||||||
initial
|
initial
|
||||||
begin
|
begin
|
||||||
// clear memory
|
// clear memory
|
||||||
|
@ -63,8 +64,8 @@ module testbench;
|
||||||
// load rom contents
|
// load rom contents
|
||||||
$readmemh("firmware32.hex", memory);
|
$readmemh("firmware32.hex", memory);
|
||||||
// copy .data section
|
// copy .data section
|
||||||
for (x=0; x<(`edata - `data); x=x+4)
|
for (x=0; x<(`C_SYM__BSS_START - `C_SYM___GLOBAL_POINTER); x=x+4)
|
||||||
memory[(`data+x)/4] = memory[(`data_lma+x)/4];
|
memory[(`C_SYM___GLOBAL_POINTER+x)/4] = memory[(`C_SYM__DATA_LMA+x)/4];
|
||||||
end
|
end
|
||||||
`endif
|
`endif
|
||||||
|
|
||||||
|
@ -101,7 +102,9 @@ module testbench;
|
||||||
endcase
|
endcase
|
||||||
end
|
end
|
||||||
if (mem_valid && mem_ready) begin
|
if (mem_valid && mem_ready) begin
|
||||||
// firmware_dbg(mem_addr);
|
`ifdef FIRMWARE_DEBUG_ADDR
|
||||||
|
firmware_dbg(mem_addr);
|
||||||
|
`endif
|
||||||
if ((mem_wstrb == 4'h0) && (mem_rdata === 32'bx)) $display("READ FROM UNITIALIZED ADDR=%x", mem_addr);
|
if ((mem_wstrb == 4'h0) && (mem_rdata === 32'bx)) $display("READ FROM UNITIALIZED ADDR=%x", mem_addr);
|
||||||
`ifdef VERBOSE_MEM
|
`ifdef VERBOSE_MEM
|
||||||
if (|mem_wstrb)
|
if (|mem_wstrb)
|
||||||
|
|
Loading…
Reference in New Issue