1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
This README file contains information on running Yocto on QEMU while
emulating a Zynq-based machine.
QEMU emulation features
Feature Support Notes
UP yes
SMP yes
TTC yes
UART yes both UARTs usable, ttyPS0 is on second UART
just like on the ZC702 board
PL330 yes
SLCR yes
GPIO yes 0-7 output connected to 54-61 input
DEVCFG yes
EMAC yes Two interfaces emulated, one supported in BSP
88E1116R yes Ethernet PHY (Marvell); on board
SDHCI yes Two interfaces emulated
QSPI no Only linear mode emulated
SPI yes
S25FL064K yes SPI flash, 8MB
NAND yes
NAND02GR3B yes NAND flash, 256MB
NOR yes
28F128J3A yes NOR flash, 16MB
I2C yes two interfaces emulated, no devices attached
USB yes host only
CAN no
Building
Build the qemu-native target. The meta-zynq layer is configured to build
a QEMU version from Xilinx that emulates the devices mentioned before.
Booting
The QEMU version built does not integrate with the runqemu script. Use the
following command line from the build directory:
tmp/sysroots/i686-linux/usr/bin/qemu-system-arm -m 512 \
-M xilinx-zynq-a9 \
-serial /dev/null -serial vc -monitor stdio \
-kernel tmp/deploy/images/uImage-zynq.bin \
-kern-dtb tmp/deploy/images/uImage-zynq-qemu_sd.dtb \
-sd tmp/deploy/images/core-image-zynq-zynq.ext3 -sd /dev/null
This assumes that you have built the core-image-zynq and linux-yocto targets.
The two -sd parameters are both needed. You can replace the first one
with a copy of the root image file or you can decompress the
core-image-minimal-zynq.ext2.bz2 and use that instead. You can also
replace the second one with an image file for extra space,
it will appear as /dev/mmcblk1 in Linux.
You can activate the first serial port too (it will appear as /dev/ttyPS1) or
switch one of the serial ports to stdio and the monitor to a virtual
console. Read the QEMU documentation for more details.
Storage
Apart from the SDHCI emulated interfaces discussed previously, flash devices
are emulated on the SPI, NAND and NOR interfaces. The device tree is
configured with 4MB partitions on each device, but you can modify it
to create more partitions or delete them and use the entire device.
All flash emulators can use a file to store the data. Create a 16MB file for
NOR, 8MB file for SPI and a 276824064 bytes file for NAND. The NAND
file should be initially filled with 0xFF, otherwise the bad block
management in the kernel will think the flash pages are bad.
Pass the following options to qemu:
-pflash <norfile> -mtdblock <spifile> -mtdblock <nandfile>
If you don't want a SPI file but do want a NAND file, use /dev/null for SPI
because the NAND emulator uses the second mtdblock file. If you don't
want a NOR file, just don't use the pflash option.
|