Wince6.0 下Camera(OV3640) 驱动开发笔记1——基于S5PC100
来源:互联网 发布:kettle 大数据 编辑:程序博客网 时间:2024/05/17 06:31
http://blog.csdn.net/figthter_cui/article/details/5936373
由于项目需要开始搞S5PC100的摄像头驱动,camera类型是OV3640.以前还没有做摄像头驱动,缺乏相关的经验,另外基于S5PC100的摄像头驱动代码结构又比较复杂,谁让A8的功能强大呢,功能多了强了开发起来难度自然就增大了。总之,目前的感觉是——好复杂!
既然项目需要,那么容易要上,有困难也要上,慢慢啃吧。
先说一下S5PC100支持输入的camera数据类型,有三种:ITU-R BT 60/656 类型,DMA(AXI 64bit interface)类型,MIPI(CSI)类型。相应的接口有两种方式:并口方式和MIPI方式。在三星官方开发板上有这两种类型的camera接口。
看了一天官方给的camera驱动代码,发现其结构相比2440的比较复杂,总体接口分为三大部分,即S5PC100 camera控制器设置部分,摄像头操作部分(读、写、控制等),摄像头滤波器部分(主要是特殊效果处理,对这一部分还不是很清楚)。通过阅读代码发现,每一种类型的摄像头抽象出来一个类,包含了控制摄像头的各个函数,例如:
class S5K4EAGX : public CamModule
{
public:
S5K4EAGX();
S5K4EAGX(ICamComm *CommIF);
~S5K4EAGX();
MODULE_STATUS Init();
MODULE_STATUS Deinit();
MODULE_STATUS InitSensor();
MODULE_STATUS Power(BOOL bOnOff);
MODULE_STATUS Standby(BOOL bActive);
MODULE_STATUS Reset(BOOL bActive);
MODULE_STATUS GetSupportFormat(MODULE_DESCRIPTOR *outModuleDesc);
MODULE_STATUS SetFormatSize(CAMIF_IMG_SIZE Size);
};
该类是对摄像头S5K4EAGX的抽象类,包括了初始化,电源管理,相关设置等。可以发现该类是CamModule的继承类,那么CamModule是一个什么类呢?从继承与被继承的知识可以知道CamModule类应该是对所有类型摄像头的抽象,其结构如下:
class CamModule : public ICamModule, public ICamModuleExtension
{
public:
CamModule();
CamModule(ICamComm *CommIF);
virtual ~CamModule();
virtual MODULE_STATUS SetOperationMode(CAMIF_OPERATION_MODE mode);
virtual MODULE_STATUS StartCapture();
virtual MODULE_STATUS StopCapture();
// Extension
virtual MODULE_STATUS Flash();
virtual MODULE_STATUS SetBrightness();
virtual MODULE_STATUS Effect();
virtual MODULE_STATUS Whitebalance();
virtual MODULE_STATUS Framerate();
protected:
ICamComm *m_oCommIF;
MODULE_PWR_STATUS PowerStatus;
UINT32 SensorID;
BOOL IsInitialize;
CAMIF_OPERATION_MODE OperationMode;
CAMIF_IMG_SIZE PreviewSize;
CAMIF_IMG_SIZE StillSize;
MODULE_DESCRIPTOR ModuleDescriptor;
volatile S5PC100_GPIO_REG *m_regIOP;
// Properties[];
}
从其成员函数可以看出该类是更高层次的操作,包括设置操作方式,开始(停止)采集,设置图像效果等。该类还有两个父类ICamModule, ICamModuleExtension。通过阅读代码可知这两个类是两个虚拟类,相应代码如下:
ICamModule
ICamModuleExtension
由此可见开发摄像头驱动的起点是从 CamModule一个继承类,类似于class S5K4EAGX : public CamModule{}。这一点有点类似于display驱动。
好了,知道从那里下手了,接下来的就是编写OV3640的抽象类,其父类是 CamModule。
今天就先到这里,明天编写OV3640的抽象类以及成员变量和成员函数的实现。
- Wince6.0 下Camera(OV3640) 驱动开发笔记1——基于S5PC100
- Wince6.0 下Camera(OV3640) 驱动开发笔记1——基于S5PC100
- Wince6.0 下Camera(OV3640) 驱动开发笔记
- Wince6.0 下Camera(OV3640) 驱动开发全程记录
- Wince6.0 下Camera(OV3640) 驱动开发全程记录
- Wince6.0 下Camera(OV3640) 驱动开发全程记录
- 基于WINCE6.0+S3C2443的camera驱动
- 基于WINCE6.0+S3C2443的camera驱动
- 基于WINCE6.0+S3C2443的camera驱动
- 基于WINCE6.0+S3C2443的camera驱动
- 基于WINCE6.0+S3C2443的camera驱动
- 帮朋友调试S5pv210 OV3640 wince6.0 摄像头驱动
- 关于wince5.0 下2440 OV3640/OV2640 摄像头驱动和wince6.0 S5pv210OV3640/OV9650/OV9655/OV2640 摄像头驱动差异
- S5PC100平台上Linux Camera驱动开发详解(一)
- S5PC100平台上Linux Camera驱动开发详解(二)
- S5PC100平台上Linux Camera驱动开发详解
- Wince6.0 电源控制驱动程序分析-基于S5PC100
- 嵌入式软件开发培训笔记——基于S5PC100的课程设计
- 带锁的门__简单题
- 转载新闻 你应该知道的一些 Linux 技巧
- 浏览器添加手机客户端访问
- 线程处理函数pthread_cleanup_push / pthread_cleanup_pop
- iPhone开发中的图像处理相关要点
- Wince6.0 下Camera(OV3640) 驱动开发笔记1——基于S5PC100
- oracle数据库的备份与还原(本地及远程操作)
- 《公司的力量》第三集:猎富时代 解说词
- 网络最大流问题算法 —— Dinic 算法 && poj 1237
- 子类调用父类构造和析构函数的顺序
- 伟大与渺小|心胸与世界
- Linux的inode的理解
- 【VC】 关于SetupDiGetClassDevs函数的使用。
- Android中Handle总结