FVM
FVM (Feature Virtual Machine)
The Feature Virtual Machine (FVM), on the other hand, is a VM designed to support complex, feature-rich environments in the vehicle. FVM allows the car's infotainment system to access all the bells and whistles of Android, from entertainment apps to complex vehicle data integrations.
Key Characteristics of FVM:
Full Android Environment:
FVM supports a complete Android environment, allowing for complex apps and features to run on the car’s system. It is essentially running a fully operational Android system like what you would see on a mobile phone or tablet but with vehicle-specific optimizations.
Feature-Rich Systems:
FVM is designed for systems where rich functionality is more important than boot speed. These systems include:
Infotainment systems with access to media, navigation, and apps
Connectivity features like Wi-Fi, Bluetooth, and mobile networks
Voice assistants and hands-free controls
Advanced Driver Assistance Systems (ADAS) or rear-seat entertainment features
This VM can run multiple apps simultaneously and handle more complex data flows between the vehicle's hardware and Android-based software.
Slower Boot Times:
Since it is running a more feature-rich environment, boot times are generally slower than RBVM. However, in many cases, FVM systems aren’t required to be operational immediately after the car is started, which makes this trade-off acceptable.
Custom Feature Integration:
FVM allows for custom Android-based features to be developed and integrated into the car’s ecosystem. For example, a car manufacturer might develop unique apps for climate control, fuel economy monitoring, or vehicle settings. These features would run within the FVM environment, leveraging Android's APIs and services.
Resource Allocation:
FVM requires more memory and CPU resources compared to RBVM because it is handling more intensive tasks like running multiple applications or handling complex UI interactions.
In cars, resource management is crucial, and FVM optimizes resource usage to balance performance with available hardware limitations.
Architecture of FVM (Feature Virtual Machine)
The architecture of FVM, in contrast to RBVM, is designed for rich, feature-heavy environments where boot time is less critical, but the functionality and extensibility of the system are of utmost importance. FVM provides the complete Android experience, leveraging full system services and advanced features.
1. Full Android Runtime (ART) Environment
Component Overview:
FVM uses the complete Android Runtime (ART), enabling the execution of full-featured Android applications and services in the car. This is the same runtime environment you’d find in mobile phones or tablets but with additional components for automotive use.
Core Functions:
Complete Library Set: Unlike RBVM, FVM loads the entire set of Android libraries, including those for media playback, networking, connectivity, and app management.
Ahead-of-Time (AOT) Compilation: ART in FVM can pre-compile important code paths for faster execution, but this is balanced against the need to load more services.
2. Comprehensive Kernel
Component Overview:
FVM uses a full-featured Linux kernel, providing extensive driver support for all automotive hardware components and peripherals.
Key Kernel Features:
Dynamic Module Loading: FVM dynamically loads kernel modules for advanced features such as multimedia, Bluetooth, Wi-Fi, and ADAS components.
Security Enhancements: FVM incorporates advanced security features, such as SELinux and sandboxing for applications, ensuring that the vehicle’s software is protected against malicious applications or exploits.
3. System Services Layer
Component Overview:
FVM includes a rich set of system services that enable full Android functionality in the car. These services are responsible for managing multimedia, app lifecycle, networking, and communication between the vehicle’s hardware and software.
Key System Services:
Media Framework: Supports audio and video playback, as well as advanced features like surround sound and multi-zone audio.
Connectivity Manager: Manages Wi-Fi, Bluetooth, and cellular network connections, providing a seamless experience for the driver and passengers.
App Manager: Handles the installation, update, and execution of Android apps on the car’s infotainment system.
Advanced Driver Assistance Systems (ADAS): FVM can integrate with ADAS features, providing data and control for lane-keeping assistance, adaptive cruise control, and other safety systems.
4. UI and Graphics Rendering
Component Overview:
FVM provides a full-featured graphical user interface (GUI), supporting not only the basic displays used in RBVM but also complex infotainment systems, in-car navigation, and interactive displays for rear-seat passengers.
Graphics Stack:
OpenGL and Vulkan: FVM uses OpenGL ES or Vulkan for hardware-accelerated graphics rendering, enabling smooth animations and transitions for infotainment screens.
Multi-Screen Support: FVM can handle multiple displays simultaneously, such as a driver’s display, a central infotainment screen, and rear-seat entertainment screens.
Android Automotive UI Components:
Navigation UI: The full Google Maps experience or proprietary navigation systems can be integrated into the FVM environment.
Interactive Widgets: Users can interact with infotainment widgets, such as media controls, climate settings, or voice assistants.
5. Application Layer
Component Overview:
The application layer in FVM supports the execution of Android apps designed for the car environment. These applications may range from navigation and multimedia to smart home integration and vehicle health monitoring.
App Store and Updates:
Google Play Services (if supported by the OEM) can be included, allowing users to download and update apps directly to their car’s infotainment system.
Over-the-Air (OTA) Updates: FVM supports OTA updates, enabling car manufacturers to push new features, bug fixes, or security updates to the car’s software without requiring a physical service visit.
6. Extended Memory and Resource Management
Component Overview:
FVM requires more memory and storage than RBVM due to the complexity of the services it handles. It employs advanced memory management techniques to ensure smooth multitasking and application performance.
Resource Allocation:
Memory Caching: Frequently used services, such as the media player or navigation system, are cached in memory to reduce startup times for common tasks.
Garbage Collection (GC) Tuning: ART’s garbage collection mechanisms are tuned for automotive use, balancing the need for performance with minimizing pauses during memory cleanup.
How FVM Works in Practice:
Once the car is started and the initial systems (possibly running on RBVM) are operational, the FVM takes over to handle all the additional features that are not time-critical but are essential for the overall user experience. For example:
The infotainment system, which runs entertainment apps, navigation software, and Android Auto, would be managed by the FVM. Although it takes longer to boot than RBVM, it allows the car’s system to offer a much richer set of features and customization options.
Last updated