Power Up GPIO DIfferences in 7.4 and earlier revs

My application uses the various I/O lines on the ConnectME as a sort of handshake system. I have another processor talking to the ME and it monitors DTR as a online/offline flag, and RTS as a BUSY/AVAILABLE flag. Likewise, CTS is used as a BUSY/AVAILABLE flag for the other processor.

When I power up my application using code from 7.3 and earlier, everything works as expected. When I power up my application built using 7.4, the network stack never seems to come up (both LED’s stay solid, no activity seen in Wireshark). Looking at the relevant signals with my scope, on 7.3 I see the following (cut and paste into a fixed font editor):

RTS_:--------------
DTR
:
----
----------
CTS
:
______________________________________
DSR_:__________________________________________
DCD_:__________________________________________
INIT:__----------------------------------------
(Approx 30 seconds shown, at the end of which the serial port begins accepting messages - too slow, but that’s another gripe)

On 7.4, however, I see this:

RTS_:-----________------------------------
DTR
:
-----------------------------
CTS
:
__________________________________
DSR_:__________________________________________
DCD_:__________________________________________
INIT:__----------------------------------------

Both RTS and DTR are generated by the Digi, not by my app. My app (since it hasn’t changed) drives all of its outputs exactly the same.

I know that 7.4 has changed its recovery process and uses both pin 18 and 20 to determine how to do a recovery, but I can’t find where anything else might have changed to prevent booting because of any other I/O lines. I know that if I hold pins 18 and 20 low during power up, I can get the stack up (I assume it tries a serial recovery and the menu times out and boots the stack) but since my other processor’s app assumes that the Digi is running its app, I can’t do much with that. TFTP boot app loading works in that case, but other than putting a 7.3 version on the module, that doesn’t do me much good.

Anyone else seen this behavior, and more importantly, anyone know how to fix it?

I’ve not explicitly found this problem, but I did find file gpio.h which defaulted to setting up a ‘full function’ UART with all the modem control signals. I changed that, since, like you, I directly control some of the I/O pins. On the ME I just set up the data direction/function register. I’m also using the ME 9210, and for that I’ve used the BSP functions to set up I/O.

Unfortunately I didn’t explicitly establish whether changing gpio.h was sufficient to set up the I/O; and on the ME I still have " #define BSP_GPIO_MUX_SERIAL_A BSP_GPIO_MUX_SERIAL_8_WIRE_UART" - so maybe there are serial-related changes, and modifying that to “#define BSP_GPIO_MUX_SERIAL_A BSP_GPIO_MUX_SERIAL_2_WIRE_UART”, say, will change the behaviour