NavHAL

Design Goals

NavHAL is designed to address the limitations of existing abstraction approaches by combining simplicity, performance, and control within a single unified framework. The design is guided by the following principles:

  • Simple and Consistent API: Provide a clean and intuitive interface for peripheral interaction, enabling rapid development without exposing unnecessary hardware complexity.

  • Deterministic Behavior: Ensure that hardware operations have predictable and bounded execution characteristics, suitable for real-time control systems.

  • Low Runtime Overhead: Minimize abstraction cost by reducing indirection and leveraging compile-time configuration, ensuring performance close to direct register access.

  • Compile-Time Configuration: Select implementations for core, vendor, and board at build time, eliminating runtime polymorphism and reducing binary size.

  • Portability Across Hardware: Isolate platform-specific details while maintaining a uniform interface, enabling reuse of application code across different microcontrollers and boards.

  • Explicit Resource Control: Provide direct and transparent access to hardware resources without implicit allocation or hidden state management.

  • Execution Independence: Allow seamless operation in both bare-metal environments and with higher-level execution frameworks such as VAIOS.

  • Modular and Extensible Design: Enable addition of new peripherals, architectures, or boards without affecting existing implementations.

These goals collectively define a design that prioritizes predictability, efficiency, and developer usability, forming the foundation for the NavHAL architecture.