123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- .. SPDX-License-Identifier: GPL-2.0+
- .. Copyright (C) 2021, Bin Meng <bmeng.cn@gmail.com>
- QEMU PPC E500
- =============
- QEMU for PPC supports a special 'ppce500' machine designed for emulation and
- virtualization purposes. This document describes how to run U-Boot under it.
- The QEMU ppce500 machine models a generic PowerPC E500 virtual machine with
- support for the VirtIO standard networking device connected to the built-in
- PCI host controller. Some common devices in the CCSBAR space are modeled,
- including MPIC, 16550A UART devices, GPIO, I2C and PCI host controller with
- MSI delivery to MPIC. It uses device-tree to pass configuration information
- to guest software.
- Building U-Boot
- ---------------
- Set the CROSS_COMPILE environment variable as usual, and run::
- $ make qemu-ppce500_defconfig
- $ make
- Running U-Boot
- --------------
- The minimal QEMU command line to get U-Boot up and running is::
- $ qemu-system-ppc -nographic -machine ppce500 -bios u-boot
- You can also run U-Boot using 'qemu-system-ppc64'::
- $ qemu-system-ppc64 -nographic -machine ppce500 -bios u-boot
- The commands above create a target with 128 MiB memory by default. A freely
- configurable amount of RAM can be created via the '-m' parameter. For example,
- '-m 2G' creates 2 GiB memory for the target, and the memory node in the
- embedded DTB created by QEMU reflects the new setting.
- Both qemu-system-ppc and qemu-system-ppc64 provide emulation for the following
- 32-bit PowerPC CPUs:
- * e500v2
- * e500mc
- Additionally qemu-system-ppc64 provides support for the following 64-bit CPUs:
- * e5500
- * e6500
- The CPU type can be specified via the '-cpu' command line. If not specified,
- it creates a machine with e500v2 core. The following example shows an e6500
- based machine creation::
- $ qemu-system-ppc64 -nographic -machine ppce500 -cpu e6500 -bios u-boot
- When U-Boot boots, you will notice the following::
- CPU: Unknown, Version: 0.0, (0x00000000)
- Core: e6500, Version: 2.0, (0x80400020)
- This is because we only specified a core name to QEMU and it does not have a
- meaningful SVR value which represents an actual SoC that integrates such core.
- You can specify a real world SoC device that QEMU has built-in support but all
- these SoCs are e500v2 based MPC85xx series, hence you cannot test anything
- built for P4080 (e500mc), P5020 (e5500) and T2080 (e6500).
- By default a VirtIO standard PCI networking device is connected as an ethernet
- interface at PCI address 0.1.0, but we can switch that to an e1000 NIC by::
- $ qemu-system-ppc -nographic -machine ppce500 -bios u-boot \
- -nic tap,ifname=tap0,script=no,downscript=no,model=e1000
- The QEMU ppce500 machine can also dynamically instantiate an eTSEC device if
- "-device eTSEC" is given to QEMU::
- -netdev tap,ifname=tap0,script=no,downscript=no,id=net0 -device eTSEC,netdev=net0
- VirtIO BLK driver is also enabled to support booting from a disk image where
- a kernel image is stored. Append the following to QEMU::
- -drive file=disk.img,format=raw,id=disk0 -device virtio-blk-pci,drive=disk0
- Pericom pt7c4338 RTC is supported so we can use the 'date' command::
- => date
- Date: 2021-02-18 (Thursday) Time: 15:33:20
- Additionally, 'poweroff' command is supported to shut down the QEMU session::
- => poweroff
- poweroff ...
- These have been tested in QEMU 5.2.0.
|