@Tholin: You can use all 38 GPIO. The thing you cannot change is the
default configuration of pads 0 to 4 on power-up. Note that that requirement does not prevent you from changing the configuration of pads 0 to 4
after power-up. It is necessary to have pads 1-4 properly configured for use with the housekeeping SPI to be able to program the flash chip; otherwise, you could render the board inoperable. (GPIO 0 is, similarly, reserved for SoC debug) (GPIO 5 is not restricted). To allow GPIO 0 to 4 to be controlled by the user project, you will need at least a simple program running on the SPI flash to configure the GPIOs after startup. To prevent the FTDI from attempting to drive those signals, you will need to run the program
hkstop.py
(found in the caravel_board repository) and keep it actively running while you are testing your project.