基于DMX512?A的LED视频控制系统
陆伟国+王宜怀+刘辉
摘 要: 针对目前市场上ARM+FPGA的LED视频控制系统开发成本高,控制复杂等问题,提出一种基于DMX512?A协议的单芯片LED视频控制系统。系统采用分布式存储技术,使得控制器负载均衡,带载MQX实时操作系统具有高并发性和实时性;采用多链表的内存管理方式,并结合预取和缓存技术大大提高程序执行效率;同时利用以太网实现LED视频的远程更新。本系统将图像处理和信号产生相分离,减少各个控制器的负担,成本低、控制灵活,适用于中小型户外LED视频播放。
关键词: DMX512?A; LED视频; MQX; 内存管理; 远程更新
中图分类号: TN911?34; TP271 文献标识码: A 文章编号: 1004?373X(2017)19?0067?04
LED video control system based on DMX512?A
LU Weiguo1, WANG Yihuai1, LIU Hui2
(1. School of Computer Science and Technology, Soochow University, Suzhou 215006, China;
2. School of Nano Science and Technology, Suzhou Industrial Park Institute of Services Outsourcing, Suzhou 215000, China)
Abstract: Aiming at the issues such as high development cost and complex control of the current ARM+FPGA LED video control system in the market, a single?chip LED video control system based on DMX512?A protocol is proposed. The distributed storage technology is used in the system to achieve load balancing between controllers. With the MQX real?time operating system, the proposed system has high concurrency and real?time performance. The program execution efficiency was greatly improved by means of the memory management mode adopting multi?linked list, and in combination with prefetching and caching technologies. The remote update of the LED video is realized by using the Ethernet. The system separates the image processing from signal generation to reduce the burden for each controller. It has low cost and flexible controllability, and is suitable for small? and medium?sized outdoor LED video play.
Keywords: DMX512?A; LED video; MQX; memory management; remote update
0 引 言
随着半导体产业的发展,LED以其亮度高,寿命长,价格便宜,节能环保的特点赢得了广大市场。LED视频处理器是针对全彩LED显示屏推出的高性能图像处理和控制设备,主要将图像信号转换成LED显示屏所能接收的信号[1]。传统LED视频处理器大多是以图像信号处理芯片或者ARM芯片辅以FPGA的多核处理器,该方案采用集中存储方式,同步控制困难,且可移植性差、成本较高[2?3]。随着近年来ARM芯片价格的下降以及性能的提升,越来越多的人直接使用ARM芯片来控制一些中小型的LED显示屏。
因此,本文提出一种基于DMX512?A协议的单芯片LED视频控制系统,致力于研究DMX512信号的输出,以太网数据的正确收发以及程序执行效率的提升等内容,最终实现LED视频播放,远程更新等功能。
1 DMX512?A协议简介
DMX512协议是灯光行业数字化设备的一种通信传输协议,主要用于舞台灯光、剧场等照明场合,其电气特性与RS 485兼容,其协议时序如图1所示。随着智能楼宇的兴起,DMX512协议开始应用于人们的日常生活场所,LED视频墙就是主要应用之一。DMX信号一般采用差分信号传输,传输速率为250 Kb/s。DMX512?A协议是其扩展版本,在安全性和兼容性方面做出了较多修改[4?6]。
2 总体设计方案
本系统主要包括LED灯具、DMX控制器及服务器端帧听程序三个部分,整个系统的总体框图如图2所示。帧听程序会根据硬件布线情况将每帧视频分割成多个块,并生成指定格式的文件,通过TCP或者手动的方式分发到各个控制器的物理存储设备。控制器将文件内容解析成DMX512信号,并按照通道号输出至RS 485总线,由灯具内部的解码IC识别并控制RGB三色,实现256级亮度控制。
3 系统硬件设计
系统的硬件设计主要是DMX控制器的设计,其硬件实物如图3所示。本文选用NXP公司的MK64FX512(K64)芯片作为处理器芯片。K64是Cortex M4内核,主频高达120 MHz;有512 KB的FLASH空间,128 KB的SRAM[7],足够用来存取并处理大量的调光数据。DMX控制器是整个LED视频控制系统的核心模块,主要负责接收以太网命令,解析SD卡中的调光数据,并通过串口模拟出DMX信号。
LCD触摸屏选用陶晶驰公司的串口HMI(Human Machine Interface)LCD,通过串口和MCU进行通信,串口HMI相比其他液晶屏,界面的显示都是设备内部自己实现,不占用MCU资源;用户MCU只需要收发指令,不需要其他底层驱动。GPS选用微雪电子NEO?7M,其精度高、定位准确,可以用来控制两栋大楼间的视频同步。
4 系统软件设计
4.1 DMX信号驱动设计
由前面的介绍可知,每个解码IC只能控制一个像素点即RGB三色,因为每个解码IC都有地址,只会接收符合自己地址范围的数据。基于DMX512协议的每个解码IC都会被预先分配一个惟一的起始地址,而步进地址就是指该解码IC能同时对几个字段的DMX信号产生控制动作。起始地址用于对DMX512信号进行寻址,当DMX512信息包的字段号与某解码IC的起始地址相同时,解码IC就开始接收该字段及其之后几个字段的DMX512信号,并进行解码,做出相应的动作,具体是几个字段由步进地址决定[8]。
由于DMX512协议的电气特性与RS485兼容,因此可以通过串口的发送引脚功能在UART和GPIO之间切换,模拟出DMX512信号字段数据和break信号,具体可以参考图1。该驱动主要包括DMX写地址驱动和DMX写数据驱动。
4.2 以太网通信
网络通信技术凭借其传输速度块、网络配置简单等特性,成为LED灯光控制行業的研究热点[9]。本文基于以太网技术,设计并实现了对LED视频进行远程更新和监控。服务器端帧听程序与DMX控制器之间的通信使用客户端/服务器模式,以TCP/IP协议作为网络通信协议。TCP协议采用socket套接字来完成客户端与服务器的连接和数据交换,是一种面向连接、面向字节流的可靠的传输层通信协议。
4.2.1 数据处理流程
在DMX控制器与服务器建立TCP连接之后,就可以进行socket通信了。以太网通信处理流程如图4所示。主要负责将视频文件处理成控制器能识别的文件格式,为了尽可能减少DMX控制器解析文件的运算量,提高程序执行效率,文件格式设计如表1所示。
整个表1分为上下两部分。上半部分是文件级信息,其中,服务器端会生成多个文件对应着多个控制器并且赋予一个编号,分别下发给各个控制器;时间间隔可以用来调节控制器播放视频的帧率。调光数据被分成多个块,由多个通道同时输出,每个块的具体格式如表1下半部分所示。
4.2.2 顺序应答机制
本文设计的是一个单服务器多客户端的系统,在网络高负载下,面向TCP的连接也可能会出现冲突或丢包的现象。多次试验表明,TCP发送过快的情况下会发生拼包问题而导致分发错误。为此,提出一种顺序应答机制避免丢包,其主要思想如下:每个控制器有一个编号,从[1~N]不等,在固定时间内收到服务器发来的数据时,会对数据进行简单的检查,根据检查结果,将控制器编号和接收成功与否的标志顺序返回给服务器;若超出固定时间没有收到数据,此时应答未收到该帧。所谓的顺序返回就是根据控制器的编号来确定返回应答帧的延时间隔,其中延时的单位即应答帧从客户端发送到服务器的时间,服务器在收到正确的应答帧后才会进行下一包数据的发送。这种顺序应答的方式大大提高了以太网传输的稳定性。
4.3 控制器程序设计
MQX实时操作系统是前飞思卡尔公司推出的一款免费开源的实时操作系统[10]。带操作系统的MCU程序并发性高、实时性强,将一个复杂的应用分成多个子任务,使得开发难度大大降低。本控制器主要有3个任务并发执行,其执行流程如图5所示。SDHC任务主要负责从SD卡读取调光数据加入数据链表;而DMX512任务从数据链表中取出一个数据节点并按时间间隔输出DMX512信号;ENET任务则负责接收服务器端帧听程序下发的指令做出响应。任务之间通过事件位机制和共享内存链表来控制同步。事件位相当于信号量,通过类似P,V操作来实现。
4.4 分布式存储
原处理方案的整个LED视频文件由LED视频处理器统一处理后分发,对LED视频处理器的硬件要求极高,且并发性较差。本文采用分布式存储技术,将视频文件分割处理后存储在各个控制器中,使其负载均衡。各个控制器之间仅需要很小的数据量就能实现同步,不会影响整体的执行效率,并且一个控制器出现问题不会影响整个系统,不但提高了系统的可靠性、并发性和存取效率,还易于扩展,容错性好,突破了原有系统的瓶颈。
4.5 多链表内存管理和缓存
内存分配方式主要分为动态内存分配和静态内存分配,而嵌入式系统中程序往往需要重复的执行和调用,使用动态内存分配的方式会造成内存空间的浪费,导致程序崩溃;而且malloc函数执行效率太低,不符合本设计的要求。为了提高程序的执行效率,采用固定分配内存方式,为每个DMX通道建立两个内存链表,分别是数据链表和空闲链表。信号输出任务每次都从数据链表上取一个节点,使用完后归还到空闲链表。SDHC任务每次从空闲链表取一个节点,填充完后添加到数据链表中。链表的节点个数根据实际情况调整,个数太多,申请的内存空间不能被充分利用;个数太少,可能会导致任务被阻塞。这种“乒乓”缓存机制结合链表形式的内存管理方式,操作灵活、控制方便,大大提高了程序的执行效率。
5 系统测试
为了验证方案的可行性,以一组64×40像素点的LED视频墙为测试对象,由两个DMX控制器同时控制。LED控制器上电启动后执行流程见图5,各任务并发执行,相互协调。LED视频墙开始播放视频如图6所示。
编写网页程序,通知服务器端帧听程序将视频切片成帧,解析出其调光数据,并通过以太网分发到DMX控制器网关,等待更新SD卡完成后开始播放新视频,服务器帧听程序部分截图如图7所示,其中帧听程序作为服务器等待DMX控制器连接成功后,开始下发数据。实验表明本系统所控制的LED视频播放流畅不卡顿,适用于中小型户外LED视频播放,符合设计目标。
6 结 语
本文提出的基于DMX512?A的LED视频控制系统,采用分布式存储技术,将一帧图像分割成多个图块,由多个控制器分布存储和控制,通过串口模拟输出DMX信号,共同实现播放LED视频;结合MQX实时操作系统和高效的内存管理方式,系统具有高实时性和并发性;利用以太网为代表的网络技术实现对LED视频的远程更新功能,使得本系统更加智能化,减少人员工作量,提高了系统的灵活性,相比ARM+FPGA的方案更加经济,操作简单,具有一定的应用价值和指导意义。
参考文献
[1] 刘钊.LED视频处理器的设计与研究[D].西安:西安电子科技大学,2012.
[2] 陈加怀.基于FPGA的景观照明控制系统的设计与实现[D].杭州:杭州电子科技大学,2012.
[3] 王凯华.基于DMX512协议的景观灯控制系统研发[D].苏州:苏州大学,2013.
[4] 张冠华.WH/T 32—2008 DMX512?A灯光控制数据传输协议[J].演艺科技,2012(9):61?64.
[5] 姚晖.基于DMX+的LED舞台灯控制系统的设计[D].杭州:浙江理工大学,2011.
[6] 于明,朱万彬,张歆东.基于DMX512协议的RGB激光电脑灯的设计[J].照明工程学报,2011,22(4):95?98.
[7] Freescale Semiconductor. Kinetis K64F sub?family data sheet [EB/OL]. [2015?08?06]. http://www.nxp.com/docs/pcn_attachments/16938_K64P144M120SF5.pdf.
[8] 韩振雷,齐立森.DMX512灯光控制协议的传输特性及应用要点分析[J].灯与照明,2009,33(1):44?46.
[9] 李笳平,卜方玲,孟凡荣,等.sACN协议支持下的舞台灯光控制网络的研究[J].计算机工程与设计,2012,33(7):2596?2601.
[10] Freescale Semiconductor. Freescale MQXTM RTOS 4.1.0 [EB/OL]. [2014?05?01]. http://cache.freescale.com/files/soft_dev_tools/doc/support_info/MQXTWRK22128RRN.pdf.
摘 要: 针对目前市场上ARM+FPGA的LED视频控制系统开发成本高,控制复杂等问题,提出一种基于DMX512?A协议的单芯片LED视频控制系统。系统采用分布式存储技术,使得控制器负载均衡,带载MQX实时操作系统具有高并发性和实时性;采用多链表的内存管理方式,并结合预取和缓存技术大大提高程序执行效率;同时利用以太网实现LED视频的远程更新。本系统将图像处理和信号产生相分离,减少各个控制器的负担,成本低、控制灵活,适用于中小型户外LED视频播放。
关键词: DMX512?A; LED视频; MQX; 内存管理; 远程更新
中图分类号: TN911?34; TP271 文献标识码: A 文章编号: 1004?373X(2017)19?0067?04
LED video control system based on DMX512?A
LU Weiguo1, WANG Yihuai1, LIU Hui2
(1. School of Computer Science and Technology, Soochow University, Suzhou 215006, China;
2. School of Nano Science and Technology, Suzhou Industrial Park Institute of Services Outsourcing, Suzhou 215000, China)
Abstract: Aiming at the issues such as high development cost and complex control of the current ARM+FPGA LED video control system in the market, a single?chip LED video control system based on DMX512?A protocol is proposed. The distributed storage technology is used in the system to achieve load balancing between controllers. With the MQX real?time operating system, the proposed system has high concurrency and real?time performance. The program execution efficiency was greatly improved by means of the memory management mode adopting multi?linked list, and in combination with prefetching and caching technologies. The remote update of the LED video is realized by using the Ethernet. The system separates the image processing from signal generation to reduce the burden for each controller. It has low cost and flexible controllability, and is suitable for small? and medium?sized outdoor LED video play.
Keywords: DMX512?A; LED video; MQX; memory management; remote update
0 引 言
随着半导体产业的发展,LED以其亮度高,寿命长,价格便宜,节能环保的特点赢得了广大市场。LED视频处理器是针对全彩LED显示屏推出的高性能图像处理和控制设备,主要将图像信号转换成LED显示屏所能接收的信号[1]。传统LED视频处理器大多是以图像信号处理芯片或者ARM芯片辅以FPGA的多核处理器,该方案采用集中存储方式,同步控制困难,且可移植性差、成本较高[2?3]。随着近年来ARM芯片价格的下降以及性能的提升,越来越多的人直接使用ARM芯片来控制一些中小型的LED显示屏。
因此,本文提出一种基于DMX512?A协议的单芯片LED视频控制系统,致力于研究DMX512信号的输出,以太网数据的正确收发以及程序执行效率的提升等内容,最终实现LED视频播放,远程更新等功能。
1 DMX512?A协议简介
DMX512协议是灯光行业数字化设备的一种通信传输协议,主要用于舞台灯光、剧场等照明场合,其电气特性与RS 485兼容,其协议时序如图1所示。随着智能楼宇的兴起,DMX512协议开始应用于人们的日常生活场所,LED视频墙就是主要应用之一。DMX信号一般采用差分信号传输,传输速率为250 Kb/s。DMX512?A协议是其扩展版本,在安全性和兼容性方面做出了较多修改[4?6]。
2 总体设计方案
本系统主要包括LED灯具、DMX控制器及服务器端帧听程序三个部分,整个系统的总体框图如图2所示。帧听程序会根据硬件布线情况将每帧视频分割成多个块,并生成指定格式的文件,通过TCP或者手动的方式分发到各个控制器的物理存储设备。控制器将文件内容解析成DMX512信号,并按照通道号输出至RS 485总线,由灯具内部的解码IC识别并控制RGB三色,实现256级亮度控制。
3 系统硬件设计
系统的硬件设计主要是DMX控制器的设计,其硬件实物如图3所示。本文选用NXP公司的MK64FX512(K64)芯片作为处理器芯片。K64是Cortex M4内核,主频高达120 MHz;有512 KB的FLASH空间,128 KB的SRAM[7],足够用来存取并处理大量的调光数据。DMX控制器是整个LED视频控制系统的核心模块,主要负责接收以太网命令,解析SD卡中的调光数据,并通过串口模拟出DMX信号。
LCD触摸屏选用陶晶驰公司的串口HMI(Human Machine Interface)LCD,通过串口和MCU进行通信,串口HMI相比其他液晶屏,界面的显示都是设备内部自己实现,不占用MCU资源;用户MCU只需要收发指令,不需要其他底层驱动。GPS选用微雪电子NEO?7M,其精度高、定位准确,可以用来控制两栋大楼间的视频同步。
4 系统软件设计
4.1 DMX信号驱动设计
由前面的介绍可知,每个解码IC只能控制一个像素点即RGB三色,因为每个解码IC都有地址,只会接收符合自己地址范围的数据。基于DMX512协议的每个解码IC都会被预先分配一个惟一的起始地址,而步进地址就是指该解码IC能同时对几个字段的DMX信号产生控制动作。起始地址用于对DMX512信号进行寻址,当DMX512信息包的字段号与某解码IC的起始地址相同时,解码IC就开始接收该字段及其之后几个字段的DMX512信号,并进行解码,做出相应的动作,具体是几个字段由步进地址决定[8]。
由于DMX512协议的电气特性与RS485兼容,因此可以通过串口的发送引脚功能在UART和GPIO之间切换,模拟出DMX512信号字段数据和break信号,具体可以参考图1。该驱动主要包括DMX写地址驱动和DMX写数据驱动。
4.2 以太网通信
网络通信技术凭借其传输速度块、网络配置简单等特性,成为LED灯光控制行業的研究热点[9]。本文基于以太网技术,设计并实现了对LED视频进行远程更新和监控。服务器端帧听程序与DMX控制器之间的通信使用客户端/服务器模式,以TCP/IP协议作为网络通信协议。TCP协议采用socket套接字来完成客户端与服务器的连接和数据交换,是一种面向连接、面向字节流的可靠的传输层通信协议。
4.2.1 数据处理流程
在DMX控制器与服务器建立TCP连接之后,就可以进行socket通信了。以太网通信处理流程如图4所示。主要负责将视频文件处理成控制器能识别的文件格式,为了尽可能减少DMX控制器解析文件的运算量,提高程序执行效率,文件格式设计如表1所示。
整个表1分为上下两部分。上半部分是文件级信息,其中,服务器端会生成多个文件对应着多个控制器并且赋予一个编号,分别下发给各个控制器;时间间隔可以用来调节控制器播放视频的帧率。调光数据被分成多个块,由多个通道同时输出,每个块的具体格式如表1下半部分所示。
4.2.2 顺序应答机制
本文设计的是一个单服务器多客户端的系统,在网络高负载下,面向TCP的连接也可能会出现冲突或丢包的现象。多次试验表明,TCP发送过快的情况下会发生拼包问题而导致分发错误。为此,提出一种顺序应答机制避免丢包,其主要思想如下:每个控制器有一个编号,从[1~N]不等,在固定时间内收到服务器发来的数据时,会对数据进行简单的检查,根据检查结果,将控制器编号和接收成功与否的标志顺序返回给服务器;若超出固定时间没有收到数据,此时应答未收到该帧。所谓的顺序返回就是根据控制器的编号来确定返回应答帧的延时间隔,其中延时的单位即应答帧从客户端发送到服务器的时间,服务器在收到正确的应答帧后才会进行下一包数据的发送。这种顺序应答的方式大大提高了以太网传输的稳定性。
4.3 控制器程序设计
MQX实时操作系统是前飞思卡尔公司推出的一款免费开源的实时操作系统[10]。带操作系统的MCU程序并发性高、实时性强,将一个复杂的应用分成多个子任务,使得开发难度大大降低。本控制器主要有3个任务并发执行,其执行流程如图5所示。SDHC任务主要负责从SD卡读取调光数据加入数据链表;而DMX512任务从数据链表中取出一个数据节点并按时间间隔输出DMX512信号;ENET任务则负责接收服务器端帧听程序下发的指令做出响应。任务之间通过事件位机制和共享内存链表来控制同步。事件位相当于信号量,通过类似P,V操作来实现。
4.4 分布式存储
原处理方案的整个LED视频文件由LED视频处理器统一处理后分发,对LED视频处理器的硬件要求极高,且并发性较差。本文采用分布式存储技术,将视频文件分割处理后存储在各个控制器中,使其负载均衡。各个控制器之间仅需要很小的数据量就能实现同步,不会影响整体的执行效率,并且一个控制器出现问题不会影响整个系统,不但提高了系统的可靠性、并发性和存取效率,还易于扩展,容错性好,突破了原有系统的瓶颈。
4.5 多链表内存管理和缓存
内存分配方式主要分为动态内存分配和静态内存分配,而嵌入式系统中程序往往需要重复的执行和调用,使用动态内存分配的方式会造成内存空间的浪费,导致程序崩溃;而且malloc函数执行效率太低,不符合本设计的要求。为了提高程序的执行效率,采用固定分配内存方式,为每个DMX通道建立两个内存链表,分别是数据链表和空闲链表。信号输出任务每次都从数据链表上取一个节点,使用完后归还到空闲链表。SDHC任务每次从空闲链表取一个节点,填充完后添加到数据链表中。链表的节点个数根据实际情况调整,个数太多,申请的内存空间不能被充分利用;个数太少,可能会导致任务被阻塞。这种“乒乓”缓存机制结合链表形式的内存管理方式,操作灵活、控制方便,大大提高了程序的执行效率。
5 系统测试
为了验证方案的可行性,以一组64×40像素点的LED视频墙为测试对象,由两个DMX控制器同时控制。LED控制器上电启动后执行流程见图5,各任务并发执行,相互协调。LED视频墙开始播放视频如图6所示。
编写网页程序,通知服务器端帧听程序将视频切片成帧,解析出其调光数据,并通过以太网分发到DMX控制器网关,等待更新SD卡完成后开始播放新视频,服务器帧听程序部分截图如图7所示,其中帧听程序作为服务器等待DMX控制器连接成功后,开始下发数据。实验表明本系统所控制的LED视频播放流畅不卡顿,适用于中小型户外LED视频播放,符合设计目标。
6 结 语
本文提出的基于DMX512?A的LED视频控制系统,采用分布式存储技术,将一帧图像分割成多个图块,由多个控制器分布存储和控制,通过串口模拟输出DMX信号,共同实现播放LED视频;结合MQX实时操作系统和高效的内存管理方式,系统具有高实时性和并发性;利用以太网为代表的网络技术实现对LED视频的远程更新功能,使得本系统更加智能化,减少人员工作量,提高了系统的灵活性,相比ARM+FPGA的方案更加经济,操作简单,具有一定的应用价值和指导意义。
参考文献
[1] 刘钊.LED视频处理器的设计与研究[D].西安:西安电子科技大学,2012.
[2] 陈加怀.基于FPGA的景观照明控制系统的设计与实现[D].杭州:杭州电子科技大学,2012.
[3] 王凯华.基于DMX512协议的景观灯控制系统研发[D].苏州:苏州大学,2013.
[4] 张冠华.WH/T 32—2008 DMX512?A灯光控制数据传输协议[J].演艺科技,2012(9):61?64.
[5] 姚晖.基于DMX+的LED舞台灯控制系统的设计[D].杭州:浙江理工大学,2011.
[6] 于明,朱万彬,张歆东.基于DMX512协议的RGB激光电脑灯的设计[J].照明工程学报,2011,22(4):95?98.
[7] Freescale Semiconductor. Kinetis K64F sub?family data sheet [EB/OL]. [2015?08?06]. http://www.nxp.com/docs/pcn_attachments/16938_K64P144M120SF5.pdf.
[8] 韩振雷,齐立森.DMX512灯光控制协议的传输特性及应用要点分析[J].灯与照明,2009,33(1):44?46.
[9] 李笳平,卜方玲,孟凡荣,等.sACN协议支持下的舞台灯光控制网络的研究[J].计算机工程与设计,2012,33(7):2596?2601.
[10] Freescale Semiconductor. Freescale MQXTM RTOS 4.1.0 [EB/OL]. [2014?05?01]. http://cache.freescale.com/files/soft_dev_tools/doc/support_info/MQXTWRK22128RRN.pdf.