Hi Mark
Much the same here!
I can add the following details:
- The reset button on the FRDM K22 board can work if jumper J9 is moved. In that case the reset does not come from the OpenSDA MCU anymore, but directly goes to the target K22 MCU. In that case also a reset makes things right even if the OpenSDA MCU is powered off.
- I am not using the KBOOT PC tools, so I cannot comment on them. It is possible that they have their own reliability problems. But the tools that I made for production do work reliably (once the board is manually reset).
- I have tried to boot is slow mode, it does not change anything.
- I have tried to disconnect the Open SDA MCU as much as possible, thinking it may be an interference caused by the Open SDA MCU waking up and doing "something" to the K22 while it is enumerating. I have removed UART isolation resistors R66 and R68, as well as cut the permanent trace on header J4. This does not change anything.
- It is possible that the firmware sets the MCU's transceiver to suspend at the wrong time. What I observe in sequence is (not exactly what I reported initially):
- The enumeration proceeds very well up to the end. The last commands are Set-Idle and then Get-Report-Descriptor, both of which are answered correctly by the K22.
- Right after that the PC begins sending IN packets (normal process of probing the HID device for an IN report), which the K22 NAKs for a while
- After a while (7 to 10 NAKs) the K22 stops NAKing
- The PC sends 3 IN packets in sequence that remain without response
- Then the PC resets the link, and tried to re-enumerate 3 times
- Each time the K22 stays silent
- Then the PC places the link in suspend
All of the PC's behavior is normal and consistent with a device that just goes dead and stops responding to all requests. The real question is "why does the HID device go dead right after enumeration?" and more interestingly, "why does it not go dead after enumeration when it starts from a Pin reset?"
Best regards
Bruno