In 2021, Digi identified a configuration issue in startup code in the Dynamic C 9.62A BIOS. The boot sequence enables the clock doubler before enabling an “early output enable” feature (early /OE) for memory.
Initial testing had shown that early /OE was only necessary when using spectrum spreading on the doubled clock, so the BIOS would only enable early /OE before enabling spectrum spreading.
At the time, we were concerned about memory timing of 55ns flash devices on core modules with a 29MHz clock, but we didn’t get reports from any customers of timing issues.
In 2024, Digi troubleshot a customer issue on RCM3365 hardware where boards failed to start up when warmed above room temperature. Boards would “cold” boot, but could only get through a reboot sequence if kept off long enough to return to room temperature.
Issue found:
The root cause was related to timing issues when executing code on the 10ns SRAM with 0 wait states and 22MHz clock doubled to 44MHz. When running above room temperature, memory reads would fail if early /OE wasn’t enabled.
Solution:
Customers experiencing similar symptoms should try patching CPUPARAM.LIB and StdBios.c in Lib/BIOSLIB with the changes detailed in pull request #8 on Digi’s GitHub repository for Dynamic C 9. Those updated files ensure that early /OE is enabled before the clock doubler, regardless of whether the firmware is using the spectrum spreader.
Related Products:
RCM3200, RCM3209, RCM3315, RCM3365, RCM3900, RCM3910
Last updated:
Dec 10, 2024