openvela trunk-5.2

[ English | 简体中文 ]

一、快速入门

模拟器支持

在 PC 上通过 openvela Emulator 快速体验。

  • 支持的模拟器:

    • goldfish-armeabi-v7a-ap
    • goldfish-arm64-v8a-ap
    • goldfish-x86_64-ap
  • 快速入门

开发板支持

openvela 支持一系列主流开发板,详细列表请参考开发板案例

二、内核(Kernel)

处理器架构支持

openvela 内核具备广泛的硬件平台兼容性,为多样化的嵌入式设备提供坚实基础。

  • CPU 架构:全面支持主流及特定领域的处理器架构,包括:

    • ARM
    • ARM64
    • RISC-V
    • x86 / x86-64
    • Xtensa
    • MIPS
    • Tricore
    • Renesas
    • Sparc
    • Z16
    • Z80
  • 多核处理器 (SMP): 内置对称多处理 (Symmetric Multiprocessing, SMP) 支持,提供高效的处理器调度与并行处理能力,以满足高性能应用场景的需求。

核心系统特性

openvela 内核基于 NuttX RTOS,继承并强化了其核心优势,主要体现在以下方面:

  • 标准兼容

    • POSIX 兼容:NuttX 强调 POSIX 标准的兼容性,确保良好的可移植性和标准化的接口。
    • ANSI 标准:支持 ANSI C 标准,为开发者提供标准的编程接口。
  • 可扩展性

    • 从 8 位到 64 位:NuttX 可扩展到从 8 位到 64 位的微控制器环境,适应各种嵌入式系统需求。
    • 模块化设计:内核采用模块化设计,易于扩展和定制。
  • 实时性

    • 实时调度:支持实时调度算法,满足实时系统的需求。
    • 优先级调度:支持基于优先级的任务调度,确保高优先级任务优先执行。

更多信息请查阅内核开发概述

任务与调度管理

openvela 以线程作为最小调度单元,提供了灵活的任务模型和多种调度算法。

  • 任务模型: 支持内核线程、用户线程和用户任务(即带独立地址空间的进程)三种模式。

  • 调度算法:

    • 优先级调度 (Priority Scheduling)
    • 先进先出 (FIFO)
    • 时间片轮转 (Round Robin)

详情请参阅线程与进程管理

线程同步机制

为保障多线程环境下的数据一致性和资源安全访问,系统提供了丰富的同步原语。

  • 信号量 (Semaphore)
  • 互斥锁 (Mutex)
  • 自旋锁 (Spinlock)
  • 原子操作 (Atomic Operations)
  • 中断开关
  • 调度锁
  • Pthread 互斥锁

详细用法请参考资源同步机制

线程间通信 (IPC)

系统提供多种高效的线程及进程间通信机制,以支持复杂的任务协作。

文件系统

openvela 集成了功能强大的虚拟文件系统 (VFS),并支持超过 20 种主流及嵌入式专用文件系统。

  • 支持的文件系统类型(文件系统):

    • FAT 类: fatfs
    • 日志/闪存友好型: littlefs, smartfs, spiffs, yaffs, uffs, nvs
    • 只读型: romfs, cromfs, LROFS
    • 内存/虚拟型: ramfs (binfs), tmpfs, procfs, rootfs (VFS)
    • 特殊用途: zipfs, archivefs, nfs, hostfs, unionfs, userfs
  • 存储驱动框架: 提供了标准的 MTD (Memory Technology Device) 和块设备 (Block Device) 驱动框架,简化了对 NAND/NOR Flash、SD/eMMC 卡等存储介质的适配。(存储驱动框架指南

调试工具

提供了一套完善的调试工具集,以协助开发者进行故障排查和性能分析。

  • Crash Dump 分析
  • GDB 远程调试
  • 性能分析工具 (Performance Profiling)

更多工具请查阅调试工具文档

三、子系统

连接子系统

音视频子系统

通过统一的媒体框架 (Media Framework) 对音视频数据进行处理,为上层应用提供标准化的 API 接口。

详情请查阅 Media Framework

图形子系统

图形子系统为构建流畅、美观的用户界面提供全栈支持,其核心组件包括:

  • 驱动适配层(Driver):标准化的接口层,支持各类输入(触摸屏、按键)和输出(显示屏)设备。(驱动适配
  • 图形渲染库(LVGL):基于 LVGL 开源库进行深度优化和功能扩展,支持 CPU 渲染与 GPU 硬件加速。
  • 矢量渲染引擎(Vector Graphics Engine):轻量级 API 实现,支持 SVG Tiny v1.2 标准,满足多样化的矢量图形绘制需求。
  • UI套件库(UIKit):包含高级组件和管理套件。(uikit
  • 窗口管理(Window Manager):提供完整的窗口生命周期管理、层级管理和事件分发功能。

四、应用示例

我们提供丰富的原生应用和快应用示例,帮助开发者快速上手。

原生应用 (Native Apps)

这些示例展示了如何使用 openvela 的系统服务和子系统功能。

  • 音乐播放器:演示音频播放、列表管理和后台服务。
  • 智能手环:演示睡眠监测、心率监测、音乐播放、秒表计时。
  • 自行车码表:演示 GPS 定位、实时数据显示和运动轨迹记录。
  • 计算器:一个基础的 UI 与逻辑交互示例。
  • 亲戚计算器:演示复杂的条件逻辑与算法实现。
  • 打地鼠:演示游戏循环、随机数生成和动画效果。

查看完整的原生应用列表,请访问原生应用示例仓库

快应用(Quick Apps)

快应用相关示例正在持续丰富中。查看所有示例,请访问快应用示例仓库