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

    文章

    18288

    浏览量

    222167
  • 嵌入式
    +关注

    关注

    4982

    文章

    18286

    浏览量

    288479
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206738
收藏 人收藏

    评论

    相关推荐

    基于嵌入式LinuxS3C2410平台的视频采集

    基于嵌入式LinuxS3C2410平台的视频采集首先简介基于嵌入Linux系统
    发表于 03-28 12:51

    一种嵌入式MP3音频点播系统的设计与实现

    本帖最后由 luna 于 2011-3-3 14:37 编辑 介绍一种基于S3C2410处理器嵌入式Linux
    发表于 03-03 00:32

    ARM9处理器C语言编程(全) ADS开发环境创建简介

    环境设置高等学校嵌入式系统设计教材 ARM9处理器C语言编程(全)ADS开发环境创建简介第三章:ARM芯片S3C2410片上资源更多精彩内容
    发表于 07-28 15:06

    S3C2410处理器与Nand flash 的问题

    一个64M Nand flash存储S3C2410处理器的Nand flash相应接口连接,请问这个64M存储空间是否属于8个bank中的一个bank?因为有些书上说bank 0到bank 7
    发表于 11-20 21:41

    S3C2410处理器

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

    ARM嵌入式Linux系统开发从入门到精通

    嵌入式系统介绍1.1.1 嵌入式系统概述1.1.2 嵌入式系统组成1.2 ARM介绍1.2.1
    发表于 10-31 13:36

    高等学校嵌入式系统设计教材推荐

    环境设置高等学校嵌入式系统设计教材 ARM9处理器C语言编程(全)ADS开发环境创建简介第三章:ARM芯片S3C2410片上资源更多精彩内容
    发表于 09-07 14:29

    基于ARM S3C2410处理器的PDA人机接口电路设计

    无线方式解决。   随着电子技术的迅猛发展,具有耗电少、亮度高、体积小等特点的LCD(液晶显示)被广泛应用于PDA系统中。   S3C2410是三星公司设计的32位RISC(精简指令集计算机)
    发表于 06-19 05:00

    AD7888与S3C2410的SPI接口及Linux嵌入式驱动的实现

    宏单元。ARM920T具有增强ARM体系的MMU(支持WinCE,EPOC32和Linux)、16kB的指令和数据高速缓存以及高速AMBA总线接口。S3C2410被设计用于手持设备以及普通的
    发表于 06-19 05:00

    基于微处理器S3C2440A的手持终端电源管理系统设计

    管理面临越来越大的压力。如何设计出性能稳定、功耗低的电源管理系统已经成为嵌入式手持终端设备开发的难点之一。本文重点介绍基于微处理器
    发表于 07-24 06:22

    32位处理器S3C44B0怎么移植?

    S3C44B0是Samsung公司推出的一款为手持设备或其他通用设备开发的32位处理器,它基于ARM7TDMI核,没有内存管理单元(MMU)。在采用无MMU的微
    发表于 08-19 08:00

    嵌入式手持终端电源管理系统有什么功能?

    越来越大的压力。如何设计出性能稳定、功耗低的电源管理系统已经成为嵌入式手持终端设备开发的难点之一。本文重点介绍基于微处理器
    发表于 03-10 07:44

    如何在嵌入式Linux系统平台上设计建立图像视频?

    本文使用的系统硬件平台采用Samsung公司的处理器S3C2410,并以此为基础,在基于嵌入式Linux
    发表于 06-08 06:10

    基于ARM和Linux嵌入式Web服务的构建及应用

    嵌入式系统研究及应用的热点.本文叙述了嵌入式系统的组成,特点及发展;分析了嵌入式主流处理器ARM
    发表于 11-05 06:07

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

    介绍了一种基于ARM9的嵌入式以太网的设计方案。基于ARM内核微处理器S3C2410的功能特点及其外扩组成部分,分析了以太网控制器芯片RTL8019AS的性能以及与
    的头像 发表于 06-22 14:28 2337次阅读
    基于<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>网关的设计