Difference between revisions of "eLinux.org:Jetson/L4T/Camera BringUp"

From eLinux.org
Jump to: navigation, search
(No difference)

Revision as of 00:53, 2 June 2021

Get Prepared

FAQ

Tips for debugging

  • Boost the clock for debug.
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


TX1

  • if you saw below error message
tegra-vi4 15700000.vi: PXL_SOF syncpt timeout! err = -11
  • please check below 4 items in your sensor device tree, these should follow the settings in your sensor datasheet
                                mode0 {
                                        cil_settletime = "0";
                                        active_w = "1920";
                                        active_h = "1080";
                                        embedded_metadata_height = "1";
  • if you saw below error message
video4linux video0: MW_ACK_DONE syncpoint time out!
  • Enable the csi debug message from below command, and use v4l2-ctl to verify the driver first.
sudo su
cd /sys/kernel/debug/dynamic_debug/
echo file csi2_fops.c +p > control
v4l2-ctl -d /dev/video0 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=3
  • please check below
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



TX2

  • 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
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


Steps to enable more debug messages

  • To enable logs from user-space for more details
sudo su
kill the process of argus_daemon/nvargus-daemon or nvcamera-daemon 
export enableCamPclLogs=5
export enableCamScfLogs=5
/usr/sbin/argus_daemon(nvargus-daemon)      option for argus
/usr/sbin/nvcamera-daemon   option for gst-launch
 
launch camera from another console
  • To enable trace for more information
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

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:0x00400060

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