首页 > 嵌入式硬件 > 驱动开发

摘要:介绍一种高速高质量的嵌入式摄像头传输技术——QuickCapture技术;详细叙述其设计思想和工作流程,并用可编程逻辑器件Bulverde板卡予以实现。

本文引用地址: http://www.21ic.com/embed/hardware/drivers/201811/73054.html

关键词:嵌入式系统驱动程序快速捕捉摄像头

随着嵌入式处理器的普及和硬件成本的不断降低,具有拍照和摄像功能的手机逐步走进了人们的生活。但由于嵌入式处理器的速度有限,在处理图形和多媒体数据方面显得力不从心,导致嵌入式系统的摄像头分辨率低、色深低、数据传送速度慢,无法满足人们即时捕捉高质量图片和视频的需求。QuickCapture技术是一种专为手持设备设计,用来改进图像质量和传输速度的技术。本文基于QuickCapture技术,就摄像头驱动程序和图片信息传输问题,提供一种解决方案。

1硬件介绍

本人选择的嵌入式微处理器是2003年底Intel公司刚刚推出的一款专门面向移动电话和掌上电脑的专用处理器,PXA27x系列,代号为Bulverde。该处理器采用了QuickCapture技术。QuickCapture为成像设备与无线设备提供接口,有助于改进图像质量以及降低产品整体成本。该项技术包括快速浏览、快速拍照和快速视频拍摄三种操作模式。该技术使得Bulverde可以支持400万像素数码镜头,并能提供最大416Mbps的数据传输速率。


集成在该开发板上的是Agilent公司的型号为ADCM-2650-0001的摄像头感应器。在VGA(480×640)分辨率下,每秒传输的图片能达到15帧,具备自动曝光和白平衡功能,并且针对嵌入式应用做了很多优化处理,所以非常适合嵌入式领域的应用。ADCM-2650-0001内含3个独立的FIFO条目,存储从感应器捕捉到的视频或者图片数据信息。连接处理器和摄像头感应器的是QuickCaptureInterface(快速捕捉接口),它提供了以下几种类型的寄存器:

①QCI(QuickCaptureInterface)控制寄存器0~4;

②QCI时间间隔寄存器;

③QCI状态寄存器;

④QCIFIFO控制寄存器;

⑤QCI接收缓冲区寄存器。

通过这些寄存器,可以控制整个处理器与感应器之间的工作流程。

摄像头感应器与IntelXScale处理器之间的连接,如图1所示。

2接口的实现

本人采用的是ElaME1.0(“和欣”手机操作系统)作为嵌入式操作系统。这是一款由我国自主开发的智能手机操作系统,基于微内核,具有多进程、多线程、抢占式、基于线程的多优先级任务调度等特性。和欣操作系统体积小,速度快,适合网络时代的绝大部分嵌入式信息设备;除了支持摄像头感应器外,还支持彩色LCD、触摸屏、USB等多种嵌入式设备。


2.1ElaME下的摄像头驱动模型

ElaME的驱动模块如图2所示。

ElaME的驱动模型与Unix、Windows操作系统的不一样。它把驱动程序构件化了,使得驱动程序具备了构件的灵活等多种特性。例如:当操作系统启动时并不用加载所有的驱动程序,而是当用户需要用到该设备时才加载。这样的设计使得在手机硬件资源比较紧张的环境中比传统的嵌入式操作性系统具有更强的竞争力。设备管理器(devicemanager)是一个内核对象,管理系统中所有的设备与驱动对象,负责设备信息的搜集、驱动构件对象的创建和删除、设备硬件资源的冲突检测等。

摄像头感应器驱动就是一个构件对象,它的主要工作有以下几点:

①负责通过I2C总线查询摄像头感应器信息,调节摄像头感应器的设置;

②建立和控制DMA传输通道,通过DMA方式将3个FIFO里的数据信息传送到的内存中;

③提供可以给用户态程序使用的接口。

2.2摄像头感应器驱动的关键技术实现

下面从驱动设计上,具体说明如何基于QuickCapture技术,通过DMA方式在感应器的FIFO与内存之间建立最快速最高质量的数据传送。

在PXA27x型号的处理器中,有两种内部外围器件:外部总线的外围器件(PBP)和内部总线的外围器件(IBP)。快速捕捉接口(QuickCaptureInterface)属于IBP。内部总线的外围器件通过外围总线连接至DMAC,使用流数据传送。DMAC有两种工作方式:描述器取入方式和非描述器取入方式。因为当前手机上捕捉到的图片大小分别是从QQVGA(160×120)、QCIF(176×144)、QVGA(320×240)、VGA(480×640)不等,最小QQVGA的每张图片大小也有37.5KB,而每个描述器一次最大能传送(8K-1)B,所以选择多描述器链的方式。描述器链就是将该描述器的特定寄存器内存放的是下一个描述器的地址,当该描述器传送完自身的数据后,能获得下一描述器的地址,读取描述器内的信息,然后继续下一轮的数据传送。每个FIFO都有自己的一串描述器链。如果是捕捉图片,采用一个FIFO即可,如果捕捉视频,要用到三个FIFO。

以下是建立多描述器链的步骤。

①根据图片的格式来确定每帧的大小,如为RGB565格式。

frame_size=camera_info>capture_width*

camera_context->capture_height*2;

camera_info->fifo0_transfer_size=frame_size;

//以下为捕捉视频

//camera_info->fifo1_transfer_size=0;

//camera_info->fifo2_transfer_size=0;

②根据每帧的大小和描述器一次能传送的大小确定描述器的个数。

camera_info->fifo0_num_descriptors=

(camera_info->fifo0_transfer_size+SINGLE_DESCRIPTOR_TRANSFER_MAX-1)

/SINGLE_DESCRIPTOR_TRANSFER_MAX;

camera_info->fifo1_num_descriptors=…;

camera_info->fifo1_num_descriptors=…;

③判断是否超过DMA规定的描述器的大小限制。

④分配DMA描述器的地址,并赋给FIFO0。

camera_context->fifo0_descriptors_physical=

(unsigned)camera_context->dma_descriptors_physical;

cur_des_physical=(DMAC_DESCRIPTOR_T*)

camera_context->fifo0_descriptors_physical

⑤将每个描述器与1帧图片的每个数据块建立一一对应的关系。

for(j=0;j<camera_context->fifo0_num_descriptors;j++){

//建立描述符

cur_des_virtual->DDADR=

(unsigned)cur_des_physical+sizeof(DMAC_DESCRIPTOR_T);

//FIFO0物理地址z

cur_des_virtual->DSADR=CI_REGBASE_PHY+CIBR0;

cur_des_virtual->DTADR=darget_physical;
cur_des_virtual->DCMD=des_rtansfer_size

|DMAC_DCMD_FLOW_SRC

|DMAC_DCMD_INC_TRG_ADDR

|(DMAC_BURSTSIZE_16<<16);

//向前移动指针

remain_size-=des_transfer_size;

cur_des_virtual++;

cur_des_physical++;

target_physical+=des_transfer_size;

//停止DMA传送捕捉的帧

last_des_virtual=cur_des_virtual-1;

last_des_virtual->DDADR=(unsigned)camera_context->fifo0_descriptors_physical;

将每个描述器的DDADR(DMA描述器地址寄存器)指向下一个描述器的地址,将最后一个DDADR指向第一个描述器的地址,这样形成一个环路的描述器链。另外,还要设置DSADR(DMA源地址寄存器)。由于是从摄像头感应器到内存,所以FIFO的地址是源地址,DTADR(DMA目标地址寄存器)为内存,DCMD(DMA命令寄存器)设置传输大小和源流控制。


以上都建立好以后,DMA就可以传送数据了。传送数据的流程如图3所示。

3结语

目前的嵌入式开发板对于摄像头感应器的数据传送方式各不相同。如NeoMagic公司开发的Mimagic5传送图片采用的是独立的DMA功能,而传送视频采用的是特定的内存访问通道,VideoCaptureInterface不通过DMA方式;而Intel公司的PXA27x采用QuickCaptre技术,从官方发布数据表明,明显地提高了视频信息的传送速度。

随着嵌入式设备不断的发展更新,将会有更多、更先进、更高速的数据传输技术被应用到嵌入式开发的各个领域。

换一批

延伸阅读

[行业资讯] 集成电路企业入穗最高奖1.5亿元

集成电路企业入穗最高奖1.5亿元

集成电路产业被喻为“工业粮食”、整机设备的“心脏”,掌握了产业的核心技术就相当于扼住了产业的命脉。记者从广州市工信委获悉,经市人民政府同意,广州市近日印发了《广州市加快发展集成电路产业的若干措施》(以下简称《若干措施》)。对落户的集成电路总......

关键字:集成电路 核心技术 产业集群

[行业资讯] 美国又“扣锅”强制技术转让?中国新法案堵上它的嘴

美国又“扣锅”强制技术转让?中国新法案堵上它的嘴

以美国为首的西方屡次指责中国“强制技术转让”,这一次中国用一项法案有力回击。 ......

关键字:美国 中国 转让技术

[行业资讯] 香山科学会议聚焦宽禁带半导体

香山科学会议聚焦宽禁带半导体

“随着第三代半导体材料、器件及应用技术不断取得突破,甚至可能在21世纪上半叶,导致一场新的信息和能源技术革命。”在近日召开的以“宽禁带半导体发光的发展战略”为主题的第641次香山科学会议上,与会专家指出,宽禁带半导体核心技术一旦解决,必将引......

关键字:半导体 集成电路 能源技术

[行业资讯] 虹识技术成功流片乾芯ASIC芯片QX8001

虹识技术成功流片乾芯ASIC芯片QX8001

9月17日,武汉虹识技术有限公司(简称“虹识技术”)在公司总部所在地武汉光谷未来科技城宣布:虹识技术研发团队经过七年坚持不懈的技术攻关,投入数千万元资金,集中公司优势资源,聚焦核心芯片技术,成功设计并流片虹膜生物识别乾芯ASIC芯片QX80......

关键字:芯片 虹识技术 武汉光谷

[行业资讯] 高通抛弃三星下一代芯片转由台积电加工 缘由为何?

高通抛弃三星下一代芯片转由台积电加工 缘由为何?

多年来,高通一直依赖三星代工芯片制造部门打造其高端骁龙800系列智能手机处理器,台积电此前曾生产该芯片。据媒体援引产业内部消息报道,台积电将负责生产高通骁龙800系列芯片。那么,这样的结果对台积电、高通和三星会意味着什么呢? ......

关键字:芯片 纳米技术 高通

[真心话] 软件开源活动领航人Eric Raymond:C语言时代行将落幕

软件开源活动领航人Eric Raymond:C语言时代行将落幕

这几天来,我(Eric Raymond)在思考那些正在挑战C语言的系统编程语言领袖地位的新潮语言,尤其是Go和Rust。思考的过程中,我意识到了一个让我震惊的事实——我有着35年的C语言经验。每周我都要写很多C代码,但是我已经记不清楚上一次......

关键字:Eric Raymond C语言
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi&#174;和蓝牙&#174;combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14