基于ARM Linux的图像采集与蓝牙传输

发布者:Qilin520最新更新时间:2011-07-11 关键字:ARM  Linux  图像采集  蓝牙传输 手机看文章 扫描二维码
随时随地手机看文章

  嵌入式Linux系统具有可移植性好、网络功能强、优秀的GNU编译工具、免费的开放源代码等优点。S3C2410处理器是一款采用ARM920T结构,内部资源非常丰富的32位嵌入式处理器。USB摄像头具有低廉的价格,良好的性能,加上Linux下有V4L支持对其编程,很容易集成到嵌入式系统中。蓝牙技术是目前被认可的短距离无线通信技术,广泛应用于手机、电脑以及汽车免提系统。

  本文介绍基于嵌入式Linux的USB图像采集系统,并通过构建好的嵌入式Linux下的蓝牙环境将采集到的图片传送到蓝牙手机上,实现监控功能。

  1 软硬件平台概述

  系统硬件平台如图1所示。该平台软件上采用嵌入式Linux操作系统;硬件上采用Samsung公司的S3C2410处理器,另外配置了64 MB的NAND Flash存储器和64MB的SDRAM,通过以太网控制芯片CS8900扩展一个10M以太网接口。引出两个USB主口,一个接USB摄像头,一个接USB蓝牙适配器;将通过USB摄像头采集到的图像数据输出到缓冲区中,保存成文件,并通过蓝牙传输到蓝牙手机上。

基于ARM Linux的图像采集与蓝牙传输

  2 摄像头驱动

  在Linux下已经支持的摄像头驱动是采用ov511芯片的摄像头。使用这款芯片的摄像头有网眼2000/3000等系列,而现在市面上常见的摄像头芯片大多采用中芯微的zc0301、zc0302和zc0303等。Linux内核中并没有相关的驱动支持,但可以从网上下载到相关的spca5xx驱动。

  本系统就采用市面上最常用的zc0301p1芯片的摄像头。由于是用于ARM开发板上,可以下载专用于嵌入式Linux的spca5xx-LE驱动,LE版的驱动最大限度地减少了内存的使用,符合嵌入式的需要。将下载的驱动加入到内核中,修改Makefile和Kconfig文件,在内核中选中USB_SPCA5XX,编译后就将摄像头的驱动加入到内核映像中了。

  3 Video4Linux简介

  Video4Linux(简称“V4L”)是Linux下用于获取视频和音频数据的API接口,配合适当的视频采集设备和相应的驱动程序,可以实现影像/图片采集、AM/FM广播、频道切换等功能,在远程会议、可视电话、视频监控系统中都有广泛的应用。

  在Linux下,所有外设都被看成是一种特殊文件,称为“设备文件”,可以像访问普通文件一样对其进行读写。一般来说,采用V4L驱动的摄像头设备文件是/dev/v4l/video0。为了通用,可建立一个到/dev/video0的连接。

  V4L支持两种方式来捕获图像:mmap(内存映射方式)和read(直接读取方式)。

  V4L在include/linux/videodev.h文件中定义了一些重要的数据结构,在进行图像的采集过程中,就是通过对这些数据的操作来获得最终的图像数据。

  4 图像采集

  在图像采集过程中,采用V4L的read方式直接读取设备来获取JPEG格式的图像数据,具体流程如图2所示。

基于ARM Linux的图像采集与蓝牙传输

  4.1 初始化摄像头设备

  指定要操作的摄像头设备文件/dev/video0,调用open()打开该设备文件,将自定义的数据结构vdIn中的成员初始化,包括设备名称(vd->videodevice)、要采集图像的宽度(vd->hdrwidth)和高度(vd->hdrheight)、像素位数(vd->bppIn)、帧大小(vd->framesizeIn),为帧数据分配存储空间(vd->pFramebuffer)。

基于ARM Linux的图像采集与蓝牙传输[page]

  4.2 设定待采集图像的各种属性

  zc0301p1摄像头支持JPEG格式的图像采集,定义VIDEO_PALETTE_JPEG为21,将其赋值给图像帧的调色板palette,这是一个必须设置的重要的参数。其他参数(如图像色调、颜色、对比度等)可以先将VIDIOCGPICT传递给ioctl()查看其默认值。

基于ARM Linux的图像采集与蓝牙传输

基于ARM Linux的图像采集与蓝牙传输

  如果发觉以上的参数不符合采集图像的规范,则可以将pict.brightness、pict.colour、pict.contrast、pict.white-ness、pict.depth等重新赋值,再将VIDIOCSPICT传递给ioctl()来重新设置这些参数。

基于ARM Linux的图像采集与蓝牙传输

  4.3 进行图像采集

  在图像采集过程中,采用read方法直接读取设备文件来获取一帧数据保存到缓冲区中,通过convertframe()函数将pFramebuffer中的数据转成完整的JPEG格式的数据保存到ptframe缓存中去,再调用fwrite()函数将pt-frame缓存中的JPEG格式数据写入到指定的文件中去,即得到一幅JPEG格式的图像。

基于ARM Linux的图像采集与蓝牙传输

  5 蓝牙传输

  蓝牙协议规范遵循开放系统互连参考模型(OpenSystem Interconnection/Referenced Model,OSI/RM),从低到高地定义了蓝牙协议堆栈的各个层次,如图3所示。

基于ARM Linux的图像采集与蓝牙传输

  在蓝牙协议体系中,OBEX位于RFCOMM之上。OBEX提供了对象的表示模型,并通过“Put”和“Get”操作传输对象。设备间的对话遵循客户和服务器间的请求—响应模式。OBEX会话开始由客户端发出连接请求,连接建立成功后服务器发送成功的连接响应,否则发送连接不成功的连接响应。在连接之后,客户端可以通过Put请求向服务器“推送(Push)”对象,如果对象较大,Put请求可以使用多个Put请求分组,每个请求分组需返回一个Put响应分组。本系统将采集到的图片保存到/tmp/cap.jpeg,现在要将图片通过蓝牙传输到蓝牙手机上。具体实现过程如下:

  ① 在内核中打上蓝牙补丁,加入蓝牙协议的支持,添加USB蓝牙适配器的驱动。

  ② 编译bluez的库和工具。从网上下载bluez-libs、bluez-utils和dbus库,用arm-linux-gcc完成交叉编译,得到了arm版的bluez库和bluez的工具以及dbus-daemon工具。这是蓝牙适配器在ARM Linux的环境下正常工作所必需的。

  ③ 启动USB蓝牙适配器。要使USB蓝牙适配器正常工作,需要用到步骤②中编译得到的dbus-daemon工具和一些蓝牙工具(如hciconfig、hcid等)。dbus是一个消息传递系统,应用程序间可通过它来相互传递消息。dbus-daemon是一个守护进程,是运行hcid所必需的,hcid用来读入hcid.conf文件。该文件是蓝牙设备的一个配置文件,在该配置文件中设置好蓝牙设备的类型、classid、配对码、设备是否可被搜索等其他的属性。

  ④ 实现文件传输。本系统采用OBEX协议的客户/服务器模式来传递采集到的图片文件,需要用到蓝牙的Object PUSH服务。首先用sdptool工具搜索到蓝牙手机的MAC地址以及Object PUSH服务所占用的频道,然后用rfcomm工具将该频道绑定到虚拟串口,最后运行obex_test完成文件的传输。

  图4是采用Object PUSH服务来实现文件传输的流程。

基于ARM Linux的图像采集与蓝牙传输

  结 语

  本设计实现了ARM Linux环境下的图像采集工作,构建了ARM Linux下的蓝牙工作环境;通过蓝牙的OBEX协议和Object PUSH服务,实现了ARM Linux平台与蓝牙手机之间的文件传输。利用嵌入式系统和无线传输实现远程监控,符合数字化、网络化的发展趋势。

 

关键字:ARM  Linux  图像采集  蓝牙传输 引用地址:基于ARM Linux的图像采集与蓝牙传输

上一篇:ARM S3C2410X系统中断编程机制的研究与应用
下一篇:基于PXA255的ARM Linux操作系统移植

推荐阅读最新更新时间:2024-03-16 12:38

ARM发布SBSA标准,抢攻服务器市场
安谋国际(ARM)架构伺服器发展再添新动能。安谋国际日前针对ARMv8-A 64位元处理器,发布全新的伺服器基础系统架构(Server Base System Architecture, SBSA)规格,期解决目前ARM架构伺服器软硬体发展无标准可循的问题,从而壮大ARM架构伺服器的市占版图。 ARM技术长Mile Muller表示,ARM架构伺服器的生态系统正火速成形,在此时发布基础系统架构标准将是重要里程碑;该架构标准可简化开发商设计基础系统的繁琐过程,使开发商能更专注于后端的创新设计,加速产品开发及上市时程。 Muller进一步指出,除了处理器厂商外,ARM亦将持续与作业系统业者、韧体及软体开发商合作推动此标准架构
[单片机]
ADS环境下基于S3C2410串口应用程序的开发
  0 引言   ARM ADS全称为ARM Developer suite(ARM开发套件)。是ARM公司推出的ARM系列处理器集成开发工具,使用非常广泛,目前最高版本的是1.2,它取代了早期的ADS1.1和 ADS1.0。它除了可以安装在Windows NT4、Windows98和Windows95操作系统下,还支持Windows XP和Windows Me操作系统。ADS由命令行开发工具、ARM实时库、GuI开发环境(CodeWarrior和AXD)、实用程序和支持软件组成。有了这些部件,用户就可以为ARM系列的RISC处理器编写和调试自己的开发应用程序了。命令行开发工具完成将源代码编译,连接成可执行代码的功能,包手舌:a
[单片机]
超低耗电蓝牙技术开拓无线传输新境界
横扫消费电子市场的“无线传输革命”在业界独领风骚,让一些厂商争相迎头赶上。依赖小电池提供长效电力设备的厂商,正积极寻求能符合他们要求的无线传输技术。这些设备包括应用于体育、健康及体适能方面的感应器:如全球定位系统 (GPS)、计步器、血压计以及血糖检测计。于此同时,由于各方面限制,许多其它产品的厂商从来没曾想过他们也可以进入无线传输的领域,比如手表产业。  曾有些无线传输技术尝试长效电力的需求,但这些技术中的大多数对整个产业的支持度很低。拥有制造商工会支持的 ZigBee 算是少数的例外。然而,没有一项技术拥有足够广泛的兼容性,让小型制造商有机会和全球性标准接轨。目前,企业若想要为小型化设备发展无线传输,则必须建立并销售专属的播送
[嵌入式]
ARM平台的低功耗软件设计和编写
我们这些软件工程师都热衷于为我们遇到的问题找出完美的解决方案。但奇怪的是,我们会发现在这个特定的领域,没有一个完美的解决方案。聪明的技巧可能会节省一些功率,但是这个领域是由其他更简单的因素支配的。就象房间里有几头很大的大象,我们必须要先小心翼翼地猎取我们可以看到的大象,然后再花精力去猎捕体型小的动物。 在考量某个系统的功耗时,重要的是要弄清楚我们实际测量的对象是什么。我们说的“节省功耗”可能意味着几个方面。它意味着“功率”还是“能量”。实际上,我们既需要功率也需要能量。大多数手持便携式设备均具有以下两个不同的预算:功率预算——它管理着瞬间功耗、避免过热或产生热应力,而能量预算则管理着长期使用的能量总数。而软件则需要满足短期的功
[单片机]
<font color='red'>ARM</font>平台的低功耗软件设计和编写
ARM微处理器助记符指令及其功能描述
ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。   ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类,具体的指令及功能如表3-1所示(表中指令为基本ARM指令,不包括派生的ARM指令)。    ARM助记符指令及其功能描述:   ADC带进位加法指令   ADD加法指令   AND逻辑与指令   B跳转指令   BIC位清零指令   BL带返回的跳转指令   BLX带返回和状态切换的跳转指令   BX带状态切换的跳
[模拟电子]
从Mac换芯看国内ARM架构芯片应用前景
近期一条关于苹果公司挖走ARM首席架构师的新闻,又将Mac换芯战略带入大家视野。Mac系列笔记本和台式电脑现在使用的是X86架构,具体来讲使用的是Intel的Core系列和Xeon系列,和大多数Windows系统的PC使用的是同一类型的CPU。其实Mac在苹果公司成立的四十多年里已经经历了两次重要的换芯。第一次是1994年至1996年从Macintosh 128K芯片转向摩托罗拉的PowerPC架构芯片;第二次是2005年由乔布斯主导的将Mac所用摩托罗拉芯片转向Intel芯片。 给一个出货量如此巨大的电脑产品更换底层的芯片架构,从来都不是一件容易的事,这需要对整个软件生态进行重构,最困难的是,重构的结果不能对开发者和用
[嵌入式]
从Mac换芯看国内<font color='red'>ARM</font>架构芯片应用前景
嵌入式ARM系统中OpenCV的移植
◆(在ubuntu中编译): 安装依赖库:sudo apt-get install build-essential manpages-dev pkg-config 安装libpng: sudo apt-get install zlib1g-dev sudo wget http://downloads.sourceforge.net/libpng/libpng-1.2.18.tar.gz?modtime=1179259677&big_mirror=0 sudo tar -xvzf libpng-1.2.18.tar.gz cd libpng-1.2.18 sudo ./configure --prefix=/usr/local/l
[单片机]
图像采集卡与千兆卡的区别
在现代科技的发展中,我们经常会听到图像采集卡和千兆卡这两个词。虽然它们都属于计算机硬件的范畴,但它们在功能和应用上有着明显的区别。本文将探讨图像采集卡和千兆卡的区别,以帮助读者更好地理解和运用这两种硬件 首先,让我们来了解图像采集卡。图像采集卡是一种专门用于将模拟信号转换为数字信号的硬件设备。它通常被用于将摄像头、摄像机或其他视频设备的输出信号转换为计算机可读取的数字格式。图像采集卡具有高速采样率和优秀的信号处理能力,能够捕捉到高质量的图像和视频。它广泛应用于监控系统、医疗影像设备、工业检测等领域。 与之相反,千兆卡是一种用于网络连接的硬件设备。它是一种网卡,用于将计算机连接到局域网或互联网。千兆卡支持千兆以太网传输速度,
[嵌入式]
<font color='red'>图像采集</font>卡与千兆卡的区别
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved