It would be appreciated if you support us to solve the issue with using our camera.
〇 Goal
We would like to connect our camera module to the J21 of the Jetson Orin Nano Developer Kit and streaming images.
Module : Jetson Orin Nano [8GB Developer Kit version]
Carrier Board : Jetson Orin Nano Devkit | J21 connector
JetPack : 5.1.3
rootfs : microSD
We follow the steps in the following URL to flash the image.
〇 Questions
It would be appreciated if you review the questions and the following issue reports, and then answer the questions.
- Is there any case where hardware GPIO(CAM1_PWDN) requires 150ms latency to output the value set by gpio_set_value() in the V4L2 driver?
- How to reduce the latency from gpio_set_value() in the V4L2 driver to the hardware GPIO(CAM1_PWDN) output (e.g.less than 1ms)?
- How long should we add the time to adjust the 150ms latency to output the value set by gpio_set_value() in the V4L2 driver?
Because we are not sure if adding 150 ms is enough in other Jetson Orin Nano devkit boards or other modules. - Are there steps to narrow down the issue from the GPIO(CAM1_PWDN) transition latency to others?
〇Issue Analysis
We also have the Auvidea JNX42 carrier board that succeeded in streaming images with the identical camera board, Orin Nano module, and V4L2 driver source code.
Module : Jetson Orin Nano [8GB Developer Kit version]
Carrier Board : JNX42 | J5 Connector
JetPack : 5.1.3
rootfs : NVMe SSD
We follow the following URL to flash the image.
The GPIO(CAM1_PWDN) latency of Jetson Orin Nano Devkit(J21 connector) is longer than that of the JNX42 carrier board(J5 connector). The GPIO(CAM1_PWDN) latency of Jetson Orin Nano Devkit(J21 connector) requires around 150 ms.
The V4L2 driver uses the GPIO(CAM1_PWDN) as the camera reset in the following power-on sequence. The steps of the power sequence are the following.
Step 1: Set High to the GPIO pin(CAM1_PWDN) to release the reset of the camera module.
Step 2: Wait 300 ms for the camera initialization.
Step 3: Read the register to see if the initialization succeeded.
We probed the GPIO pin(CAM1_PWDN), CAM_I2C_SDA, and CAM_I2C_SCL to confirm the waiting time in step 2.
The waiting time was around 150 ms if we use the Jetson Orin Nano Devkit.
We assume that usleep_range() works fine because the log says there is a 300 ms waiting time.
We also saw the waveforms where the waiting time changes according to the usleep_range() setting with the Jetson Orin Nano Devkit.
For example, the waiting time extended to 1000 sec with the waveform if we added 700 ms to the waiting time.
You can check the V4L2 driver source code and device tree files for the investigation.
The device tree files were generated from the boot/extlinux/extlinux.conf by reverse compiling.
Device Tree and V4L2 Driver Source Code.zip (108.2 KB)
kernel_tegra234-p3767-0003-p3509-a02-user-custom.dts : Auvidea JNX42 Carrier Board
kernel_tegra234-p3767-0003-p3768-0000-a0-user-custom.dts : Jetson Orin Nano Devkit
myCamera.c : V4L2 driver source code (Excerpt)
It would be appreciated if you kindly review our issue and give us feedback.
Best regards,