Close

Possible GPIO Boot Method: SMI

A project log for PiCarts: GPIO ROM Carts

Loading from ROM cartridges plugged into the GPIO port. Just like the old days.

DustinDustin 06/22/2021 at 18:440 Comments

I was recently scrolling through HaD and found an article on a Raspberry Pi Zero hat that contains an SDR module. I'm not into that stuff yet, but I did find out something very interesting: The Pis all have an SMI(Secondary Memory Interface).  I know very little about it, but I am starting to suspect that it's possible to boot the Pi from that interface. It also seems that older Roku devices used to boot using SMI, which tells me that the Broadcom SOC is capable of doing what I dreamed of initially. All I wanted was to boot the Pi over GPIO. It still seems possible, but difficult, and with a catch: it seems the Pi 4 doesn't support that feature anymore. Considering I am developing this project for the Pi 400, that's no fun. It does occur to me to finish developing this project, then start developing boot carts for older Pi models. Maybe I'll make my own cartridge based computer system that boots to a Python prompt without a cartridge installed. Tons o options here, just exploring them and taking notes before I forget about the details. A little more reading reveals that the bcm2835, which is known to be able to boot from SMI, is the CPU used in the original series of the Pi, and the Pi Zero. While all versions have SMI, only the old ones are known to have an SOC that can boot SMI. I don't want to build things for such slow systems, so I'll keep researching and working on this as I go. I'm in way over my head here with SMI, but there's no reason I can't revisit the topic in the future.

There is very little useful information I could find on the SMI front, but I put links to what I did find below. Kind of a shame there isn't better documentation on this interface. It would have been perfect for this project. Oh well, onwards. 

Sources:

https://hackaday.com/2021/06/20/raspberry-pi-hat-adds-sdr-with-high-speed-memory-access/

https://www.raspberrypi.org/forums/viewtopic.php?t=280242

https://github.com/raspberrypi/linux/blob/e2d2941326922b63d722ebc46520c3a2287b675f/drivers/mtd/nand/raw/bcm2835_smi_nand.c

https://hackaday.com/2020/10/12/running-way-more-led-strips-on-a-raspberry-pi-with-dma/

Discussions