1. 高通8155平台概述:芯片架构、ISP管线介绍、摄像头子系统框图

好,咱们直接进入正题。高通8155这个平台,做车载的兄弟应该都不陌生。我最早接触它是在一个智能座舱项目上,当时客户要求同时接入6路摄像头,还要做360环视加DMS(驾驶员监控)。说实话,一开始我心里也没底,但摸透了它的架构之后,发现这芯片确实是为车载视觉量身定做的。

1.1 芯片整体架构

先看大框架。8155的SoC架构,说白了就是「多核异构」的典型代表。它里面集成了几个关键模块:

  • Kryo 485 CPU:8核,1+3+4的三丛集架构。大核跑视觉算法,小核处理控制逻辑。我个人习惯把DMS算法绑在大核上,环视拼接放中核,这样负载均衡比较好。
  • Adreno 640 GPU:这玩意儿不光管显示,还能做通用计算。我在项目中试过用GPU做图像预处理,比如直方图均衡化,比CPU快3倍以上。
  • Hexagon 690 DSP:重点来了。这是高通平台做视觉的杀手锏。它有个专门的HVX(Hexagon Vector eXtensions)向量扩展单元,专门跑卷积和图像处理。我建议你把一些固定算法的前处理,比如去噪、缩放,扔给DSP做,CPU和GPU就能腾出手干别的。
  • Spectra 380 ISP:这是咱们今天的核心,下面细讲。

核心要点:8155的异构计算能力很强,但关键是要把任务分对地方。别一股脑全塞给CPU,那是新手干的事。

1.2 ISP管线深度解析

ISP(图像信号处理器)是摄像头驱动的灵魂。Spectra 380支持最高4路并行输入,每路最高4K分辨率。它的管线大致分三个阶段:

1.2.1 前端处理(Bayer域)

传感器出来的原始数据是Bayer格式,说白了就是每个像素只记录一种颜色。ISP第一步要干这些事:

  • 黑电平校正:去掉传感器暗电流带来的底噪。我记得第一次调这个参数时,没注意温度补偿,结果白天效果还行,晚上画面偏紫。后来加了查表法才搞定。
  • 去噪:分亮域和暗域去噪。暗域去噪要保守一点,不然细节全没了。
  • 坏点校正:传感器总有那么几个坏点,ISP会自动检测并插值替换。

1.2.2 中间处理(RGB域)

经过Demosaic(去马赛克)后,图像变成RGB格式。这里主要做:

  • 白平衡:让白色物体在各种光源下都显示为白色。我踩过一个坑——在隧道出口处,白平衡切换太慢,画面闪了一下。后来调整了AWB的收敛速度才解决。
  • Gamma校正:调整亮度曲线,让暗部细节更清楚。
  • 色彩校正矩阵:把传感器偏色拉回标准色域。

1.2.3 后端处理(YUV域)

最后转成YUV格式输出给应用层。这里包括:

  • 边缘增强:让画面更锐利,但别调太猛,否则会有光晕。
  • 降噪:YUV域的降噪主要针对色度噪声。
  • 缩放与裁剪:根据应用需求输出不同分辨率。比如环视需要1920x1080,DMS只需要640x480。

我的经验:ISP调参是个细活。我建议你先用高通提供的QCT工具在PC上调好一组基础参数,再移植到板子上微调。别直接在板子上盲调,效率太低。

1.3 摄像头子系统框图

摄像头子系统,说白了就是「传感器→ISP→内存→应用」这条链路。8155的框图大致如下:

+-----------+     +-----------+     +-----------+
| 摄像头传感器 |---->|  CSI接口  |---->|  Spectra  |
| (OV/索尼等) |     | (MIPI)   |     |  380 ISP  |
+-----------+     +-----------+     +-----+-----+
                                          |
                                          v
+-----------+     +-----------+     +-----------+
|  应用层    |<----|  内存     |<----|  VFE      |
| (环视/DMS) |     | (DDR)    |     | (视频前端)|
+-----------+     +-----------+     +-----------+

这里有几个关键点:

  • CSI接口:8155支持4路MIPI CSI,每路4通道。我建议你根据摄像头数量合理分配通道带宽。比如4K摄像头需要4通道,1080P只需要2通道。
  • VFE(视频前端):这是ISP和内存之间的桥梁。它负责把ISP处理完的数据打包成指定格式(比如NV12)写入DDR。VFE有个很实用的功能——统计信息输出,比如亮度直方图、3A统计值,这些对算法调优很有用。
  • 内存带宽:4路4K同时写入,带宽压力不小。我建议用ION内存分配器管理缓冲区,避免碎片化。

注意:8155的ISP管线是硬件流水线,一旦启动就不能中途改参数。如果你需要动态调整曝光或增益,必须在每一帧的VSYNC(垂直同步)间隙修改寄存器。我曾经因为没注意时序,导致画面撕裂了一整帧,排查了两天才找到原因。

1.4 实战中的一些体会

嗯,说了这么多理论,最后聊点实际的。做8155摄像头驱动,我觉得最难的不是写代码,而是理解整个数据流。你想想看,从传感器输出原始数据,到ISP处理,再到应用层拿到YUV图像,中间经过了多少个模块?每个模块都有寄存器要配,有中断要处理,有DMA要管理。

我个人习惯是先把框图画清楚,标出每个模块的输入输出和关键寄存器地址,然后再动手写驱动。这样即使出了问题,也能快速定位是哪个环节的锅。

另外,高通平台有个好处——文档比较全。但坏处是文档太多,容易看花眼。我建议你重点看这几份:

  • 80-PF835-1:8155芯片硬件手册,了解寄存器地址和功能。
  • 80-VF830-1:ISP编程指南,调参必备。
  • 80-NL835-1:摄像头子系统驱动开发指南,写驱动时对照着看。

好了,这一章就到这里。下一章咱们会深入讲CSI接口的配置和调试,包括如何用示波器抓MIPI信号。到时候我会分享一个我当年调CSI时钟相位时踩过的坑,保证让你少走弯路。