Improved firmware for vivado "system" example
This commit is contained in:
parent
0249d538fa
commit
d8c3157bf8
2
Makefile
2
Makefile
|
@ -43,7 +43,7 @@ synth.v: picorv32.v scripts/yosys/synth_sim.ys
|
||||||
yosys -qv3 -l synth.log scripts/yosys/synth_sim.ys
|
yosys -qv3 -l synth.log scripts/yosys/synth_sim.ys
|
||||||
|
|
||||||
firmware/firmware.hex: firmware/firmware.bin firmware/makehex.py
|
firmware/firmware.hex: firmware/firmware.bin firmware/makehex.py
|
||||||
python3 firmware/makehex.py $< > $@
|
python3 firmware/makehex.py $< 16384 > $@
|
||||||
|
|
||||||
firmware/firmware.bin: firmware/firmware.elf
|
firmware/firmware.bin: firmware/firmware.elf
|
||||||
$(TOOLCHAIN_PREFIX)objcopy -O binary $< $@
|
$(TOOLCHAIN_PREFIX)objcopy -O binary $< $@
|
||||||
|
|
|
@ -18,7 +18,7 @@ timing.exe: testbench.v ../picorv32.v
|
||||||
chmod -x timing.exe
|
chmod -x timing.exe
|
||||||
|
|
||||||
dhry.hex: dhry.bin ../firmware/makehex.py
|
dhry.hex: dhry.bin ../firmware/makehex.py
|
||||||
python3 ../firmware/makehex.py $< > $@
|
python3 ../firmware/makehex.py $< 16384 > $@
|
||||||
|
|
||||||
dhry.bin: dhry.elf
|
dhry.bin: dhry.elf
|
||||||
riscv64-unknown-elf-objcopy -O binary $< $@
|
riscv64-unknown-elf-objcopy -O binary $< $@
|
||||||
|
|
|
@ -9,13 +9,16 @@
|
||||||
|
|
||||||
from sys import argv
|
from sys import argv
|
||||||
|
|
||||||
with open(argv[1], "rb") as f:
|
binfile = argv[1]
|
||||||
|
nwords = int(argv[2])
|
||||||
|
|
||||||
|
with open(binfile, "rb") as f:
|
||||||
bindata = f.read()
|
bindata = f.read()
|
||||||
|
|
||||||
assert len(bindata) < 60*1024
|
assert len(bindata) < 4*nwords
|
||||||
assert len(bindata) % 4 == 0
|
assert len(bindata) % 4 == 0
|
||||||
|
|
||||||
for i in range(64*1024//4):
|
for i in range(nwords):
|
||||||
if i < len(bindata) // 4:
|
if i < len(bindata) // 4:
|
||||||
w = bindata[4*i : 4*i+4]
|
w = bindata[4*i : 4*i+4]
|
||||||
print("%02x%02x%02x%02x" % (w[3], w[2], w[1], w[0]))
|
print("%02x%02x%02x%02x" % (w[3], w[2], w[1], w[0]))
|
||||||
|
|
|
@ -38,9 +38,9 @@ sim_system:
|
||||||
|
|
||||||
firmware.hex: firmware.S firmware.c firmware.lds
|
firmware.hex: firmware.S firmware.c firmware.lds
|
||||||
$(TOOLCHAIN_PREFIX)gcc -Os -m32 -ffreestanding -nostdlib -o firmware.elf firmware.S firmware.c \
|
$(TOOLCHAIN_PREFIX)gcc -Os -m32 -ffreestanding -nostdlib -o firmware.elf firmware.S firmware.c \
|
||||||
-Wl,-Bstatic,-T,firmware.lds,-Map,firmware.map,--strip-debug -lgcc
|
--std=gnu99 -Wl,-Bstatic,-T,firmware.lds,-Map,firmware.map,--strip-debug -lgcc
|
||||||
$(TOOLCHAIN_PREFIX)objcopy -O binary firmware.elf firmware.bin
|
$(TOOLCHAIN_PREFIX)objcopy -O binary firmware.elf firmware.bin
|
||||||
python3 ../../firmware/makehex.py firmware.bin > firmware.hex
|
python3 ../../firmware/makehex.py firmware.bin 4096 > firmware.hex
|
||||||
|
|
||||||
tab_%/results.txt:
|
tab_%/results.txt:
|
||||||
bash tabtest.sh $@
|
bash tabtest.sh $@
|
||||||
|
@ -58,5 +58,5 @@ table.txt:
|
||||||
clean:
|
clean:
|
||||||
rm -rf .Xil/ firmware.bin firmware.elf firmware.hex firmware.map synth_*.log
|
rm -rf .Xil/ firmware.bin firmware.elf firmware.hex firmware.map synth_*.log
|
||||||
rm -rf synth_*.mmi synth_*.bit synth_system.v table.txt tab_*/ webtalk.jou
|
rm -rf synth_*.mmi synth_*.bit synth_system.v table.txt tab_*/ webtalk.jou
|
||||||
rm -rf webtalk.log webtalk_*.jou webtalk_*.log xelab.* xsim.* xvlog.*
|
rm -rf webtalk.log webtalk_*.jou webtalk_*.log xelab.* xsim[._]* xvlog.*
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,36 @@ void puts(const char *s)
|
||||||
while (*s) putc(*s++);
|
while (*s) putc(*s++);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *memcpy(void *dest, const void *src, int n)
|
||||||
|
{
|
||||||
|
while (n) {
|
||||||
|
n--;
|
||||||
|
((char*)dest)[n] = ((char*)src)[n];
|
||||||
|
}
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
puts("Hello World!\n");
|
char message[] = "$Uryyb+Jbeyq!+Vs+lbh+pna+ernq+guvf+zrffntr+gura$gur+CvpbEI32+PCH"
|
||||||
|
"+frrzf+gb+or+jbexvat+whfg+svar.$$++++++++++++++++GRFG+CNFFRQ!$$";
|
||||||
|
for (int i = 0; message[i]; i++)
|
||||||
|
switch (message[i])
|
||||||
|
{
|
||||||
|
case 'a' ... 'm':
|
||||||
|
case 'A' ... 'M':
|
||||||
|
message[i] += 13;
|
||||||
|
break;
|
||||||
|
case 'n' ... 'z':
|
||||||
|
case 'N' ... 'Z':
|
||||||
|
message[i] -= 13;
|
||||||
|
break;
|
||||||
|
case '$':
|
||||||
|
message[i] = '\n';
|
||||||
|
break;
|
||||||
|
case '+':
|
||||||
|
message[i] = ' ';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
puts(message);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue