Skip to content

rpi-loader 0.6.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 22:56

Added

  • Preliminary Pi 5 (BCM2712) firmware, behind a new bcm2712
    feature, built with make build64-bcm2712 into kernel8.img (AArch64
    only), with every command, eeprom-* included (through RP1's I2C0 on
    the same GPIO0/1). Releases carry it as a sixth image,
    rpi-loader-<version>-bcm2712-kernel8.img. Nothing in
    the boot stub changed: the loader runs with the MMU off, which reaches
    the Pi 5's peripherals above 4 GiB directly, and hands off at EL2 as on
    the other boards. The card needs os_check=0, kernel_address=0x80000
    and pciex4_reset=0 in config.txt, and no firmware files.

Changed

  • CMD_SET_BAUD checks the rate with rpi-hal's
    Uart::supports_baud
    instead of the firmware's own copy of the
    divisor arithmetic, which assumed the 48 MHz UART clock of every board
    before the Pi 5 (50 MHz there).
  • The EEPROM bus runs at 100 kHz on every board. It was the BSC's
    reset-default divider, documented as 100 kHz for a 150 MHz core clock,
    which is 166 kHz on a board running its core at 250 MHz (a Pi 3, for
    one). The firmware now sets it up with rpi-hal's
    init_id_with_frequency, which asks for the real core clock first; a
    mailbox failure there is reported as an I2C error before the bus is
    touched.
  • The firmware builds against rpi-hal 0.10. The wire protocol, the
    CLI's arguments and the load addresses are unchanged, so a 0.5 CLI and
    a 0.6 loader work together either way round.

Images

Copy the image matching your board to the SD card's boot
partition, renamed to the filename in its own name:
kernel7.img (32-bit), kernel8.img (64-bit) or kernel.img
(ARMv6). The firmware loads one of those names and no others,
chosen by the CPU it finds, and a board handed the wrong one
stops without printing anything. Use kernel8.img only with
arm_64bit=1 in config.txt.

bcm2837 covers the Pi 2 and Pi 3 (a Pi 2 v1.1 takes the
kernel7.img alone: its cores are 32-bit only); bcm2711 covers
the Pi 4; bcm2835 covers the Pi 1 and Pi Zero, and is ARMv6, so
it has no 64-bit counterpart. bcm2712 covers the Pi 5,
preliminarily: 64-bit only, and its card needs no firmware files
but a config.txt with os_check=0, kernel_address=0x80000
and pciex4_reset=0 (see the loader's README). Verify with
sha256sum -c SHA256SUMS.

rpi-loader-<version>.bash is the bash completion for the host
CLI, for installing without building it first:

sudo cp rpi-loader-<version>.bash \
  /usr/share/bash-completion/completions/rpi-loader

The host CLI is a separate install: cargo install rpi-loader.