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处理,也是可以的。

相关推荐
坏孩子的诺亚方舟11 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
世微 如初11 天前
AP5125大功率LED恒流驱动实战:地摊灯项目从原理图到调试笔记
驱动开发·芯片·led电源驱动·降压恒流ic
ScilogyHunter11 天前
Zephyr串口驱动开发及构建完全指南
驱动开发·uart·zephyr
FPGA小徐11 天前
入门 CNN 结构全解析|从流程图理论到 FPGA Verilog 硬件实现(含习题带讲解)
fpga开发
_Emma_11 天前
【DRM&Graphic】Linux图形与显示框架
linux·驱动开发·图形渲染·显示器
董厂长11 天前
Loop Engineering:停止手动提示,开始设计自动提示的系统
大数据·人工智能·驱动开发·llm
FPGA小徐11 天前
FPGA 数字信号处理:并行 FIR 与串行滤波器设计原理、对比与完整 Verilog 实现
fpga开发
sali-tec11 天前
C# 基于OpenCv的视觉工作流-章85-包胶不良检测
图像处理·人工智能·opencv·算法·计算机视觉
搏博12 天前
多传感器融合基础之一图像空间(Image Space)全面解析
图像处理·python·图像空间·融合感知
Saniffer_SH12 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试