acdccf5f98
Since the USB and flash communication layers are different, change the magic number for booster. This will prevent previous versions of foboot from trying to launch our updater with the wrong version. Signed-off-by: Sean Cross <sean@xobs.io> |
||
---|---|---|
booster | ||
doc | ||
examples | ||
foboot-main | ||
hw | ||
releases | ||
sw | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
LICENSE | ||
README.md |
Foboot: The Bootloader for Fomu
Foboot is a failsafe bootloader for Fomu. It exposes a DFU interface to the host. Foboot comes in two halves: A Software half and a Hardware half. These two halves are integrated into a single "bitstream" that is directly loaded onto an ICE40UP5k board, such as Fomu.
Requirements
To build the hardware, you need:
- Python 3.5+
- Nextpnr
- Icestorm
- Yosys
- Git
Subproject hardware dependencies will be taken care of with lxbuildenv
.
To build the software, you need:
- RISC-V toolchain
Building the project
The hardware half will take care of building the software half, if it is run with --boot-source bios
(which is the default). Therefore, to build Foboot, enter the hw/
directory and run:
$ python3 foboot-bitstream.py --revision hacker
This will verify you have the correct dependencies installed, compile the Foboot software, then synthesize the Foboot bitstream. The resulting output will be in build/gateware/
. You should write build/gateware/top-multiboot.bin
to your Fomu device in order to get basic bootloader support.
Usage
You can write the bitstream to your SPI flash. If you're using fomu-flash
, you would run the following:
$ fomu-flash -w build/gateware/top-multiboot.bin
Erasing @ 018000 / 01973a Done
Programming @ 01973a / 01973a Done
$ fomu-flash -r
resetting fpga
$
Fomu should now show up when you connect it to your machine:
[172294.296354] usb 1-1.3: new full-speed USB device number 33 using dwc_otg
[172294.445661] usb 1-1.3: New USB device found, idVendor=1209, idProduct=70b1
[172294.445675] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[172294.445684] usb 1-1.3: Product: Fomu Bootloader (0)
[172294.445692] usb 1-1.3: Manufacturer: Kosagi
To load a new bitstream, use the dfu-util -D
command. For example:
$ dfu-util -D blink.bin
This will reflash the SPI beginning at offset 262144.
To exit DFU and run the bitstream at offset 262144, run:
$ dfu-util -e
Note that, like Toboot, the program will auto-boot once it has finished loading.
Building the Software
Software is contained in the sw/
directory.