User Tools

Site Tools


developers:env_emul

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
developers:env_emul [2018/10/30 14:04]
mick created
developers:env_emul [2019/04/12 19:16] (current)
mick [Running Linux on QEMU]
Line 20: Line 20:
  
 <​code>​ <​code>​
-<qemu install dir>/​bin/​qemu-system-riscv64 -nographic -machine virt -smp -m 2G +<qemu install dir>/​bin/​qemu-system-riscv64 -nographic -machine virt -smp <number of cores> ​-m <X>G -s 
- -bios <​bbl ​sources dir>/​build//​bbl ​\+ -bios <path to bbl or fw_jump.elf (in case of OpenSBI)> \
  -kernel <linux sources dir>/​vmlinux \  -kernel <linux sources dir>/​vmlinux \
- -initrd ​/path/to/initramfs.img \+ -initrd ​<path to initramfs.img\
  -netdev user,​id=unet -device virtio-net-device,​netdev=unet -net user \  -netdev user,​id=unet -device virtio-net-device,​netdev=unet -net user \
  -object rng-random,​filename=/​dev/​urandom,​id=rng0 \  -object rng-random,​filename=/​dev/​urandom,​id=rng0 \
Line 29: Line 29:
 </​code>​ </​code>​
  
-In case you built bbl with the Linux kernel as its payload you can omit the //-bios// parameter and point the //-kernel// parameter directly to the combined bbl binary.+<WRAP Tip> 
 +In case you built bbl or OpenSBI ​with the Linux kernel as its payload you can omit the ''​-bios'' ​parameter and point the ''​-kernel'' ​parameter directly to the combined bbl / fw_payload.elf ​binary. 
 +</​WRAP>​ 
 + 
 + 
 +=== Debugging with QEMU === 
 + 
 +With the ''​-s''​ option, QEMU allows a remote gdb session, to debug the running system. You may connect to the debugging session through gdb by typing ''​target remote localhost:​1234'',​ here is an example debug session: 
 + 
 +<​code>​ 
 +mick@trampakoulas ~/​kexec/​kexec-tools $ riscv64-unknown-linux-gnu-gdb 
 + 
 +GNU gdb (GDB) 8.2.50.20181127-git 
 +Copyright (C) 2018 Free Software Foundation, Inc. 
 +License GPLv3+: GNU GPL version 3 or later <​http://​gnu.org/​licenses/​gpl.html>​ 
 +This is free software: you are free to change and redistribute it. 
 +There is NO WARRANTY, to the extent permitted by law. 
 +Type "show copying"​ and "show warranty"​ for details. 
 +This GDB was configured as "​--host=x86_64-pc-linux-gnu --target=riscv64-unknown-linux-gnu"​. 
 +Type "show configuration"​ for configuration details. 
 +For bug reporting instructions,​ please see: 
 +<​http://​www.gnu.org/​software/​gdb/​bugs/>​. 
 +Find the GDB manual and other documentation resources online at: 
 +    <​http://​www.gnu.org/​software/​gdb/​documentation/>​. 
 + 
 +For help, type "​help"​. 
 +Type "​apropos word" to search for commands related to "​word"​. 
 +(gdb) target remote localhost:​1234 
 +Remote debugging using localhost:​1234 
 +warning: No executable has been specified and target does not support 
 +determining executable automatically. ​ Try using the "​file"​ command. 
 +0xffffffffb8916080 in ?? () 
 +(gdb) i r 
 +ra             ​0xffffffff80033f4c 0xffffffff80033f4c 
 +sp             ​0xffffffffbadd3d60 0xffffffffbadd3d60 
 +gp             ​0xffffffff807a7b58 0xffffffff807a7b58 
 +tp             ​0xffffffffb883b480 0xffffffffb883b480 
 +t0             ​0xbafd5002 3137163266 
 +t1             ​0x2 2 
 +t2             ​0x0 0 
 +fp             ​0xbafd5000 0xbafd5000 
 +s1             ​0x80200000 2149580800 
 +a0             ​0x6 6 
 +a1             ​0x0 0 
 +a2             ​0x0 0 
 +a3             ​0x0 0 
 +a4             ​0xffffffff80765578 -2139728520 
 +a5             ​0xffffffff80765578 -2139728520 
 +a6             ​0x78 120 
 +a7             ​0x2e 46 
 +s2             ​0x809f8000 2157936640 
 +s3             ​0x0 0 
 +s4             ​0x0 0 
 +s5             ​0x200 512 
 +s6             ​0x1 1 
 +s7             ​0xfffffffeffe00000 -4297064448 
 +s8             ​0xb8b16058 3098632280 
 +s9             ​0x2 2 
 +s10            0x1 1 
 +s11            0x0 0 
 +t3             ​0x1e108 123144 
 +t4             ​0x1e108 123144 
 +t5             ​0x0 0 
 +t6             ​0xffffffff807b3465 -2139409307 
 +pc             ​0xffffffffb8916080 0xffffffffb8916080 
 +(gdb) q 
 +A debugging session is active. 
 + 
 + Inferior 1 [Remote target] will be detached. 
 + 
 +Quit anyway? (y or n) y 
 +Detaching from program: , Remote target 
 +Ending remote debugging. 
 +[Inferior 1 (Remote target) detached] 
 +</​code>​ 
developers/env_emul.1540901093.txt.gz · Last modified: 2018/10/30 14:04 by mick