orangecrab-fpga / orangecrab-hardware

ECP5 breakout board in a feather physical format
Other
485 stars 57 forks source link

ECP5 Reset tests #4

Closed gregdavill closed 4 years ago

gregdavill commented 4 years ago

The ECP5 has two different resets mechanisms.

Using device refresh we can make use of the ECP5's "multi-boot" feature to load "User gateware" and "Bootloader gateware". We need to investigate if the two different reset mechanisms result in switching between these different gatewares in the same manner.

Ideally I'd like the reset button to reset the User gateware when pressed, and then invoke the Bootloader when held down (2-3s).

If required we can make use of the Microchip ARM processor on board as a "FPGA supervisor".

et-tommythorn commented 4 years ago

FWIW, I find it too easy to accidentally reset. I have seen lower profile/harder to press switches but I don’t know if they are small enough. Or just make the switch a user button instead. EDIT: yes, a time delay is probably the best option.

gregdavill commented 4 years ago

I wonder if we just make it a user accessible button...

The loaded gateware can determine if it's been held for awhile and trigger a reset. Worst case power cycling the USB cable while holding it down can force a DFU mode.

Are there any disadvantages of this approach?

gregdavill commented 4 years ago

r0.2 design now includes this button as a user_button. So it's accessible to the gateware.

It will be used by the bootloader to determine if the bootloader should stay active of the user gateware will run.