@TrikkStar @UMD Thanks for providing additional info.
I think we are dealing with two separate problems here.
@TrikkStar I have reproduced your issue and it’s related to our changes to have better thread-safety for SPI between system and application on Gen 3, however some changes affected Gen 2 devices as well. The key problem on Gen 2 devices is due to the undefined order in which the global C++ constructors are called (STARTUP()
macro creates an object in the global namespace with a constructor containing the code in the macro), the application-specific mutex for SPI
class is not yet initialized at the point pinMode()
is called in your STARTUP()
macro and it needs to be for safety-checks on a pin configuration to be successfully made.
We’ll fix this in 1.5.0-rc.2. As a temporary workaround, please move any code that interacts with GPIO out of STARTUP()
macro and perhaps into setup()
.
@UMD, I will still need a bit more information about your application to figure this out, unfortunately. It’s also somewhat surprising that according to serial inspect you are running an application built for 1.4.4, even though supposedly your device went through a normal OTA update. If your device is experiencing hard faults in this state (1.4.4 application, 1.5.0-rc.1 system parts), we have something that broke backwards compatibility. I would appreciate if you could provide some minimal application that reproduces the behavior.