Linux Camera驱动开发(fpga + csi rx/csi tx)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

现实生活中,有很多的算法是soc isp没有实现的。而图像处理的时候,又需要有这些算法,并且客户也愿意承担额外的成本开支,这个时候应该怎么办呢?比较好的办法,就是在soc开发板前面加一个fpga开发板,fpga开发板的作用就是添加自己的算法,这样就可以同时兼顾fpga和soc的优点了。

1、fpga vs 软件处理

很多算法可以用fpga实现,也可以用软件实现。但是如果用软件实现的话,实时性没有办法得到保证。这种情况下,就需要把算法用fpga固化下来,这样就可以达到高实时性处理的效果。

2、fpga是否可以放在soc的后面

理论上fpga也可以放在soc的后面。但是很多的soc,它的mipi接口,只支持mipi csi rx,并不支持mipi csi tx。这样一来,如果soc后面接fpga,soc的选择面会小很多。而且相对而言,把fpga放在soc的前面有很多的好处,比如fpga可以实现sensor的透传,把自己模拟成一个成熟的sensor。这样从soc的角度来看,fpga就和一颗正常的sensor没有任何区别。

3、soc为啥一般不支持mipi csi tx

主要还是需求太少了。对于大部分场景来说,mipi输出这一部分,有dsi就已经足够了。**mipi tx的作用就是显示,mipi rx的作用就是camera sensor输入。实在找不到mipi csi tx应用的场景。**像fpga添加算法,做特定场景的加速,本质上还是非常小众的需求,因此mipi csi tx只能是fpga自己实现了。不过好在fpga公司,一般都体哦那个mipi csi tx/rx的ip,我们会使用就可以了。

4、fpga是否可以单独处理图像

如果只是显示和拍照,对图像质量要求不高,那么用fpga处理图像也是可以的,sensor挑一个ov5640这种。最坏的情况就是fpga处理完成之后,找一个小的mcu,处理一下bmp、jpeg和fs文件系统。但是一旦涉及到isp、涉及到编解码、以及网络协议处理,那么用fpga是远远不够的。这也不是fpga擅长的地方。所以,很多时候,都是默认fpga后面接一个soc,专门处理图像之外的工作。

**还有一点,现在很多的soc都默认带有npu,这也是fpga不具备的优势。**所以,很多时候,我们都是用fpga做一些算法加速,后端还是靠soc来完成。

5、i2c信号

除了上面说的mipi之外,fpga连接camera sensor、fpga连接soc,这些都需要i2c信号。因此配置的时候,sensor的id和fpga的id需要做一下区分,这样才知道配置属性的时候是怎么配置的。此外,因为涉及到fpga的配置,之前的sensor驱动代码也要稍作调整。

6、透传的fpga模块

通过前面的分析,我们就知道fpga一般位于sensor和soc之间。如果是对sensor进行配置,都是通过i2c透传到sensor里面;如果是fpga本身进行处理,那么就处理一下对应的设置。输出部分也是一样,拿到bayer图像之后,可以直接处理bayer图像,再送给soc。对于soc来讲,一切就像是接一个普通的sensor一样,没有任何区别。

相关推荐
LCMICRO-133108477461 小时前
长芯微LDC90810完全P2P替代ADC128D818,是一款八通道系统监控器,专为监控复杂系统状态而设计。
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·模数转换芯片adc
s09071364 小时前
保姆级教程十二:USB摄像头接入!ZYNQ+OpenCV+FPGA硬件加速图像处理实战(视觉终极篇)
图像处理·opencv·fpga开发·zynq·硬件加速
CoderIsArt8 小时前
FPGA-based 量子电路仿真
fpga开发
碎碎思18 小时前
升级版流水灯:用FPGA控制上千颗RGB LED
fpga开发
FPGA-ADDA19 小时前
第二篇:Xilinx 7系列FPGA详解——从Spartan到Virtex
fpga开发·fpga·sdr·rfsoc
逐步前行1 天前
STM32_SysTick_寄存器操作
stm32·嵌入式硬件·fpga开发
良许Linux1 天前
FPGA的选型和应用
数据库·图像处理·计算机视觉·fpga开发
上班最快乐1 天前
基于FPGA的APS6404L-3SQR QSPI PSRAM驱动设计(3)
fpga开发
CoderIsArt1 天前
FPGA实现量子计算机仿真器重要论文
fpga开发·量子计算
上班最快乐1 天前
基于FPGA的APS6404L-3SQR QSPI PSRAM驱动设计(4)
fpga开发