Skip to content

openvela trunk-5.4

Latest

Choose a tag to compare

@TangMeng12 TangMeng12 released this 06 Feb 06:53
· 169 commits to dev since this release

openvela trunk-5.4

[ English | 简体中文 ]

I. Overview

openvela has been dedicated to introducing support for more chips, enhancing system real-time communication capabilities, and significantly improving system robustness, storage functionality, and debuggability. This release focuses on enhancements around the following core themes:

  • Hardware Ecosystem Expansion: Added support for Infineon AURIX™ TC4, Flagchip MCU, and QEMU-R52 SIL platforms**, broadening the scope of platform applicability.
  • System Kernel Hardening: Achieved collaborative operation of SMP and PM, introduced MPU-based thread stack protection and RPC framework refactoring**, making the system safer and more stable.
  • Key Capabilities Integration: Added SocketCAN and Ethernet protocol stacks; introduced the highly reliable NVS2 storage solution**.
  • Developer Experience Optimization: Provided low-overhead FDX real-time tracing tools and multiple LVGL application examples, lowering the barrier for development and debugging.

II. Major New Features & Enhancements

1. Platform Support

  • Added support for Infineon AURIX™ TriCore™ TC4 chips
  • Added support for Flagchip MCUs
  • Added Cortex-R52 core support under QEMU platform, supporting Vector SIL platform
  • Resolved compilation issues for nuttx boards, better supporting native nuttx boards platforms

2. Kernel & Security

  • Power Management (PM) & Symmetric Multi-Processing (SMP): Achieved simultaneous enablement of SMP and PM functions, and completed functional verification on the qemu-armv8a platform, covering basic PM functions and ostest base cases.

  • RPC

    • Framework Refactoring: Refactored the RPC framework to possess greater versatility, enabling cross-core communication capabilities for other VirtIO devices.
    • Functional Enhancements for Rptun/Rpmsg: Introduced a multi-priority mechanism to meet the real-time needs of automotive scenarios, and fixed issues from functional safety code scans.
  • Memory Management Enhancements: Implemented Task-independent Heap space, now supported by libraries like libdbus.

  • Binder Message Mechanism: Integrated Binder server/client fds into the libuv event loop, handling messages via callbacks, achieving unified management with other modules.

  • Added Rpmsg Battery & Gauge drivers.

  • Inter-thread Isolation Protection Mechanism: The kernel now supports thread stack protection based on the hardware Memory Protection Unit (MPU). When a thread experiences a stack overflow, this mechanism triggers a hardware exception, preventing it from corrupting other threads' stack spaces or critical data.

  • Code Quality: Completed multiple static code issue fixes, improving the overall quality of the code base.

3. Communication

  • Added SocketCAN and Ethernet Support: Introduced a CAN communication framework following standard Socket APIs. Users can now use standard interfaces like socket(), bind(), send(), recv() for CAN message transmission and filtering.
  • WebSocket Function Enhancement: Added default certificate support for the WebSocket Feature, simplifying the secure connection establishment process.

4. Storage

Added NVS2 (Non-Volatile Storage v2): Integrated a brand-new, highly reliable NVS2 storage solution. This storage solution is deeply optimized for embedded Flash media, supporting wear leveling, power-loss safety, and data encryption.

5. Debugging & Diagnostics

Added FDX-based Real-time Trace Function: Implemented a low-intrusion real-time tracing tool based on the FDX (Fast Debug eXchange) protocol. It can capture and export high-precision system events, such as task switching, interrupt response, semaphore operations, etc., with extremely low system overhead.

6. Application Examples

  • Added Breakout Game: A touchscreen breakout game developed based on openvela and LVGL, which has implemented basic game logic, added image assets, and implemented impact sound effects.
  • Added Virtual Pet application: An interactive demo program based on the LVGL graphics library, simulating the process of raising a digital pet. Users can care for the virtual pet through operations like feeding, giving water, exercise, and rest to improve its mood and level.
  • Snake Game: An automatic Snake game implemented using the LVGL graphics library.
  • Electronic Wooden Fish: Based on the openvela nxaudio service and the upper-layer LVGL UI framework, implementing a complete interaction link containing responsive layout and secure resource management, realizing an application showcase with smooth animation effects, secure resource management, and a good user experience.

7. Development

Ubuntu Environment VS Code Plugin Support: Support installing openvela VS Code plugin in Ubuntu environment, achieving full-process support from project creation, compilation and building, system debugging to application development, significantly improving development efficiency. (openvela VS Code Plugin Usage Guide)

8. Emulator Runtime Parameter Extensions

  • emulator.sh adds -keep parameter support:

    If emulator.sh supports multi-instance configuration, you can access an instance with a specified name via the -keep parameter (creating it if it doesn't exist), and relevant contexts will not be deleted when that instance exits.

    # Usage
    cp cmake_out/vela_goldfish-arm64-v8a-ap/nuttx* cmake_out/vela_goldfish-arm64-v8a-ap/vela_* cmake_out/vela_goldfish-arm64-v8a-ap/advancedFeatures.ini nuttx/
    
    ./emulator.sh vela -keep -no-window
    
    # Test example: create a test file in /data directory and write content
    nsh> echo test > /data/test
    nsh> echo "openvvela qemu keep test" >> /data/test
    nsh> quit
    
    # Exit emulator and re-enter, the previously written content is still preserved
    ./emulator.sh vela -keep -no-window
    nsh> cat /data/test
    test
    openvela qemu keep test
  • emulator.sh adds support for using Hostfs function, default support using 9pfs, effect as follows:

    goldfish-armv8a-ap> df -h
        Filesystem      Size      Used  Available Mounted on
        binfs             0B        0B         0B /bin
        fatfs           255M       78M       177M /data
        romfs          1152B     1152B         0B /etc
        hostfs            0B        0B         0B /host
        procfs            0B        0B         0B /proc
        v9fs            878G      626G       252G /share
        romfs           512B      512B         0B /system
        tmpfs             6K        1K         5K /tmp

    Usage:

    # Usage
    cp cmake_out/vela_goldfish-arm64-v8a-ap/nuttx* cmake_out/vela_goldfish-arm64-v8a-ap/vela_* cmake_out/vela_goldfish-arm64-v8a-ap/advancedFeatures.ini nuttx/
    
    ./emulator.sh vela