第一章 为什么90%的Camera项目都死在第一步第一节 一块返工300万元的PCB让整个项目延期三个月提问如果现在让你设计一块智能驾驶域控制器你会先做什么大多数新人都会回答“先选SoC。”有的人说“先选Camera。”还有的人会说“先画原理图。”这些答案都不算错。但是在真正的Tier1公司首席架构师通常先做一件完全不同的事情——算带宽。 精讲第一部分很多年轻工程师第一次接触智能驾驶项目时总觉得摄像头只是一个普通外设。无非就是一颗CMOS、一个镜头再通过GMSL或者FPD-Link把图像送到SoC最后算法识别一下车道线和车辆看起来整个流程并不复杂。但是当你真正参与一辆L2甚至L3级智能汽车开发时就会发现现实完全不是这样。举个真实的工程例子。某款城市NOA车型采用了3颗前视8MP摄像头、4颗环视2MP摄像头、4颗周视2MP摄像头以及1颗驾驶员监控摄像头。项目初期大家认为每一路链路都满足芯片规格实验室点亮测试也十分顺利于是PCB很快进入试产。然而进入整车联调后问题开始出现。高温暴晒两个小时以后前视图像偶尔丢帧连续跑高速时环视画面会出现短暂卡顿夜间HDR模式开启后个别摄像头偶发重新建立链路。软件团队检查驱动没有发现异常算法团队也确认模型正常最终所有问题都指向硬件。经过重新分析真正的问题并不是Serializer也不是Deserializer更不是SoC性能不足而是项目最开始计算Camera带宽时只计算了图像有效数据没有计算协议开销、同步信息、Blanking、ECC、CRC以及系统设计余量。也就是说第一步就算错了。这个错误在实验室很难暴露因为实验室环境稳定、线束较短、温度较低但到了真实车辆环境高温、振动、电磁干扰叠加以后链路余量被迅速吃光系统便开始暴露问题。很多项目最后返工并不是因为芯片选错而是因为最开始没有把数据流量真正算明白。 工程案例为什么实验室正常上车却开始掉帧假设有一条高速公路设计通行能力是每小时6000辆汽车。平时你统计车流时只计算了真正载货的大货车却没有把公交车、小汽车、应急车辆以及收费站排队时间算进去。于是你得出结论“6000辆肯定够跑。”结果国庆节一到高速立刻堵成停车场。为什么因为真正占用道路资源的不只是货车。Camera带宽也是一样。很多工程师计算时只算了图像像素 × 位宽 × 帧率却忽略了视频同步包MIPI CSI-2包头ECC校验CRC校验Embedded MetadataLine BlankingFrame BlankingVirtual Channel信息Serializer编码开销Link Margin。这些内容平时看不见却一直在占用带宽。所以实验室刚点亮时链路利用率可能只有70%到了整车环境HDR、多摄同步、算法同时工作链路利用率一下冲到95%以上偶发错误自然开始出现。真正成熟的硬件工程师从来不会把链路设计到100%。他们通常会预留20%~30%的带宽余量因为汽车不是实验室它需要在炎热、寒冷、颠簸、电磁干扰等各种环境下连续工作很多年。 总结今天请大家先记住一句话Camera系统最大的敌人从来不是分辨率而是低估了数据量。很多工程师工作几年以后仍然认为Camera越高清只是图片越大。事实上Camera送往域控制器的不是一张照片而是一条持续不断、永不停歇的高速数据河流。如果这条河流的流量一开始就计算错了那么后面的Serializer、Deserializer、CSI-2、DDR、ISP、NPU都会像多米诺骨牌一样受到影响。所以Camera设计真正的起点不是画原理图而是计算数据。第二节 为什么1080P叫2MP而4K却叫8MP提问你每天都在说1080P。2MP。4K。8MP。但是有没有认真想过这些数字到底是怎么来的下一节我们不急着写任何公式而是先把**“像素”**这块最基础、也是最容易被忽略的积木彻底讲透。下一节开始我们会进入一步一步推导为什么1080P叫2MP为什么8MP不是8MB为什么RAW12不是12Byte