openvela trunk-5.2
[ English | 简体中文 ]
一、快速入门
模拟器支持
在 PC 上通过 openvela Emulator 快速体验。
-
支持的模拟器:
goldfish-armeabi-v7a-apgoldfish-arm64-v8a-apgoldfish-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
- FAT 类:
-
存储驱动框架: 提供了标准的 MTD (Memory Technology Device) 和块设备 (Block Device) 驱动框架,简化了对 NAND/NOR Flash、SD/eMMC 卡等存储介质的适配。(存储驱动框架指南)
调试工具
提供了一套完善的调试工具集,以协助开发者进行故障排查和性能分析。
- Crash Dump 分析
- GDB 远程调试
- 性能分析工具 (Performance Profiling)
更多工具请查阅调试工具文档。
三、子系统
连接子系统
- 蓝牙 (Bluetooth):蓝牙概述
- 网络 (Networking):网络协议栈简介
- 电话 (Telephony):Telephony 概述
音视频子系统
通过统一的媒体框架 (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)
- 小米手环天气预报应用:提供简洁直观的未来七日天气信息展示。
- 音乐播放器:演示一个基础的音乐播放器,包含音乐的播放,音量调节,歌单查看。
- 日历:演示一个基础的日历。
快应用相关示例正在持续丰富中。查看所有示例,请访问快应用示例仓库。