We are currently trying to use a Jetson Nano devkit to flash an external MCU over uart. We have had full success with the UART communications and in fact have been successful at flashing the external unit occasionally.
Our main issue is that we have to access and trigger a few GPIO pins from the Jetson Nano to the MCU in order to enter into its bootstrap loader (BSL) to flash it over UART. When we attempt to use the Jetson Nano GPIO pins, they do not work consistently and often end up floating around 1.5V which does not allow us to enter the BSL and therefore we cannot flash the unit. This also happened on our Jetson Xavier NX and had the same behavior of floating instead of working properly.
For our setup, we are using Pins 11/12 (gpio50/gpio79) as both outputs on the Nano. They are connected to two pins of our MCU. One of the MCU pins has a pull up resistor and the other has no resistors attached. We have tried other pins as well with no change in behavior.
We are able to see the pins toggle on an oscilloscope and that is when we can also see them float so we know we have the right pins. We have tried to toggle the pins using both the command line utilities of /sys/class/gpio (including exporting them), and also a C/C++ library, which simply writes out to those same files.
Any help on debugging this issue would be greatly appreciated.
Yes the issue is specific to GPIO control on the Jetson Nano and no we did not configure them as output in the pinmux spreadsheet before flashing. I took a look at the default pinmux and it marked both of those pins as bidirectional so I thought that would suffice. Is there a difference in marking it as Output instead? EDIT: The pins might actually be set to input. I am checking them now to be sure.
We did disconnect it and tried it solely connected to an Oscope. It worked better but there were still times where the waveforms would collapse to 1.5V and stay there until a reboot or the pins were disconnected.
It seems you are using Xavier NX(P3668) rather than Jetson Nano(P3448).
It is expected since Xavier can not work with Jetpack 6.x.
Let me list the following for your reference.
Jetson Nano series(T210): Jetpack 4.x
Xavier series(T194): Jetpack 4.x and 5.x
Orin serires(T234): Jetpack 5.x and 6.x
Bi-directional should also be fine to work with output.
Please confirm what’s the actual module you are using. (Xavier NX or Jetson Nano).
Please configure it as output in pinmux spreadsheet before use.
As my understanding, most of the pins are configured as input by default.