openvela trunk-5.5

[ English | 简体中文 ]

概览

此次 openvela trunk-5.5 版本更新,在内核、连接、多媒体、图形、runtime 框架和开发工具等方面带来了全面增强和改进。此外,我们本次版本更新更是开源了 openvela 首个轻量化原生 AI Agent 智能引擎,并新增了 快应用 Feature 框架运行时核心库和工具、QuickJS 轻量级 JS 引擎开源

目录

新特性详情

内核 NuttX

架构支持

  • 多架构持续完善:ARM Cortex-M / Cortex-A / Cortex-R、ARM64、RISC-V、Xtensa、x86_64、TriCore、SPARC
  • ARMv8-R 增强:UDIV 指令、Monitor 模式中断向量、TEE 跳转优化
  • TriCore Tasking 工具链 C++ 构建支持
  • QEMU ARMv8-A / ARMv8-R 板级增强和完善

驱动

  • RPTUN / RPMsg:IVShmem 修复、BMP 模式、UART 端口优化
  • Virtio:virtio-snd 音频、virtio-crypto 加密、virtio-mmio 优化和增强
  • V4L2 M2M 视频框架
  • ALSA 音频适配增强

调度器

  • 信号处理重构:CONFIG_DISABLE_SIGNALS 支持
  • SMP 调度:spinlock 双重解锁修复、优先级调度优化
  • POSIX 合规:pthread_cond API、mq_open 路径限制、abort() 实现
  • Per-CPU 变量优化

网络

  • VSock:virtio vsock 支持与 sockif 实现
  • IPv4 / IPv6 转发与输入处理修复
  • Netdev 锁机制、IGMP、VLAN、netlink route
  • TCP close 修复

文件系统

  • LROFS:truncate、create、copy 文件内容优化
  • GPT 分区支持
  • FATFS UTF-8 优化
  • Procfs 压力监控

内存管理

  • Mempool 多池管理器、动态池配置优化
  • KASAN 检测增强

  • libc:scanf、printf、strtol 等 bug 修复和增强
  • libelf:modlib 重命名为 libelf
  • libcxx / libcxxabi:C++ 初始化流程优化

工具

  • nxgdb 调试增强
  • CMake 构建优化
  • syscall 生成工具支持 const union

蓝牙

  • AVRCP 版本更新,支持更丰富的操作指令
  • GATT 缓存机制,大幅提高连接速度
  • 允许自定义的 BLE Security Level
  • SPP、HID、A2DP、HFP、SPP 等协议增强,提升兼容性并解决已知问题
  • 修复其他已知问题,增强子系统稳定性

连接框架

Telephony

  • TAPI 全部子模块新增 callback 函数
  • Modem 升级操作支持

Network

  • 修复回调泄漏问题
  • 修复 MQTTS 证书问题
  • 修复断点续传问题

多媒体

播放器

  • 媒体播放器核心重构
  • 音频焦点管理优化
  • 流式播放支持增强
  • 多核跨 CPU 通信支持

录制器

  • 录制框架优化、参数传递修复

媒体图(Graph)

  • 媒体处理图引擎更新
  • media_uv_trigger 异步接口
  • 异步检测回调

FFmpeg 升级到 7.x

  • 版本升级:FFmpeg 由 5.x 升级到 7.x

图形与动画

新特性

  • 动画系统:新增 LV_ANIM_USE_FLOAT 配置,将 start/end/cur/path_cb 类型从 int32_t 扩展为 float;新增缓动参数(ease param)、动画完成回调、帧间隔平滑
  • 矢量渲染(VG_Lite):新增 border side 绘制、tiled image 支持、stroke path cache 与 path upload 模式、GPU 利用率查询接口、字体缓存引用计数、动态参数打印控制
  • 图像兼容:新增 LVGL V8 旧版 .bin / .rle 图像格式兼容解码(自动转换 V8 header 为 V9)
  • 图像解码:JPEG 完整支持 orientation 与 CMYK;JPEG/PNG 解码器一次性分配 draw buffer;新增解码性能测量
  • 新组件:arc_label 弧形文本组件;QRCode 圆形样式与 quiet zone
  • 渲染:draw_buf 模糊(blur)支持;ARM MVE/NEON alpha 预乘加速;全局 recolor;display rotation 改用 transform matrix 实现并支持 FULL 渲染模式旋转
  • 输入:新增 crown scroll 表冠滚动事件;新增全局 focus 对象
  • 滚动:新增 force elastic 强制弹性滚动属性
  • 文本:恢复 text recolor 功能;span 组件支持 BiDi 双向文本
  • Canvas:支持 direct painting 直接绘制模式
  • 文件系统:新增读取文件并自动分配内存 API(lv_fs_read_file_alloc
  • 内存:新增 linear allocator;新增 lv_reallocf
  • 工具:新增 argparse 命令行解析库;新增 remote_ctrl 远程控制组件(集成 NuttX libuv);GDB 调试模块重构支持多实例和懒加载
  • NemaGFX:新增 freetype 矢量字体支持

性能优化

  • 渲染刷新减少无效 refr_children 调用(检查 layer opa)和空 dispatch
  • draw task 描述符合并分配 + linear allocator 减少 malloc 次数
  • 样式缓存使用更长 bitmap,支持一次调用获取多个 space 属性
  • 文本绘制减少 lv_text_get_size 和 glyph 查询调用次数
  • 对象使用 layer 缓存当前 opa stack,避免重复计算
  • VG_Lite 新增渐变池优化内存分配与搜索、矢量路径/描述结构精简
  • A8 格式解码性能提升;snapshot 从顶层对象开始渲染

关键修复

  • 修复 layer opacity/recolor 在 layer area 获取失败时未恢复导致后续渲染异常
  • 修复连续滑动时滚动动画与手指拖拽冲突导致画面闪烁
  • 修复 scroll_end 事件无限循环
  • 修复双指滑动误触发点击事件
  • 修复多个 VG_Lite 崩溃(stroke cache 为空、渐变未初始化、clipper 空路径)
  • 修复 SVG/PNG 解码器内存泄漏
  • 修复多核渲染场景下图像解码器内存泄漏
  • 修复 freetype 和 profiler_builtin 在 lv_deinit 时崩溃
  • 修复 textarea placeholder 未垂直居中及换行异常
  • 修复 span 组件文本显示混乱
  • 修复 flex 布局与 RTL 方向组合异常

测试

  • 新增 20+ 模块单元测试覆盖(anim、area、event、draw_buf、vector、qrcode、span、fs 等)
  • CI 改为原生 32/64 位构建,更新全部参考截图

系统应用与工具

ALSA-Lib

  • DMix drain 修复、信号量泄漏修复
  • mmap 偏移计算修复、静默预填充优化
  • 独立设备日志支持

测试框架

  • cmocka:XML 输出格式、ELF 测试文件执行
  • ostest:原子操作、spinlock、cancel 测试修复
  • LTP CLOCK_MONOTONIC 适配

系统工具

  • stty 终端控制增强
  • readline 回显问题修复
  • NSH:stderr 重定向、Ctrl+C 退出问题修复

系统服务

KVDB / Utils

  • BMP / AMP 场景连接优化、默认超时从 0.5s 改为 5s
  • GDBus proxy property 获取、double free 修复

LibUV 扩展

  • AES-CCM 模式 API、ECDH 共享密钥、HKDF 支持

UOrb Topics

  • 算法 Topic:手势、姿态、心率、计步器
  • 充电状态、振动器开关状态 Topic

OTA

  • AVB 多镜像验证、vbmeta_partition 模式

Binder IPC

  • RPC / NDK 分离、CPC ServiceManager 兼容

ASH 框架

  • 微服务支持、MessageLoopListener、C API 导出

Activity Manager

  • 多应用同名共存修复、Lite 模式重构

Window Manager

  • Lite 单实例模式、窗口过渡动画

安全与运行时

OP-TEE

  • ELF TA 支持(CMake 构建)、WASM 多实例初始化
  • 并发 TA 初始化 mutex 保护
  • Triad 加解密接口

WASM Runtime

  • netlib / WiFi / xtables WASM 封装

快应用

本次发布将快应用开发全链路开源,覆盖 JS 引擎、Feature 框架和应用 Shell 运行时:

  • QuickJS

    QuickJS 轻量级 JS 引擎,基于 Fabrice Bellard 的 QuickJS 引擎的增强版本。保留原有的轻量、快速和高兼容性特点,集成了一系列新功能,特别是在开发者工具和调试支持方面,使其成为功能更完备的 JavaScript 运行时环境。

  • runtime_feature

    快应用 Feature 框架运行时核心库和工具。基于 C/C++ 开发,实现 JavaScript 层与原生代码的高效互操作性。架构包括三大核心组件:提供 JS-Native 执行环境的运行时框架、用于自动生成双向调用接口的 JIDL(接口描述语言)及工具、标准化的 native 开发者 API。

  • runtime_ash

    openvela 应用 Shell 运行时环境。面向嵌入式系统的轻量级 C++ 运行时基础库,为资源受限环境提供高效、可靠的底层组件支持。模块化设计覆盖:资源管理(Bundle)、系统安全(Crash 处理)、设备信息抽象(Device Info)、文件系统封装(File)、文件描述符管理(Scoped FD)、消息循环机制(Message Loop)、流处理、字符串转换、线程、时间、定时器、网络、内存管理和调试追踪等。使用 GN 构建系统,通过 CMakeLists.txt 提供 CMake 支持,兼容 Kconfig 配置系统,适用于 NuttX 等实时操作系统环境。

AI agent

openvela AI Agent 是一个跑在手表、音箱、眼镜、耳机这类小设备上的 AI 智能体引擎。从架构设计上,该引擎构建了从感知到记忆、从推理到执行的全链路智能化能力,真正让设备具备自主决策与主动服务能力。

不兼容变更

⚠️ 以下变更可能影响现有代码,升级时请重点关注。

内核

类型 变更 影响
重命名 modliblibelf binfmt、ELF 加载
重命名 PSEUDOFS_SOFTLINKSFS_LINKS 文件系统 Kconfig
API sched_note_printf 签名变更 trace 模块
API atomic_fetch_xxxatomic_xxx apps 原子操作
新增 CONFIG_DISABLE_SIGNALS 信号相关条件编译
配置 libcxxminilibminiabi C++ 初始化

蓝牙

类型 变更 影响
行为 CM Profile 回调从异步改为直接回调 Profile 回调处理
行为 pairing_complete 始终报告 BONDED 配对流程
行为 移除 security changed 中连接状态检查 安全回调

Telephony

类型 变更 影响
新增 TAPI 全部子模块新增 callback 所有 TAPI 调用方
重构 char** 指针参数重构 TAPI 函数签名

runtime

类型 变更 影响
重构 QuickApp 接口重构 快应用
替换 UVTaskQueue → ash MessageLoop C 接口 快应用退出流程
API NetworkStatus 回调返回对象类型 网络状态

系统服务

类型 变更 影响
配置 KVDB 默认超时 0.5s → 5s KVDB 客户端
API Binder RPC / NDK 分离 Binder IPC

升级适配指南

1. 内核配置

  • CONFIG_PSEUDOFS_SOFTLINKSCONFIG_FS_LINKS
  • modlib API → libelf
  • atomic_fetch_xxxatomic_xxx

2. 蓝牙

  • Profile 回调需适配直接回调模式(不再异步分发)
  • 检查 pairing_complete 回调逻辑

3. Telephony

  • TAPI 调用方适配新增 callback 参数

4. runtime

  • UVTaskQueue → ash MessageLoop C 接口
  • lv_anim 接口适配新版本

5. 构建系统

  • C++ 初始化:libcxxminilibminiabi

6. 第三方库

  • FFmpeg 升级到 7.x

相关链接