基于TMS320C6657的嵌入式Web视频服务器设计
闫渠成,李勇
(上海海事大学 物流工程学院,上海 201306)
摘要 :提出了基于TMS320C6657的嵌入式Web视频服务器设计方案。设计利用CGI接口实现浏览器端与服务器端的数据交互以及底层硬件的控制,采用H.264视频编码压缩视频,采用RTP/RTCP协议实现实时视频传输。实验证明,基于TMS320C6657的嵌入式Web服务器性能可靠。
0引言
在工业探测系统、工业控制、智能仪器、安全防卫系统等领域中的嵌入式控制系统,只要实现了与网络的接入技术,无论何时何地,都可以实现开放的、基于网络的、低成本的远程控制[1]。将嵌入式技术与 Web 技术联合已经成为嵌入式领域的研究热点[2]。
本文提出了一种基于TMS320C6657的以双核DSP为核心搭建视频服务器平台的方案,满足工业现场实时传输视频和远程控制的需求。TMS320C6657是定点/浮点数字信号处理器(DSP),基于KeyStone多核架构,内核速度高达1.25 GHz,集成了C66X内核、存储器子系统、外设和加速器在内的各种子系统。其中千兆以太网子系统具有一个SGMII端口,支持10/100/1 000 Mb/s操作[3]。内置SYS/BIOS操作系统,容易实现TCP/IP协议,降低了开发难度,缩短了开发周期。
1服务器硬件结构
TMS320C6657外设千兆以太网接口和Flash存储模块。系统结构如图1所示。本设计中将TMS320C6657设计为嵌入式Web服务器,通过以太网接口接入上位机所在的同一个局域网中。系统运行程序存入Flash+存储模块,系统上电后写入片上SRAM以及片外DDR3运行程序。系统通过SRIO互联方式,将经过FPGA预处理的视频码流送到DSP中并进行视频H.264编码,压缩后的视频码流将以RTP/RTCP协议把数据打包传输给上位机。上位机可以在网页浏览器上通过安装插件对压缩后的视频码流进行解码和远程控制Web服务器改变视频处理参数,实现Web视频服务器的功能。
2服务器系统软件设计
TMS320C6657内置SYS/BIOS操作系统,利用SYS/BIOS操作系统和TI的网络开发包NDK即可实现TCP/IP协议栈的配置、Web服务器搭建、多线程任务管理和用户交互界面设计。通过H.264编码器完成视频编码,由RTP/RTCP协议完成视频流的实时传输,实现一个完整的嵌入式Web服务器设计。
2.1Web服务器搭建
图2嵌入式Web视频服务器软件线程结构图搭建嵌入式Web服务器必须先配置SYS/BIOS和NDK的相关基础模块,并进行必要的参数设置。
(1)添加BIOS操作系统模块、NDK模块、EMAC模块、IP模块、TCP模块、HTTP模块以及添加启动函数。
(2)配置IP地址和相关信息,创建静态线程。
(3)指定相应的钩子函数主体。
根据配置文件,只要添加了NDK相应的模块,就会执行初始化网络环境并开启堆栈线程,通过CfgNew创建一个新的配置。一旦创建完毕就会执行一个钩子函数,通常用这个函数来将浏览器的网页以及CGI接口加入到程序中。堆栈线程还会根据配置文件将具体配置数据自动生成并添加到CfgNew创造的配置文件中。
随后线程会调用NC_NetStart程序,该程序会在适当的时候调用相应钩子函数NetworkOpen,其作用是加入后台程序,实现网络服务。当程序监听到IP地址发生变化时,线程会调用NetworkIPaddr函数。当检测收发性能时,TCP、UDP收发错误会调用NetworkClose关闭开启的后台线程并释放相应空间。调用Cfgfree释放CfgNew创建的配置,最后关闭整个网络线程。
2.2视频编码及实时传输设计
目前主流的视频格式是1 080 p格式,在目前网络环境下,原码视频传输速度是达不到实时性要求的。采用H.264编码可以缩小视频空间,提高传输效率。H.264标准汲取以往标准中的优点,编码效率与过去相比最多可节省50%的码率,存储需求大大降低[4]。H.264获得优越性能的代价是计算复杂度的大幅增加[5]。为了满足灵活性和适应性要求,H.264设计包含视频编码层(VCL)和网络抽象层(NAL)两层[6]。VCL负责压缩内容,NAL负责传输格式化。
视频源码从FPGA收到并放入一个动态创建的缓冲中,通过TI工具包中的H.264编码器进行编码。先创建配置编码器,并在配置完成后开始编码。编码后经压缩的码流由RTP模块进行打包发送。
2.3用户交互界面设计
NDK操作系统库中具有嵌入式文件系统(EFS),HTTP服务器通过该系统将网页及相关的文件放入指定的存储介质中。先将HTML文件转化成二进制数组文件,调用EFS接口函数添加至系统中。
要实现动态交互的功能,必须使用CGI接口。本设计采用网页表单数据控制并修改TMS320C6657的相关设置,调用CGI程序处理相应修改请求。具体实现如下:
(1)采用POST方式,根据POST内容长度动态创建缓冲区大小,通过recv函数读取数据至缓冲区中。
(2)通过cgiParseVars函数依次解析数据内容。
(3)根据数据内容处理相应请求。
(4)向客户端发送HTTP相应报文,动态生成回复页面报告处理结果。
(5)完成并释放创建空间。
2.4多线程任务设计
为了实现浏览器/服务器模式以及通过网页对TMS320C6657底层硬件操作,需要设计一个多线程系统。SYS/BIOS的特点就是优先级抢占式任务管理,将每一个线程作为一个模块化函数,并设置特定的优先等级,通过辅助模块信号、事件、邮箱达到对不同进程之间同步、阻塞、通信的目的。
2.4.1系统构成
本设计的多线程任务流程如图2所示。本系统分为3个部分,主线程用于初始化TMS320C6657硬件及外设资源,初始化配置文件开启网络服务、后台程序,执行网络基本服务、视频编码及传输;控制线程,由一个或者多个线程组成,按需动态生成,结束时会向主线程发出信号报告任务完成。
2.4.2系统线程规划
BIOS系统启动后,先会进入主线程打开网络服务。配置完相关设置后,HTTP服务器就绪,静态网页即可打开,CGI程序等待接收请求。随后开启后台程序,创建缓冲空间执行视频编码,数据打包发送。用户打开浏览器可以在特定页面看到视频流,当进行相关操作时,服务器就会接收到请求,并在相应的CGI 程序中动态创建新的控制线程,等待控制线程的结束信号。系统会一直等待请求,直到网络服务关闭。
当有多个线程同时出现在同一个系统中时就要考虑优先级关系。除了提前设定好优先级以外,它还提供了一些专用模块确保系统遵循设计者的意愿执行。本设计中使用的是信号量模块。信号量是调配多个任务之间调用或处理共享信息时的常用解决方案。信号量分为单值和多值两种,本设计运用单值信号量来确保用于底层硬件控制的那些参数和全局变量会在动态创建的控制线程里处理完之后才会被主线程读取,保证了共享数据的安全存取。
3结果与分析
为检测嵌入式Web视频服务器的功能,搭建了测试环境,分别检测服务器通信速度和服务器功能。通过TMS320C6657的以太网接口和上位机的网口使嵌入式服务器与上位机处在同一个局域网中。
3.1Web服务器传输速度测试
为了检测基础TCP/UDP的收发,在后台程序中加入了检测程序。检测程序通过不断请求发送和接收检测传输速度。由于上位机和TMS320C6657配置的都是千兆网口,理论速度可以达到128 Mb/s。表1分别是接收和发送TCP/UDP数据的情况。
考虑到缓存大小以及数据存储位置和中间过程,测试结果理想,满足实时传输的要求。
3.2Web服务器功能测试
为了测试Web服务器功能,设计了基础的数据交互页面,用以测试基本服务器功能。当服务器开启时,上位机打开浏览器,输入服务器的IP地址就可以进入服务器中预设的测试网页界面。测试界面提供了基本的网络状态信息,支持更改网络参数。如若修改服务器IP地址,确认后可以看到控制台界面中服务器重启初始化信息,如图3(a)所示。安装相应的控件,通过链接进入视频流界面,如图3(b)所示。
经过上述测试基本功能成功实现,均未出现错误。网络连接及服务器程序稳定可靠。
4结论
本文分别从服务器搭建、浏览器网页设置、视频编码及传输和多线程系统设计部分介绍了完成构建嵌入式Web服务器的方案和流程,为进一步开发嵌入式Web服务器平台提供了很好的指导方法。实验结果表明,运用TMS320C6657双核DSP作为嵌入式Web视频服务器具有传输速度快以及远程操控服务器的优点,同样兼顾搭建简单、易于维护和通用性强的特点,利用优先级抢占式特性,合理分配多线程能很好地依据开发者的意愿开发出相应的功能,具有很强的实用性和参考价值。
参考文献
[1] 舒展.嵌入式系统综述[J].现代计算机,2011(5):4446.
[2] 康文广,胡利民.基于 W3150A+的嵌入式Web服务器设计[J].单片机与嵌入式系统应用,2010(6):4143.
[3] TMS320C6657:1.25GHz DSP开发方案[J]. 世界电子元器件,2014(2):1214.
[4] 李飞,卿粼波,滕奇志,等.H.264高清视频编码器的设计与实现[J].微型机与应用,2015,34(6):4244.
即日起成都至广安、雅安方向加开多趟动车
封面新闻记者 曹菲
8月25日,记者从中国铁路成都局集团有限公司获悉,近期加开贵阳至六盘水,成都至广安、雅安,重庆至石柱县方向的列车。
具体加开情况如下:
1.8月22至31日贵阳北-六盘水加开G5349次,贵阳北15:05开,六盘水16:39到。
2.8月22至31日六盘水-贵阳北加开G5350次,六盘水16:59开,贵阳北18:34到。
3.8月22至31日成都东-广安南加开D5176次,成都东08:18开,广安南10:45到,
4.8月22至31日广安南-南充加开D5137次,广安南11:36开,南充12:26到。
5.8月22至31日南充-广安南加开D5138次,南充12:55开,广安南13:44到。
6.8月22至31日广安南-成都东加开D5175次,广安南14:10开,成都东16:22到。
7.8月22至31日成都东-广元加开C6234次,成都东06:30开,广元08:13到。
8.8月22至31日广元-成都东加开C6233次。广元08:37开,成都东10:40到。
9.8月22至23、28至30日贵阳北-开阳加开C6369次,贵阳北19:00开,开阳19:47到。
10.8月22至23、28至30日开阳-贵阳北加开C6370次,开阳20:12开,贵阳北20:59到。
11.8月25至27、29、31日成都西-雅安加开C6649次,成都西08:26开,雅安09:38到。
12.8月25至27、29、31日雅安-成都西加开C6648次,雅安10:13开,成都西11:20到。
13.8月25至27、29、31日成都西-朝阳湖加开C6651次,成都西11:36开,朝阳湖12:19到。
14.8月25至27、29、31日朝阳湖-成都西加开C6652次,朝阳湖12:29开,成都西13:24到,
15.8月25至27、29、31日成都西-雅安加开C6653次,成都西13:39开,雅安14:50到。
16.8月25至27、29、31日雅安-成都西加开C6654次,雅安15:50开,成都西17:02到。
17.8月25至27、29、31日成都西-雅安加开C6655次,成都西17:14开,雅安18:14到。
18.8月25至27、29、31日雅安-成都西加开C6656次,雅安18:26开,成都西19:32到。
19.8月25至27、29、31日成都西-雅安加开C6657次,成都西19:45开,雅安20:51到。
20.8月25至27、29、31日雅安-成都西加开C6658次,雅安21:27开,成都西22:28到。
21.8月25至27、31日成都西-雅安加开C6391次,成都西09:20开,雅安10:34到。
22.8月25至27、31日雅安-成都西加开C6392次,雅安10:50开,成都西12:03到。
23.8月25至27、31日成都西-雅安加开C6393次,成都西12:20开,雅安13:46到。
24.8月25至27、31日雅安-成都西加开C6394次,雅安14:03开,成都西15:16到。
25.8月25至27、31日成都西-雅安加开C6395次,成都西16:00开,雅安17:14到。
26.8月25至27、31日雅安-成都西加开C6396次,雅安17:31开,成都西18:44到,
27.8月25至27、31日成都西-雅安加开C6397次,成都西19:06开,雅安20:14到。
28.8月25至27、31日雅安-成都西加开C6398次,雅安20:29开,成都西21:30到。
29.8月25至27、31日成都东-石柱县加开D6108次,成都东06:03开,石柱县09:48到。
30.8月25至27、31日石柱县-重庆北加开D6107次,石柱县10:20开,重庆北11:41到。
31.8月25至27、31日重庆北-石柱县加开D6110次,重庆北12:23开,石柱县13:38到。
32.8月25至27、31日石柱县-成都东加开D6109次,石柱县15:33开,成都东19:26到。
【如果您有新闻线索,欢迎向我们报料,一经采纳有费用酬谢。报料微信关注:ihxdsb,报料QQ:3386405712】
相关问答
led灯板km 6657c 电压是多少?LED灯板KM6657C的电压是根据具体情况而定。LED灯板通常需要外部电源来供电,而不同的型号和设计的电路有不同的工作电压。一般来说,常见的LED灯板工作电压为12V...
有的人为什么不能接受你的能力比他优秀?有的人为什么不能接受你的能力比他优秀?