Jetson/l4t/Camera BringUp

Get Prepared

 * Please read through "Camera Development" section in https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/camera_sensor_prog.html#

Tips for debugging
sudo su echo 1 > /sys/kernel/debug/bpmp/debug/clk/vi/mrq_rate_locked echo 1 > /sys/kernel/debug/bpmp/debug/clk/isp/mrq_rate_locked echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvcsi/mrq_rate_locked cat /sys/kernel/debug/bpmp/debug/clk/vi/max_rate |tee /sys/kernel/debug/bpmp/debug/clk/vi/rate cat /sys/kernel/debug/bpmp/debug/clk/isp/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/isp/rate cat /sys/kernel/debug/bpmp/debug/clk/nvcsi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate
 * Boost the clock for debug.

TX1 tegra-vi4 15700000.vi: PXL_SOF syncpt timeout! err = -11
 * if you saw below error message

mode0 { cil_settletime = "0"; active_w = "1920"; active_h = "1080"; embedded_metadata_height = "1";
 * please check below 4 items in your sensor device tree, these should follow the settings in your sensor datasheet

video4linux video0: MW_ACK_DONE syncpoint time out!
 * if you saw below error message

sudo su cd /sys/kernel/debug/dynamic_debug/ echo file csi2_fops.c +p > control
 * Enable the csi debug message from below command, and use v4l2-ctl to verify the driver first.

v4l2-ctl -d /dev/video0 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=3

please review the configuration of "line_length" in sensor driver try to increase the delay between video lines data send via CSI review the sensor datasheet to check the settings of FPS range
 * please check below

TX2 arm-smmu 12000000.iommu: Unhandled context fault: iova=0x00000000, fsynr=0x200011, cb=19, sid=4(0x4 - VI), pgd=0, pud=0, pmd=0, pte=0
 * if you saw below message it could be the sensor output embedded data line but DT didn't declare embedded_metadata_height or it value is 0

Steps to enable more debug messages

 * To enable logs from user-space for more details

sudo service nvargus-daemon stop sudo su export enableCamPclLogs=5 export enableCamScfLogs=5 /usr/sbin/nvargus-daemon launch camera from another console

echo 1 > /sys/kernel/debug/tracing/tracing_on echo 30720 > /sys/kernel/debug/tracing/buffer_size_kb echo 1 > /sys/kernel/debug/tracing/events/tegra_rtcpu/enable echo 1 > /sys/kernel/debug/tracing/events/freertos/enable echo 2 > /sys/kernel/debug/camrtc/log-level echo 1 > /sys/kernel/debug/tracing/events/camera_common/enable echo > /sys/kernel/debug/tracing/trace cat /sys/kernel/debug/tracing/trace
 * To enable trace for more information

VI error decoder map from trace CSIMUX_FRAME data bit field bit 0:2 STREAM_ID bit 3 VPR bit 4 FS_flag bit 5 FE_flag bit 6 FE_CSI_FAULT bit 7 FS_FAULT bit 8 FORCE_FE_FAULT bit 9 FE_FRAME_ID_FAULT bit 10 PXL_ENABLE_FAULT bit 20:25 CSI_FAULT_CODE CSI_FAULT_CODE data bit field bit 20 PP FSM timeout bit 21 PH single bit error repaired bit 22 CRC error on payload bit 23 Line short error

The bit 22 CRC error on payload. It could be CRC error at frame end package. Please contact with sensor vendor to check the CRC header. kworker/0:1-2059 [000] ...1   434.733650: rtcpu_vinotify_handle_msg: tstamp:13948014423 tag:CSIMUX_FRAME channel:0x00 frame:2 vi_tstamp:1063112012 data:0x00 4 00060

The bit 5 and 7 indicate lose the FE package cause the FS_FAULT kworker/4:0-30 [004] ...1 241.772651: rtcpu_vinotify_handle_msg: tstamp:7868711648 tag:CSIMUX_FRAME channel:0x00 frame:1 vi_tstamp:3573743671 data:0x000000a0

The CSIMUX_FRAME bit 21 PH single bit error repaired. Possible the sensor didn't send the ECC package. kworker/4:0-2238 [004] ...1   543.467972: rtcpu_vinotify_handle_msg: tstamp:17333540584 tag:CSIMUX_FRAME channel:0x00 frame:0 vi_tstamp:153670980 data:0x00200060 Can try disable the ECC check by modify the REG INTR_STATUS/ERR_INTR_MASK/ERROR_STATUS2VI_MASK to try it CHANSEL_FAULT data bit field bit 16:31 LINE_NUMBER bit 15	DTYPE_MISMATCH bit 14	EMBED_INFRINGE bit 13	EMBED_LONG_LINE bit 12	EMBED_SPURIOUS bit 11	EMBED_RUNAWAY bit 10	EMBED_MISSING_LE bit 9	PIXEL_SHORT_LINE bit 8	PIXEL_LONG_LINE bit 7	PIXEL_SPURIOUS bit 6	PIXEL_RUNAWAY bit 5	PIXEL_MISSING_LE bit 4	PIXEL_LINE_TIMER bit 3	EMBED_EOF bit 2	EMBED_SOF bit 1	PIXEL_EOF bit 0	PIXEL_SOF

The trace show the 0x0ada0040 0x40 means CHANSEL_FAULT of PIXEL_RUNAWAY means VI receives more lines than expected. The 0xad9(2778) is the lines report from the sensor driver. kworker/5:2-275 [005] ...1 122.290528: rtcpu_vinotify_handle_msg: tstamp:4155862787 tag:CHANSEL_PXL_SOF channel:0x00 frame:0 vi_tstamp:4155862337 data:0x00000001 kworker/5:2-275 [005] ...1 122.290531: rtcpu_vinotify_handle_msg: tstamp:4155867990 tag:CHANSEL_LOAD_FRAMED channel:0x01 frame:0 vi_tstamp:4155867544 data:0x08000000 kworker/5:2-275 [005] ...1 122.342572: rtcpu_vinotify_handle_msg: tstamp:4156521216 tag:CHANSEL_PXL_EOF channel:0x00 frame:0 vi_tstamp:4156520630 data:0x0ad90002 kworker/5:2-275 [005] ...1 122.342579: rtcpu_vinotify_handle_msg: tstamp:4156521395 tag:CHANSEL_FAULT channel:0x00 frame:0 vi_tstamp:4156520667 data:0x0ada0040 kworker/5:2-275 [005] ...1 122.342582: rtcpu_vinotify_handle_msg: tstamp:4156522342 tag:CHANSEL_LOAD_FRAMED channel:0x01 frame:0 vi_tstamp:4156521558 data:0x08000000 kworker/5:2-275 [005] ...1 122.342585: rtcpu_vinotify_handle_msg: tstamp:4156522509 tag:CHANSEL_FAULT_FE channel:0x01 frame:0 vi_tstamp:4156521559 data:0x00000001 kworker/5:2-275 [005] ...1 122.342588: rtcpu_vinotify_handle_msg: tstamp:4156522706 tag:ATOMP_FE channel:0x00 frame:0 vi_tstamp:4156521562 data:0x00000000

CSIMUX_STREAM data bit field bit 31	FIFO_BADPKT_STREAM_HI bit 30	FIFO_LOF_STREAM_HI bit 29	FIFO_OVERFLOW_STREAM_HI bit 28	SPURIOUS_DATA_STREAM_HI bit 27	FIFO_BADPKT_STREAM_LO bit 26	FIFO_LOF_STREAM_LO bit 25	FIFO_OVERFLOW_STREAM_LO bit 24	SPURIOUS_DATA_STREAM_LO bit 23	FIFO_BADPKT_STREAM_5 bit 22	FIFO_LOF_STREAM_5 bit 21	FIFO_OVERFLOW_STREAM_5 bit 20	SPURIOUS_DATA_STREAM_5 bit 19	FIFO_BADPKT_STREAM_4 bit 18	FIFO_LOF_STREAM_4 bit 17	FIFO_OVERFLOW_STREAM_4 bit 16	SPURIOUS_DATA_STREAM_4 bit 15	FIFO_BADPKT_STREAM_3 bit 14	FIFO_LOF_STREAM_3 bit 13	FIFO_OVERFLOW_STREAM_3 bit 12	SPURIOUS_DATA_STREAM_3 bit 11	FIFO_BADPKT_STREAM_2 bit 10	FIFO_LOF_STREAM_2 bit 9	FIFO_OVERFLOW_STREAM_2 bit 8	SPURIOUS_DATA_STREAM_2 bit 7	FIFO_BADPKT_STREAM_1 bit 6	FIFO_LOF_STREAM_1 bit 5	FIFO_OVERFLOW_STREAM_1 bit 4	SPURIOUS_DATA_STREAM_1 bit 3	FIFO_BADPKT_STREAM_0 bit 2	FIFO_LOF_STREAM_0 bit 1	FIFO_OVERFLOW_STREAM_0 bit 0	SPURIOUS_DATA_STREAM_0

FIFO_OVERFLOW. It could be the pix_clk_hz in DT too small cause the ISP can't handle the input. kworker/5:3-1359 [005] ...1   253.671478: rtcpu_vinotify_handle_msg: tstamp:8279969890 tag:ISPBUF_FIFO_OVERFLOW channel:0x00 frame:12340 vi_tstamp:3985001981 data:0x00000000

CHANSEL_NOMATCH bit 0       no_match bit 1-4   CTYPE bit 5-10 DTYPE

CTYPE: FS   = 0x8, FE   = 0x1 LS   = 0x4, LE   = 0x2 LS_LE = 0x6, DATA = 0x9

DTYPE: NvCsiDataType_Unspecified            = 0, NvCsiDataType_YUV420_10              = 25, NvCsiDataType_LEG_YUV420_8           = 26, NvCsiDataType_YUV420_8               = 24, NvCsiDataType_YUV420CSPS_8           = 28, NvCsiDataType_YUV420CSPS_10          = 29, NvCsiDataType_YUV422_8               = 30, NvCsiDataType_YUV422_10              = 31, NvCsiDataType_RGB444                 = 32, NvCsiDataType_RGB555                 = 33, NvCsiDataType_RGB565                 = 34, NvCsiDataType_RGB666                 = 35, NvCsiDataType_RGB888                 = 36, NvCsiDataType_RAW6                   = 40, NvCsiDataType_RAW7                   = 41, NvCsiDataType_RAW8                   = 42, NvCsiDataType_RAW10                  = 43, NvCsiDataType_RAW12                  = 44, NvCsiDataType_RAW14                  = 45, NvCsiDataType_RAW16                  = 46, NvCsiDataType_RAW20                  = 47, NvCsiDataType_User_1                 = 48, NvCsiDataType_User_2                 = 49, NvCsiDataType_User_3                 = 50, NvCsiDataType_User_4                 = 51, NvCsiDataType_User_5                 = 52, NvCsiDataType_User_6                 = 53, NvCsiDataType_User_7                 = 54, NvCsiDataType_User_8                 = 55, NvCsiDataType_Unknown                = 64,

Didn't receive any package from the MIPI bus. Make sure the sensor have output data to the MIPI bus kworker/5:2-2980 [005] ...1  4162.509492: rtos_queue_peek_from_isr_failed: tstamp:130384213094 queue:0x0b4a3c58 kworker/5:2-2980 [005] ...1  4162.509496: rtcpu_start: tstamp:130384214513 kworker/5:2-2980 [005] ...1  4162.665213: rtos_queue_peek_from_isr_failed: tstamp:130389214019 queue:0x0b4a3c58 kworker/5:2-2980 [005] ...1  4162.821197: rtos_queue_peek_from_isr_failed: tstamp:130394214523 queue:0x0b4a3c58 kworker/5:2-2980 [005] ...1  4162.977226: rtos_queue_peek_from_isr_failed: tstamp:130399215027 queue:0x0b4a3c58 kworker/5:2-2980 [005] ...1  4163.133208: rtos_queue_peek_from_isr_failed: tstamp:130404215532 queue:0x0b4a3c58 kworker/5:2-2980 [005] ...1  4163.289207: rtos_queue_peek_from_isr_failed: tstamp:130409216052 queue:0x0b4a3c58 kworker/5:2-2980 [005] ...1  4163.445214: rtos_queue_peek_from_isr_failed: tstamp:130414216548 queue:0x0b4a3c58 kworker/5:2-2980 [005] ...1  4163.601218: rtos_queue_peek_from_isr_failed: tstamp:130419217056 queue:0x0b4a3c58

Analysis NVCSI register reporting
Please access Jetson Download Center for [Technical Reference Manual], you may see [NVCSI Registers] session for NVCSI register descriptions. for example, NVCSI_STREAM_0_PH_WC_0 / Status register on WC Bit   Reset   Description 31:16 0x0     calc_wc: 16 bit WC computed over current packet (has to match with the WC in PH for a good packet) 15:0 0x0     rx_wc: 16 bit WC from PH

NVCSI_STREAM_0_PF_CRC_0 / Status register on packet data CRC Bit   Reset   Description 31:16 0x0     calc_crc: 16 bit CRC computed over current packet (has to match with the CRC in PF for a good packet) 15:0 0x0     rx_crc: 16 bit CRC from PF