




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南 阳 理 工 学 院 本科生毕业设计(论文) 学 院 : 电子与电气工程学院专 业 : 电子信息工程学 生 : 邵 占指导教师 : 徐 源 完成日期 2014 年 5 月 南阳理工学院本科生毕业设计(论文)嵌入式多机视频通信系统设计与实现 Design and Implementation of System Embedded Multilevel Video Communication 总 计: 30 页表 格: 1 个插 图: 26 幅 南 阳 理 工 学 院 本 科 毕 业 设 计(论文) 嵌入式多机视频通信系统设计与实现 Design and Implementation of System Embedded Multilevel Video Communication 学 院 : 电子与电气工程学院专 业 : 电子信息工程 学 生 姓 名 : 邵占 学 号 : 105090440031指 导 教 师(职称): 徐源(讲师)评 阅 教 师 :完 成 日 期 : 南阳理工学院 Nanyang Institute of Technology嵌入式多机视频通信系统设计与实现嵌入式多机视频通信系统设计与实现电子信息工程专业 邵占摘 要 本系统以ARM9系列的S3C2440为核心控制芯片,以LINUX操作系统为开发平台,通过麦克风和摄像头分别采集音频与视频信息,然后经过编解码之后利用网线通过TCP/IP网络协议传送给对方,并在双方的显示屏上实时显示出视频画面,通过音频设备播放出语音信息。该系统可以进行视频和音频同步通信,也可以进行单一的语音通信。该系统具有良好的用户交互界面。具有本地终端设备扫描功能,能够获取在线设备的IP地址,昵称以及当前状态(空闲、忙碌、离开等)。我们可以根据对方的IP地址进行拨号,还可以给对方发送短消息。关键词 视频通信;嵌入式系统;音视频采集;网络传输协议 Design and Implementation of System Embedded Multilevel Video Communication Electronic Information Engineering Specialty SHAO ZhanAbstract: This system uses the S3C2440 ARM9 series as the core control chip, on the platform of LINUX operating system ,it captures audio and video information respectively through a microphone and a camera,going by decoding, using Ethernet based on the TCP/IP protocol to transmit the data to the other object, and shows a video screen in real time on both sides of the display screen , plays the messages through audio equipment. The system can realize audio video communication synchronously and undertake single voice communication. The system has a good interface for users. Including local terminal equipment scanning function, The system can obtain the IP address of the online equipment, nickname and the current state (idle, busy, leave, etc.). According to the other side of the IP address We can dial out its number,and send short messages each other.Key words: Video communication; embedded system; audio and video collection; networking protocol 目 录1 引言11.1视频通信系统的研究背景和意义11.2国内外研究现状及发展趋势11.3论文组织结构22 系统总体设计22.1系统总体设计策略32.2 H.323多媒体框架协议32.3图像采集传感器52.4视频通信系统功能设计53 硬件平台设计63.1硬件总体设计策略与处理器选型63.2 MEMORY结构及启动模式选择电路设计83.3音频采集和编解码模块接口电路设计93.4以太网卡接口电路设计93.5 LED指示灯接口电路设计103.6人机交互界面接口电路设计104 系统软件设计114.1软件开发平台114.2嵌入式程序设计架构124.3 uboot结构与启动流程分析134.4 LINUX内核配置与编译144.5 程序设计流程154.5.1 LED灯控制模块和按键控制模块程序设计164.5.2显示屏模块程序设计184.5.3音频处理模块程序设计184.5.4 视频处理模块程序设计194.5.5 网络传输模块程序设计215 系统调试与结果分析225.1调试方法225.2 系统调试过程235.3 调试结果分析25结束语27参考文献28附录29致谢30II1 引言视频通信系统是一种点到点的视频通信服务,它能利用传输信道双向的传输通话双方的实时图像和语音1。由于可视电话能具有面对面交流的效果,能实现人们通话时即能闻其声又能见其人的梦想,因此自从其概念提出就受到了普遍的关注和好评,人们纷纷对她寄予了厚望。但是经过了漫长的等待之后,可以视频的电话一直并没有得到广泛的应用,始终离普通用户很遥远。有一个很大的原因是收费太高和占用的带宽太大,但是随着互联网的普及,由于IP可视电话的费用相对非常低,因此正在得到大范围的普及,越来越多的民众正在享受这种便利。1.1视频通信系统的研究背景和意义随着人们生活水平的提高,以及对更高生活品质的追求,单一的语音通话已经不能满足人们的心理需求了。而且近些年来电话诈骗的案件屡有发生,在这一背景下,人们对能够进行语音和视频同步的通话系统产生了非常强烈的向往。基于互联网的多媒体技术,数字信号处理技术的提升以及高速宽带网络的实现,给图像、数据、语音等多媒体通讯技术带来了前所未有的发展前景2。这也使得可视电话在技术上取得了巨大的突破涌现出了一大批可视电话产品。有了可视频电话之后,人们的生活变得更加的丰富多彩了,可以随时与家人或者朋友进行视频对话,以缓解相思之苦。公司还可以用可视电话组建小型的远程视频会议网,特别是一些大型企业,利用可视电话技术可以方便不同地区的子公司员工之间的有效沟通,公司高层也可在视频会议期间,及时方便的了解到各地员工的精神面貌。同时可视电话系统还可以被公司用来远程谈判,和举行远程视频面试员工等,给企业的运作带来了非常大的方便。近些年快速发展起来的电视购物和网络购物,在给人们带来方便的同时也带来了许多的问题,比如,一些无良的卖家通常利用一些与实际商品不符合的或者经过美化过的图片来欺骗消费者,而消费者往往又因为无法看到实际的商品而上当,从而引起了许多的纠纷和不愉快。可视电话系统也可以在这一方面发挥巨大的作用,给远程验货提供了一个非常方便的渠道。1.2国内外研究现状及发展趋势早在上世纪70年代,国外就开始研究视频通信系统。视频通信系统经历了静态图像和动态图像发展的两个大的阶段,在世界上最早的视频通信系统是采用模拟的方式传输的,但由于在模拟微波(或者同轴电缆等)线路上传输的一路模拟视频信号所需带宽为6MHz,相当于960个电话线路的带宽,在运营成本上是非常昂贵的,因此当时并没有大规模的推广,经历过这么多年的发展,有许多的国外大型公司都在从事有关方面的研究,推出了许多的新技术,得到了广泛的应用。国内对视频通信技术的研究起步较晚一些,产品主要面向国内的企业,由于我国中小企业数量众多,所以视频会议系统在我国得到了非常迅速的发展,在我国也出现了一大批从事相关领域研究的企业。并拥有了许多自主知识产权的产品。目前国内的视频会议系统主要是两个标准:H.323和SIP。其中H.323由ITU-T(国际电信-电信标准化部门)指定:SIP(会话启动协议)有IETF(INTERNET工程任务组)的SIP工作组制定3,是一个面向Internet会议和电话的信令协议。目前商业化的视频会议大多遵循H.323标准。这是因为H.323标准的成熟性,有助于诸多软件供应商开发性能稳定的装备。纵观视频通信系统的发展趋势,主要有以下几个方面:(1)标准化。过去几十年间视频通信技术没有一个统一的标准,随着PSTN可视电话进网技术要求及测试方法的实施,未来视频通信技术将会有一个统一的国际标准。 (2)应用广泛化。作为视频通信产品,可以融合数码相机、监视器、摄像机甚至传真机等多种家电功能应用与社会安保、远程医疗等多个领域。 (3)无线化。无线技术的发展,特别是WLAN的普及,使得视频通信系统脱离网线的束缚,利用WIFI或者3G等模块,实现更加的便携。1.3论文组织结构第一节:引言。主要介绍本次设计的研究背景和意义、国内外研究现状和未来的发展趋势。第二节:系统总体设计。主要介绍了系统的总体设计策略,明确实现的具体功能。第三节:硬件平台设计。主要介绍了本次设计所采用的硬件平台,包括处理器的选型、FLASH、LCD显示屏、DM9000网卡模块等硬件模块。第四节:软件系统设计。主要介绍软件设计的流程、uboot的架构和启动流程以及系统各个模块的设计结果。第五节:系统调试与结果分析。主要介绍了调试所用到的工具及其用法。介绍了系统的调试过程和最终调试结果分析。2 系统总体设计在系统的总体设计部分首先要确定系统的总体设计策略,并通过总体设计策略设计系统总体运行框图。选取用于视频图像采集和音频数据采集的传感器,还要选择用于局域网内视频传输和音频传输的控制协议标准和结构框架,明确系统要实现的具体功能。2.1系统总体设计策略本系统的总体设计策略是通过USB摄像头采集视频图像信息,通过麦克风采集音频信息,利用网络协议进行传输采集到的视频和音频信息。通过显示屏显示视频信息,通过音响播放语音信息,通过串口接收PC端发送的控制命令。根据系统总体设计策略制定出系统总体设计框图如图1所示。 图1 系统总体设计框图2.2 H.323多媒体框架协议H.323协议是国际电信联盟(ITU)支持的一个标准协议栈,该协议栈是一个有机的整体,根据功能可以将其分为四类协议,也就是说该协议从系统的总体框架(H.323)、视频编解码(H.263)、音频编解码(H.723.1)、系统控制(H.245)、数据流的复用(H.225)等各方面做了比较详细的规定。为网络电话和可视电话会议系统的进一步发展和系统的兼容性提供了良好的条件。其中系统控制协议包括H.323、H.245、和H.225.0。Q.931和RTP/RTCP是H.225.0的主要组成部分。系统控制是H.323终端的核心。整个系统控制由H.245控制信道,H.225.0呼叫信令信道和RAS(注册、许可、状态)信道提供,音频编解码协议包括G.711协议、G.722、G.723.1、G.728、G.729等协议。编码器使用的音频标准必须由H.245协议协商确定。H.323终端应由对本身所具有的音频编解码能力进行非对称操作。如以G.711发送、以G.729接收。视频编解码协议主要包括H.261协议。和H.263协议。H.323系统中视频的功能是可选的。其标准是多媒体会议数据协议T.1204。H.323的协议簇示意如图2所示。 图2 H.323协议簇示意图从总体上来说,H.323是一个框架性建设协议,协议包含了终端设备控制、音频传输,视频传输和数据的传输、通讯控制、网络传输接口等方面的内容,还包括了组成多点会议的多点控制单元(MCU:Multi-Point Control Unit),多点控制器(MC:Multi-Point Controller包含在MCU中),多点处理器(MP:Multi-Point Process包含在MCU中),网关(GW:Gate-Way),以及H.323独有的网闸(GK:GateKeeper)设备等。其中终端,网关,多点控制单元(MCU)是H.323中的终端设备,是网络中的逻辑单元。H.323的结构体系如图3所示。图3 H.323结构体系2.3图像采集传感器现在市面上流行的图像采集传感器主要有两种,一种是CMOS摄像头,一种是CCD摄像头。两者都是利用感光二极管进行光电转换,将图像转换为数字量的数据,两者的主要差别是数字量数据的传送方式不同5。在CCD传感器中每一行中每一个像素的电荷数据都会一次传送到下一个像素中,由最低端部分输出。在经过传感器边缘的放大器进行放大输出;而在CMOS传感器中,每个像素都会连接一个放大器及A/D转换电弧,用类似聂存电路的方式将数据输出。造成两者差异的主要原因是CCD的特殊工艺可以保证数据在传送的时候不失真,因此各个像素的数据可汇聚至边缘再进行放大处理,而CMOS工艺的数据在传送距离较长的时候会产生噪声,因此必须先放大,再整合各个像素的数据。由于传送方式的不同,因此CCD与CMOS传感器在效能应用上也有诸多的差异,这些差异包括灵敏度的差异和成本的差异。由于在本系统的设计当中,对于摄像头的要求并不是特别高,因此,无论是CCD摄像头还是CMOS摄像头均能满足本设计的需求,因此,用这两种均可。在摄像头的接口方面,因为现在市面上最流行的接口就是USB接口,而且现在好多的设备和平台也都支持USB接口,包括本次设计采用的硬件平台也设计的有USB接口,所以,对于摄像头接口的选择,选用的是USB接口。2.4视频通信系统功能设计该视频通信系统以嵌入式技术和linux操作系统为基础进行设计。具体功能的设计如下:(1)具有良好的用户交互界面。(2)具有本地终端设备扫描功能、可获取在线设备的IP地址、昵称及状态等。其中状态分为:空闲、忙碌、离开和自定义等。(3)可以根据IP地址进行拨号、在拨号的时候需要考虑远端状态,如果远端设备为忙则无法进行拨号。(4)可以单独进行语音通信,也可以语音视频同时通信。(5)具有短信功能、短信无视对方的状态。收到短信的一方提示信息(包括发送方的IP地址、对方昵称等)并可通过指令查看短信。(6)所有来电、去电、短信往来,都需要保存到日志文件,保存时需要有时间、远端信息等一些提示信息,并能够随时查看。经过分析和对比之后,在本小节中完成了系统总体结构的设计,并绘制出了系统的总体运行框图,选取了通用的USB接口摄像头作为本系统的视频采集传感器,并选用了比较通用的H.323局域网视频通信架构协议作为本次设计的传输协议。并最终确定了系统要实现的具体功能。3 硬件平台设计3.1硬件总体设计策略与处理器选型本系统的设计包括音频与视频信号的采集、音频与视频信号的编码、音频与视频信号的传输,视频的显示、音频的播放、控制命令的输入等。因此在设计中,对于硬件处理器的选择,以及传输协议的制定都是围绕着如何能高效快速的采集到我们所需要的音频和视频信息。以及快速的传送给我们要通信的对方。基于这些要求最初制定了三种方案:(1)选择利用STM32作为核心处理器用NRF24L01作为传输手段来设计。(2)选择利用S3C2440芯片作为核心处理器用NRF24L01作为传输手段来设计。(3)选择利用S3C2440芯片作为核心处理器用TCP/IP网络作为传输手段来设计。在对这三种方案进行对比分析中发现,在第一种方案中,STM32处理器是市面上使用率非常高的一款处理器,性价比非常的高,在低功耗方面也做的非常的好,STM32的家族中也有几十种芯片可以供用户选择,例如STM32_F103ZET6是stm32家族中功能比较强大的一款CPU。片内集成了512KB FLASH、64KB RAM、1个usb 一个CAN、8个定时器、5个USART、3个ADC、两个ADC等6。资源非常的丰富。但是因为STM32系列芯片主要是应用在一些控制类场合。因此芯片的主频并不高,通常只有72MHz 而且对多媒体的支持不是太好。又因为片内的FLASH通常不超过1M、RAM空间也只有几十KB这就导致了STM32无法运行复杂的操作系统。而在该视频通信系统中,因为要用到多任务和多线程的操作,因此,如果不采用操作系统的话,这个设计将会变得非常的复杂,而且对于后续的开发也是非常不利的。因此方案一不是一个非常好的选择。方案二采用了三星公司ARM9内核的S3C2440芯片。S3C2440芯片的主要应用方向就是面向嵌入式的带操作系统的设计。对于多媒体的支持做的比较好。支持寻址片外1GB的地址空间,因此可以轻松的挂载几百兆的FLASH和几十兆的SDRAM。同时S3C2440的片内资源也非常的丰富主要有:4路带PWM功能的定时器、24个外部中断源,2个ADC模块、3路USB、支持一个LCD、NAND FLASH控制器、2路视频采集控制模块、1路音频采集控制模块。3路USB控制器等7。可以看出,S3C2440在片内不但有视频采集的控制模块,同时支持多个USB,这样便于我们利用市面上非常普遍的USB摄像头作为采集设备。S3C2440内部还有一个音频采集的控制接口,因此在采集音频和视频的时候不需要CPU的参与,只要配置好相应的控制模块就能完成采集,可以达到很高的采集速度。S3C2440的时钟最大可以达到533MHz、稳定工作频率可以达到405MHz。较大的FLASH和SDRAM使得S3C2440可以轻松的运行多种操作系统,基于操作系统开发出来的程序,相对较为简单,也方便以后的移植及后续的开发。因此处理器选择S3C2440。NRF24L01是一款工作在2.4G2.5GHz时间通用ISN频段的单片无线收发芯片,最大的数据传输率达到2Mbps。传输协议采用的是SPI协议,而S3C2440内部也有SPI控制模块,因此该芯片也可以采用,但是NRF24L01传输的距离比较近,而且容易受到障碍物的影响,所以,在短距离且无复杂障碍物的条件下可以采用NRF24L01来进行通信,但是如果要进行远距通信,NRF24L01就显得无能为力了。因此方案二也被否定。方案三和方案二同样采用S3C2440处理器芯片、经过对方案二的分析可以知道S3C2440非常的适合我们设计的要求。在传输方面采用了TCP/IP协议的以太网网络传输。特别是近几年以来以太网的发展非常的迅速,普及率也大大的提高,速度也非常的快,可以达到4Mbps甚至更高8。而且利用以太网可以容易的搭建局域网,或者是通过路由器来接到国际互联网中。这样就可以实现远距离的视频通信,因此综合比较发现采用网络的方式来传送视频信息是最合理的。因此在本次设计中采用方案三。S3C2440的结构框图如图4所示。 图4 S3C2440结构框图3.2 MEMORY结构及启动模式选择电路设计S3C2440芯片内部本身并没有存储空间,只有4K的SRAM而编写的程序通常要大于4K所以S3C2440要想正常工作必须接外部的存储设备9。在S3C2440中,主要的存储设备有四种,一种是内部的4K的SRAM,外部的SDRAM 、NOR FLASH 和NAND FLASH。其中SRAM、SDRAM属于RAM,主要用来存放程序运行过程中的各种数据,NOR FLASH 和NAND FLASH 属于ROM,主要用来存放我们编写的程序和一些文件。NOR FLASH 和NAND FLASH 作为两种存储设备类型,具有很大的差异。对于S3C2440来说,在芯片的内部有8个BLOCK可以供内存模块来进行挂载,每一个BLOCK的容量最大是128M有3根地址总线通过一个3-8译码器产生8个片选信号,来控制具体哪一个BLOCK使能,所以S3C2440对外最大能寻址1G的地址空间10。在我们本次设计采用的平台上,搭载有一块总容量为2M的NOR FLASH用于系统的启动。另外还搭载了一块容量为256M的NAND FLASH用于储存我们采用的操作系统内核,文件系统,和我们用户自己编写的一些应用程序。上电之后系统会先进行检测是从NAND FLASH还是从NOR FLASH启动10。当系统从NAND FLASH 中启动的时候,系统首先要把NAND FLASH 中的前4KBytes的内容复制到S3X2440内部的SRAM中,然后再由这4K的内容把NAND FLASH 中剩余的代码拷贝到SDRAM中继续执行。在CM1接地的情况下启动方式选择电路如图5所示。 图5 启动方式选择电路S3C2440关于MO、M1的电平与S3C2440从NAND FLASH 或者从NOR FLASH的启动方式选择如下表1所示。表1 启动方式选择MO0011M10101启动方式NAND FLASHNOR FLASHNOR FLASHNOR FLASH3.3音频采集和编解码模块接口电路设计 S3C2440内部集成了一个IIS音频数据接口。IIS是飞利浦和索尼等公司共同推出的一个音频数据接口标准,总共有四根线,分别是位时钟线、帧时钟线、串行数据输入线和串行数据输出线。在本系统中,把IIS接口与支持IIS接口的飞利浦公司生产的一块UDA1341TS音频编解码芯片相连接,得到音频的输入和输出通道,从而可以实现对音频信息的采集和播放。UDA1341TS的功能非常的强大,内部集成的有一个L3总线,可以设置采样的频率和工作模式,非常的适合应用在嵌入式的音频处理方面,它可以把数字信号转化为模拟信号,同样也能把立体声的模拟信号转化为数字信号,并可用AGC(自动增益可调)、PGA(可编程增益控制)对模拟信号进行处理,对于数字信号,该芯片提供DSP(数字音频处理)功能。对于UDA1341TS的L3总线11,它是该芯片工作于微控制器输入模式的时候使用的,它包括三根线,分别表示微处理器的接口数据线、接口模式线和接口时钟线,通过这个接口,微处理器能够方便的对UDA1341TS中的数字音频处理参数和系统控制参数进行配置,用户只需要按照UDA1341TS的数据手册进行相应的配置就能实现对音频信号的编码和解码的操作,使用起来非常的简单和方便,UDA1314TS与处理器的接口也是非常的简单,总共需要8根连接线,包括IIS音频接口线4根,L3总线3根和一个系统时钟线。UDA1341TS音频编解码模块与S3C2440的接口电路如图6所示。图6 UDA1341TS音频编解码模块与S3C2440接口3.4以太网卡接口电路设计S3C2440本身并没有网络接口,但是可以通过外部扩展网络接口的方式来连接到互联网中。这里采用的网络接口芯片是DM9000E的100M网络接口。DM9000是一款完全集成的单芯片快速以太网MAC控制器,它有一个一般处理接口,一个10M/100M自适应的接口,DM9000支持8位,16位和32位接口访问,内部存储器,以支持不同的处理器。DM9000物理协议层接口完全支持使用10MBps12下3类、4类、5类非屏蔽双绞线和100MBps下5类非屏蔽双绞线,DM9000网卡与S3C2440接口电路如图7所示。 图7 DM9000网卡与S3C2440接口电路3.5 LED指示灯接口电路设计当系统运行的时候,如果有其他的设备终端呼叫本地设备终端的时候,在本地终端会有LED灯闪烁的提示方式,当有呼叫请求的时候对应的LED灯会以1s的频率进行不停的闪烁,当用户响应相应请求之后LED灯不再闪烁。LED灯接口电路如图8所示。图8 LED灯接口电路从图中可以看出,这四个LED灯分别与S3C2440的GPB5、GPB6、GPB7和GPB8相连接,当给相应的引脚赋值低电平的时候相应的LED灯就会点亮。3.6人机交互界面接口电路设计因为要显示实时视频信息,所以本系统还需要用到一个显示屏。有效像素为480*272,屏幕采用的是RGB565的显示方式,该显示屏共有24根数据线,可以直接被单片机或者其他处理器直接驱动13TFT显示屏与中央处理器的接口电路如图9所示。 图9 TFT显示屏接口电路本小节内容主要介绍了多级视频通信系统运行所依赖的硬件平台。其中包括硬件平台的总体设计方案的确定,核心处理器的选型,核心处理器S3C2440的内存分布情况,以及启动方式的选择电路,介绍了音频采集要用到的IIS协议接口,介绍了音频的编解码方式,和传输数据时需要用到的DM9000网络模块,介绍了LED指示灯的控制电路,最后还介绍了用于图像显示的TFT显示屏因为S3C2440的内存方面特别是NAND FLASH 和NOR FLASH 方面的东西比较重要,而且容易弄混淆,所以用了较大篇幅的介绍。4 系统软件设计4.1软件开发平台在本系统中用到的软件设计平台有多种,主要有Vmware Workstation、Source Insight,Secure CRT,交叉编译工具链等。其中Vmware Workstation是windows环境下运行的一款虚拟机软件,可以模拟电脑的硬件平台14,因为在本设计中要用到LINUX环境,所以要用Wmware Workstatin 模拟一个LINUX运行环境,然后在这个模拟的运行环境中安装LINXU操作系统,这样就可以在一台电脑上同时运行两个操作系统。在本设计中,我们用到的LINUX 操作系统版本是centos 5.6的版本。Source insight 是一个面向项目开发的程序编辑器和代码浏览器,拥有内置的对C/C+和JAVA等程序的分析。Source insight能分析源代码并在工作的同时动态维护自己的符号数据库,并自动为程序员显示有用的上下文信息15,source insight不仅仅是一个强大的程序编辑器,还能提供一种最快速的对源代码的导航和任何程序编辑器的原信息。这对于编写,调试,或者阅读大型代码的时候非常的方便。SecureCRT 是一款支持SSH的终端仿真程序,SecureCRT支持SSH,同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括WINDOWS、UNIX和VMS的理想工具。通过使用内含的命令可以进行加密文件的传输。在该项目中用SecureCRT主要是帮助用户登陆硬件平台上的LINUX系统,然后能够通过指令的方式来控制或者调试编写的程序是否正确,在整个程序的开发过程中起到了非常重要的作用。交叉编译工具链一般由编译器,连接器,解释器和调试器组成16,主要是为了处理跨平台的程序代码,例如在A机器上编译生成可执行文件,在B机器上直接运行。A、B两台机器有不同的机器指令,这时候就要用到交叉编译工具链。每次执行工具链软件时通过带有不同的参数,可以实现编译,链接、处理或者调试等不同的功能。从工具链的组成上来说它一般由多个程序构成,分别对应着各个功能。4.2嵌入式程序设计架构在嵌入式程序开发的过程中,和在单片机上开发程序有和很大的不同,在单片机上开发程序主要是基于寄存器的一些操作,通过向相关的寄存器赋值高电平或者低电平,或者从相关的寄存器读取高电平或者低电平来达到控制的目的。也就是说只要能够看懂时序图基本上就可以按照时序图的要求来配置相应的寄存器即可,但是在嵌入式软件的开发过程中一般不会这么做,在嵌入式的开发中,特别是针对带有操作系统的开发,流程要相对繁琐一些。在开发中,首先是uboot(bootloader)的开发主要是初始化芯片,加载操作系统内核启动,然后是操作系统内核的开发,在操作系统内核开发的时候主要是添加编译驱动模块,和添加我们自己的驱动程序,然后是文件系统的搭建,最后是编写用户的应用程序,整个嵌入式系统架构如图10所示。 图10 嵌入式系统架构带有操作系统的嵌入式系统在启动的时候,首先是对应的bootloader先进行启动然后由bootloader程序对处理器进行初始化,包括异常向量表初始化,时钟初始化,串口初始化,MMU初始化,中断初始化等,并在初始化完成之后加载操作系统内核的启动,在linux内核启动完成之后是加载文件系统的启动16,在这里特别说明,文件系统在linux中占有非常大的作用,也是linux比window应用程序开发方便的原因,也是相比于裸机开发程序真正的优势所在,因为在linux中,各个硬件设备其实就是一个个的设备文件,对所有设备或者模块的操作其实都在在对文件进行读写操作,也就是说操作所有的模块,用到的函数都只有4个简单的函数,一旦把设备文件的驱动完成之后并编译进内核,或者生成内核模块之后,在文件系统中,就会出现对应设备的驱动文件,这些驱动文件就是对硬件的一个抽象,用户操作硬件设备就像操作文件一样的方便,不用像单片机那样每次都去配置非常复杂的时序图或者是非常多的寄存器。在linux平台上我们需要做的就是打开设备文件,然后从文件里面读数据或者向文件里面写数据,就拿视频采集和播放模块的驱动举例,当我们把驱动封装进内核之后系统的/dev目录之下就会出现一个设备文件/video0当我们从/video0这个文件中读数据的时候,实际上就是在采集视频的信息,所以说非常的方便。文件系统启动之后,然后就是启动用户编写的程序了,当然,用户程序也可以设置为开机自动启动,或者是编译进内核。整个嵌入式系统启动流程如图11所示。 图11嵌入式系统启动流程4.3 uboot结构与启动流程分析uboot是德国的一个组织开发的用于支持多种嵌入式cpu的bootloader 程序,不仅仅支持ARM处理器,还支持MIPS 、POWERPC 等多种微处理器架构17。uboot其实就是一段比较复杂的单片机代码用来作为系统内核的引导程序,它的主要任务是初始化硬件设备,将系统的软件和硬件环境带到一个合适的地方,即给内核的启动创造一个环境,然后再将内核从初始位置(一般为NAND FLASH)拷贝到SDRAM中,然后跳转到内核的入口地址去执行,这样就完成了系统的启动引导。对于uboot的启动一般是从对应的board目录下对应的开发板目录下的链接器脚本即*.lds文件开始的,这个文件通常只有几十行代码,主要是确定了uboot在运行时候的各个段包括代码段,字符常量段,数据段,和bss段的运行地址位置,还确定了再uboot中几百个文件的先后执行顺序,这个先后顺序通常是通过分配链接地址的先后顺序来确定,在一般的情况下都是先由cpu目录下的那个对应的start.s程序先执行。uboot一般放在内存的初始地址,在S3C2440中内存的起始地址是0x00000000的位置。这样就能保证上电的时候执行的第一条指令就是uboot 中的内容。整个uboot的代码程序可以分为两个大的部分。第一个部分是用汇编语言代码部分,运行在SRAM中主要包括对S3C2440的核心初始化,以及代码的拷贝,c语言运行环境的搭建,第二部分是运行在SDRAM上的主要是c语言的实现部分,实现对各个模块的初始化。整个uboot的启动流程包括:(1)核心初始化。主要包括对时钟的配置,关闭看门狗,关闭MMU。(2)C语言开发环境的搭建。这部分包括对堆栈进行初始化.data段的拷贝.bss段的清零。(3)拷贝NAND FLASH 中的代码到SDRAM。把NAND FLASH前4K的代码拷贝到SDRAM中。(4)硬件模块初始化。包括对整个硬件平台的各个模块进行初始化配置,包括串口,网络,显示屏,USB等。(5)拷贝代码到SDRAM。把NAND FLASH中剩下的代码拷贝到SDRAM中相应位置。(6)跳转到内核代码的入口处。(7)完成对内核的启动引导,启动内核。4.4 LINUX内核配置与编译LINUX是最受欢迎的自由电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类UNIX操作系统。Linux内核结构分为以下几个部分:(1)进程调度。控制进程对CPU的访问。(2)内存管理。允许多个进程安全的共享内存区域。(3)虚拟文件系统。隐藏了各种硬件的具体细节,为所有的设备提供一个统一的接口,又分为逻辑文件系统和设备驱动程序。(4)网络接口。LINUX内核提供了对各种网络标准的存取和各种网络硬件的支持。(5)进程间通讯。支持进程间的各种通信机制。对linux内核的配置主要是分为三部分,主要是:(1)Makefile配置。分布在Linux内核源代码根目录及各层目录中,定义了内核的编译规则。(2)配置文件。给用户提供配置选择的功能。通常是在同目录下的Kconfig文件,通过对其配置,就可以控制模块的编译方式。(3)配置工具。包括配置命令解释器等。Linux内核配置选项的命令是make config 和make menuconfig 其中make config是命令形式的配置方式,即一个命令代表一个配置选项,make menuconfig是图形化的配置界面,在linux系统的控制终端中输入命令make menuconfig得到LINUX内核配置图如下图12所示。 图12 LINUX内核配置图从图12中可以看出每一个模块前面都有一个配置项,共有3中选择,即空,*和M,当配置选项设置成空的时候表示该模块不参加编译,当配置选项设置成*的时候表示该模块会在内核编译的时候直接编译进内核。当配置成M的时候表示配置选择会在内核编译的时候编译成内核模块,需要的时候进行挂载,当配置完成之后执行命令make zImage 即可对内核进行编译生成最终的内核文件。4.5 程序设计流程在程序设计的过程中先进行功能的需求分析,在这个阶段主要明确程序所要实现的具体功能,制定出详细的计划。然后是确定设计的思想,和具体的实现方法,包括设计软件的所用到的算法,用到的数据结构类型和一些协议的定义。在接下来进行软件的结构设计和模块设计,这个过程主要是对任务的分解,确定出要实现的各个模块之间的关系。最后是进行程序的联调,把之前编写好的各个模块放到一起进行综合的调试,以及对于一些BUG的修改,这个过程比较漫长,也是最需要耐心的时候。整个设计从主函数开始进行设计,把要实现的功能通过一个个的函数写出来,根据这些在主函数中调用的程序,再把需要实现的功能分成各个小的模块,然后一个模块一个模块的逐步完成,最后再组合到一起进行调试,并最终完成整个开发的流程。如在本次软件的设计中通过对功能的分析知道本系统主要是实现多个终端之间的视频信息通信和语音通信,因此应当包含的模块有,音频处理模块,视频处理模块,传输模块,命令输入模块,显示模块,信息提示模块等。根据这些功能的需求然后把程序分成相应的一些小的模块,这些模块都在主函数中以此调用,在这里,程序分块的主要方法采用的是一个模块对应一个.h和一个.c文件,供其他模块调用的函数在对应的.h文件中进行声明,只供本模块调用的则不需要进行声明。系统上电之后先进行LED指示灯和按键控制模块初始化,然后把电话和消息记录清零,接着对本地设备终端进行初始化设置,然后进入死循环等待用户输入指令。由此得到主程序流程如图13所示。图13 主程序流程图4.5.1 LED灯控制模块和按键控制模块程序设计LED灯在本系统中主要是起到简单的通信请求提示作用,上电之后先对LED灯和按键进行初始化,即关闭所有的指示灯,把按键的检测方式设置为外部中断触发方式,然后led灯检测函数,和按键检测函数分别进入循环判断是否有通信请求到来。当有用户向本终端请求通信的时候,LED1会以1s为周期进行不停的闪烁,当用户响应相应的请求之后,或者是拒绝请求之后,LED灯不再闪烁。LED灯控制流程如图14所示。图14 led灯控制流程本系统中用户可以通过四个功能按键向系统发送不同的控制命令。规定当按键1被按下时表示向IP地址为192.168.1.6的用户请求视频通信,按键2按下表示请求语音通话,按键3按下表示接受对方的视频通信请求,按键4按下去表示挂断当前正在进行的通信。按键的控制流程如图15所示。 图15 按键控制流程4.5.2显示屏模块程序设计显示屏FrameBuffer驱动是linux内核当中的一种驱动程序接口,linux是工作在保护模式下的,显示屏的驱动是linux内核中的一个设备文件,属于linxu的内核态,所以用户程序不能直接来进行对显示屏的写操作。在linux内核中抽象出来了FrameBuffer这个设备来供用户态进程实现直接写屏。FramerBuffer机制模仿的是显卡的功能,将显示屏的硬件接口抽象掉,可以通过对FramerBuffer的读写直接对显示屏进行操作,用户可以将FramerBuffer看作是显示屏的一个抽象,把内核空间中的显示屏抽象到用户态的一块内存,这个内存的大小由编程的时候进行配置,一般配置成与实际显示屏大小相同。例如我们采用的是4.3寸的显示屏,分辨率为:480*272 每一个像素点的大小是2个字节,所以在进行映像的时候我们选择映像空间的大小就是 480*272*2 映像完成之后对这块内存操作就相当于在操作我们的显示屏了。操作完成之后执行close就可以关闭显示设备。4.5.3音频处理模块程序设计对于音频的处理模块的设计策略是因为用到了音频的处理芯片UDA1314它能够完成对于音频的编码和解码,传输的时候用到的是双绞网线,传输的速度理论上能达到100Mbps因此在传输的时候不对音频进行压缩,音频采集与播放控制流程如图16所示。图16 音频采集与播放控制流程其中打开音频设备用到的就是open函数,设置音频的采样速率,选择声道等用的是IOCTL函数给音频设备发送相应的命令。4.5.4 视频处理模块程序设计相比于音频处理部分,视频处理部分则相对比较复杂,但整体思路和音频处理模块的思路类似,也是通过网络协议绑定一个计算机端口作为视频传输的通道,然后当视频控制标志位为1的时候一边从对应的端口读信息并发送到显示屏显示,另一边通过约定好的端口向对方发送采集到的视频信息。整个视频采集与播放控制流程如图17所示。图17 视频采集与播放控制流程在这个模块中frambuffer主要是用来初始化显示屏设备,前面已经进行过介绍了,这里就不再进行专门的介绍了,v4l2是用于控制usb视频采集的驱动程序架构,采用流水线的方法,操作更简单直观,基本遵循打开视频设备,设置格式,处理数据,关闭设备,操作命令主要是通过IOCTL函数来实现利用V4l2进行视频采集的操作主要分为以下几个步骤:(1)打开视频设备。在v4l2驱动程序架构中,视频设备对应的驱动设备文件是video0,可以用open来打开这个设备问文件,在打开的时候可以设定本次的打开方式,比如,是否可读,或者是否可写,还可以设置以阻塞或者非阻塞的方式打开设备,如果使用非阻塞的打开方式,即使尚未接收到信息,驱动依旧会把缓存里的东西返回给应用程序15。(2)设定属性及采集方式。在打开视频设备之后,可以进一步设置该视频设备的属性,例如裁剪,缩放等。这一步也可以不用,一般是用ioctl函数来对设备的I/O通道进行管理的。在这里主要用到的一个指令是 VIDIOC_QUERYCAP来实现。(3)检测当前视频设备所支持的标准。一般在亚洲,用的都是PAL(720*576)制式的摄像头,而欧洲一般使用的是NTSC(720*480),使用VIDIOC_QUERYSTD来检测。(4)设置视频的捕获格式。当检测完视频设备支持的标准之后还需要设定视频的捕获格式,即捕获的视频信息的制式,包括分辨率,以及要存储的类型,在设计中,因为我们的ARM开发板的板子的显示屏支持的是RGB16的显示方式,所以我们采用的是320*240的分辨率,设置要存储的方式为RJB32格式的图像信息。(5)申请缓存空间。当采集的模式设置完成之后,就可以为捕获的视频分配内存空间了。一般申请的内存空间为15张图片的大小。当申请完缓存空间之后,用户还不能直接对这些内存内进行操作,原因是因为这些分配的内存是存放在内核态的,而用户能操作的只能是用户空间的地址,因此还要把内核中的地址映射到用户空间中。内存映射示意如图18所示。图18 内存映射示意图只有经过地址映射之后,然后用户才能够对申请的这些空间进行读写操作了,也即可以对采集的视频进行操作了。(6)处理采集到的数据。一般情况下采集到的图片的保存方式为保存为jpeg的图片格式,采集视频就相当于在捕获一批连续的图片,而播放视频就相当于在向显示屏连续的显示多张图片。V4L2对采集到的图像缓存信息采用FIFO也即
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 财务合规性审查顾问合同
- 海外劳务派遣人员合同责任与权益保障书
- 智慧城市财务合同城市规划与基础设施建设合同
- 2025年综合类-保险公估人考试-保险的基本原则历年真题摘选带答案(5卷单选题百道集合)
- 2025年综合类-会计-水肿的临床用药历年真题摘选带答案(5卷单选100题合辑)
- 2025年综合类-仪表工考试-高级仪表工历年真题摘选带答案(5卷单选100题合辑)
- 2025年综合类-乡村医生-乡村医生综合练习历年真题摘选带答案(5卷单选题百道集合)
- 2025年综合类-临床医学检验技术(士)-临床免疫学和免疫学检验综合练习历年真题摘选带答案(5卷单选100题合辑)
- 2025年综合类-中西医结合外科学-第十五单元胃与十二指肠溃疡的外科治疗历年真题摘选带答案(5卷单选题百道集合)
- 山东天使基金管理办法
- 珠海市斗门区招聘公办中小学教师考试历年真题
- DL-T 748.8-2021 火力发电厂锅炉机组检修导则 第8部分:空气预热器检修
- GB/T 9074.1-2018螺栓或螺钉和平垫圈组合件
- GB/T 7631.5-1989润滑剂和有关产品(L类)的分类第5部分:M组(金属加工)
- GB/T 15305.1-2005涂附磨具砂页
- GB 7793-1987中小学校教室采光和照明卫生标准
- 质量样板引路方案计划
- 测量误差及数据处理课件
- 中压交联电缆电缆正、负和零序计算
- 优衣库商业模式分析
- 调度系统介绍课件
评论
0/150
提交评论