FPGA computer boots now from the SD card
This is a follow-up of my first text about 32-bit FPGA computer.
The 32-bit FPGA computer now has a kind of a hard disk. ESP32 is used as a hard disk controller (I have designed the board to work with the Arduino as well - you can see the empty socket for the Arduino to the right of the ESP32), while the SD card is used as a kind of a hard disk.
The FPGA computer with the ESP32-Arduino board is on the images above and below.
Initially, it was just the Arduino:
Since the FPGA computer is designed to boot from the serial port, I have created a kind of a hard disk controller, which consists of an ESP32 and SD card reader. When started, ESP32 lists files in the root folder of the SD card, and if it finds the file "BOOT.BIN", it reads it and sends the content to the FPGA computer over the serial port, using the Raspbootin protocol (as described in one of my previous posts).
The video above shows the boot from the powerup. Next video shows boot from the reset.
The code is available at the github.
This is the schematics:
The main idea is that the controller behaves just like the PC from which the FPGA computer initally gets its boot code. During the powerup, the FPGA computer will try to load the boot code from the serial interface, using a modified Raspbootin protocol. On the other side of the serial cable, there can be a PC with the corresponding Raspbootin client, or, just like in this case, the microcontroller, which has the following functionality:
- wait for the Raspbootin start sequence,
- look for the BOOT.BIN file in the SD card, and
- send that file content over serial cable, using the Raspbootin protocol.