August 15-16 2020
NuttX Online Workshop
Bringing NuttX to the FPGA
Brennan Ashton
@btashton
QuickLogic EOS S3
Agenda
NuttX Online Workshop
What are FPGAs?
NuttX Online Workshop
What are FPGAs?
NuttX Online Workshop
What are FPGAs?
NuttX Online Workshop
Open Source Toolchains for FPGA
NuttX Online Workshop
“The GCC for FPGAs”
https://symbiflow.github.io/
Open Source Toolchains for FPGA
NuttX Online Workshop
“The GCC for FPGAs”
Building an SoC
NuttX Online Workshop
https://github.com/enjoy-digital/litex
Building an SoC
NuttX Online Workshop
https://github.com/enjoy-digital/litex
Building an SoC
NuttX Online Workshop
FuseSOC
“cores never been so much fun”
https://github.com/olofk/fusesoc
Building an SoC
NuttX Online Workshop
SERV
“SERV is an award-winning bit-serial RISC-V core”
https://github.com/olofk/serv/
How many cores do you want?
NuttX on FPGAs
NuttX Online Workshop
Board Bring-Up without Hardware
NuttX Online Workshop
https://renode.io/
NuttX Online Workshop
nvic: IRQControllers.NVIC @ sysbus 0xE000E000
priorityMask: 0xE0
systickFrequency: 61440000
IRQ -> cpu@0
cpu: CPU.CortexM @ sysbus
cpuType: "cortex-m4f"
nvic: nvic
uart: UART.PL011 @ sysbus 0x40010000
-> intrCtrl@7
size: 0x1000
m4mem: Memory.MappedMemory @ {
sysbus 0x0;
sysbus 0x20000000 //mirror
}
size: 0x80000
EOS S3 Programmable Logic
NuttX Online Workshop
NuttX Online Workshop
Board Bring-Up without Hardware
NuttX Online Workshop
EOS S3
NuttX Online Workshop
https://www.crowdsupply.com/quicklogic/quickfeather
EOS S3
NuttX Online Workshop
EOS S3 Programmable Logic
NuttX Online Workshop
EOS S3 Programmable Logic
NuttX Online Workshop
EOS S3 Programmable Logic
NuttX Online Workshop
EOS S3 Programmable Logic
NuttX Online Workshop
Create a /dev/fabric device for controlling the operation of the programmable logic
Create a user space utility eoss3fb to reconfigure the FPGA fabric
EOS S3 Programmable Logic
NuttX Online Workshop
EOS S3 Programmable Logic
NuttX Online Workshop
EOS S3 -- Where are we?
NuttX Online Workshop
NuttX Online Workshop
Thank you!