Difference between revisions of "Jetson TX2 Camera BringUp"

From eLinux.org
Jump to: navigation, search
(Steps to enable more debug messages)
(Steps to enable more debug messages)
Line 48: Line 48:
 
  cat /sys/kernel/debug/tracing/trace
 
  cat /sys/kernel/debug/tracing/trace
  
 +
VI error decoder map by 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
 +
 +
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
 +
 +
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
  
 
It could be CRC error at frame end package. Please contact with sensor vendor to check the CRC header.
 
It could be CRC error at frame end package. Please contact with sensor vendor to check the CRC header.

Revision as of 02:11, 1 November 2018

Get Prepared

FAQ

Tips for debugging

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 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 > /sys/kernel/debug/tracing/trace
cat /sys/kernel/debug/tracing/trace

VI error decoder map by 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
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
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

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
    kworker/0:1-2059  [000] ...1   434.733654: rtcpu_vinotify_handle_msg: tstamp:13949051348 tag:CSIMUX_FRAME channel:0x00 frame:3 vi_tstamp:1064148939 data:0x00400060


It could be the pix_clk_hz in DT too small cause the ISP can't handle the input.

    kworker/5:2-248 [005] ...1 297.951130: rtcpu_vinotify_handle_msg: tstamp:9663302491 tag:CSIMUX_FRAME channel:0x00 frame:13 vi_tstamp:1073367484 data:0x00400062 
    kworker/5:2-248 [005] ...1 297.951133: rtcpu_vinotify_handle_msg: tstamp:9663324801 tag:ISPBUF_FS channel:0x00 frame:14 vi_tstamp:1073389804 data:0x00000000 
    kworker/5:2-248 [005] ...1 297.951133: rtcpu_vinotify_handle_msg: tstamp:9663335039 tag:CHANSEL_PXL_SOF channel:0x00 frame:14 vi_tstamp:1073400039 data:0x00000001 
    kworker/5:2-248 [005] ...1 297.951134: rtcpu_vinotify_handle_msg: tstamp:9664344311 tag:CHANSEL_SHORT_FRAME channel:0x04 frame:14 vi_tstamp:1074409154 data:0x00000001 
    kworker/5:2-248 [005] ...1 297.951135: rtcpu_vinotify_handle_msg: tstamp:9664344499 tag:ISPBUF_FE channel:0x00 frame:14 vi_tstamp:1074409155 data:0x00000000

OR

    kworker/5:3-1359  [005] ...1   253.671469: rtcpu_vinotify_handle_msg: tstamp:8279208283 tag:CSIMUX_FRAME channel:0x03 frame:1276 vi_tstamp:3984240577 data:0x000004a2
    kworker/5:3-1359  [005] ...1   253.671476: rtcpu_vinotify_handle_msg: tstamp:8279969727 tag:CHANSEL_PXL_SOF channel:0x00 frame:12340 vi_tstamp:3985001693 data:0x00000001
    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
    kworker/5:3-1359  [005] ...1   253.671481: rtcpu_vinotify_handle_msg: tstamp:8279970411 tag:CHANSEL_FAULT channel:0x00 frame:12340 vi_tstamp:3985001998 data:0x00000100

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 
    kworker/4:0-30 [004] ...1 241.772656: rtcpu_vinotify_handle_msg: tstamp:7868712008 tag:ATOMP_FE channel:0x00 frame:1 vi_tstamp:3573743672 data:0x00000000 

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

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
    kworker/5:2-2980  [005] ...1  4163.757169: rtos_queue_peek_from_isr_failed: tstamp:130424217548 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4163.913235: rtos_queue_peek_from_isr_failed: tstamp:130429218108 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4164.069227: rtos_queue_peek_from_isr_failed: tstamp:130434218588 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4164.225233: rtos_queue_peek_from_isr_failed: tstamp:130439219082 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4164.433230: rtos_queue_peek_from_isr_failed: tstamp:130444219591 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4164.589207: rtos_queue_peek_from_isr_failed: tstamp:130449220105 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4164.745237: rtos_queue_peek_from_isr_failed: tstamp:130454220607 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4164.901226: rtos_queue_peek_from_isr_failed: tstamp:130459221117 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4165.057232: rtos_queue_peek_from_isr_failed: tstamp:130464221618 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4165.213244: rtos_queue_peek_from_isr_failed: tstamp:130469222134 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4165.369261: rtos_queue_peek_from_isr_failed: tstamp:130474222666 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4165.525261: rtos_queue_peek_from_isr_failed: tstamp:130479223151 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4165.681253: rtos_queue_peek_from_isr_failed: tstamp:130484223652 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4165.837312: rtos_queue_peek_from_isr_failed: tstamp:130489224156 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4165.993240: rtos_queue_peek_from_isr_failed: tstamp:130494224659 queue:0x0b4a3c58
    kworker/5:2-2980  [005] ...1  4166.149247: rtos_queue_peek_from_isr_failed: tstamp:130499225165 queue:0x0b4a3c58

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
    kworker/4:0-2238  [004] ...1   543.467974: rtcpu_vinotify_handle_msg: tstamp:17334081008 tag:CHANSEL_PXL_SOF channel:0x00 frame:0 vi_tstamp:154211277 data:0x00000001
    kworker/4:0-2238  [004] ...1   543.467975: rtcpu_vinotify_handle_msg: tstamp:17334081160 tag:ATOMP_FS channel:0x00 frame:0 vi_tstamp:154211284 data:0x00000000
    kworker/4:0-2238  [004] ...1   543.519967: rtcpu_vinotify_handle_msg: tstamp:17334580776 tag:CHANSEL_PXL_EOF channel:0x00 frame:0 vi_tstamp:154711180 data:0x04370002
    kworker/4:0-2238  [004] ...1   543.519971: rtcpu_vinotify_handle_msg: tstamp:17334582405 tag:CSIMUX_FRAME channel:0x00 frame:0 vi_tstamp:154712647 data:0x00200060

Can try disable the ECC check.

 2 diff --git a/drivers/media/platform/tegra/camera/csi/csi4_fops.c b/drivers/media/platform/tegra/camera/csi/csi4_fops.c
 3 index 0377d7b..b3d01d3 100644
 4 --- a/drivers/media/platform/tegra/camera/csi/csi4_fops.c
 5 +++ b/drivers/media/platform/tegra/camera/csi/csi4_fops.c
 6 @@ -76,8 +76,18 @@ static void csi4_stream_init(struct tegra_csi_channel *chan, int port_num)
 7         csi4_stream_write(chan, port_num, INTR_STATUS, 0x3ffff);
 8         csi4_stream_write(chan, port_num, ERR_INTR_STATUS, 0x7ffff);
 9         csi4_stream_write(chan, port_num, ERROR_STATUS2VI_MASK, 0x0);
10 -       csi4_stream_write(chan, port_num, INTR_MASK, 0x0);
11 -       csi4_stream_write(chan, port_num, ERR_INTR_MASK, 0x0);
12 +
13 +       csi4_stream_write(chan, port_num, INTR_MASK, PH_ECC_MULTI_BIT_ERR |
14 +                       PD_CRC_ERR_VC0 | PH_ECC_SINGLE_BIT_ERR_VC0);
15 +       csi4_stream_write(chan, port_num, ERR_INTR_MASK, PH_ECC_MULTI_BIT_ERR |
16 +                       PD_CRC_ERR_VC0 | PH_ECC_SINGLE_BIT_ERR_VC0);
17 +       csi4_stream_write(chan, port_num, ERROR_STATUS2VI_MASK,
18 +                       CFG_ERR_STATUS2VI_MASK_VC0 |
19 +                       CFG_ERR_STATUS2VI_MASK_VC1 |
20 +                       CFG_ERR_STATUS2VI_MASK_VC2 |
21 +                       CFG_ERR_STATUS2VI_MASK_VC3);
22  }


  • To enable logs from user-space for more details
sudo su
kill the process of argus_daemon or nvcamera-daemon
export enableCamPclLogs=5
export enableCamScfLogs=5
/usr/sbin/argus_daemon      option for argus
/usr/sbin/nvcamera-daemon   option for gst-launch
 
launch camera from another console