Hello all,
my hardware setup:
- Jetson Orin Nano with Jetson Orin Nano DevKit
- L4T 35.3.1
- Camera module IMX568 connected to CAM0
I have implemented a driver for the IMX568. To make it run it was necessary to set pixel_clk_hz to 215000000.
cam_i2cmux {
i2c@1 {
vc_mipi_cam0: vc_mipi@1a {
reg = <0x1a>;
compatible = "nvidia,vc_mipi";
devnode = "video0";
use_sensor_mode_id = "false";
sensor_model = "vc_mipi";
num_lanes = 2;
trigger_mode = "0";
io_mode = "0";
physical_w = "6.773";
physical_h = "5.655";
mode0 {
num_lanes = 2;
tegra_sinterface = "serial_c";
embedded_metadata_height = 1;
readout_orientation = "0";
lane_polarity = "6";
active_w = "2496";
active_h = "2048";
mode_type = "bayer";
pixel_phase = "rggb";
csi_pixel_bit_depth = "10";
min_gain_val = "0"; // mdB
max_gain_val = "48000"; // mdB
step_gain_val = "100"; // mdB
default_gain = "0"; // mdB
min_exp_time = "1"; // us
max_exp_time = "1000000"; // us
step_exp_time = "1"; // us
default_exp_time = "10000"; // us
min_framerate = "100"; // mHz
max_framerate = "41300"; // mHz
step_framerate = "100"; // mHz
default_framerate = "41300"; // mHz
gain_factor = "1000";
exposure_factor = "1000000";
framerate_factor = "1000";
inherent_gain = "1";
min_hdr_ratio = "1";
max_hdr_ratio = "1";
line_length = "0";
phy_mode = "DPHY";
discontinuous_clk = "no";
mclk_khz = "24000";
pix_clk_hz = "215000000";
mclk_multiplier = "0.0"; // deprecated
cil_settletime = "0";
dpcm_enable = "false";
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
vc_mipi_out0: endpoint {
port-index = <1>;
bus-width = <BUS_WIDTH>;
remote-endpoint = <&vc_csi_in0>;
};
};
};
};
};
After system boot I set system clocks to max_rate
path=/sys/kernel/debug/bpmp/debug/clk
echo 1 > ${path}/vi/mrq_rate_locked
echo 1 > ${path}/isp/mrq_rate_locked
echo 1 > ${path}/nvcsi/mrq_rate_locked
echo 1 > ${path}/emc/mrq_rate_locked
cat ${path}/vi/max_rate | tee ${path}/vi/rate
cat ${path}/isp/max_rate | tee ${path}/isp/rate
cat ${path}/nvcsi/max_rate | tee ${path}/nvcsi/rate
cat ${path}/emc/max_rate | tee ${path}/emc/rate
With this GStreamer pipeline I have created a series of images.
gst-launch-1.0 -e nvarguscamerasrc sensor-id=0 num-buffers=20 aelock=true aeantibanding=0 ! 'video/x-raw(memory:NVMM), width=2496, height=2048, format=NV12' ! nvvidconv ! pngenc ! multifilesink location=~/$(date +%s)-%d.png
The first images are only partially filled with a block wise structure. Later images are filled completely but also show this tear down effect.
I also have created a series of images with this command.
v4l2-ctl -c exposure=10000 -c gain=0 -c black_level=0
v4l2-ctl --set-fmt-video=width=2496,height=2048,pixelformat=RG10
v4l2-ctl --stream-mmap --stream-count=20 --stream-to=test_2496x2048x20.raw
This images are totally fine and don’t show any bad effects.
I have checked that all images provide a timestamp.
In my opinion there is a sync problem in the ISP pipeline.
Any help appreciated.




