• 正文
  • 相关推荐
申请入驻 产业图谱

介绍一个国产轻量级嵌入式桌面操作系统

08/26 09:15
320
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

工控 HMI 开发长期两个选择:Qt 功能全但授权风险、体积大;MiniGUI 闭源 / 生态弱;Wayland 架构复杂裁剪困难。

很多低配的工控屏项目并不需要完整 Qt 生态,只需要基础窗口、触控、中文渲染。

TinyPiXOS 是国产开源 GUI 栈,自研 TpWM 窗口管理器,不依赖 X11、Wayland、Qt,纯 C/C++ 实现,基于 Linux framebuffer 运行,Apache2.0 商用友好,面向工控触控设备。

Github:https://github.com/TinyPiXOS/TinyPiXOS

Gitee:https://gitee.com/tinypixos/TinyPiXOS

Apache License 2.0

TinyPiXOS官网:https://www.tinypixos.com/

1. TinyPiXOS介绍

TinyPiXOS简单来说就是:在 Linux 之上用 C/C++ 自建窗口管理 + GUI 框架,不走 X11/Wayland。

TinyPiXOS 分层架构

从上往下看:

应用层:TpDesktop 桌面壳,或你自己写的 GUI 程序

框架层:TpGUI 负责控件和 CSS 样式;TpUtils 封装媒体、网络、GPIO 等系统能力;TpCore 提供信号槽、容器、JSON 等基础能力

系统层:TpWM 做窗口管理;TpService 基于 nanomsg 做进程间通信

渲染:SDL2 + GBM + OpenGL ES/EGL,直接对接 DRM 显示

TinyPiXOS的核心定位在于提供一个独立可控、架构轻量且高度定制化嵌入式桌面操作系统开发平台。

官方架构图也可以对照看一下:

TpWM

TpWM是 TinyPiXOS 的窗口管理引擎,是 TinyPiXOS 的核心支撑要件。整个引擎设计以精简接口为切入点,摒弃复杂冗余的接口设计理念,结合类似RISC精简指令集的设计思想,为窗口设计人员提供任意组装和拼接的高效途径,可以打造出千变万化的自定义产品。

TpService

TpService 是 TiniPiXOS 框架的后台服务模块,基于 nanomsg 实现高效通信,目前主要提供 进程间通信(IPC) 和 局域网设备间通信 功能,并计划逐步扩展为更强大的系统服务节点。

TpCore

TpCore 库为 TinyPiXOS 应用程序的核心库,提供了信号槽、核心数据结构、文件操作、JSON 处理、泛类型等。

    统一数据抽象:提供 TpString、TpList、TpHash、TpVector 等作为框架中所有数据操作的通用容器基类,建立统一的数据结构管理体系,确保类型安全与内存效率。高效序列化机制:统一处理二进制与 JSON 格式的数据转换,支持结构体与内存缓冲区的快速互转,适用于高性能数据存储与传输。事件驱动调度:内建信号槽系统,基于观察者模式实现松耦合的组件间通信,支持异步事件传播与回调处理。

TpGUI

TpGUI 库为 TinyPiXOS 应用程序提供了核心 GUI 框架,实现了一个全面的基于小部件的用户界面系统,具有 CSS 样式、事件处理和动画功能。该库是在 TinyPiXOS 平台上构建图形应用程序的基础。

    统一对象管理:提供TpObject作为框架中所有模块组件的公共基类,建立统一的对象生命周期管理体系,确保资源管理的严谨性。高效事件分发:统一处理和传播用户输入、系统事件。智能内存管理:自动或半自动处理控件内存,降低资源泄漏风险。渲染调度系统:优化绘制流程,协调组件间的渲染顺序与更新,保障界面流畅性。声明式样式定制:内建强大的样式表系统,允许开发者通过声明式配置快速、便捷地定制控件外观和整体界面风格,避免硬编码。

TpUtils

TpUtils 库为 TinyPiXOS 应用程序提供全面的系统级集成功能。该库充当高级应用程序逻辑和低级系统资源之间的桥梁,为媒体处理、网络通信、蓝牙连接、应用程序生命周期管理、硬件监控和设备管理提供标准化接口。

    统一媒体处理:提供 TpAudioOutput、TpVideoOutput 作为音视频处理的统一抽象层,集成 FFmpeg 编解码能力,支持多格式媒体文件的高效播放与录制。
    设备管理:通过 TpDiskManage、TpUsbManager 实现热插拔设备的自动检测与挂载,提供设备状态变化的信号驱动通知机制,降低外设管理复杂度。
    高效网络通信:内建完整的 TCP/UDP Socket 框架,提供 TpTcpSocket、TpUdpSocket、TpTcpServer 等标准化网络接口,支持异步事件驱动的连接管理与数据传输
    蓝牙协议栈:基于 BlueZ 实现完整的蓝牙设备配对、音频传输与文件交换能力,通过 TpBluetoothLocal、TpBluetoothAudioManager 提供声明式设备管理接口。
    应用生命周期管理:提供 TpAppInstall、TpAppDopack 实现沙箱化应用安装,支持权限控制、依赖注入与加密签名验证,确保系统安全性。
    系统资源监控:通过 TpCpuManage、TpMemory、TpDiskManage 实时采集CPU/内存/磁盘 I/O 等系统指标,为性能优化提供数据支撑。显示系统集成:TpDisplay 提供 DPI 缩放计算与 TpWM 窗口管理器的分辨率适配,支持多显示器配置与运行时分辨率切换。

2. TinyPiXOS vs Qt / Wayland

工控 GUI 方案选型,本质是在功能丰富度资源占用之间做权衡。我们通过一个直观的对比来看三者的差异:

核心维度:

2.1 TinyPiXOS 适合低配设备

TinyPiXOS 做了三个关键减法:

去掉显示服务器:Qt 和 Wayland 都依赖 X11 或 Wayland Compositor,TinyPiXOS 直接操作 framebuffer,少一层中间商赚差价。

自研精简窗口管理:TpWM 只保留窗口管理的核心功能,没有复杂的多用户、多会话、权限管理等用不到的特性。

按需编译:TpGUI、TpUtils、TpCore 都是模块化设计,不需要的功能直接不编进去。

对于工控小型 HMI、低成本触控屏产品,如果不想引入 Qt 庞大依赖和授权顾虑,TinyPiXOS 是值得调研的国产替代方案。

以上就是本次的介绍,下篇文章我们再一起来实操下。

做工控 HMI 你更倾向 Qt 还是轻量自研 GUI 栈?

相关推荐

本公众号专注于嵌入式技术,包括但不限于C/C++、嵌入式、物联网、Linux等编程学习笔记,同时,公众号内包含大量的学习资源。欢迎关注,一同交流学习,共同进步!