openvela trunk-5.2
[ English | 简体中文 ]
I. Kernel
Processor Architecture Support
The openvela kernel provides broad hardware platform compatibility, offering a solid foundation for a diverse range of embedded devices.
-
CPU Architectures: Comprehensive support for mainstream and specialized processor architectures, including:
- ARM
- ARM64
- RISC-V
- x86 / x86-64
- Xtensa
- MIPS
- Tricore
- Renesas
- Sparc
- Z16
- Z80
-
Multi-core Processors (SMP): Built-in support for Symmetric Multiprocessing (SMP) delivers efficient processor scheduling and parallel processing capabilities to meet the demands of high-performance applications.
Core System Features
The openvela kernel is based on the NuttX RTOS, inheriting and enhancing its core strengths, which are primarily reflected in the following areas:
-
Standards Compliance
- POSIX Compliant: NuttX emphasizes POSIX standards compliance, ensuring good portability and standardized interfaces.
- ANSI Standard: Supports the ANSI C standard, providing developers with standard programming interfaces.
-
Scalability
- From 8-bit to 64-bit: NuttX is scalable from 8-bit to 64-bit microcontroller environments, adapting to various embedded system requirements.
- Modular Design: The kernel features a modular design, making it easy to extend and customize.
-
Real-time Capabilities
- Real-time Scheduling: Supports real-time scheduling algorithms to meet the requirements of real-time systems.
- Priority-based Scheduling: Supports priority-based task scheduling to ensure that high-priority tasks are executed first.
For more information, please refer to the Kernel Development Overview.
Task and Scheduling Management
openvela uses threads as the smallest scheduling unit and provides a flexible task model with multiple scheduling algorithms.
- Task Models: Supports three modes: kernel threads, user threads, and user tasks (i.e., processes with independent address spaces).
- Scheduling Algorithms:
- Priority Scheduling
- First-In, First-Out (FIFO)
- Round Robin
For details, please see Thread and Process Management.
Thread Synchronization Mechanisms
To ensure data consistency and safe resource access in multi-threaded environments, the system provides a rich set of synchronization primitives.
- Semaphores
- Mutexes
- Spinlocks
- Atomic Operations
- Interrupt Disabling/Enabling
- Scheduler Locks
- Pthread Mutexes
For detailed usage, please refer to Resource Synchronization Mechanisms.
Inter-Process Communication (IPC)
The system offers a variety of efficient inter-thread and inter-process communication mechanisms to support complex task collaboration.
- Work Queue: Work Queue
- Message Queue: Message Queue
File System
openvela integrates a powerful Virtual File System (VFS) and supports over 20 mainstream and embedded-specific file systems.
-
Supported File System Types (File System):
- FAT-like:
fatfs - Journaling/Flash-friendly:
littlefs,smartfs,spiffs,yaffs,uffs,nvs - Read-only:
romfs,cromfs,LROFS - In-memory/Virtual:
ramfs(binfs),tmpfs,procfs,rootfs(VFS) - Special-purpose:
zipfs,archivefs,nfs,hostfs,unionfs,userfs
- FAT-like:
-
Storage Driver Framework: Provides standard MTD (Memory Technology Device) and Block Device driver frameworks, simplifying adaptation to storage media like NAND/NOR Flash and SD/eMMC cards. (Storage Driver Framework Guide)
Debugging Tools
A comprehensive set of debugging tools is provided to assist developers with troubleshooting and performance analysis.
- Crash Dump Analysis
- GDB Remote Debugging
- Performance Profiling Tools
For more tools, please consult the Debugging Tools documentation.
II. Subsystems
Connectivity Subsystem
- Bluetooth: Bluetooth Overview
- Networking: Network Protocol Stack Introduction
- Telephony: Telephony Overview
Audio/Video Subsystem
Processes audio and video data through a unified Media Framework, providing standardized API interfaces for upper-layer applications.
For details, please see the Media Framework.
Graphics Subsystem
The Graphics Subsystem provides full-stack support for building fluid and visually appealing user interfaces. Its core components include:
- Driver Adaptation Layer: A standardized interface layer that supports various input (touchscreens, keys) and output (displays) devices. (Driver Adaptation)
- Graphics Rendering Library (LVGL): Deeply optimized and functionally extended based on the open-source LVGL library, supporting both CPU rendering and GPU hardware acceleration.
- Vector Graphics Engine: A lightweight API implementation that supports the SVG Tiny v1.2 standard, meeting diverse vector graphics drawing needs.
- UIKit: Contains high-level components and management suites. (uikit)
- Window Manager: Provides complete window lifecycle management, layer management, and event dispatching functions.
III. Hardware and Emulator Support
Emulator Support
Experience openvela quickly on a PC using the openvela Emulator.
-
Supported Emulators:
goldfish-armeabi-v7a-apgoldfish-arm64-v8a-apgoldfish-x86_64-ap
Development Board Support
openvela supports a range of mainstream development boards. For a detailed list, please refer to the Development Board Support List.
IV. Application Examples
We provide a rich collection of Native and Quick App examples to help developers get started quickly.
Native Apps
These examples demonstrate how to use openvela's system services and subsystem features.
- Music Player: Demonstrates audio playback, playlist management, and background services.
- Smart Band: Demonstrates sleep monitoring, heart rate monitoring, music playback, and a stopwatch.
- Cycling Computer: Demonstrates GPS positioning, real-time data display, and activity track recording.
- Calculator: A basic example of UI and logic interaction.
- Relation Calculator: Demonstrates complex conditional logic and algorithm implementation.
- Whack-a-Mole: Demonstrates a game loop, random number generation, and animation effects.
To see the complete list of native apps, visit the Native App Examples Repository.
Quick Apps
- Xiaomi Band Weather App: Provides a clean and intuitive display of the seven-day weather forecast.
- Music Player: Demonstrates a basic music player, including music playback, volume control, and playlist viewing.
- Calendar: Demonstrates a basic calendar.
More Quick App examples are continuously being added. To see all examples, please visit the Quick App Examples Repository.