| 1 | Nuvoton iBMC boards (``kudo-bmc``, ``mori-bmc``, ``npcm750-evb``, ``quanta-gbs-bmc``, ``quanta-gsj``, ``npcm845-evb``) |
| 2 | ====================================================================================================================== |
| 3 | |
| 4 | The `Nuvoton iBMC`_ chips are a family of Arm-based SoCs that are |
| 5 | designed to be used as Baseboard Management Controllers (BMCs) in various |
| 6 | servers. Currently there are two families: NPCM7XX series and |
| 7 | NPCM8XX series. NPCM7XX series feature one or two Arm Cortex-A9 CPU cores, |
| 8 | while NPCM8XX feature 4 Arm Cortex-A35 CPU cores. Both series contain a |
| 9 | different assortment of peripherals targeted for either Enterprise or Data |
| 10 | Center / Hyperscale applications. |
| 11 | |
| 12 | .. _Nuvoton iBMC: https://www.nuvoton.com/products/cloud-computing/ibmc/ |
| 13 | |
| 14 | The NPCM750 SoC has two Cortex-A9 cores and is targeted for the Enterprise |
| 15 | segment. The following machines are based on this chip : |
| 16 | |
| 17 | - ``npcm750-evb`` Nuvoton NPCM750 Evaluation board |
| 18 | |
| 19 | The NPCM730 SoC has two Cortex-A9 cores and is targeted for Data Center and |
| 20 | Hyperscale applications. The following machines are based on this chip : |
| 21 | |
| 22 | - ``quanta-gbs-bmc`` Quanta GBS server BMC |
| 23 | - ``quanta-gsj`` Quanta GSJ server BMC |
| 24 | - ``kudo-bmc`` Fii USA Kudo server BMC |
| 25 | - ``mori-bmc`` Fii USA Mori server BMC |
| 26 | |
| 27 | There are also two more SoCs, NPCM710 and NPCM705, which are single-core |
| 28 | variants of NPCM750 and NPCM730, respectively. These are currently not |
| 29 | supported by QEMU. |
| 30 | |
| 31 | The NPCM8xx SoC is the successor of the NPCM7xx SoC. It has 4 Cortex-A35 cores. |
| 32 | The following machines are based on this chip : |
| 33 | |
| 34 | - ``npcm845-evb`` Nuvoton NPCM845 Evaluation board |
| 35 | |
| 36 | Supported devices |
| 37 | ----------------- |
| 38 | |
| 39 | * SMP (Dual Core Cortex-A9) |
| 40 | * Cortex-A9MPCore built-in peripherals: SCU, GIC, Global Timer, Private Timer |
| 41 | and Watchdog. |
| 42 | * SRAM, ROM and DRAM mappings |
| 43 | * System Global Control Registers (GCR) |
| 44 | * Clock and reset controller (CLK) |
| 45 | * Timer controller (TIM) |
| 46 | * Serial ports (16550-based) |
| 47 | * DDR4 memory controller (dummy interface indicating memory training is done) |
| 48 | * OTP controllers (no protection features) |
| 49 | * Flash Interface Unit (FIU; no protection features) |
| 50 | * Random Number Generator (RNG) |
| 51 | * USB host (USBH) |
| 52 | * GPIO controller |
| 53 | * Analog to Digital Converter (ADC) |
| 54 | * Pulse Width Modulation (PWM) |
| 55 | * SMBus controller (SMBF) |
| 56 | * Ethernet controller (EMC) |
| 57 | * Tachometer |
| 58 | * Peripheral SPI controller (PSPI) |
| 59 | |
| 60 | Missing devices |
| 61 | --------------- |
| 62 | |
| 63 | * LPC/eSPI host-to-BMC interface, including |
| 64 | |
| 65 | * Keyboard and mouse controller interface (KBCI) |
| 66 | * Keyboard Controller Style (KCS) channels |
| 67 | * BIOS POST code FIFO |
| 68 | * System Wake-up Control (SWC) |
| 69 | * Shared memory (SHM) |
| 70 | * eSPI slave interface |
| 71 | * Block-transfer interface (8XX only) |
| 72 | * Virtual UART (8XX only) |
| 73 | |
| 74 | * Ethernet controller (GMAC) |
| 75 | * USB device (USBD) |
| 76 | * SD/MMC host |
| 77 | * PECI interface |
| 78 | * PCI and PCIe root complex and bridges |
| 79 | * VDM and MCTP support |
| 80 | * Serial I/O expansion |
| 81 | * LPC/eSPI host |
| 82 | * Coprocessor |
| 83 | * Graphics |
| 84 | * Video capture |
| 85 | * Encoding compression engine |
| 86 | * Security features |
| 87 | * I3C buses (8XX only) |
| 88 | * Temperature sensor interface (8XX only) |
| 89 | * Virtual UART (8XX only) |
| 90 | * Flash monitor (8XX only) |
| 91 | * JTAG master (8XX only) |
| 92 | |
| 93 | Boot options |
| 94 | ------------ |
| 95 | |
| 96 | The Nuvoton machines can boot from an OpenBMC firmware image, or directly into |
| 97 | a kernel using the ``-kernel`` option. OpenBMC machine names do not always |
| 98 | match QEMU machine names. Check the OpenBMC supported-machine list and Jenkins |
| 99 | for currently available source and pre-built images. |
| 100 | |
| 101 | Known OpenBMC (v2.18.0) target names for QEMU Nuvoton machines per: |
| 102 | |
| 103 | https://github.com/openbmc/openbmc/blob/2.18.0/meta-phosphor/docs/supported-machines.md |
| 104 | |
| 105 | .. list-table:: |
| 106 | :header-rows: 1 |
| 107 | |
| 108 | * - QEMU machine |
| 109 | - OpenBMC machine |
| 110 | * - ``npcm750-evb`` |
| 111 | - ``evb-npcm750`` |
| 112 | * - ``npcm845-evb`` |
| 113 | - ``evb-npcm845`` |
| 114 | * - ``quanta-gbs-bmc`` |
| 115 | - ``gbs`` |
| 116 | * - ``kudo-bmc`` |
| 117 | - ``kudo`` |
| 118 | * - ``mori-bmc`` |
| 119 | - ``mori`` |
| 120 | |
| 121 | As of June 2026, the latest OpenBMC release, ``2.18.0``, no longer lists a |
| 122 | ``gsj`` machine. To build an image for QEMU's ``quanta-gsj`` machine, use an |
| 123 | older OpenBMC release that still contains ``meta-quanta/meta-gsj``. The |
| 124 | ``2.14.0`` release contains the ``gsj`` machine: |
| 125 | |
| 126 | https://github.com/openbmc/openbmc/tree/2.14.0/meta-quanta/meta-gsj |
| 127 | |
| 128 | Some pre-built OpenBMC images for QEMU Nuvoton machines may be available on |
| 129 | Jenkins: |
| 130 | |
| 131 | https://jenkins.openbmc.org/ |
| 132 | |
| 133 | To find a pre-built MTD image on Jenkins, start from the Jenkins home page and |
| 134 | open the ``latest-master`` job. Select the matrix configuration whose |
| 135 | ``target`` matches the OpenBMC machine name, for example |
| 136 | ``label=docker-builder,target=gbs``, then open its latest successful build's |
| 137 | artifacts. The MTD image is usually published under |
| 138 | ``openbmc/build/tmp/deploy/images/<machine>/`` as |
| 139 | ``obmc-phosphor-image-<machine>-<timestamp>.static.mtd``. If Jenkins does not |
| 140 | list a matching target, or the build artifacts do not include an MTD image, |
| 141 | there is no current pre-built MTD image for that machine. |
| 142 | |
| 143 | The firmware image should be attached as an MTD drive. Example: |
| 144 | |
| 145 | .. code-block:: bash |
| 146 | |
| 147 | $ qemu-system-arm -machine quanta-gbs-bmc -nographic \ |
| 148 | -drive file=obmc-phosphor-image-gbs-xxxxxx.static.mtd,if=mtd,bus=0,unit=0,format=raw |
| 149 | |
| 150 | The default root password for test images is usually ``0penBmc``. |
| 151 | |
| 152 | For other machines that don't have pre-built images on Jenkins, build an image |
| 153 | from source by following the OpenBMC build documentation. |