Skip to content

Releases: open-vela/docs

openvela trunk-5.2

18 Sep 07:46

Choose a tag to compare

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.

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
  • 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

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-ap
    • goldfish-arm64-v8a-ap
    • goldfish-x86_64-ap
  • Quick Start

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.