通过4个多月的奋斗,从无到有的设计了一款8Sensor的视频采集板。其中有很多的问题,都是慢慢的解决一个过程,Sensor虽然不是第一次接触,但是通过fpga控制Sensor,然后8个Sensor同时采集的这个方案我还是第一次做。外面也看到有些人做过这个方案,但是不清楚是否做出来。现在整个板子可以正常数据采集了。当初我的方案框图如下:
二 、项目的设计目标是:
实现8个摄像头同时拍照功能,要求每个摄像头之间的拍照延迟时间在1uS范围之内。摄像头拍照后经编码、压缩处理后存储在SD卡中。
其实当初是一个简单的想法,以为可以很简单就能实现,实际做的过程中遇到了很多问题。让人选择FPGA+CPU的方案是我觉得比较开发起来容易,成本相对节省的方案。这主要也是为了考虑实用性。在开发过程中,主要完成了
1).fpga控制Sensor的Verilog代码;
2).CPU中的Linux内核驱动代码,主要用于选择摄像头等东西;
3).Linux C的应用代码开发,包括YUV420数据的采集,还有数据分析的部分。
三、项目经验
硬件设计部分,还需要严谨的论证;当然也包括项目经验,以前通过我自己的想法实现了这个方案的定义。实际实施过程中还是有两个小点让我花费了比较多的时间,其中就是iic上拉的问题。还有一个就是数据线共用的问题,数据线在总线独立的情况下面是可以共用的,但是一般情况下面,建议的是在后端共用,不要在前端共用。不然处理起来比较麻烦。
软件部分的调试经验,软件设计包括得比较多;包括 Verilog的fpga部分代码,Linux内核驱动,Linux应用代码。多个模块之间的调试需要对每个模块都很熟悉。这是一个挑战。不过反过来讲这样的项目才能体现出一个项目的价值。Sensor和fpga的接口,在实际使用过程中遇到数据位错位的情况。后面我调整了,上一篇文章写的就是这个问题。最后我解决了,通过设置Sensor为黑色的模式输出。这是一个很好的调试思路。内核驱动修改过程中,一定要注意驱动必须写全,写强大。一旦定版就不能修改,所有的测试都基于应用程序的调整。
整个项目坚持了4个多月,这是一个长时间的煎熬。做事情不能虎头蛇尾的,其实这也是评价一个人是否靠谱的方式。以前项目经验不够,做有些项目做得不好。现在不一样了。继续发扬努力!!!