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-armv8aplatform, covering basic PM functions andostestbase 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
libuvevent 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
nxaudioservice 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.shadds-keepparameter support:If
emulator.shsupports multi-instance configuration, you can access an instance with a specified name via the-keepparameter (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.shadds 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 /tmpUsage:
# 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