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
+
VI error decoder map from trace
 
  CSIMUX_FRAME data bit field
 
  CSIMUX_FRAME data bit field
 
     bit 0:2 STREAM_ID
 
     bit 0:2 STREAM_ID

Revision as of 02:12, 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 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
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