mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
optionally output GDB-formatted instruction list to main buildroot folder
This commit is contained in:
parent
66692af57c
commit
17ef10568f
@ -21,11 +21,12 @@
|
|||||||
# - Logs parse_qemu.py's simulated gdb output to qemu_in_gdb_format.txt
|
# - Logs parse_qemu.py's simulated gdb output to qemu_in_gdb_format.txt
|
||||||
#cat qemu_output.txt | ./parse_qemu.py >qemu_in_gdb_format.txt
|
#cat qemu_output.txt | ./parse_qemu.py >qemu_in_gdb_format.txt
|
||||||
#cat qemu_output.txt | ./parse_qemu.py | ./parse_gdb_output.py "/courses/e190ax/buildroot_boot/"
|
#cat qemu_output.txt | ./parse_qemu.py | ./parse_gdb_output.py "/courses/e190ax/buildroot_boot/"
|
||||||
|
|
||||||
# Uncomment this version in case you just want to have qemu_in_gdb_format.txt around
|
# Uncomment this version in case you just want to have qemu_in_gdb_format.txt around
|
||||||
# It is often helpful for general debugging
|
# It is often helpful for general debugging
|
||||||
#(qemu-system-riscv64 -M virt -nographic -bios /courses/e190ax/qemu_sim/rv64_initrd/buildroot_experimental/output/images/fw_jump.elf -kernel /courses/e190ax/qemu_sim/rv64_initrd/buildroot_experimental/output/images/Image -append "root=/dev/vda ro" -initrd /courses/e190ax/qemu_sim/rv64_initrd/buildroot_experimental/output/images/rootfs.cpio -d nochain,cpu,in_asm -serial /dev/null -singlestep -s -S 2>&1 >/dev/null | ./parse_qemu.py >qemu_in_gdb_format.txt) & riscv64-unknown-elf-gdb -x gdbinit_qemulog
|
(qemu-system-riscv64 -M virt -nographic -bios /courses/e190ax/qemu_sim/rv64_initrd/buildroot_experimental/output/images/fw_jump.elf -kernel /courses/e190ax/qemu_sim/rv64_initrd/buildroot_experimental/output/images/Image -append "root=/dev/vda ro" -initrd /courses/e190ax/qemu_sim/rv64_initrd/buildroot_experimental/output/images/rootfs.cpio -d nochain,cpu,in_asm -serial /dev/null -singlestep -s -S 2>&1 >/dev/null | ./parse_qemu.py >/courses/e190ax/buildroot_boot/qemu_in_gdb_format.txt) & riscv64-unknown-elf-gdb -x gdbinit_qemulog
|
||||||
|
|
||||||
# Split qemu_in_gdb_format.txt into chunks of 100,000 instructions for easier inspection
|
# Split qemu_in_gdb_format.txt into chunks of 100,000 instructions for easier inspection
|
||||||
|
#cd /courses/e190ax/buildroot_boot
|
||||||
#split -d -l 5600000 qemu_in_gdb_format.txt --verbose
|
#split -d -l 5600000 qemu_in_gdb_format.txt --verbose
|
||||||
|
|
||||||
# Uncomment this version for parse_gdb_output.py debugging
|
# Uncomment this version for parse_gdb_output.py debugging
|
||||||
@ -36,4 +37,4 @@
|
|||||||
# =========== Just Do the Thing ==========
|
# =========== Just Do the Thing ==========
|
||||||
# Uncomment this version for the whole thing
|
# Uncomment this version for the whole thing
|
||||||
# - Logs info needed by buildroot testbench
|
# - Logs info needed by buildroot testbench
|
||||||
(qemu-system-riscv64 -M virt -nographic -bios /courses/e190ax/qemu_sim/rv64_initrd/buildroot_experimental/output/images/fw_jump.elf -kernel /courses/e190ax/qemu_sim/rv64_initrd/buildroot_experimental/output/images/Image -append "root=/dev/vda ro" -initrd /courses/e190ax/qemu_sim/rv64_initrd/buildroot_experimental/output/images/rootfs.cpio -d nochain,cpu,in_asm -serial /dev/null -singlestep -s -S 2>&1 >/dev/null | ./parse_qemu.py | ./parse_gdb_output.py "/courses/e190ax/buildroot_boot_new/") & riscv64-unknown-elf-gdb -x gdbinit_qemulog
|
#(qemu-system-riscv64 -M virt -nographic -bios /courses/e190ax/qemu_sim/rv64_initrd/buildroot_experimental/output/images/fw_jump.elf -kernel /courses/e190ax/qemu_sim/rv64_initrd/buildroot_experimental/output/images/Image -append "root=/dev/vda ro" -initrd /courses/e190ax/qemu_sim/rv64_initrd/buildroot_experimental/output/images/rootfs.cpio -d nochain,cpu,in_asm -serial /dev/null -singlestep -s -S 2>&1 >/dev/null | ./parse_qemu.py | ./parse_gdb_output.py "/courses/e190ax/buildroot_boot_new/") & riscv64-unknown-elf-gdb -x gdbinit_qemulog
|
||||||
|
@ -9,9 +9,10 @@ pageFaultCSRs = {}
|
|||||||
regs = {}
|
regs = {}
|
||||||
pageFaultRegs = {}
|
pageFaultRegs = {}
|
||||||
instrs = {}
|
instrs = {}
|
||||||
|
instrCount = 0
|
||||||
|
|
||||||
def printPC(l):
|
def printPC(l):
|
||||||
global parseState, inPageFault, CSRs, pageFaultCSRs, regs, pageFaultCSRs, instrs
|
global parseState, inPageFault, CSRs, pageFaultCSRs, regs, pageFaultCSRs, instrs, instrCount
|
||||||
if not inPageFault:
|
if not inPageFault:
|
||||||
inst = l.split()
|
inst = l.split()
|
||||||
if len(inst) > 3:
|
if len(inst) > 3:
|
||||||
@ -19,6 +20,9 @@ def printPC(l):
|
|||||||
else:
|
else:
|
||||||
print(f'=> {inst[1]}:\t{inst[2]}')
|
print(f'=> {inst[1]}:\t{inst[2]}')
|
||||||
print(f'{inst[0]} 0x{inst[1]}')
|
print(f'{inst[0]} 0x{inst[1]}')
|
||||||
|
instrCount += 1
|
||||||
|
if ((instrCount % 100000) == 0):
|
||||||
|
sys.stderr.write("QEMU parser reached "+str(instrCount)+" instrs\n")
|
||||||
|
|
||||||
def printCSRs():
|
def printCSRs():
|
||||||
global parseState, inPageFault, CSRs, pageFaultCSRs, regs, pageFaultCSRs, instrs
|
global parseState, inPageFault, CSRs, pageFaultCSRs, regs, pageFaultCSRs, instrs
|
||||||
|
Loading…
Reference in New Issue
Block a user