你张华
(深圳市华海联能科技有限公司,广东深圳518100)
:ZigBee是一种基于IEEE802.15.4标准的低成本、低功耗无线网络技术。通过ZigBee协议栈,每个ZigBee节点可以形成节点容量大、通信范围广的ZigBee网络。H.264是当今最好的视频压缩标准。它具有码流速度低、图像质量高、容错能力强等优点。利用ZigBee网络传输H.264视频流是实现无线视频传输系统的良好方案。通过一个具体的开发实例,从硬件和软件两个方面讨论了该方案的设计与实现。
:ZigBee;H.264;无线视频传输系统
:TP393。0文件识别码:adoi:10.19358/j.issn1674-7720.2016.24.016
参考格式:YouNicholasTse基于ZigBee和H.264的无线视频传输系统的设计与实现[J]微机与应用,2016,35(24):54-56,60
0导言
ZigBee是一种基于IEEE802.15.4标准[1]的低成本、低功耗、大网络容量、宽通信范围的无线网络技术,可支持多达65000个节点。ZigBee有三个工作频段,分别为868MHz、915MHz和2.4GHz。在2.4GHz下工作时,其最高传输速率为250kb/s。在存储容量尽可能小的情况下,获得良好的图像质量和低带宽的快速图像传输已成为视频压缩的两大难题。因此,ISO/IEC和ITUt联合制定了新一代视频压缩标准H.264[3]。H264具有图像质量好、连续性强、动态图像质量高、压缩比高、码流可调等优点。本文从硬件和软件两个方面讨论了使用带有H.264硬件编解码器的i.MX27、ARM9CPU内核和带有ZigBee协议栈的微处理器CC2430构建无线视频传输系统。
1.系统总体设计
系统的总体设计如图1所示。整个ZigBee网络由一个ZigBee协调员、多个ZigBee路由器和ZigBee无线视频终端组成[4]。由于CC2430集成了2.4GHz直扩射频收发器和MCU控制器,ZigBee的设备可以通过CC2430单片机实现。ZigBee协调器用于建立初始ZigBee网络,并为每个加入网络的ZigBee路由器和ZigBee无线视频终端分配16位网络短地址。ZigBee在ZigBee的网络中扮演着无线数据中继的角色。ZigBee无线视频终端可以根据分配的16位网络短地址相互进行双向无线数据通信[5]。i、Mx27采用Linux操作系统,在Linux下对采集的图像进行硬件压缩密码,ZigBee的无线视频终端之间的数据以H.264码流的形式传输无线传输。
2.ZigBee无线视频终端的硬件设计
考虑到H.264软件编解码器需要消耗大量的CPU资源,本方案选择了采用H.264硬件编解码器和ARM9CPU内核的系统飞思卡尔微处理器i.MX27。一方面,ARM9CPU内核负责将摄像头采集的YUV图像数据发送到H.264硬件编码器,并通过ZigBee微处理器CC2430无线发送硬件编码器输出的H.264码流。另一方面,通过CC2430接收H.264码流并发送到H.264硬件解码器,然后硬件解码器输出的YUV图像数据显示在LCD上。ZigBee微处理器CC2430负责发送和接收H.264码流,并通过SPI接口与i.MX27通信。ZigBee无线视频终端的硬件组成如图2所示。
为了实现图像采集,该方案采用带有OV9650芯片的CMOS摄像头,采集的图像通过i.MX27的CSI接口传输到H.264硬件编码器。对于图像显示,选择群创at070tn83V.1(16∶9800)×480)7英寸TFTLCD。屏幕支持18位数字RGB接口,格式为rgb666,即每个像素由6位红色、6位绿色和6位蓝色组成,形成18位数据。屏幕主要通过18条数据线(LD[17:0])、帧同步(Vsync)、线同步(hsysnc)和时钟(LSCLK)与i.MX27的LCDC控制器相连。采用三星k9f2g08r0aNAND闪存芯片(256M×8位)存储系统的引导加载程序(RedBoot)、Linux内核、文件系统和视频程序。它由来自英飞凌科技(InfineonTechnologies)的两块hyb18m512160af7.5芯片(4组)组成,构成128MB的DDR,主要用于加载Linux操作系统和运行视频编解码程序。
设计了一个10针JTAG接口,用于刻录系统的引导加载程序、Linux内核和文件系统。MAX3232用于形成UART接口,用于将调试信息返回minicom显示。由于处理器内核需要1.8V和1.5V电压,而存储器和外部I/O需要3.3V电压,整个系统的输入电压设置为5V,通过DC-DC转换器可以完成到3.3V、1.8V和1.5V的电压转换。采用26MHz有源晶体振荡器。在i.MX27芯片中,通过PLL电路倍频后,晶体振荡器可以达到400MHz。
ZigBee的通信模块以Chipcon的CC2430微处理器为核心。将CC2430的SPI接口与i.MX27的SPI接口连接,H.264码流通过SPI接口传输。
3.ZigBee无线视频终端软件设计
3.1图像采集
CSI(CMOS传感器接口)是i.MX27中的CMOS图像传感器接口。图像采集可以在Linux下通过CSI接口、图像传感器芯片OV9650和视频设备的内核驱动程序v4l2实现,因此需要加载CSI驱动程序mx27_CSI。Ko,OV9650驱动OV9650_u凸轮。KO和v4l2驱动器mx27_v4l2_U捕获。这样,应用程序可以在打开v4l2后收集图像数据。
3.2图像显示
液晶显示控制器是i.MX27中的液晶显示控制器。图像显示可以通过MaHuateng接口进行控制,因此需要加载MaHuateng驱动程序mxcfb_uuuModeDB。KO和mxcfbKO以及帧缓冲驱动器。使用帧缓冲设备时,显示缓冲区可以直接映射到Linux用户空间。这样,在Linux用户空间中,应用程序可以根据预设的R、G、b位和偏移量,将MMAP映射后的图像数据直接写入显示缓冲区,从而实现图像的显示。
3.3H。264编解码器
Vpu(视频处理单元)是i.MX27中的一个视频处理单元,主要用于H.264BP、MPEG-4SP和H.263P3格式的硬件编码和解码[6]。为了使用户能够使用Vpu的硬件编解码器,飞思卡尔在Linux下提供了一套基于i.MX27Vpu的库文件。无论是编码还是解码,都必须首先调用Vpu。init函数初始化Vpu硬件。
对于H.264编码,需要执行以下步骤:(1)调用Vpu_uuOpen函数初始化Vpu编码器;(2)调用Vpu_uu;Encgetinitialinfo函数获取编码初始化信息;(3)调用Vpu_uEncRegisterFrameBuffer函数注册编码的帧缓冲区;(4)调用Vpu_uu函数encstartoneframe将编码帧缓冲区中的每一帧图像数据发送到Vpu编码器进行编码,并将编码后的H.264码流存储到指定的比特流缓冲区中;(5)当您需要结束编码操作时,只需调用Vpu_uu;Encclose函数。H.264编码的执行流程如图3所示。
对于H.264解码,需要执行以下步骤:(1)调用Vpu_uOpen函数初始化Vpu解码器;(2)调用Vpu_u,DecketInitialInfo函数获取解码初始化信息;(3)调用Vpu_u。deregisterFrameBuffer函数注册已解码的帧缓冲区;(4)为了获得要解码的H.264码流,Vpu可以被称为uGetBitStreamBuffer函数;(5)调用Vpu_uu,decstartoneframe函数将H.264码流发送到Vpu解码器进行解码,并将获得的图像数据存储在解码后的帧缓冲器中;(6)当需要结束解码操作时,只需调用Vpu_uuClose函数。H.264解码的执行流程如图4所示。
3.4H。264无线传输
要以无线方式接收和发送H.264代码流,需要加载i.mx27_uSPI的SPI接口驱动程序mx27。ko.通过SPI接口,i.MX27可以将H.264码流[7]传输到CC2430并无线发送,或者将CC2430无线接收到的H.264码流输入i.MX27。
由于ZigBee工作在2.4GHz频段,传输速度为250kb/s,物理层一次最多只能传输127b数据包。除去物理层和MAC层的网络头,ZigBee每次传输的实际数据只有89B[8]。由于ZigBee的网络层无法对H.264码流进行分段和重组,且传输的H.264码流远大于89B,因此必须在ZigBee协议的应用层将H.264码流划分为等于或小于89B的数据包进行传输。在接收端,这些分解的数据包需要重新组织以形成正确的H.264码流。由于在无线数据传输过程中分割的数据包可能会丢失,这将直接影响接收机的数据重组,因此有必要建立重传机制来重传在数据传输过程中丢失的数据包。数据包传输的格式如下所示。
在发送数据之前,执行握手协议[9]。张毅发送的第一个数据包的数据包号被划分为几个由张毅发送的数据包。数字字段定义为4b,可以对4GB的数据进行编号,以确保重复编号时,具有旧编号的数据包已经在网络中消失。
ZigBee接收端收到请求包后,返回确认包,表示ZigBee接收端接受ZigBee发送端的请求。在收到确认包后,ZigBee还返回一个确认包,这样握手协议就完成了。下一步是实际的数据通信。握手协议的执行流程如图5所示。
握手协议完成后,ZigBee的接收器将根据分割的数据包数量分配接收缓冲区的大小。根据数据包的编号将每个接收到的数据包存储在接收缓冲器的相应位置,并将该位置的标志设置为1,表示已接收到相应的数据包。如果数据分组在无线传输超时中的对应位置为0,并且数据分组在无线传输超时中的对应位置指示在接收的分组中没有对应位置。ZigBee的接收端需要向ZigBee的发送端发送重发包,请求重发丢失的数据包。该传输协议规定,如果在连续发送3次重传数据包后,计时器连续超时4次,则表示传输失败。ZigBee的接收器将发送一个重启包,并命令ZigBee的发送者发送下一帧H.264数据。协议重传的执行流程如图6所示。
4系统测试
为了测试ZigBee的发送方是否成功地将每帧H.264数据传输到ZigBee的接收器,现在ZigBee的发送方和接收器之间放置了一到四个ZigBee路由器,以测试100帧H.264数据的传输。H.264图像无线传输测试结果如表1所示。
可以看出,图像从ZigBee的发送方传递到ZigBee的接收方的路由器越少,传输成功率越高。在实际测试中,每秒可传输约14帧H.264图像数据,基本满足无线视频传输的要求。
5结论
本文详细介绍了基于ZigBee和H.264的无线视频传输系统的设计与实现。本文设计的方案不仅可以用于无线数字视频传输,还可以用于无线数字音频传输,具有很强的通用性。
参考
[1)BARONTIP,PillaiP,Coo.V.无线传感器网络:关于最新技术和802.15.4和ZigBee标准的调查[D]比萨,意大利:比萨大学,2006。
[2]奇普康。ZigBee,用户指南[Z]2006
[3]联合视频团队。国际电联草案T联合视频规范(ITU)国际标准建议和最终草案TRec.H.264/ISO/IEC1449610AVC)[Z]。ISO/IECMPEG和ITU联合视频团队TVCEG,JVTG0502003。
[4]成锐,李静,雷明基于ZigBee的无线传感器网络设计方案[J].电子元器件应用,2007,9(12):5458
[5)王振玲基于ZigBee无线传感器网络监控系统的设计与实现[D]新乡:河南师范大学,2012
[6]KANGHY,JEONGKA,BAEETCJY.MPEG4AVC/H.264解码器,具有可扩展总线结构和双内存控制器[C]。2004年电路与系统国际研讨会论文集,ISCAS2004,2004,2(2):145148
[7]ITUT.通用视听服务的高级视频编码[R]。ITUTH.264推荐。2005年3月。
[8、圣祥昂基于RTP的H.264视频传输系统研究[D]西安:西安电子科技大学,2006
[9、H264视频流实时传输系统的肖娅研究与应用[D]:北京:北京邮电大学,2008
最新评论