diff --git a/linux/testvector-generation/genRecording.sh b/linux/testvector-generation/genRecording.sh new file mode 100755 index 000000000..318de2880 --- /dev/null +++ b/linux/testvector-generation/genRecording.sh @@ -0,0 +1,34 @@ +#!/bin/bash +imageDir=$RISCV/buildroot/output/images +tvDir=$RISCV/linux-testvectors +recordFile="$tvDir/all.qemu" + +read -p "Warning: running this script will overwrite $recordFile +Would you like to proceed? (y/n) " -n 1 -r +echo +if [[ $REPLY =~ ^[Yy]$ ]] +then + # Create Output Directory + echo "Elevating permissions to create $recordFile" + sudo mkdir -p $tvDir + sudo chown cad $tvDir + sudo touch $recordFile + sudo chmod a+rw $recordFile + + # Compile Devicetree from Source + dtc -I dts -O dtb ../devicetree/wally-virt.dts > ../devicetree/wally-virt.dtb + + # QEMU Simulation + echo "Launching QEMU!" + qemu-system-riscv64 \ + -M virt -dtb ../devicetree/wally-virt.dtb \ + -nographic \ + -bios $imageDir/fw_jump.elf -kernel $imageDir/Image -append "root=/dev/vda ro" -initrd $imageDir/rootfs.cpio \ + -singlestep -rtc clock=vm -icount shift=0,align=off,sleep=on,rr=record,rrfile=$recordFile + + # Cleanup + echo "Elevating permissions to restrict write access to $recordFile" + sudo chown cad $recordFile + sudo chmod o-w $recordFile +fi + diff --git a/linux/testvector-generation/genTrace.gdb b/linux/testvector-generation/genTrace.gdb deleted file mode 100755 index e69e28ec5..000000000 --- a/linux/testvector-generation/genTrace.gdb +++ /dev/null @@ -1,25 +0,0 @@ -define genTrace - # Arguments - set $tcpPort=$arg0 - set $vmlinux=$arg1 - - # GDB config - set pagination off - set logging overwrite on - set logging redirect on - set confirm off - - # Connect to QEMU session - eval "target extended-remote :%d",$tcpPort - - # Symbol Files - eval "file %s",$vmlinux - - # Run until Linux login prompt - b do_idle - ignore 1 2 - c - - kill - q -end diff --git a/linux/testvector-generation/genTrace.sh b/linux/testvector-generation/genTrace.sh index 44ce1b822..ea14aad1a 100755 --- a/linux/testvector-generation/genTrace.sh +++ b/linux/testvector-generation/genTrace.sh @@ -1,13 +1,12 @@ #!/bin/bash tcpPort=1234 imageDir=$RISCV/buildroot/output/images -outDir=$RISCV/linux-testvectors -recordFile="$outDir/all.qemu" -traceFile="$outDir/all.txt" -interruptsFile="$outDir/interrupts.txt" +tvDir=$RISCV/linux-testvectors +recordFile="$tvDir/all.qemu" +traceFile="$tvDir/all.txt" +interruptsFile="$tvDir/interrupts.txt" read -p "Warning: running this script will overwrite the contents of: - * $recordFile * $traceFile * $interruptsFile Would you like to proceed? (y/n) " -n 1 -r @@ -15,12 +14,11 @@ echo if [[ $REPLY =~ ^[Yy]$ ]] then # Create Output Directory - sudo mkdir -p $outDir - sudo chown cad $outDir - sudo touch $recordFile + echo "Elevating permissions to create $traceFile, $interruptsFile" + sudo mkdir -p $tvDir + sudo chown cad $tvDir sudo touch $traceFile sudo touch $interruptsFile - sudo chmod a+rw $recordFile sudo chmod a+rw $traceFile sudo chmod a+rw $interruptsFile @@ -28,21 +26,19 @@ then dtc -I dts -O dtb ../devicetree/wally-virt.dts > ../devicetree/wally-virt.dtb # QEMU Simulation + echo "Launching QEMU in replay mode!" (qemu-system-riscv64 \ -M virt -dtb ../devicetree/wally-virt.dtb \ - -nographic -serial /dev/null \ + -nographic \ -bios $imageDir/fw_jump.elf -kernel $imageDir/Image -append "root=/dev/vda ro" -initrd $imageDir/rootfs.cpio \ - -singlestep -rtc clock=vm -icount shift=0,align=off,sleep=on,rr=record,rrfile=$recordFile \ + -singlestep -rtc clock=vm -icount shift=0,align=off,sleep=on,rr=replay,rrfile=$recordFile \ -d nochain,cpu,in_asm,int \ - -gdb tcp::$tcpPort -S \ - 2>&1 >/dev/null | ./parseQemuToGDB.py | ./parseGDBtoTrace.py $interruptsFile | ./remove_dup.awk > $traceFile) \ - & riscv64-unknown-elf-gdb -quiet -x genTrace.gdb -ex "genTrace $tcpPort \"$imageDir/vmlinux\"" + 2>&1 >/dev/null | ./parseQemuToGDB.py | ./parseGDBtoTrace.py $interruptsFile | ./remove_dup.awk > $traceFile) # Cleanup - sudo chown cad $recordFile + echo "Elevating permissions to restrict write access to $traceFile, $interruptsFile" sudo chown cad $traceFile sudo chown cad $interruptsFile - sudo chmod o-w $recordFile sudo chmod o-w $traceFile sudo chmod o-w $interruptsFile fi