xref: /openbmc/qemu/docs/system/arm/aspeed.rst (revision 34f73a81)
17a1e049aSCédric Le GoaterAspeed family boards (``*-bmc``, ``ast2500-evb``, ``ast2600-evb``)
27a1e049aSCédric Le Goater==================================================================
37a1e049aSCédric Le Goater
47a1e049aSCédric Le GoaterThe QEMU Aspeed machines model BMCs of various OpenPOWER systems and
57a1e049aSCédric Le GoaterAspeed evaluation boards. They are based on different releases of the
67a1e049aSCédric Le GoaterAspeed SoC : the AST2400 integrating an ARM926EJ-S CPU (400MHz), the
77a1e049aSCédric Le GoaterAST2500 with an ARM1176JZS CPU (800MHz) and more recently the AST2600
8f548f201SPeter Maydellwith dual cores ARM Cortex-A7 CPUs (1.2GHz).
97a1e049aSCédric Le Goater
107a1e049aSCédric Le GoaterThe SoC comes with RAM, Gigabit ethernet, USB, SD/MMC, USB, SPI, I2C,
117a1e049aSCédric Le Goateretc.
127a1e049aSCédric Le Goater
137a1e049aSCédric Le GoaterAST2400 SoC based machines :
147a1e049aSCédric Le Goater
157a1e049aSCédric Le Goater- ``palmetto-bmc``         OpenPOWER Palmetto POWER8 BMC
1671f5027fSPatrick Venture- ``quanta-q71l-bmc``      OpenBMC Quanta BMC
170b052414SJoel Stanley- ``supermicrox11-bmc``    Supermicro X11 BMC
187a1e049aSCédric Le Goater
197a1e049aSCédric Le GoaterAST2500 SoC based machines :
207a1e049aSCédric Le Goater
217a1e049aSCédric Le Goater- ``ast2500-evb``          Aspeed AST2500 Evaluation board
227a1e049aSCédric Le Goater- ``romulus-bmc``          OpenPOWER Romulus POWER9 BMC
237a1e049aSCédric Le Goater- ``witherspoon-bmc``      OpenPOWER Witherspoon POWER9 BMC
247a1e049aSCédric Le Goater- ``sonorapass-bmc``       OCP SonoraPass BMC
250b052414SJoel Stanley- ``fp5280g2-bmc``         Inspur FP5280G2 BMC
260b052414SJoel Stanley- ``g220a-bmc``            Bytedance G220A BMC
27*34f73a81SKarthikeyan Pasupathi- ``yosemitev2-bmc``       Facebook YosemiteV2 BMC
287a1e049aSCédric Le Goater
297a1e049aSCédric Le GoaterAST2600 SoC based machines :
307a1e049aSCédric Le Goater
31f548f201SPeter Maydell- ``ast2600-evb``          Aspeed AST2600 Evaluation board (Cortex-A7)
327a1e049aSCédric Le Goater- ``tacoma-bmc``           OpenPOWER Witherspoon POWER9 AST2600 BMC
330b052414SJoel Stanley- ``rainier-bmc``          IBM Rainier POWER10 BMC
340b052414SJoel Stanley- ``fuji-bmc``             Facebook Fuji BMC
351d6fb3d0SCédric Le Goater- ``bletchley-bmc``        Facebook Bletchley BMC
36264a360aSPeter Delevoryas- ``fby35-bmc``            Facebook fby35 BMC
371d6fb3d0SCédric Le Goater- ``qcom-dc-scm-v1-bmc``   Qualcomm DC-SCM V1 BMC
381d6fb3d0SCédric Le Goater- ``qcom-firework-bmc``    Qualcomm Firework BMC
397a1e049aSCédric Le Goater
407a1e049aSCédric Le GoaterSupported devices
417a1e049aSCédric Le Goater-----------------
427a1e049aSCédric Le Goater
437a1e049aSCédric Le Goater * SMP (for the AST2600 Cortex-A7)
447a1e049aSCédric Le Goater * Interrupt Controller (VIC)
457a1e049aSCédric Le Goater * Timer Controller
467a1e049aSCédric Le Goater * RTC Controller
471d6fb3d0SCédric Le Goater * I2C Controller, including the new register interface of the AST2600
487a1e049aSCédric Le Goater * System Control Unit (SCU)
497a1e049aSCédric Le Goater * SRAM mapping
507a1e049aSCédric Le Goater * X-DMA Controller (basic interface)
517a1e049aSCédric Le Goater * Static Memory Controller (SMC or FMC) - Only SPI Flash support
527a1e049aSCédric Le Goater * SPI Memory Controller
537a1e049aSCédric Le Goater * USB 2.0 Controller
547a1e049aSCédric Le Goater * SD/MMC storage controllers
557a1e049aSCédric Le Goater * SDRAM controller (dummy interface for basic settings and training)
567a1e049aSCédric Le Goater * Watchdog Controller
577a1e049aSCédric Le Goater * GPIO Controller (Master only)
587a1e049aSCédric Le Goater * UART
597a1e049aSCédric Le Goater * Ethernet controllers
6012bff81bSPhilippe Mathieu-Daudé * Front LEDs (PCA9552 on I2C bus)
612ecf1726SCédric Le Goater * LPC Peripheral Controller (a subset of subdevices are supported)
62c5475b3fSJoel Stanley * Hash/Crypto Engine (HACE) - Hash support only. TODO: HMAC and RSA
63b662fac6SJoel Stanley * ADC
641d6fb3d0SCédric Le Goater * Secure Boot Controller (AST2600)
651d6fb3d0SCédric Le Goater * eMMC Boot Controller (dummy)
661d6fb3d0SCédric Le Goater * PECI Controller (minimal)
671d6fb3d0SCédric Le Goater * I3C Controller
687a1e049aSCédric Le Goater
697a1e049aSCédric Le Goater
707a1e049aSCédric Le GoaterMissing devices
717a1e049aSCédric Le Goater---------------
727a1e049aSCédric Le Goater
737a1e049aSCédric Le Goater * Coprocessor support
747a1e049aSCédric Le Goater * PWM and Fan Controller
757a1e049aSCédric Le Goater * Slave GPIO Controller
767a1e049aSCédric Le Goater * Super I/O Controller
777a1e049aSCédric Le Goater * PCI-Express 1 Controller
787a1e049aSCédric Le Goater * Graphic Display Controller
797a1e049aSCédric Le Goater * MCTP Controller
807a1e049aSCédric Le Goater * Mailbox Controller
817a1e049aSCédric Le Goater * Virtual UART
827a1e049aSCédric Le Goater * eSPI Controller
837a1e049aSCédric Le Goater
847a1e049aSCédric Le GoaterBoot options
857a1e049aSCédric Le Goater------------
867a1e049aSCédric Le Goater
879d5dcb85SJoel StanleyThe Aspeed machines can be started using the ``-kernel`` and ``-dtb`` options
889d5dcb85SJoel Stanleyto load a Linux kernel or from a firmware. Images can be downloaded from the
899d5dcb85SJoel StanleyOpenBMC jenkins :
907a1e049aSCédric Le Goater
9138b1ed6cSJoel Stanley   https://jenkins.openbmc.org/job/ci-openbmc/lastSuccessfulBuild/
92d029c729SCédric Le Goater
93d029c729SCédric Le Goateror directly from the OpenBMC GitHub release repository :
94d029c729SCédric Le Goater
95d029c729SCédric Le Goater   https://github.com/openbmc/openbmc/releases
967a1e049aSCédric Le Goater
979d5dcb85SJoel StanleyTo boot a kernel directly from a Linux build tree:
989d5dcb85SJoel Stanley
999d5dcb85SJoel Stanley.. code-block:: bash
1009d5dcb85SJoel Stanley
1019d5dcb85SJoel Stanley  $ qemu-system-arm -M ast2600-evb -nographic \
1029d5dcb85SJoel Stanley        -kernel arch/arm/boot/zImage \
1039d5dcb85SJoel Stanley        -dtb arch/arm/boot/dts/aspeed-ast2600-evb.dtb \
1049d5dcb85SJoel Stanley        -initrd rootfs.cpio
1059d5dcb85SJoel Stanley
1067a1e049aSCédric Le GoaterThe image should be attached as an MTD drive. Run :
1077a1e049aSCédric Le Goater
1087a1e049aSCédric Le Goater.. code-block:: bash
1097a1e049aSCédric Le Goater
1107a1e049aSCédric Le Goater  $ qemu-system-arm -M romulus-bmc -nic user \
111d029c729SCédric Le Goater	-drive file=obmc-phosphor-image-romulus.static.mtd,format=raw,if=mtd -nographic
1129820e52fSCédric Le Goater
1139820e52fSCédric Le GoaterOptions specific to Aspeed machines are :
1149820e52fSCédric Le Goater
1159820e52fSCédric Le Goater * ``execute-in-place`` which emulates the boot from the CE0 flash
1169820e52fSCédric Le Goater   device by using the FMC controller to load the instructions, and
1179820e52fSCédric Le Goater   not simply from RAM. This takes a little longer.
1189820e52fSCédric Le Goater
1199820e52fSCédric Le Goater * ``fmc-model`` to change the FMC Flash model. FW needs support for
1209820e52fSCédric Le Goater   the chip model to boot.
1219820e52fSCédric Le Goater
1229820e52fSCédric Le Goater * ``spi-model`` to change the SPI Flash model.
1239820e52fSCédric Le Goater
1249820e52fSCédric Le GoaterFor instance, to start the ``ast2500-evb`` machine with a different
1259820e52fSCédric Le GoaterFMC chip and a bigger (64M) SPI chip, use :
1269820e52fSCédric Le Goater
1279820e52fSCédric Le Goater.. code-block:: bash
1289820e52fSCédric Le Goater
1299820e52fSCédric Le Goater  -M ast2500-evb,fmc-model=mx25l25635e,spi-model=mx66u51235f
1303d393bb7SJamin Lin
1313d393bb7SJamin Lin
1323d393bb7SJamin LinAspeed minibmc family boards (``ast1030-evb``)
1333d393bb7SJamin Lin==================================================================
1343d393bb7SJamin Lin
1353d393bb7SJamin LinThe QEMU Aspeed machines model mini BMCs of various Aspeed evaluation
1363d393bb7SJamin Linboards. They are based on different releases of the
1373d393bb7SJamin LinAspeed SoC : the AST1030 integrating an ARM Cortex M4F CPU (200MHz).
1383d393bb7SJamin Lin
1393d393bb7SJamin LinThe SoC comes with SRAM, SPI, I2C, etc.
1403d393bb7SJamin Lin
1413d393bb7SJamin LinAST1030 SoC based machines :
1423d393bb7SJamin Lin
1433d393bb7SJamin Lin- ``ast1030-evb``          Aspeed AST1030 Evaluation board (Cortex-M4F)
1443d393bb7SJamin Lin
1453d393bb7SJamin LinSupported devices
1463d393bb7SJamin Lin-----------------
1473d393bb7SJamin Lin
1483d393bb7SJamin Lin * SMP (for the AST1030 Cortex-M4F)
1493d393bb7SJamin Lin * Interrupt Controller (VIC)
1503d393bb7SJamin Lin * Timer Controller
1513d393bb7SJamin Lin * I2C Controller
1523d393bb7SJamin Lin * System Control Unit (SCU)
1533d393bb7SJamin Lin * SRAM mapping
1543d393bb7SJamin Lin * Static Memory Controller (SMC or FMC) - Only SPI Flash support
1553d393bb7SJamin Lin * SPI Memory Controller
1563d393bb7SJamin Lin * USB 2.0 Controller
1573d393bb7SJamin Lin * Watchdog Controller
1583d393bb7SJamin Lin * GPIO Controller (Master only)
1593d393bb7SJamin Lin * UART
1603d393bb7SJamin Lin * LPC Peripheral Controller (a subset of subdevices are supported)
1613d393bb7SJamin Lin * Hash/Crypto Engine (HACE) - Hash support only. TODO: HMAC and RSA
1623d393bb7SJamin Lin * ADC
1631d6fb3d0SCédric Le Goater * Secure Boot Controller
1641d6fb3d0SCédric Le Goater * PECI Controller (minimal)
1653d393bb7SJamin Lin
1663d393bb7SJamin Lin
1673d393bb7SJamin LinMissing devices
1683d393bb7SJamin Lin---------------
1693d393bb7SJamin Lin
1703d393bb7SJamin Lin * PWM and Fan Controller
1713d393bb7SJamin Lin * Slave GPIO Controller
1723d393bb7SJamin Lin * Mailbox Controller
1733d393bb7SJamin Lin * Virtual UART
1743d393bb7SJamin Lin * eSPI Controller
1753d393bb7SJamin Lin * I3C Controller
1763d393bb7SJamin Lin
1773d393bb7SJamin LinBoot options
1783d393bb7SJamin Lin------------
1793d393bb7SJamin Lin
1803d393bb7SJamin LinThe Aspeed machines can be started using the ``-kernel`` to load a
1813d393bb7SJamin LinZephyr OS or from a firmware. Images can be downloaded from the
1823d393bb7SJamin LinASPEED GitHub release repository :
1833d393bb7SJamin Lin
1843d393bb7SJamin Lin   https://github.com/AspeedTech-BMC/zephyr/releases
1853d393bb7SJamin Lin
1863d393bb7SJamin LinTo boot a kernel directly from a Zephyr build tree:
1873d393bb7SJamin Lin
1883d393bb7SJamin Lin.. code-block:: bash
1893d393bb7SJamin Lin
1903d393bb7SJamin Lin  $ qemu-system-arm -M ast1030-evb -nographic \
1913d393bb7SJamin Lin        -kernel zephyr.elf
19219d7c0d4SPeter Delevoryas
19319d7c0d4SPeter DelevoryasFacebook Yosemite v3.5 Platform and CraterLake Server (``fby35``)
19419d7c0d4SPeter Delevoryas==================================================================
19519d7c0d4SPeter Delevoryas
19619d7c0d4SPeter DelevoryasFacebook has a series of multi-node compute server designs named
19719d7c0d4SPeter DelevoryasYosemite. The most recent version released was
19819d7c0d4SPeter Delevoryas`Yosemite v3 <https://www.opencompute.org/documents/ocp-yosemite-v3-platform-design-specification-1v16-pdf>`__.
19919d7c0d4SPeter Delevoryas
20019d7c0d4SPeter DelevoryasYosemite v3.5 is an iteration on this design, and is very similar: there's a
20119d7c0d4SPeter Delevoryasbaseboard with a BMC, and 4 server slots. The new server board design termed
20219d7c0d4SPeter Delevoryas"CraterLake" includes a Bridge IC (BIC), with room for expansion boards to
20319d7c0d4SPeter Delevoryasinclude various compute accelerators (video, inferencing, etc). At the moment,
20419d7c0d4SPeter Delevoryasonly the first server slot's BIC is included.
20519d7c0d4SPeter Delevoryas
20619d7c0d4SPeter DelevoryasYosemite v3.5 is itself a sled which fits into a 40U chassis, and 3 sleds
20719d7c0d4SPeter Delevoryascan be fit into a chassis. See `here <https://www.opencompute.org/products/423/wiwynn-yosemite-v3-server>`__
20819d7c0d4SPeter Delevoryasfor an example.
20919d7c0d4SPeter Delevoryas
21019d7c0d4SPeter DelevoryasIn this generation, the BMC is an AST2600 and each BIC is an AST1030. The BMC
21119d7c0d4SPeter Delevoryasruns `OpenBMC <https://github.com/facebook/openbmc>`__, and the BIC runs
21219d7c0d4SPeter Delevoryas`OpenBIC <https://github.com/facebook/openbic>`__.
21319d7c0d4SPeter Delevoryas
21419d7c0d4SPeter DelevoryasFirmware images can be retrieved from the Github releases or built from the
21519d7c0d4SPeter Delevoryassource code, see the README's for instructions on that. This image uses the
21619d7c0d4SPeter Delevoryas"fby35" machine recipe from OpenBMC, and the "yv35-cl" target from OpenBIC.
21719d7c0d4SPeter DelevoryasSome reference images can also be found here:
21819d7c0d4SPeter Delevoryas
21919d7c0d4SPeter Delevoryas.. code-block:: bash
22019d7c0d4SPeter Delevoryas
22119d7c0d4SPeter Delevoryas    $ wget https://github.com/facebook/openbmc/releases/download/openbmc-e2294ff5d31d/fby35.mtd
22219d7c0d4SPeter Delevoryas    $ wget https://github.com/peterdelevoryas/OpenBIC/releases/download/oby35-cl-2022.13.01/Y35BCL.elf
22319d7c0d4SPeter Delevoryas
22419d7c0d4SPeter DelevoryasSince this machine has multiple SoC's, each with their own serial console, the
22519d7c0d4SPeter Delevoryasrecommended way to run it is to allocate a pseudoterminal for each serial
22619d7c0d4SPeter Delevoryasconsole and let the monitor use stdio. Also, starting in a paused state is
22719d7c0d4SPeter Delevoryasuseful because it allows you to attach to the pseudoterminals before the boot
22819d7c0d4SPeter Delevoryasprocess starts.
22919d7c0d4SPeter Delevoryas
23019d7c0d4SPeter Delevoryas.. code-block:: bash
23119d7c0d4SPeter Delevoryas
23219d7c0d4SPeter Delevoryas    $ qemu-system-arm -machine fby35 \
23319d7c0d4SPeter Delevoryas        -drive file=fby35.mtd,format=raw,if=mtd \
23419d7c0d4SPeter Delevoryas        -device loader,file=Y35BCL.elf,addr=0,cpu-num=2 \
23519d7c0d4SPeter Delevoryas        -serial pty -serial pty -serial mon:stdio \
23619d7c0d4SPeter Delevoryas        -display none -S
23719d7c0d4SPeter Delevoryas    $ screen /dev/tty0 # In a separate TMUX pane, terminal window, etc.
23819d7c0d4SPeter Delevoryas    $ screen /dev/tty1
23919d7c0d4SPeter Delevoryas    $ (qemu) c		   # Start the boot process once screen is setup.
240