专栏底层软件pym0输入30fps,但是输出却是13fps,请帮忙看下具体原因

pym0输入30fps,但是输出却是13fps,请帮忙看下具体原因

已解决
szc2025-01-16
83
14

 

  1. 硬件获取渠道及型号:立昇智能科技提供的J5 SOM EDK
  2.  系统镜像版本:root@j5dvb:~# cat /etc/versionmipi@mipi debug 20231219-124328
  3.  问题模块:vpm

  4. 问题描述:

 

        摄像头发送30fps,CIM和ISP都是输入30fps,输出30fps。

        但是PYM却是输入30fps,输出13fps。

        摄像头发送的是800M,3840*2160, 但是PYM输出的是1920.*1080,千兆以太网卡不会限制流量。

        请帮忙看下为什么PYM会降低帧率发送。附件是配置文件。 

root@j5dvb:~# cat /sys/devices/platform/soc/47010000.cam_sys/47060000.cim/fps

cim pipe 0: input fps 30, output fps 30

root@j5dvb:~# cat /sys/devices/platform/soc/47010000.cam_sys/470c0000.isp/fps

isphw0(ctx0) pipe 0: input fps 30, output fps 30

root@j5dvb:~# cat /sys/devices/platform/soc/47010000.cam_sys/470e0000.pym/fps

pym0 pipe 0: input fps 31, output fps 13 

 

 

附件:
底层软件
征程5
评论1
0/1000
  • 费小财
    Lv.5

    你有及时拿buffer或者还buffer吗,可能是拿慢了或者是拿着buffer时间太长,导致底层无buffer可用

    2025-01-16
    0
    13
    • szc回复费小财:

      应该是及时拿buffer和还buffer,配置文件中buffer从6改成12,结果也是一样的,pym输出fps是13.千兆以太网中只连接了地平线soc和hbplayer的pc机。这个有什么命令或者log可以查看吗

      2025-01-16
      0
    • 费小财回复szc:

      dmesg看下就知道了,看这个像是hbplay那数据慢了 ,你把尺寸改小应该就 好了,千兆一S应该也只能传几帧差不多是对上的

      2025-01-16
      0
    • szc回复费小财:
      点亮摄像头,开始播放后。dmesg中没有错误打印信息。"isp_dma_output_format": 8,只输出YUV图像数据,尺寸是1920*1080.
      速率是 1920*1080*12*30fps = 746496000 = 746.496Mbps. 速率是足够的。应该是可以输出30fps,但是不知道为什么只输出13fps
      dmesg:
      [19437.743403] [S0]cim_subdev_start hw enable [19437.743411] [S0]cim_subdev_start [19437.744331] ioctl sensor0 start 142 [19437.744366] vps mipi_host0: start cmd: 0 real [19437.744373] vps mipi_host0: check hs reception [19437.746358] [A][time_1 :946704236 s, 269803 us], ncf = 149! [19437.746426] [S0] vio_push_drop_info frame id 1 [19437.748434] vps mipi_host0: entry hs reception [19437.748440] vps mipi_host0 stl: phychk done [19437.748484] vps mipi_host0 stl: start done [19437.748537] vps mipi_dev0: start cmd: 0 real [19437.748556] vps mipi_dev0 stl: fifo full check done [19437.748578] vps mipi_dev0 stl: start done
      2025-01-16
      0
    • szc回复szc:

      这个问题有没有什么调试方法,可以查看pym输出fps小的具体原因吗

      2025-01-17
      0
    • zsy回复szc:

      dmesg中没有什么信息吗? 比如buf队列的信息?可以开启pym的debug,查看每帧的处理信息 echo "file hobot_pym_ops.c +p" >/sys/kernel/debug/dynamic_debug/control

      2025-01-17
      0
    • 费小财回复szc:

      dmesg 跑起来后的dmesg 看看有没有打印错误

      2025-01-17
      0
    • szc回复费小财:
      从 hobot_pym_ops.c 输出信息看,没有看到明显的错误。
      dmesg log如下,我上传下完整log的附件。会不会是pym性能受限了。

      2025-01-17
      0
    • szc回复szc:
      上传的log名是 pymfps13.txt
      2025-01-17
      0
    • zsy回复szc:

      看时间间隔是正常的是33ms ,后面的日志也是间隔33ms吗

      2025-01-17
      0
    • 费小财回复szc:

      看着像后级处理慢了,导致isp没办法给pym输出数据,你看看能不能后级不加,不要显示

      2025-01-17
      0
    • zsy回复szc:

      排查了下 是没有输出buf了, 导致pym关闭了dma->ddr的输出,可以在pym配置中开启 "pingpong_ring": 1,防止无输出buf可用时 闭了dma->ddr的输出

      2025-01-17
      1
    • szc回复zsy:
      是加在pym_config 中吗?如下加
      "pym_config": {
      "pym_hw_id":0,
      "pym_mode": 4,
      "output_buf_num": 12,
      "time_out": 2000,
      "pingpong_ring": 1,

      或者是加在 pym_ctrl 中。

      "pym_ctrl": {
      "source_en": 1,
      "pingpong_ring": 1,
      "src_uv_bypass": 0,
      "src_in_width": 3840,
      2025-01-20
      0
    • szc回复szc:

      如上,在pym_config 中添加 "pingpong_ring": 1 后,pym输出30fps了

      2025-01-20
      0