# Virtual Boot ROM for NPCM7xx SoCs This is not an officially supported Google product. This is a super simple Boot ROM that is intended to be used as a `-bios` image for [QEMU](http://www.qemu.org/) when emulating an NPCM8xx-based machine. ## Building If you have a 64-bit ARM compiler installed as `aarch64-linux-gnu-gcc`, simply run `make`. If your ARM compiler has a different name, you'll need to override the `CROSS_COMPILE` prefix, e.g. like this: ``` make CROSS_COMPILE=aarch64-linux-gnueabi- ``` If either case is successful, a `npcm8xx_bootrom.bin` file will be produced. ## Using The Boot ROM image may be passed to a QEMU system emulator using the `-bios` option. For example like this: ``` qemu-system-aarch64 -machine npcm845-evb -nographic \ -bios "${IMAGES}/npcm8xx_bootrom.bin" -drive file="${IMAGES}/image-bmc,if=mtd,bus=0,unit=0,format=raw,snapshot=on" ``` ## Limitations * Secure boot is not supported. * Only booting from offset 0 of the flash at SPI0 CS0 is implemented. * Fallback images (if the first image doesn't boot) are not implemented. * Exception vectors are copied to SRAM, but not remapped. * Most OTP bits and straps are not honored. * The reset type bits are not updated. * OTP protection is not implemented. * No clock initialization is performed. * UART programming protocol is not implemented. * Host notification through the PCI mailbox is not implemented. * Most fields in the ROM status structure are not set.