什么是 电鱼智能 SAIL-IMX6Q?
电鱼智能 SAIL-IMX6Q是一款经过十年市场验证的工业级核心板。它搭载NXP i.MX6Quad四核处理器,主频 1.0GHz,配备1GB/2GB DDR3内存。
在工业控制领域,它以“接口丰富、稳定性极高”著称:
多串口:板载5路 UART,可直接扩展多路 DMX512 物理端口。
千兆网口:完美支持Art-Net / sACN等基于 TCP/UDP 的灯光网络协议。
多屏显示:支持LVDS + HDMI双屏异显,轻松实现“触控台+外接监视器”的专业台布局。
为什么 灯光控台需要从 MCU 升级到 MPU?(痛点分析)
当一场灯光秀涉及到光束灯、摇头灯以及大量 LED 像素条时,数据吞吐量呈指数级上升。
1. 突破 2048 通道的算力天花板
痛点:普通 MCU 主频通常在 200MHz 以下。当需要计算复杂的RDM(远程设备管理)反馈数据,或者运行复杂的“内置效果引擎(Shape Engine)”时,MCU 的中断处理能力饱和,导致 DMX 信号刷新率从标准的 44Hz 跌至 20Hz,灯光动作出现肉眼可见的卡顿。i.MX6Q 优势:四核并行处理。
Core 0:专职负责底层 DMX/RS485 数据发送,保证微秒级时序。
Core 1:负责 UI 界面交互与触摸响应。
Core 2/3:负责运行复杂的灯光效果算法与 Art-Net 网络封包。
结果:轻松驾驭16-32 个 DMX 域(8192-16384 通道),刷新率稳定 44Hz。
2. 拥抱 Art-Net 网络化控制
痛点:传统的 DMX512 物理线缆传输距离短、抗干扰差。大型晚会普遍采用基于以太网的 Art-Net 协议。MCU 实现 TCP/IP 协议栈效率低,且难以处理广播风暴。i.MX6Q 优势:基于Linux 系统。Linux 拥有世界最强的 TCP/IP 协议栈。在 i.MX6Q 上,通过千兆网口发送 Art-Net 数据包就像写 Socket 编程一样简单高效,且支持IGMP Snooping等高级网络特性。
3. 可视化交互与大容量存储
痛点:MCU 内存小(KB级),无法存储庞大的“灯库文件(Fixture Library)”或录制整场秀的 Timecode(时间码)文件。界面也多为简单的黑白屏。i.MX6Q 优势:1GB+ 大内存 & eMMC。可以存储数万种灯具的属性库,支持Qt / Android开发炫酷的 3D 可视化界面,甚至可以在控台上直接进行 3D 预演(Visualizer)。
系统架构与数据流 (System Architecture)
本方案构建了一个专业的“网络化灯光总控台”。
拓扑逻辑
交互层:
触摸屏:LVDS 接口 -> Qt 界面 (选灯、配色)。
物理推杆:ADC / GPIO 扩展板 -> 读取推杆数值。
计算层 (SAIL-IMX6Q):
灯光引擎:计算通道数值混合(HTP/LTP 逻辑)。
协议转换:将通道值封装为 DMX 帧或 Art-Net 包。
输出层:
本地 DMX:UART -> RS485 隔离收发器 -> XLR 接口 (直连灯具)。
网络 DMX:Gigabit Ethernet -> Art-Net 节点 / 媒体服务器。
推荐软件栈
OS: Linux 4.1.15 / 5.4 (打上 PREEMPT_RT 实时补丁)。
GUI: Qt 5.12 (高性能图形界面)。
Protocol: OLA (Open Lighting Architecture) 开源库,或自研 C++ 引擎。
关键技术实现 (Implementation)
1. 配置 UART 为 DMX512 模式 (Linux C)
DMX512 协议本质是波特率 250000 的串行通信,但需要特殊的 "Break" 信号作为帧头。
C
#include <termios.h> #include <fcntl.h> #include <linux/serial.h> int dmx_fd = open("/dev/ttymxc1", O_RDWR | O_NOCTTY | O_NDELAY); struct termios options; tcgetattr(dmx_fd, &options); // 1. 设置波特率 250000 cfsetispeed(&options, B250000); cfsetospeed(&options, B250000); // 2. 设置 8位数据, 2位停止位 (DMX 标准), 无校验 options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; options.c_cflag |= CSTOPB; // 2 Stop bits options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; tcsetattr(dmx_fd, TCSANOW, &options); // 发送 DMX 帧 void send_dmx_frame(unsigned char *data, int len) { // 3. 发送 Break 信号 (拉低电平 > 88us) ioctl(dmx_fd, TCSBRK, 0); // 4. 发送 MAB (Mark After Break) - 通常由驱动或硬件自动处理停止位 // 5. 写入 512 字节通道数据 write(dmx_fd, start_code, 1); // Start Code 0x00 write(dmx_fd, data, 512); }2. 多线程优化 (避免 UI 卡顿影响灯光)
利用 Linux 的pthread将 DMX 发送线程绑定到独立的核心。
C
// 伪代码:线程亲和性设置 pthread_t dmx_thread; cpu_set_t cpuset; CPU_ZERO(&cpuset); CPU_SET(3, &cpuset); // 将 DMX 线程绑定到 CPU Core 3 pthread_create(&dmx_thread, NULL, dmx_sender_loop, NULL); pthread_setaffinity_np(dmx_thread, sizeof(cpu_set_t), &cpuset);性能表现与可靠性
实时性:在打上 RT-Patch 的 Linux 系统上,GPIO 翻转和 UART 发送的抖动可控制在20μs以内,完全满足 DMX512 对时序的严苛要求。
稳定性:SAIL-IMX6Q 核心板经过数万小时的工业环境验证,配合 NXP 原厂电源管理,在演出中即使遇到电压波动也能稳定运行,绝不“死机黑屏”。
扩展性:通过 USB 或 PCIe,还可以扩展 MIDI 接口、SMPTE 时间码接口,轻松接入大型演艺同步系统。
常见问题 (FAQ)
Q1: Linux 启动时间比 MCU 慢,演出断电怎么办?A:Linux 通常需要 10-20秒 启动。为了解决这个问题,电鱼智能提供系统裁剪服务,可将启动时间优化至5-8秒。同时,专业控台通常配备 UPS 电池,在断电瞬间由软件触发“安全关机”或“数据保存”。
Q2: 为什么不选性能更强的 RK3588?A:对于灯光控台,i.MX6Q 的性能已经过剩。更重要的是,i.MX6Q 拥有更简单的总线架构和更低的中断延迟,且原生 UART 数量多,实时控制特性在某些场景下甚至优于复杂的旗舰芯片,且成本更低,发热更小。
Q3: 支持 grandMA2 或 Avolites 的软件吗?A:我们提供的是底层硬件平台。您可以基于此开发自己的控台软件,或者运行开源的 OLA / QLC+ 等软件。它是商业控台厂商开发自主知识产权产品的理想基石。