自助机、面板、标牌

一套栈整群设备没有版税

界面在普通电脑上写一次,再刷到板上。屏幕上是同一个应用,可通过网络更新,引擎不按台收费。

树莓派 4 上 60 帧。镜像大约 150 MB。一个产品,代替 GUI 工具包、镜像构建器和 OTA 厂商。


60 fps
树莓派 4 GPU
~150 MB
带 GPU 的系统镜像
~250 MB
内存占用
~20
上电到可用屏幕

可运行
Raspberry Pi 4 aarch64 · V3DVRadxa Zero 3E aarch64 · PanVKRadxa Rock 5C aarch64 · PanVKQEMU aarch64 · 软件Pi 5 · RISC-V 稍后

常见做法

四个厂商。四张账单。一台自助机。

常见的自助机栈是拼出来的。每一块都要付钱,也都可能单独出问题。

产品太多

GUI 工具包、Yocto 镜像、OTA 厂商、设备控制台 —— 四份合同、四条支持线,还常常按出货台数收引擎费。

许可证碍事

商业界面按设备收费。封闭终端很难满足 LGPL。如果栈必须能自己审计,这套组合就散了。

又重又慢

Chromium 自助机空闲就要大约 1GB 内存,在 Pi 级主板上会卡。Android 要数 GB,开机半分钟。合成器在画出界面前就吃掉三分之一帧时间。


从书桌到主板

写好。刷入。运行。更新。

从电脑上的应用到一群主板,一条路走完。不必另配嵌入式工具链,设备上也不跑 Docker。

写好。

用 Xenolith SDK 在 Windows、Linux 或 macOS 上构建并调试同一个应用。

刷入。

得到可启动镜像:系统、内核、你的程序。不必做半年的 Yocto 项目。

运行。

一个原生程序直接画在屏幕上。没有窗口管理器、浏览器或容器。

更新。

推送新应用不必重启主板。推送新系统镜像走备用分区,失败会自动回滚。

写好。 刷入。 运行。 更新。

电脑上跑的,就是主板上跑的。不是移植。


镜像

一张小的自助镜像

主板启动一套锁死的系统:只留需要的东西,开机检查有没有被改过,画面直达面板。大约 150 MB。便宜的闪存就够。

直达面板

Vulkan 画在显示器上。界面和玻璃之间没有 X11、Wayland,也没有多余合成器。

系统分区只读

系统只读,开机校验。应用和设备数据放在另一块卷上。

有 GPU 就用 GPU

Pi 4、Zero 3E、Rock 5C 走硬件图形。没有 GPU 驱动就用 CPU 画。

应用就是一个文件

自助程序是一个 Xenolith 程序,不是浏览器或容器。替换它就是拷贝文件。


内核

同一个应用。内核自选。

换内核,界面不用改。带 GPU 的 Linux 是我们出货用的。需要实时内核时再用 Embox 或 NuttX。

已交付

Linux

画面直达屏幕。树莓派 4、Radxa Zero 3E 和 Rock 5C 走硬件图形。没有 GPU 驱动就用软件绘制。

已交付

Embox

同一套 HDMI 自助界面 —— 树莓派 4、Zero 3E、Rock 5C —— 跑在实时内核上。

部分完成

NuttX

自助界面已能在 QEMU 和树莓派 4 上运行。这条路径还在收尾。

今天要出货,请用带 GPU 的 Linux。


主板

能跑在哪些板上

显卡驱动成熟就用硬件。没有驱动就用 CPU 画。一块板一张镜像。

现在就能跑
主板 GPU CPU 绘制
Raspberry Pi 4 (VideoCore VI)
Radxa Zero 3E (Mali-G52)
Radxa Rock 5C (Mali-G610)
正在做
主板 GPU CPU 绘制
Raspberry Pi 5 (VideoCore VII)
VisionFive 2 Lite (PowerVR BXE-4-32)
可用 CPU 跑
主板 GPU CPU 绘制
Rockchip RK3399 (Mali-T860)
NXP i.MX 8 QuadMax (Vivante)
其他 64 位 ARM 板

GPU 指硬件图形。CPU 绘制指软件渲染。Pi 4、Zero 3E、Rock 5C 已在真机上验证。


设备群

看见设备。更新它们。修好它们。

每块板上有代理,浏览器里有控制台:设备上线、查看状态、推送更新,出问题就开远程终端。

更新应用

把新程序放到数据分区,重启自助进程。主板不用重启,镜像不用重做。

更新系统

把新镜像写入备用分区,重启,检查。启动失败,主板自己回滚。

谁在线

设备自己汇报。控制台能看出谁活着、谁过期、谁坏了。

操作员控制台

网页上的设备列表、更新操作,以及用于诊断的远程终端。


给开发者

刷一次。几秒换应用。

电脑就是设备

你在电脑上调试的程序,就是主板上的程序。不必为自助机再写一份。

替换应用

第一次刷机之后,用 SSH 或 U 盘拷一个新文件。只有系统本身变了,才需要重做整张镜像。

不必做几个月 Yocto

系统、内核和应用在几分钟内变成可启动的 SD 或 USB 镜像。

编程代理也能跟上

构建和刷写说明跟栈放在一起,代理不用另做一份简报。


瘦客户机

屏幕只负责画。数据留在服务器。

可选:终端只显示像素。逻辑和敏感数据不离开服务器 —— 支付、ATM、医疗终端。

画面已经可以走加密通道。铺到整群设备可按需提供。


对比

和常见方案放一起看

界面、镜像和更新在一个产品里。画面直达显示。内核可以换。

Xenolith OriginQt / Boot to QtChromium 自助Android + MDMbalena / Torizon
界面面板上的原生 VulkanQt + 合成器浏览器Android 界面容器里的应用
镜像大小~120–150 MB数 GB,Yocto数 GB2–4 GB+容器层
引擎版税$0按台 / 席位$0$0不适用
设备群 / OTA内置另接 Mender 等自建 / MDMMDM 订阅
电脑 = 设备部分
内核Linux、Embox、NuttX仅 LinuxLinuxAndroidLinux + 容器

用在哪

没人值守、整天开着的屏幕

自助收银与 POS

需要在便宜 ARM 板上跑得流畅的自助机和市政设备。

操作员面板

HMI 和 SCADA:画面和一套信得过的软件,比桌面系统更重要。

数字标牌

播放稳定,不会内存泄漏、也不必每天夜里重启。

充电、停车、售票

户外设备,主板成本、闪存容量和亮屏时间都很紧。

支付与医疗

瘦客户机让用户数据根本不到终端上。

自己的工具链

自己的编译器,SDK 里就有 GOST 密码,没有 Qt 许可,也不用各平台 SDK。


现状

现在能用什么

真机上已经能跑的,以及我们还在做的。

已交付

三块板上的 Linux

树莓派 4 上 60 帧,Radxa Zero 3E 和 Rock 5C。可启动镜像、HDMI 自助,已在硬件上验证。

已交付

不用重刷就能更新应用

从控制台推新程序,或开发时用 SSH。系统镜像不动。

已交付

Embox 自助

同样三块板,实时内核,HDMI 上软件渲染。

部分完成

设备控制台

设备列表、状态、应用和系统更新、网页控制台。QEMU 里可跑多台。生产加固还在做。

部分完成

NuttX 自助

能在 QEMU 和树莓派 4 上跑。同一个应用,不同内核。

开发中

更多主板,更快开机

树莓派 5、VisionFive 2、分批更新,上电后更快亮屏。


下一步

先在设备群上试。再把设备发出去。

如果你在做自助机、操作员面板或标牌,又厌倦了四个厂商 —— 写信给我们。引擎是开源的。Origin 是镜像、更新和控制台。

申请试点 Xenolith Engine GitHub