xref: /openbmc/qemu/docs/system/arm/aspeed.rst (revision ca5aa28e)
1Aspeed family boards (``ast2500-evb``, ``ast2600-evb``, ``ast2700-evb``, ``bletchley-bmc``, ``fuji-bmc``, ``fby35-bmc``, ``fp5280g2-bmc``, ``g220a-bmc``, ``palmetto-bmc``, ``qcom-dc-scm-v1-bmc``, ``qcom-firework-bmc``, ``quanta-q71l-bmc``, ``rainier-bmc``, ``romulus-bmc``, ``sonorapass-bmc``, ``supermicrox11-bmc``, ``tiogapass-bmc``, ``tacoma-bmc``, ``witherspoon-bmc``, ``yosemitev2-bmc``)
2========================================================================================================================================================================================================================================================================================================================================================================================================
3
4The QEMU Aspeed machines model BMCs of various OpenPOWER systems and
5Aspeed evaluation boards. They are based on different releases of the
6Aspeed SoC : the AST2400 integrating an ARM926EJ-S CPU (400MHz), the
7AST2500 with an ARM1176JZS CPU (800MHz), the AST2600
8with dual cores ARM Cortex-A7 CPUs (1.2GHz) and more recently the AST2700
9with quad cores ARM Cortex-A35 64 bits CPUs (1.6GHz)
10
11The SoC comes with RAM, Gigabit ethernet, USB, SD/MMC, USB, SPI, I2C,
12etc.
13
14AST2400 SoC based machines :
15
16- ``palmetto-bmc``         OpenPOWER Palmetto POWER8 BMC
17- ``quanta-q71l-bmc``      OpenBMC Quanta BMC
18- ``supermicrox11-bmc``    Supermicro X11 BMC
19
20AST2500 SoC based machines :
21
22- ``ast2500-evb``          Aspeed AST2500 Evaluation board
23- ``romulus-bmc``          OpenPOWER Romulus POWER9 BMC
24- ``witherspoon-bmc``      OpenPOWER Witherspoon POWER9 BMC
25- ``sonorapass-bmc``       OCP SonoraPass BMC
26- ``fp5280g2-bmc``         Inspur FP5280G2 BMC
27- ``g220a-bmc``            Bytedance G220A BMC
28- ``yosemitev2-bmc``       Facebook YosemiteV2 BMC
29- ``tiogapass-bmc``        Facebook Tiogapass BMC
30
31AST2600 SoC based machines :
32
33- ``ast2600-evb``          Aspeed AST2600 Evaluation board (Cortex-A7)
34- ``tacoma-bmc``           OpenPOWER Witherspoon POWER9 AST2600 BMC
35- ``rainier-bmc``          IBM Rainier POWER10 BMC
36- ``fuji-bmc``             Facebook Fuji BMC
37- ``bletchley-bmc``        Facebook Bletchley BMC
38- ``fby35-bmc``            Facebook fby35 BMC
39- ``qcom-dc-scm-v1-bmc``   Qualcomm DC-SCM V1 BMC
40- ``qcom-firework-bmc``    Qualcomm Firework BMC
41
42AST2700 SoC based machines :
43
44- ``ast2700-evb``          Aspeed AST2700 Evaluation board (Cortex-A35)
45
46Supported devices
47-----------------
48
49 * SMP (for the AST2600 Cortex-A7)
50 * Interrupt Controller (VIC)
51 * Timer Controller
52 * RTC Controller
53 * I2C Controller, including the new register interface of the AST2600
54 * System Control Unit (SCU)
55 * SRAM mapping
56 * X-DMA Controller (basic interface)
57 * Static Memory Controller (SMC or FMC) - Only SPI Flash support
58 * SPI Memory Controller
59 * USB 2.0 Controller
60 * SD/MMC storage controllers
61 * SDRAM controller (dummy interface for basic settings and training)
62 * Watchdog Controller
63 * GPIO Controller (Master only)
64 * UART
65 * Ethernet controllers
66 * Front LEDs (PCA9552 on I2C bus)
67 * LPC Peripheral Controller (a subset of subdevices are supported)
68 * Hash/Crypto Engine (HACE) - Hash support only. TODO: HMAC and RSA
69 * ADC
70 * Secure Boot Controller (AST2600)
71 * eMMC Boot Controller (dummy)
72 * PECI Controller (minimal)
73 * I3C Controller
74 * Internal Bridge Controller (SLI dummy)
75
76
77Missing devices
78---------------
79
80 * Coprocessor support
81 * PWM and Fan Controller
82 * Slave GPIO Controller
83 * Super I/O Controller
84 * PCI-Express 1 Controller
85 * Graphic Display Controller
86 * MCTP Controller
87 * Mailbox Controller
88 * Virtual UART
89 * eSPI Controller
90
91Boot options
92------------
93
94The Aspeed machines can be started using the ``-kernel`` and ``-dtb`` options
95to load a Linux kernel or from a firmware. Images can be downloaded from the
96OpenBMC jenkins :
97
98   https://jenkins.openbmc.org/job/ci-openbmc/lastSuccessfulBuild/
99
100or directly from the OpenBMC GitHub release repository :
101
102   https://github.com/openbmc/openbmc/releases
103
104or directly from the ASPEED Forked OpenBMC GitHub release repository :
105
106   https://github.com/AspeedTech-BMC/openbmc/releases
107
108To boot a kernel directly from a Linux build tree:
109
110.. code-block:: bash
111
112  $ qemu-system-arm -M ast2600-evb -nographic \
113        -kernel arch/arm/boot/zImage \
114        -dtb arch/arm/boot/dts/aspeed-ast2600-evb.dtb \
115        -initrd rootfs.cpio
116
117To boot the machine from the flash image, use an MTD drive :
118
119.. code-block:: bash
120
121  $ qemu-system-arm -M romulus-bmc -nic user \
122	-drive file=obmc-phosphor-image-romulus.static.mtd,format=raw,if=mtd -nographic
123
124Options specific to Aspeed machines are :
125
126 * ``boot-emmc`` to set or unset boot from eMMC (AST2600).
127
128 * ``execute-in-place`` which emulates the boot from the CE0 flash
129   device by using the FMC controller to load the instructions, and
130   not simply from RAM. This takes a little longer.
131
132 * ``fmc-model`` to change the default FMC Flash model. FW needs
133   support for the chip model to boot.
134
135 * ``spi-model`` to change the default SPI Flash model.
136
137 * ``bmc-console`` to change the default console device. Most of the
138   machines use the ``UART5`` device for a boot console, which is
139   mapped on ``/dev/ttyS4`` under Linux, but it is not always the
140   case.
141
142To use other flash models, for instance a different FMC chip and a
143bigger (64M) SPI for the ``ast2500-evb`` machine, run :
144
145.. code-block:: bash
146
147  -M ast2500-evb,fmc-model=mx25l25635e,spi-model=mx66u51235f
148
149When more flexibility is needed to define the flash devices, to use
150different flash models or define all flash devices (up to 8), the
151``-nodefaults`` QEMU option can be used to avoid creating the default
152flash devices.
153
154Flash devices should then be created from the command line and attached
155to a block device :
156
157.. code-block:: bash
158
159  $ qemu-system-arm -M ast2600-evb \
160        -blockdev node-name=fmc0,driver=file,filename=/path/to/fmc0.img \
161	-device mx66u51235f,bus=ssi.0,cs=0x0,drive=fmc0 \
162	-blockdev node-name=fmc1,driver=file,filename=/path/to/fmc1.img \
163	-device mx66u51235f,bus=ssi.0,cs=0x1,drive=fmc1 \
164	-blockdev node-name=spi1,driver=file,filename=/path/to/spi1.img \
165	-device mx66u51235f,cs=0x0,bus=ssi.1,drive=spi1 \
166	-nographic -nodefaults
167
168In that case, the machine boots fetching instructions from the FMC0
169device. It is slower to start but closer to what HW does. Using the
170machine option ``execute-in-place`` has a similar effect.
171
172To change the boot console and use device ``UART3`` (``/dev/ttyS2``
173under Linux), use :
174
175.. code-block:: bash
176
177  -M ast2500-evb,bmc-console=uart3
178
179
180Boot the AST2700 machine from the flash image, use an MTD drive :
181
182.. code-block:: bash
183
184  IMGDIR=ast2700-default
185  UBOOT_SIZE=$(stat --format=%s -L ${IMGDIR}/u-boot-nodtb.bin)
186
187  $ qemu-system-aarch64 -M ast2700-evb \
188       -device loader,force-raw=on,addr=0x400000000,file=${IMGDIR}/u-boot-nodtb.bin \
189       -device loader,force-raw=on,addr=$((0x400000000 + ${UBOOT_SIZE})),file=${IMGDIR}/u-boot.dtb \
190       -device loader,force-raw=on,addr=0x430000000,file=${IMGDIR}/bl31.bin \
191       -device loader,force-raw=on,addr=0x430080000,file=${IMGDIR}/optee/tee-raw.bin \
192       -device loader,cpu-num=0,addr=0x430000000 \
193       -device loader,cpu-num=1,addr=0x430000000 \
194       -device loader,cpu-num=2,addr=0x430000000 \
195       -device loader,cpu-num=3,addr=0x430000000 \
196       -smp 4 \
197       -drive file=${IMGDIR}/image-bmc,format=raw,if=mtd \
198       -nographic
199
200Aspeed minibmc family boards (``ast1030-evb``)
201==================================================================
202
203The QEMU Aspeed machines model mini BMCs of various Aspeed evaluation
204boards. They are based on different releases of the
205Aspeed SoC : the AST1030 integrating an ARM Cortex M4F CPU (200MHz).
206
207The SoC comes with SRAM, SPI, I2C, etc.
208
209AST1030 SoC based machines :
210
211- ``ast1030-evb``          Aspeed AST1030 Evaluation board (Cortex-M4F)
212
213Supported devices
214-----------------
215
216 * SMP (for the AST1030 Cortex-M4F)
217 * Interrupt Controller (VIC)
218 * Timer Controller
219 * I2C Controller
220 * System Control Unit (SCU)
221 * SRAM mapping
222 * Static Memory Controller (SMC or FMC) - Only SPI Flash support
223 * SPI Memory Controller
224 * USB 2.0 Controller
225 * Watchdog Controller
226 * GPIO Controller (Master only)
227 * UART
228 * LPC Peripheral Controller (a subset of subdevices are supported)
229 * Hash/Crypto Engine (HACE) - Hash support only. TODO: HMAC and RSA
230 * ADC
231 * Secure Boot Controller
232 * PECI Controller (minimal)
233
234
235Missing devices
236---------------
237
238 * PWM and Fan Controller
239 * Slave GPIO Controller
240 * Mailbox Controller
241 * Virtual UART
242 * eSPI Controller
243 * I3C Controller
244
245Boot options
246------------
247
248The Aspeed machines can be started using the ``-kernel`` to load a
249Zephyr OS or from a firmware. Images can be downloaded from the
250ASPEED GitHub release repository :
251
252   https://github.com/AspeedTech-BMC/zephyr/releases
253
254To boot a kernel directly from a Zephyr build tree:
255
256.. code-block:: bash
257
258  $ qemu-system-arm -M ast1030-evb -nographic \
259        -kernel zephyr.elf
260