sylefeb/Silice

ULX3S reboot issue

Closed this issue · 8 comments

ULX3S boards reboot after a few seconds after being programmed because their wifi_gpio0 pin should be kept high.

In frameworks/boards/ulx3s/ulx3s.v, those 2 lines should be added:

output wifi_gpio0
(...)
assign wifi_gpio0 = 1'b1;

Thanks!

Hi - thanks for the report! I'lI add the lines to the framework.

What surprises me is that I have been using several (quite a few in fact ;) ) ULX3S boards and never got this problem so far. Do you have a particular setup? Maybe something to do with the configuration of the ESP32? Would be nice to understand the root cause! (@rob-ng15 did you encounter this?)

Thank you for your understanding. I have an official ULX3S v3.0.3 ordered from Radiona, with the onboard ESP32. I have never used the ESP32 but this fix is needed and well known in order to avoid reboots, see for example:

Now that I searched for it I have also seen other mentions of the issue. I've added the lines to the framework (draft branch) and this all seems fine. Thanks again @nono2357 for the report! Like @rob-ng15 I never encountered the problem so this could have gone unnoticed for a while. @emard, what could be happening? Did we just get lucky before?

emard commented

This "reboot" is "normal" for boards shipped with old esp32
firmware written in C/arduino
firmware uses ssd1331 display and checks if gpio0 state is 0
for some 1-2 seconds as signal to take control of the board.

Although intended to be "user friendly", it is not for
us, we are power users and we are more comfortable with
some command prompt from esp32 so

I suggest to flash esp32 with micropython 1.14 and install
latest esp32ecp5. gpio0 will not be checked and board will
not "reboot" if gpio0 is not held 1 by new bistream

see details with many different ways how to install esp32ecp5
https://github.com/emard/esp32ecp5
(install over usb, over internet, different ways)

Send issue if something is not working as it should

Also I recommend to flash FPGA with new DFU multiboot
bitstream (choose one which suits to your board version, it's not
fatal if you flash wrong and then reflash correct one)
so flashing can be done very fast with plugged US2 port
some users like apple may prefer DFU than fujprog or openfpgaloader

https://github.com/emard/ulx3s-bin/tree/master/fpga/dfu

Thanks emard for the additional info! To be sure I've added the suggested fix (with ref to this issue), so that the problem should not occur again.

emard commented

Closing as the framework now includes the required line, draft branch:

assign wifi_gpio0 = 1'b1; // see https://github.com/sylefeb/Silice/issues/207

Thanks!