什么是 电鱼智能 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)

本方案构建了一个专业的“网络化灯光总控台”。

拓扑逻辑

  1. 交互层

    • 触摸屏:LVDS 接口 -> Qt 界面 (选灯、配色)。

    • 物理推杆:ADC / GPIO 扩展板 -> 读取推杆数值。

  2. 计算层 (SAIL-IMX6Q)

    • 灯光引擎:计算通道数值混合(HTP/LTP 逻辑)。

    • 协议转换:将通道值封装为 DMX 帧或 Art-Net 包。

  3. 输出层

    • 本地 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+ 等软件。它是商业控台厂商开发自主知识产权产品的理想基石。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐