0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用S3C2410处理器和嵌入式Linux实现手持终端系统的应用方案

电子设计 来源:微计算机信息 作者:党帅 , 王库 2021-03-20 09:18 次阅读

1 引言

视频监控技术在国民生产的许多领域发挥着重要的作用。随着嵌入式技术的逐渐发展和成熟,手持监控终端成为可能。而手持监控终端的可携带性和低功耗更极大地扩展了视频监控的应用范同。本课题探索了一种手持监控终端的设计方案。提供了简捷易用的图形用户界面.实现了对MPEG4格式视频压缩数据的解码及其在LCD上的播放。

2 系统的硬件平台

本系统的处理器选用三星公司生产的具有ARM9内核的S3C2410.S3C2410是32位RISC CPU.内部带有全性能的内存处理单元(MMU).主频为203MHz,最高可达260MHz。芯片内部集成了大量的功能单元.包括:外部存储器控制器、LCD控制器以及8通道10位ADC和触摸屏接口等。系统的电源模块采用TI公司的TPS73HD3XX系列芯片进行电压转换.可以分别获得1.8V和3.3V电压。根据应用的需要.本系统选用了1M NOR Flash AM29LV800DB,64M NAND Flash U-K9F1208UDM-YC80和两片32M SDRAM K4S561632C-TC75。液晶采用的是320x240的TFT真彩(65536色,16位)液晶屏。触摸屏采用的是四线制电阻式触摸屏。系统的硬件结构框图如图1所示。

采用S3C2410处理器和嵌入式Linux实现手持终端系统的应用方案

图1 系统硬件框图

3 系统的软件设计

本手持终端选用嵌入式Linux作为操作系统。在此基础上运用了两个开源软件:图形用户界面库MiniGUI和视频编解码库ffmpeg。

3.1 基于MiniGUI的图形用户界面

MiniGUI是由北京飞漫软件技术有限公司丰持的一个自由软件项目.它为基于Linux的实时嵌入式系统提供一个轻量级的罔形用户界面支持系统。本系统的图形用户界面使用了这个库来实现,它负责运用和管理FrameBuffer帧缓存驱动、触摸屏和键盘驱动程序。通过MiniGUI库。系统图形用户界面相关的部分得到厂很好的实现.成功的建立了包括按钮、菜单和背景网片在内的图形用户界面。特别需要指出的是.因为本系统的数据接收和实时视频解码的操作涉及到大量的数据处理,所以应用程序会分别为这些操作新开线程,如果一个线程因为数据的处理失败而阻塞,图形用户界面线程仍可正常工作。用户仍可以和软件交互.终止阻塞的线程。

3.2 视频解码线程

本课题中。手持设备通过网络接收MPEG4格式的视频数据所以需要在手持设备上移植MPEG4的解码库。经过对比和分析,选择了ffmpeg开源项目作为这个手持设备的解码库。ffmpeg是自南软件,为多媒体系统实现MPEG4流媒体技术提供了完整的解决方案.主要的组成部分是libavformat和libavcodec库。libavcodec包含了很多常见的音视频编解码器.而libavformat则能够很好的支持大部分的音视频文件格式。

实时接收到的视频数据可以作为一种特殊的流媒体文件.这种文件与一般的视频文件相同。都有若干个基本的组成部分。首先,文件自身可以被叫做一个“容器”(container),“容器”的类型决定了视频信息在文件中所处的位置。其次,文件包含有若干个“流”(stream);比如,通常有一个音频流和一个视频流(一个“流”只是一个对于一系列数据组成单位的形象的称呼)。一个流中的数据组成单位叫做“帧”(frame)。每一个流由不同的“解码器”解码。从流中可以读出“包”(packet)。包是一些数据块,这些数据块中包含了压缩后的原始帧的数据。下面详细地介绍一下利用ffmpeg的API函数进行解码的过程。

首先,利用av_register_all()函数进行库的初始化,向编解码库注册所有可用的文件格式和编码器,所以当有对应的格式的文件被打开的时候.相应的解码器可以被自动地调用。通过av_open_input_file()函数打开视频文件,把关于文件格式的头和储存信息读到一个AVFormatContext结构体中。接着,利用av_find_stream_info()函数检查存储在AVFormatContext结构体中的文件的流信息,这个函数把正确的信息存储在一个指针集合中.在这个集合中就可以找到需要的视频流。关于流的编解码器信息在AVCodecContext结构体中,通过它就可以找到真正的编解码器并且打开它。

利用avcodec_alloc_frame()函数分配一个用来存储帧的空间pFrame。因为手持终端播放的视频是565-bit的图像,所以还需要把帧从原始格式转化成RGB格式。ffmpeg提供了img_convert()函数做这个转换。注意为转换还需另外分配一个帧pFrameRGB用来存放转换后的数据。接下来依次从视频流中读原始帧的数据包把数据包解码到上面分配的pFrame中,一旦完成了一个帧的解码,就把这个帧转换成要求的RGB数据格式并且在液晶屏上显示解码后的视频图像。系统解码的过程如图2所示。

图2 系统解码的过程

3.3 数据接收线程

手持监控终端通过SOCKET与视频采集设备建立连接接收视频数据.但是接收到的MPEG4数据,必须进行一定量的缓冲.然后才能调用ffmpeg的API函数进行解码处理。本手持监控终端在内存中建立两个队列,一个是空闲的缓冲队列,用以存放接收到的数据:另一个是尚未处理的数据队列.等待处理.两个队列头尾相连组成一个环形缓冲列表。数据接收线程方面:当手持监控终端接收到一个包的数据,就从缓冲队列的头拿出一个缓冲区块,把接收到的数据存放到这个缓冲区块中,然后将这个缓冲区块加入到数据队列的尾部等待视频解码线程的读取。视频解码线程方面:从数据队列的头拿出一个缓冲区块,读取数据,将读完的缓冲区块加到缓冲队列的尾部,等待再一次地接收数据。经过测试,选择32个缓冲区块,每个缓冲区块的大小选为24KB,会获得比较好的抗扰动,抗延时的播放效果。系统的软件结构框图如图3所示。

图3 系统软件框图

4 结束语

本文针对S3C2410硬件平台和Linux操作系统,设计并完成了在手持监控终端上对实时视频的播放,基本上达到了,预期的要求。由于本课题只是借鉴了流媒体的思想,利用的不是真正的流媒体技术所以会产生一定的播放延时,接下来的工作会探索流媒体技术在手持视频终端上的应用,进一步减少延时,以便可以更好的将流媒体技术利用到视频监控中。

创新点:本文所提出的手持监控终端的设计方案充分利用了S3C2410的功能,并且创新性的把ffmpeg视频编解码库移植到了基于S3C2410的硬件平台上.通过建立循环数据链表的方法实现了视频数据的接收和解码的同时运行。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19461

    浏览量

    231412
  • 嵌入式
    +关注

    关注

    5096

    文章

    19199

    浏览量

    308279
  • Linux
    +关注

    关注

    87

    文章

    11354

    浏览量

    210657
收藏 人收藏

    评论

    相关推荐

    S3C2410处理器

    S3C2410处理器通过GPD端口连接LED1-4四个灯,试着画出其电路连接图,并变成实现其逐一点亮功能。
    发表于 11-23 21:50

    嵌入式Linux2.6在S3C2410上的移植技术探析

    移植操作系统是开发嵌入式系统的前提和基础,通过将Linux 2.6 内核移植到S3C2410目标板上,提出了
    发表于 08-31 10:03 15次下载

    基于S3C2410嵌入式无线监控系统的设计

    为了对无人职守的监控现场进行有效监控,我们设计实现了基于三星的S3C2410 嵌入式处理器的监控系统, 同时利用GPRS/CDMA 无线技术
    发表于 09-09 16:25 31次下载

    基于S3C2410嵌入式串口通信设计

    本文通过基于S3C2410嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串行通信的硬件电路和软件
    发表于 12-23 16:11 120次下载

    基于S3C2410手持监控终端的研究与设计

    本文介绍了一种基于S3C2410嵌入式Linux 操作系统手持监控设备的设计方案。文中首先
    发表于 01-25 15:39 59次下载

    S3C2410处理器 Bootloader(Vivi)源代码

    S3C2410处理器 Bootloader(Vivi)源代码分析 这边的2410开发板提供的光盘上已附交叉编译工具:arm-linux-
    发表于 02-09 15:39 22次下载

    嵌入式Linux系统开发技术详解-基于ARM

    本章以S3C2410处理器的GPS手持设备开发过程为例,介绍了嵌入式Linux系统软硬件的设计与
    发表于 06-12 15:32 71次下载

    基于S3C2410嵌入式车载定位系统设计

    本文从实际应用出发,为嵌入式Linux在车载GPS导航定位系统中的应用研究提供了一种新的设计思路。以ARM处理器S3C2410为硬件核心,在
    发表于 07-14 17:18 77次下载

    Windows CE.NET在S3C2410处理器上的移植

      本文分析了嵌入式操作系统Windows CE。NET的特点,并利用工具Platform Builder 4。2完成了其在以ARM920T为核心的S3C2410处理器上的定制。  
    发表于 08-27 14:41 660次阅读
    Windows CE.NET在<b class='flag-5'>S3C2410</b><b class='flag-5'>处理器</b>上的移植

    S3C2410处理器特性

    S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用0.18um制造工艺的32位微控制
    发表于 10-10 11:52 5698次阅读

    基于S3C2410和Windows CEnet的智能移动终端设计

    本文介绍 S3C2410处理器的性能以及 Windows CE. net 作为嵌入式操作系统的开发流程 。阐述基于 S3C2410芯片和
    发表于 04-18 10:46 0次下载

    基于S3C2410处理器对Windows CE 5.0操作系统实现BSP移植

    ,是一种硬实时嵌入式操作系统,它可以在多种处理器架构(如x86、MIPS、ARM和 SH4)上运行,Windows CE支持ARM体系结构,这是基于S3C2410
    发表于 03-06 10:10 1085次阅读
    基于<b class='flag-5'>S3C2410</b><b class='flag-5'>处理器</b>对Windows CE 5.0操作<b class='flag-5'>系统</b><b class='flag-5'>实现</b>BSP移植

    基于在S3C2410处理器平台上实现Windows CE.NET的应用设计

    本文分析了嵌入式操作系统Windows CE.NET的特点,并利用工具Platform Builder 4。2完成了其在以ARM920T为核心的S3C2410处理器上的定制。
    的头像 发表于 09-24 10:03 2618次阅读
    基于在<b class='flag-5'>S3C2410</b><b class='flag-5'>处理器</b>平台上<b class='flag-5'>实现</b>Windows CE.NET的应用设计

    基于S3C2410处理器实现USB网卡无线网络功能的实现

    目前,嵌入式技术已广泛应用于工业控制、消费类电子产品、通信系统等各类市场产品。并且随着互联网的日益发达,具有无线接入功能的嵌入式系统更加具有发展前景。本文将介绍支持IEEE 802.1
    的头像 发表于 05-05 17:04 2081次阅读
    基于<b class='flag-5'>S3C2410</b><b class='flag-5'>处理器</b><b class='flag-5'>实现</b>USB网卡无线网络功能的<b class='flag-5'>实现</b>

    基于S3C2410处理器Linux实现嵌入式网关的设计

    介绍了一种基于ARM9的嵌入式以太网的设计方案。基于ARM内核微处理器S3C2410的功能特点及其外扩组成部分,分析了以太网控制芯片RTL
    的头像 发表于 06-22 14:28 2684次阅读
    基于<b class='flag-5'>S3C2410</b>微<b class='flag-5'>处理器</b>和<b class='flag-5'>Linux</b><b class='flag-5'>实现</b><b class='flag-5'>嵌入式</b>网关的设计