Reverse engineering the Raspberry Pi RP1
When the Raspberry Pi 5 was announced, their new I/O-companion-chip called RP1
was also announced.
Until we were actually able to buy the hardware, more and more details of the RP1
were released. It contains two Cortex-M3 ARM cores, a PIO interface like we already know from the Raspberry Pi Pico and a bunch more things. The only thing released by the Raspberry Pi foundation that describes this new chip is a datasheet that doesn't deserve its name which explains a few peripherals. You can use this datasheet as a guideline if you want to build drivers that interface with devices on the RP1
in case you develop an operating system. Every detail about the firmware that is running on the chip, system level control registers for clocks, resets etc. are mostly undocumented and there is no way to load your own code into the dormand Cortex-M3 core on the RP1
. That sucks.
After I got my hands on a Raspberry Pi 5, I started taking apart the early boot firmware and found out how it gets loaded by the first (or second?) stage bootloader and started reverse engineering a bit to load my own code into the RP1
.
You can read more about this in the GitHub repo of this project.