Add network testing documentation for QEMU emulation based on actual runtime testing with qemu-system-riscv64 and U-Boot.
Tested and verified: - VirtIO network device detection (virtio-net-device) - DHCP client functionality - TFTP file loading from QEMU's built-in TFTP server The documentation covers VirtIO devices for both MMIO-based (RISC-V) and PCI-based (x86) machines, with practical examples of U-Boot commands and expected output. Signed-off-by: Manjae Cho <[email protected]> --- doc/board/emulation/index.rst | 1 + doc/board/emulation/network.rst | 58 +++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 doc/board/emulation/network.rst diff --git a/doc/board/emulation/index.rst b/doc/board/emulation/index.rst index f8908166276..507c38825c1 100644 --- a/doc/board/emulation/index.rst +++ b/doc/board/emulation/index.rst @@ -8,6 +8,7 @@ Emulation acpi blkdev + index qemu-arm qemu-mips qemu-ppce500 diff --git a/doc/board/emulation/network.rst b/doc/board/emulation/network.rst new file mode 100644 index 00000000000..6a08a6611b4 --- /dev/null +++ b/doc/board/emulation/network.rst @@ -0,0 +1,58 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Emulation of network devices +----------------------------- + +QEMU can emulate network devices for testing U-Boot networking functionality. +The device type depends on the machine architecture: + +* VirtIO (for RISC-V and other virtio-bus machines) + + .. code-block:: bash + + qemu-system-riscv64 -nographic -machine virt -bios opensbi.bin \ + -kernel u-boot.bin -m 256M \ + -netdev user,id=net0 -device virtio-net-device,netdev=net0 + +* VirtIO PCI (for x86 and other PCI-based machines) + + .. code-block:: bash + + qemu-system-x86_64 -nographic -bios u-boot.bin \ + -netdev user,id=net0 -device virtio-net-pci,netdev=net0 + +The 'user' networking backend provides a simple way to test DHCP and basic +networking without host configuration. In U-Boot, you can verify the network +device is detected: + +.. code-block:: none + + => net list + eth0 : virtio-net#0 52:54:00:12:34:56 active + +TFTP boot +^^^^^^^^^ + +QEMU's user networking includes a built-in TFTP server. To enable it, specify +a host directory to serve files from: + +.. code-block:: bash + + -netdev user,id=net0,tftp=/path/to/tftp/root + +From U-Boot, you can load files using DHCP and TFTP: + +.. code-block:: none + + => setenv autoload no + => dhcp + DHCP client bound to address 10.0.2.15 (1 ms) + => tftp ${loadaddr} test.txt + Using virtio-net#0 device + TFTP from server 10.0.2.2; our IP address is 10.0.2.15 + Filename 'test.txt'. + Load address: 0x80200000 + Loading: * + 15.6 KiB/s + done + Bytes transferred = 16 (10 hex) -- 2.43.0

