RCE firmware with debug flag enabled

HI all:
Just now We use xavier to capture sensor imx459,we can capture 8 frames, and then the capture process will hang
We suspect the RCE is not working properly, Can you provide us RCE firmware with debug flag enabled, which may obtain more detail logs from camera side.
Our test environment:
Hardware:Xavier(SOC),Sensor(IMX459)
Software:jetson_r35.2.1,Linux 5.10.104

Hi @wq-1988,
欢迎访问我们的开发者论坛!已经看到您的问题了,我转给相关的同事看一下。

这个是详细的打印信息:
rce-with-debug.zip (687.7 KB)
报了3个重要的错误:
vi_capture_status: waiting for status, timeout:2500 ms
[ 8248.647424] width 1312 height 15
[ 8248.647684] vi_capture_ivc_status_callback: tegra194-vi5 15c10000.vi: vi_capture_ivc_status_callback: status chan_id 0 msg_id 2
[ 8248.647702] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 232, flags: 0, err_data 256
对于discard错误报err_data 256,请问这个是什么意思?

 kworker/0:0-5       [000] ....  1575.966048: rtcpu_vinotify_event: tstamp:52004263339 cch:0 vi:0 tag:CHANSEL_FAULT channel:0x23 frame:105 vi_tstamp:1664136263584 data:0x0000000000000100

 kworker/0:0-5       [000] ....  1576.246572: rtcpu_vinotify_event: tstamp:52013934720 cch:0 vi:0 tag:CHANSEL_NOMATCH channel:0x01 frame:108 vi_tstamp:1664445625728 data:0x0000000000000249
 kworker/0:0-5       [000] ....  1576.246573: rtcpu_vinotify_event: tstamp:52013934879 cch:0 vi:0 tag:FE channel:0x00 frame:108 vi_tstamp:1664445715840 data:0x0000000000000020
 kworker/0:0-5       [000] ....  1576.246573: rtcpu_vinotify_error: tstamp:52013937098 cch:0 vi:0 tag:CHANSEL_NOMATCH channel:0x01 frame:108 vi_tstamp:1664445961728 data:0x0000000000000249
 kworker/0:0-5       [000] ....  1576.246574: rtcpu_vinotify_error: tstamp:52013940594 cch:0 vi:0 tag:CHANSEL_NOMATCH channel:0x01 frame:108 vi_tstamp:1664446073696 data:0x0000000000000249

关于这个nomatch的错误,因为我们15行数据里边,只有12行的是有效的raw12,其他的3行分别EMB行、AMBI行、STATS行,因此我在设备树直接将embedded_metadata_height = 3

IMX459 的分辨率是1312x15@6000, Datatype是RAW12和EMB,其中12行raw12,其他1行EMB,1行AMBI、1行STATS数据,具体如下所示:

麻烦贴一下你们的device tree相关设置

另外,请使用如下命令抓一下log并提交
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

and then run

v4l2-ctl --device /dev/video0 --stream-mmap --stream-to=frame.raw --stream-count=1

Log:

cat /sys/kernel/debug/tracing/trace

打印信息已经发过来了,请看第三条回复信息, rce-with-debug.zip

设备树配置如下:
设备树2

是按照我上一条回复操作然后抓的log吗

20240617_4lane_normal_trace.log (2.0 MB)
刚刚用v4l2-ctl --device /dev/video0 --stream-mmap --stream-to=frame.raw --stream-count=1输出的log

tag:CHANSEL_FAULT channel:0x23 frame:105 vi_tstamp:1664136263584 data:0x0000000000000100 – > 这个是说line太长了
tag:CHANSEL_NOMATCH channel:0x01 frame:108 vi_tstamp:1664445961728 data:0x0000000000000249 → 这个是说数据格式不对,LS packet的type不对

非常感谢您的回复
我从Xavier TRM手册查询,:CHANSEL_FAULT为0x100表示PIXEL_LONG_LING,表示MIPI实际采集到的像素数比配置的像素数要宽,比如我配置的有效行宽度是1312,实质采集的有效像素宽度大于1312,还是说总宽度配置为1402,实质采集的行总宽度大于1402,所以才报PIXEL_LONG_LING这个错误?

是的,但是这个错可能是行长度和你设置的不同,也有可能是其他的,比如log里的ls之类的type有问题,一行没有被正确的切分等等

那具体该怎么判断是哪种了,尤其是数据行切分的问题,因为我这边并没有报CRC或者ECC的错误,请问有没有更进一步的打印信息来区分这两种,即到底是行长度和设置的不同,还是切分的问题?
还有一个问题是,因为我现在输出的分辨率是1312x15@6000这样一个奇怪的分辨率,咱们Xavier RCE是否支持这样一个高帧率的分辨率,第二个就是1312x15@6000这样的分辨率,15行中有12行raw12,其他1行EMB,1行AMBI、1行STATS数据,我设备树该怎么配置?

请问Xavier VI支持的最大帧率是多少,我们这个6000fps是否可以,Linux内核中是否有设置framerate的代码?

可以帮忙看一下吗?

理论上只要符合lane速率最大值的,都能支持,但是帧率太高的话,软件处理不过来。
你们可以降低帧率先跑通试试么?

降低帧率,或者只抓几个frame,确认下整个帧结构能够完整的抓到,然后再看帧率的问题

好,我们尝试将一下帧率试试