高通Camera 驱动调试要点(二)

2023-05-16

  这篇文章主要介绍数据流这边Camera ISP这块所遇到的问题,主要介绍bus overflow和sof freeze;


(一)bus overflow

  摄像头传感器时钟通道(即 MIPI DDR 时钟)的工作频率与激活的数据通道数决定摄像头传感器在指定操作模式下的总数据传输速率(吞吐量)。每个通道的数据传输速率是 MIPI DDR 时钟速度的两倍。例如,工作在 200 MHz MIPI DDR 时钟频率和 4 个激活通道下的摄像头传感器的总数据传输速率为 1600 Mbps(每个通道的数据传输速率为 200 * 2 = 400 Mbps)。

  每个帧的分辨率、额外/虚拟像素/线数、水平消隐、垂直消隐、MIPI 包开销、每像素位数、数据格式、内部是否存在多个交错数据流以及每个流的数据传输速率/开销等,都会影响数据传输速率。指定工作模式下初步摄像头调通,计算:X = 帧宽 * (帧高垂直消隐) 每像素位数 * 每秒帧数 * (MIPI 协议和其他数据流的开销)在 VFE 时钟优化中为给定的 MSM 找到大于 X 的最接近的值作为 VFE 时钟的初始值。

  在标称时钟模式下,比如MSM8909的VFE最大速度为266MHz每条MIPI通道的PHY限制为1.5 Gbps (1.5 * 109 bps),由于存在MIPI/空白开销(约15-25%,各传感器的具体数值有所不同),实际帧数据吞吐量略少于预期原图拍摄接口数据传输速率与VFE时钟无关在4通道PHY接口上,每条通道的最大数据为(266 x bpp)/通道数;bpp → 每像素的传感器输出位数对于每通道10位数据传输速率 - (266*10)/4 - 665 Mbps;

  当我们VFE 时钟设置为小于传感器输出MIPI的数据传输速率时,将出现溢出bus overflow;

502:        pr_err_ratelimited("%s: image master 0 bus overflow\n",
507:        pr_err_ratelimited("%s: image master 1 bus overflow\n",
512:        pr_err_ratelimited("%s: image master 2 bus overflow\n",
517:        pr_err_ratelimited("%s: image master 3 bus overflow\n",
522:        pr_err_ratelimited("%s: image master 4 bus overflow\n",
527:        pr_err_ratelimited("%s: image master 5 bus overflow\n",
532:        pr_err_ratelimited("%s: image master 6 bus overflow\n",

  增大VFE时钟可防止溢出发生。要更改VFE时钟,需打Vendor/qcom/proprietary/mm-camera/mm-camera2/media-controller/modules/sensors/sensor_libs/xxxx/ xxxx_lib.c文并编辑 op_pixel_clk 参数。

  选择正确的 VFE 时钟非常重要。VFE 时钟频率应足够高以匹配传感器输出端的数据速率(即传感器输出帧 x 帧/s),否则可能会引起 ISPIF 溢出。不过也不应设置过高的频率。设置过高的 VFE 时钟频率会导致两类问题:
1. 由于可能填充内部 VFE 输出缓存(也称为统一缓存),总线溢出的几率增大。
2. 如果 VFE 时钟频率较高,会导致功耗增大。


A. 检查与 VFE 总线溢出相关的总线时钟

  当过多的 VFE 数据流量以超过可用总线带宽的速率产生时,会导致 VFE 总线溢出错误。解决该问题的一种可行方法是检查能否通过设置更高的总线时钟频率来增加总线带宽。例如在 MSM8916 芯片组中,VFE 生成处理后的输出帧到系统 NoC (SNoC) 总线。数据流随后被转发到总线集成内存控制器 (BIMC) 总线,暂时保存在 DDR 内存中。VFE 生成的数据流将在这两条总线形成的路径上运行。因此,SNoC 和 BMIC 总线都必须进行检查。adb shell 脚本每隔一秒会转储 SNoC 和 BIMC 时钟频率。

#adb shell "while true; do cat /d/clk/snoc_clk/measure; cat /d/clk/bimc_clk/measure; echo '-----'; sleep 1; done"

200001391
748805675
-----


B. 将时钟总线设为最大频率

  VFE 总线溢出分类的第一步是检查能否通过设置更高总线时钟频率来增加可用总线带宽。增加总线带宽后,查看 VFE 总线溢出问题是否得以解决。

adb root
adb shell sleep 1
adb shell mount -t debugfs none /d
adb shell echo "22 > /d/msm-bus-dbg/shell-client/mas"
adb shell echo "512 > /d/msm-bus-dbg/shell-client/slv"
adb shell echo "0 > /d/msm-bus-dbg/shell-client/ab"
adb shell echo "6400000000 > /d/msm-bus-dbg/shell-client/ib"
adb shell echo "1 > /d/msm-bus-dbg/shell-client/update_request"

  以上脚本尝试设置从 MDP(显示硬件模块)到 DDR 内存路径中的所有总线。不管摄像头如何操作,通过从 MDP 显示屏侧(ID 22 表示 MDP)请求高带宽,总线会始终保持最大时钟频率。选择显示屏 (MDP) 而不是摄像头 ISP (VFE) 的原因是显示屏 MDP 一直运行,而摄像头驱动程序在启动和停止时会覆盖摄像头表决。而且这种更简单的测试场景能解决所有起伏问题。通过以上测试,再次检查总线时钟是否增加到最大频率。应用上述设置后,SNoC 和BIMC 时钟频率分别应为 266 MHz 和 533 MHz(不同平台参数不一致,对应不同的性能等级)。

  如果没有任何改进,可尝试按以下步骤在 CPU 高性能模式下运行系统并设置最大总线时钟频率:

adb shell "echo 1 > /sys/devices/system/cpu/cpu1/online"

adb shell "echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"


C. 从 VFE 检查 AB/IB 表决带宽

  1. 在检查 VFE 侧要求的总 AB 和 IB 带宽时,确保摄像头已启动。
  2. 运行以下命令:
adb root
adb shell cat /d/msm-bus-dbg/client-data/msm_camera_isp

1223.023734896
curr   : 1
masters: 29  
slaves : 512  
ab     : 100000000  
ib     : 100000000  

1223.024648282
curr   : 2
masters: 29  
slaves : 512  
ab     : 200000000  
ib     : 200000000  

1228.214552238
curr   : 1
masters: 29  
slaves : 512  
ab     : 921819520  
ib     : 921819520 

  输出第一行中的数字 351.706326427 表示发出请求时的内核时间戳。Master(s) 29 表示总线流量来自 VFE,Slave(s) 512 表示总线流量的目的地设为 memory;AB/IB VFE 发出的最终宽带请求分别为 930 MBps/1.62 GBps。


D. 识别 AXI 配置

  VFE 总线溢出日志经常始于表明某个具体写入主控上出现溢出,因此内核日志显示的首个溢出实例就显得非常重要,可以帮助确认溢出来源。在 VFE 总线溢出分析(特别是 ZSL 预览场景)过程中,通常要求找到具体图像写入主器件和预览/快照输出帧面的映射关系,以确定要优化的数据流。例如,确定预览数据流的总线溢出后,仅关注预览数据流。在内核中添加以下调试日志消息,并在 Salesforce 用列系统分享该日志。

--- a/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c
+++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c
@@ -1384,8 +1384,10 @@ static int  msm_isp_axi_stream_enable_cfg(
        if (stream_info->state == START_PENDING ||
                stream_info->state == RESUME_PENDING) {
                enable_wm = 1;
+        pr_err("__debug__: WM[%d] ENABLE, src = %d, max_width = %u\n",stream_info->wm[i], stream_info->stream_src, stream_info->max_width);
        } else {
                enable_wm = 0;
+        pr_err("__debug__: WM[%d] DISENABLE, src = %d, max_width = %u\n",stream_info->wm[i], stream_info->stream_src, stream_info->max_width);
        }


E. 增加 AB/IB

  如果将时钟总线设为最大频率,能够解决buffer ovflow的问题,可以尝试增加总体总线时钟频率,总线时钟频率只会在摄像头工作时增加,逐渐增加或将原来数字乘2或逐渐减少来找出最优数量。

//kernel/drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c

 62 #define MSM_ISP_MIN_AB 100000000                                                                                                                   
 63 #define MSM_ISP_MIN_IB 100000000


F. 提高VFE 突发长度变化

  尽管最优 VFE 突发长度没有明确答案,但改变 VFE 突发长度也能够减少 VFE 总线溢出问题。

  28 #define VFE40_BURST_LEN 1                                                                                                                         
  29 #define VFE40_BURST_LEN_8916_VERSION 2
  30 #define VFE40_BURST_LEN_8952_VERSION 3

  33 #define VFE40_STATS_BURST_LEN 1
  34 #define VFE40_STATS_BURST_LEN_8916_VERSION 2


(二)sof freeze

  sof freeze(SOF:start of frame)表示ISP这边没有收到sensor这边输出的图像帧数据,这时必须检查 CSID/CSIPHY/CAMIF是否出错。有专门建立了thread来负责SOF的检测,start_sof_check_thread() -> mct_bus_sof_thread_run(),log当中会有下面的错误发出:

// msm-3.18/drivers/media/platform/msm/camera_v2/msm.c

 803     case MSM_CAM_V4L2_IOCTL_NOTIFY_DEBUG: {
 804         if (event_data->status) {
 805             pr_err("%s:Notifying subdevs about potential sof freeze\n",
 806                 __func__);

  首先看能否dump出现数据:

        /*
        0 Disabled; this value is set by default
        2 Dump preview frames
        8 Dump snapshot frames
        16 Dump video frames
        */

        adb root
        adb shell setprop persist.camera.isp.dump 8
        adb shell chmod 777 /data

   Verifying the VFE hardware configuration

    In the msm_isp_axis_util.c file, locate the following code snippet:

    if (vfe_dev->dump_reg)
     msm_camera_io_dump_2(vfe_dev->vfe_base, 0x900);

    Replace it with:

    24 if (1)
    25 msm_camera_io_dump_2(vfe_dev->vfe_base, 0x900);

   若声明的传感器输出大小与 VFE 实际接收到的传感器输出大小之间不匹配,将发生 CAMIF错误。

//mm-camera/mm-camera2/media-controller/modules/iface2/iface_util.c

 8878 static void iface_util_dump_camif_cfg(struct msm_vfe_input_cfg *input_cfg)                                                                       
 8879 {
 8880   struct msm_vfe_pix_cfg *pix_cfg = NULL;
 8881 
 8882   if (input_cfg == NULL)
 8883     return;
 8884 
 8885   pix_cfg = &input_cfg->d.pix_cfg;
 8886   IFACE_HIGH("=====Camif DUMP cfg for PIX interface====\n");
 8887   IFACE_HIGH("camif input type = %d(MIPI=3), op_pix_clk = %d\n",
 8888     pix_cfg->camif_cfg.camif_input, input_cfg->input_pix_clk);
 8889   IFACE_HIGH("camif pix_pattern(RGRG-0/GRGR-1/BGBG-2/GBGB-3) = %d\n",
 8890     pix_cfg->pixel_pattern);
 8891   IFACE_HIGH("camif first_pix = %d, last_pix = %d\n",
 8892     pix_cfg->camif_cfg.first_pixel, pix_cfg->camif_cfg.last_pixel);
 8893   IFACE_HIGH("camif first_line = %d, last_line = %d\n",
 8894     pix_cfg->camif_cfg.first_line, pix_cfg->camif_cfg.last_line);
 8895   IFACE_HIGH("camif pixels_per_line = %d, lines_per_frame = %d\n",
 8896     pix_cfg->camif_cfg.pixels_per_line, pix_cfg->camif_cfg.lines_per_frame);
 8897   IFACE_HIGH("camif irq subsample pattern = %x, period = %d sof_step %d\n",
 8898     pix_cfg->camif_cfg.subsample_cfg.irq_subsample_pattern,
 8899     pix_cfg->camif_cfg.subsample_cfg.irq_subsample_period,
 8900     pix_cfg->camif_cfg.subsample_cfg.sof_counter_step);
 8901 }

  将调试消息中指示的帧大小与 ISP 传感器的帧大小进行比较。在以下 CAMIF 错误示例中,错误状态 0x9a70a00 表示 ISP 接收帧的大小为 2471x2560(0x9a7 = 2471,0xa00 = 2560)。

01-01 08:07:20.175 E/mm-camera( 302): isp_hw_camif_dump_cfg: camif
input_format= 0 
01-01 08:07:20.175 E/mm-camera( 302): isp_hw_camif_dump_cfg: camif
last_pix = 6527 
01-01 08:07:20.175 E/mm-camera( 302): isp_hw_camif_dump_cfg: camif
last_line = 0 
01-01 08:07:20.175 E/mm-camera( 302): isp_hw_camif_dump_cfg: camif
lines per frame = 2448 
01-01 08:07:24.335 E/klogd (640): [81.563301]
msm_vfe40_process_error_status: camif error status: 0x9a70a00

如果存在不匹配,则根本原因可能如下:

  检查传感器设置是否正确,是否满足分辨率大小的要求。例如,传感器的输出大小配置为 12 MB,但 ISP 的接收大小却配置为 8 MB。可能有些传感器无法确保在新分辨率设置发送至传感器后,最初的帧大小能够满足要求。在这种情况下,需要与传感器供应商一起解决此问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高通Camera 驱动调试要点(二) 的相关文章

  • 保存的图像方向错误

    我正在使用这段代码 https github com commonsguy cw advandroid blob master Camera Picture src com commonsware android picture Pictu
  • 使用 Android 相机进行图像处理

    我想使用 onPreviewFrame 在将图像显示给用户之前对其进行后处理 即应用色调 棕褐色等 据我了解 返回给回调的 byte 数据以 YUV420sp 编码 人们是否已经在 J ava 中或使用 NDK 本机代码 将其解码为 RGB
  • 来自相机的原始图像数据,如“645 PRO”

    不久前我已经问过这个问题并且我也得到了很好的答案 我一直在这个论坛上上下搜索 但找不到我想要的东西 真的需要 我想从相机获取原始图像数据 至目前为止 我试图从中获取 imageDataSampleBuffer 中的数据 方法 capture
  • android 11 上 imageCapture 用例的camerax“未绑定到有效相机”

    我一直收到错误 未绑定到有效相机 当尝试实现 imageCapture 用例时 我正在按照camerax教程在Java中实现该功能here https codelabs developers google com codelabs came
  • 如何从里程计/tf数据获取投影矩阵?

    我想将视觉里程计的结果与 KITTI 数据集提供的事实进行比较 对于地面中的每一帧 我都有一个投影矩阵 例如 1 000000e 00 9 043683e 12 2 326809e 11 1 110223e 16 9 043683e 12
  • 在 Windows 8.1 平板电脑上的 Web 应用程序中捕获图像

    我即将开发一个在 Windows 8 1 平板电脑上运行的应用程序 一个重要的功能是能够单击按钮来访问相机来拍摄一些照片 理想情况下 我想将其创建为Web应用程序由于多种原因 许可证 跨平台 开发时间 没有本机应用程序经验等 而不是本机应用
  • Android:访问硬件相机预览帧数据而不绘制它们

    根据 Java SDK 端的 android 相机文档 必须为相机预览帧提供一个要绘制的 可见且活动的 表面 以便访问帧数据 我已经链接了我在这里遇到的一些内容 我是新人 所以最多有 2 个超链接 但是在最终在这里发布我自己的问题之前 我查
  • 适用于图片和视频的 Android 相机

    我想在我的 Android 应用程序中启动相机活动 并且我知道该怎么做 我想问当相机活动结束时 如何检查是否是用户拍摄的照片或视频 UPDATED 我有一个对话框 它询问两件事 新照片或视频 现有照片或视频 如果没有的话 1 这意味着相机将
  • 关闭 Android 中的自动对焦

    这是在我的应用程序代码中关闭相机自动对焦的任何方法 我想检查如果手机没有自动对焦功能 我的扫描仪如何工作 但我的手机有该功 能 Use FOCUS MODE INFINITY http developer android com refer
  • OpenCV 中的相机标定和鸟瞰投影

    我已经完成了相机校准 现在我想获得棋盘图片的鸟瞰图 如下所示 但结果很奇怪 看起来不是一个正方形 你可以看到图3 每个正方形都是7 95x7 95 有人知道为什么吗 gpsPoints 0 Point2f gpsPoints 1 Point
  • Android 致命信号 11 (SIGSEGV) at 0x00000040 (code=1) 错误

    我正在开发一个 Android 应用程序 我正在其中获取用户照片图像 5张图像 使用opencv2 4 2具有面部检测功能的相机 并使用 Web 服务保存到服务器中的数据库中 为此 我使用 Opencv2 4 2 人脸检测示例 Ksoap2
  • 3D 图形矩阵 4x4 中最后一行的 magic 4 的用途是什么?

    当我阅读有关WebGL的书时 我看到了下一个矩阵描述 有关于书中最后一行的信息 WebGL 初学者指南 初学者指南 Diego Cantor Brandon Jones 神秘的第四排 第四排没有任何特殊之处 意义 元素 m4 m8 m12
  • 当相机断开连接时,opencv videocapture 挂起/冻结而不是返回“False”

    我正在使用 OpenCV Python 3 1 遵循此处的示例代码 http opencv python tutroals readthedocs io en latest py tutorials py gui py video disp
  • 在 OpenGL 中移动相机时出现故障

    我正在为 iPhone 编写一个基于图块的游戏引擎 除了以下故障之外 它基本上可以正常工作 基本上 相机将始终将玩家保持在屏幕中央 并且它会移动以正确跟随玩家并在静止时正确绘制所有内容 然而 当玩家移动时 玩家行走的表面瓷砖会出现故障 如下
  • Android/iOS 上的相机远程快门如何工作?

    我最近在 Android iOS 上遇到了一个使用蓝牙的内置相机应用程序的远程快门 这是我找到的产品的示例链接 Link http www youtube com watch v cyVG76HDvh4 不是来打广告的 只是简单了解背后的技
  • 如何打开相机然后切换到图像模式(反之亦然)

    就我而言 我想拍照或捕捉视频 实际上 如果我创建单独的意图 我可以做到这些 我的意思是我可以将相机打开为图像模式或视频模式 但无法在它们之间切换 这与我使用的意图过滤器有关吗 我应该怎么办 我如何在它们之间切换 我有同样的问题 在我想放置一
  • 手电筒打开时 Android 相机的奇怪行为

    我有以下 android 代码 这里用伪代码编写 mCamera configAndInitialize all I want to do before taking picture mCamera startPreview mCamera
  • Ionic-Angular.js 拍照并发送到服务器:空图像

    因此 我设法使用自定义指令通过 Angular js 将图像上传到我的服务器 我还成功地实现了 Cordova 的相机功能 现在我尝试连接两者 但是当将图像发送到服务器时 它们被存储为空 我认为问题在于我使用输入字段来获取图像 并且它获取了
  • 如何构建自定义摄像机应用程序?

    我正在尝试开发一个自定义摄像机录像机 当我的设备在 Activity 的 beginRecording 中执行 start MediaRecorder 方法时 应用程序崩溃 我不知道出了什么问题 因为我遵循谷歌API指南 http deve
  • 如何使用键盘和鼠标控制相机 - Three.js

    我在 WEB GL 中有一个带有 Three js 的 3D 环境 并且我曾经使用 Orbitcontrols js http codepen io nireno pen cAoGI http codepen io nireno pen c

随机推荐

  • C++实现websocket服务器握手协议(使用Qt)

    前提 xff1a 笔者在开发server程序时 xff0c 要求websocket与server连接 websocket的机制是在第一次连接时进行握手协议 xff0c 协议通过 xff0c 才可以进行正常的通信 xff0c 否则websoc
  • 00011__ARM和STM32的区别

    https blog csdn net qq 34385566 article details 79668280
  • linux中查看系统资源占用情况的命令

    size 61 large top size 主要参数 d xff1a 指定更新的间隔 xff0c 以秒计算 q xff1a 没有任何延迟的更新 如果使用者有超级用户 xff0c 则top命令将会以最高的优先序执行 c xff1a 显示进程
  • 关于PendSV异常和SVC异常

    这里先说什么是异常 xff0c 什么是中断 xff1f 请下这张图 颜色加深的表项为异常 xff0c 这些属于cm3内核自带的 其中 3 xff0c 2 xff0c 1异常的优先级固定 xff0c 是不可更改的 xff0c 其余的异常中断优
  • FreeRTOS学习4-任务创建和删除

    关于任务创建有3个函数 1 动态创建一个任务 可以自动分配任务堆栈和TCB FreeRTOSConfig h中 xff0c 需要定义 define configSUPPORT DYNAMIC ALLOCATION 1 支持动态内存申请 Ba
  • java里 equals和== 区别

    1 java中equals和 61 61 的区别 值类型是存储在内存中的堆栈 xff08 简称栈 xff09 xff0c 而引用类型的变量在栈中仅仅是存储引用类型变量的地址 xff0c 而其本身则存储在堆中 2 61 61 操作比较的是两个
  • VRPTW建模与求解—基于粒子群算法

    VRPTW建模与求解 基于粒子群算法 1 VRPTW简要描述 VRPTW xff08 Vehicle Routing Problem with Time Windows xff09 是指在经典VRP的前提上 xff0c 给每个客户增添时间窗
  • 伽马分布,指数分布,泊松分布的关系 -转自简书

    原文链接 xff1a https www jianshu com p 6ee90ba47b4a 伽马分布 xff0c 指数分布 xff0c 泊松分布的关系 thinkando 关注 2018 09 25 21 13 字数 714 阅读 29
  • 双轴驱动步进电机云台二自由度单片机控制程序PTU57

    高精度云台由两个电机驱动 xff0c 可控制方位角和高度角 xff0c 具有两自由度的机械电子设备 可用于机器视觉 摄影摄像 监控安防 天文观测 雷达扫描 DIY雕刻机 转盘转台 智能机械手臂 双轴跟踪太阳能定日镜等各类应用高精度云台的场合
  • php使用curl获取需要认证的https请求

    lt php php使用curl获取需要认证的https请求的方法 url 61 34 XXXXXX 34 arr header 61 34 Accept application json 34 arr header 61 34 Autho
  • i-vector本质剖析

    1 i vector的由来 基于因子分析理论 xff0c 句子h的超向量可以描述成 其中为ubm模型的均值超向量 xff0c 即为i vector 2 i vector的计算 2 1 T矩阵的估计 为句子h的观察特征 xff0c 可以对应于
  • C++程序设计基础实验-实验七 多态性

    实验七多态性 一 实验目的 掌握运算符重载的方法 xff1b 掌握使用虚函数的继承实现动态多态性 掌握纯虚函数及抽象类的使用 二 实验内容 设计复数类Complex xff08 请参照教材例题8 1的设计 xff09 xff0c 实现运算符
  • g2o_a_general_framework_for_graph_optimaization

    g2o A General Framework for Graph Optimization NONLINEAR GRAPH OPTIMIZATION USING LEAST SQUARES 机器人和计算机视觉中的许多问题都可以用下列方程的
  • P5644 [PKUWC2018]猎人杀

    P5644 PKUWC2018 猎人杀 题目大意 一开始有 n n n 个猎人 xff0c 第 i i i 个猎人有仇恨度
  • 【Linux基础系列之】platform虚拟总线

    linux当中大多数的设备都是以paltform虚拟总线挂载上去的 xff0c 这里以kernel drivers net dm9000 c为例子分析一下 xff0c platform设备挂在过程 xff1b xff08 1 xff09 d
  • ARMv8-AArch64简述

    ARMv8是ARM版本升级以来最大的一次改变 xff0c ARMv8的架构继承以往ARMv7与之前处理器技术的基础 xff0c 除了现有的16 32bit的Thumb2指令支持外 xff0c 也向前兼容现有的A32 ARM 32bit 指令
  • ARMv8-AArch64寄存器和指令集

    xff08 一 xff09 简述 AArch拥有31个通用寄存器 xff0c 系统运行在64位状态下的时候名字叫Xn xff0c 运行在32位的时候就叫Wn xff1b AArch32与AArch64寄存器对应关系 xff1a xff08
  • ION框架学习(一)

    第一章介绍 xff1a ION的框架和buffer的分配 xff1b 第二章介绍 xff1a 如何使用ION buffer xff1b ION是google在Android4 0 为了解决内存碎片管理而引入的通用内存管理器 用来支持不同的内
  • 高通Camera 驱动调试要点(一)

    本文主要介绍QCOM camera调试的重要参数 xff1b xff08 1 xff09 Lane assign 和lane mask 现在摄像头基本都是mipi接口类型 xff0c 因为前后摄都对应到平台这边不同的mipi接口 xff0c
  • 高通Camera 驱动调试要点(二)

    这篇文章主要介绍数据流这边Camera ISP这块所遇到的问题 xff0c 主要介绍bus overflow和sof freeze xff1b xff08 一 xff09 bus overflow 摄像头传感器时钟通道 即 MIPI DDR