 a5dbb17507
			
		
	
	
		a5dbb17507
		
	
	
	
	
		
			
			The wiki and the web are curiously absent of the right runes to boot a vexpress model so I had to work from first principles to work it out. Use the more modern -drive notation so alternative backends can be used (unlike the hardwired -sd mode). Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Cc: Anders Roxell <anders.roxell@linaro.org> Message-Id: <20210202134001.25738-15-alex.bennee@linaro.org>
		
			
				
	
	
		
			89 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| Arm Versatile Express boards (``vexpress-a9``, ``vexpress-a15``)
 | |
| ================================================================
 | |
| 
 | |
| QEMU models two variants of the Arm Versatile Express development
 | |
| board family:
 | |
| 
 | |
| - ``vexpress-a9`` models the combination of the Versatile Express
 | |
|   motherboard and the CoreTile Express A9x4 daughterboard
 | |
| - ``vexpress-a15`` models the combination of the Versatile Express
 | |
|   motherboard and the CoreTile Express A15x2 daughterboard
 | |
| 
 | |
| Note that as this hardware does not have PCI, IDE or SCSI,
 | |
| the only available storage option is emulated SD card.
 | |
| 
 | |
| Implemented devices:
 | |
| 
 | |
| - PL041 audio
 | |
| - PL181 SD controller
 | |
| - PL050 keyboard and mouse
 | |
| - PL011 UARTs
 | |
| - SP804 timers
 | |
| - I2C controller
 | |
| - PL031 RTC
 | |
| - PL111 LCD display controller
 | |
| - Flash memory
 | |
| - LAN9118 ethernet
 | |
| 
 | |
| Unimplemented devices:
 | |
| 
 | |
| - SP810 system control block
 | |
| - PCI-express
 | |
| - USB controller (Philips ISP1761)
 | |
| - Local DAP ROM
 | |
| - CoreSight interfaces
 | |
| - PL301 AXI interconnect
 | |
| - SCC
 | |
| - System counter
 | |
| - HDLCD controller (``vexpress-a15``)
 | |
| - SP805 watchdog
 | |
| - PL341 dynamic memory controller
 | |
| - DMA330 DMA controller
 | |
| - PL354 static memory controller
 | |
| - BP147 TrustZone Protection Controller
 | |
| - TrustZone Address Space Controller
 | |
| 
 | |
| Other differences between the hardware and the QEMU model:
 | |
| 
 | |
| - QEMU will default to creating one CPU unless you pass a different
 | |
|   ``-smp`` argument
 | |
| - QEMU allows the amount of RAM provided to be specified with the
 | |
|   ``-m`` argument
 | |
| - QEMU defaults to providing a CPU which does not provide either
 | |
|   TrustZone or the Virtualization Extensions: if you want these you
 | |
|   must enable them with ``-machine secure=on`` and ``-machine
 | |
|   virtualization=on``
 | |
| - QEMU provides 4 virtio-mmio virtio transports; these start at
 | |
|   address ``0x10013000`` for ``vexpress-a9`` and at ``0x1c130000`` for
 | |
|   ``vexpress-a15``, and have IRQs from 40 upwards. If a dtb is
 | |
|   provided on the command line then QEMU will edit it to include
 | |
|   suitable entries describing these transports for the guest.
 | |
| 
 | |
| Booting a Linux kernel
 | |
| ----------------------
 | |
| 
 | |
| Building a current Linux kernel with ``multi_v7_defconfig`` should be
 | |
| enough to get something running. Nowadays an out-of-tree build is
 | |
| recommended (and also useful if you build a lot of different targets).
 | |
| In the following example $BLD points to the build directory and $SRC
 | |
| points to the root of the Linux source tree. You can drop $SRC if you
 | |
| are running from there.
 | |
| 
 | |
| .. code-block:: bash
 | |
| 
 | |
|   $ make O=$BLD -C $SRC ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- multi_v7_defconfig
 | |
|   $ make O=$BLD -C $SRC ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
 | |
| 
 | |
| By default you will want to boot your rootfs off the sdcard interface.
 | |
| Your rootfs will need to be padded to the right size. With a suitable
 | |
| DTB you could also add devices to the virtio-mmio bus.
 | |
| 
 | |
| .. code-block:: bash
 | |
| 
 | |
|   $ qemu-system-arm -cpu cortex-a15 -smp 4 -m 4096 \
 | |
|       -machine type=vexpress-a15 -serial mon:stdio \
 | |
|       -drive if=sd,driver=file,filename=armel-rootfs.ext4 \
 | |
|       -kernel zImage  \
 | |
|       -dtb vexpress-v2p-ca15-tc1.dtb \
 | |
|       -append "console=ttyAMA0 root=/dev/mmcblk0 ro"
 |