Linux camera驱动开发(ARM、FPGA、DDR共享总线)

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

抛开arm soc不谈,处理图像的方法基本就是fpga,或者是fpga+mcu,或者是zynq这种fpga、ddr、arm可以一起访问的芯片。但是三种方法里面,最简单的还是zynq这种芯片,其他三种方式,各有各的问题。

1、纯fpga意味着需要硬编码一切

以图像处理为例,中间少不了图像的采集和显示。既然如此,那么不管是camera的读取,还是lcd、hdmi的显示都需要fpga来完成。当然camera和lcd的显示,中间的速率还不一定完全匹配,这个时候就需要fpga来处理ddr的初始化。**这就意味,我们在编写业务之前需要做一大堆的准备工作,其中就包括了复杂度很高的ddr初始化。**难度是肉眼可见的。

2、fpga+mcu能弥补,但不多

除了fpga处理图像之外,有的时候还需要处理一些额外的工作。比如图像显示的时候,有些情况下需要截图,需要进行回显,需要进行上下图片的切换。甚至,图片保存的时候,还需要放到tf卡里面,需要一个文件系统来交互。这种情况下如果再去用fpga实现,就不合适了。此时为了不增加过多的成本,mcu倒是一个不错的办法。

虽然fpga已经占据了全部的ddr资源,这个时候fpga和mcu之间就只能通过spi这类总线来进行联系。这样一来,mcu就可以处理一些人机交互的事情,比如资源配置、图片保存、文件信息提示、图形界面等等,这部分都可以mcu来完成。不过mcu也有自己的缺陷,那就是内部ram空间有限,就算访问ram,只能是速率不高的sram。此外,mcu无法支持复杂的usb和tcp/ip协议栈,这些都是它的缺点。

3、fpga+arm+ddr

**zynq最为客户着想的地方,就是fpga、arm、ddr相互之间都可以通过总线进行访问,使用上非常方便。**基于这一点,适合fpga来做的,就可以fpga来做;适合arm来做的,就arm来做。不仅如此,zynq由于cpu频率高,还可以跑linux,这样就可以用好usb、tcp/ip,使用上十分的方便。

哪怕不是用linux,只是用arm跑一个bare mental系统,也是非常合适的。很多的产品,或者是应用,从效率考虑本身是非常适合fpga来处理的,但是中间处理过程中也会涉及到一些配置或者是算法,这个时候就可以把这些算法或者是配置单独写成一个ip。数据部分,直接dma从ddr拷贝到ip,ip处理完了结果直接发给cpu,让cpu再去做后面的工作。不管是lcd直接显示,还是通过lwip网络协议栈发出去,都是非常方便的。这里是所以让ip实现算法,而不是让cpu来做,一部分是因为处理不过来,一部分是因为实时性要求。

4、zynq为后续的soc创造可能

虽然类zynq的应用场景很多,但是对图像来说,它还是无法实现编解码、npu、gpu处理这些功能的。所以哪怕是当前zynq做不了这些,也是可以通过后续接一个soc芯片来继续处理的。当然,如果实在不需要zynq里面的arm,换一个纯fpga处理,也是可以的。

相关推荐
weixin_480641613 小时前
一款全能型 AI 设计修图工具实测:椒图 AI,Nano Banana Pro 加持,电商 / 修图 / 设计一站式解决
大数据·图像处理·人工智能·ai作画·stable diffusion·aigc·midjourney
不懒不懒3 小时前
【OpenCV 图像处理从入门到实战:核心功能全解析】
图像处理·人工智能·opencv
Sagittarius_A*3 小时前
图像去雾:从直方图增强到暗通道先验【计算机视觉】
图像处理·人工智能·python·opencv·计算机视觉·图像去雾·暗通道先验
Saniffer_SH3 小时前
【高清视频】介绍一个自动化测试辅助小工具 - 上下电测试适用于电脑冷启动的掉电盒
网络·人工智能·驱动开发·嵌入式硬件·测试工具·计算机外设·压力测试
尤老师FPGA3 小时前
HDMI数据的接收发送实验(五)
fpga开发
范纹杉想快点毕业3 小时前
Zynq-7000 PS端开发深度技术指南:从硬件架构到实战应用
fpga开发·硬件架构
FPGA小迷弟3 小时前
FPGA工业常用接口:FPGA 的 SPI 总线多从机通信设计与时序优化
学习·fpga开发·verilog·fpga·modelsim
猫猫的小茶馆12 小时前
【Linux 驱动开发】Linux 内核启动过程详解
linux·c语言·arm开发·驱动开发·stm32·单片机·mcu