🤖 AI Summary
Misuse of Hardware Abstraction Layer (HAL) interfaces in embedded systems frequently leads to runtime failures or even hardware damage; conventional software model checking suffers from unpredictable verification outcomes, hindering stable industrial adoption. Method: This paper proposes a continuous verification methodology tailored to HAL interface specifications, grounded in skeleton-based development with iterative functional extension and round-wise model checking. It introduces the first approach enabling cross-iteration reuse of abstract information without formal stepwise correspondence, thereby enhancing verification predictability and stability. The method integrates automated program abstraction inference with lightweight model checking. Results: Evaluated on real-world embedded applications, it successfully passes HAL specification verification across all development iterations and the final implementation, achieving 100% verification success rate—effectively overcoming the verification uncertainty bottleneck in industrial practice.
📝 Abstract
The correct use of a Hardware Abstraction Layer (HAL) interface in embedded applications is crucial to prevent malfunctions, crashes, or even hardware damage. Software model checking has been successfully applied to check interface specifications in application programs, but its employment in industrial practice is hindered by its unpredictability (whether it succeeds for a given application program or not). In this paper, we present a novel approach to address this problem by checking the HAL interface specification continuously and right from the start of the development. I.e., we develop an embedded application in several iterations without a formal connection between the steps. The steps start from a program skeleton which does nothing but calling HAL functions. Actual functionality is added consecutively. The HAL interface specification is checked in each step of the sequence. The idea of the approach is to exploit a specific feature of software model checking: Its attempt to compute exactly the abstraction that is needed for the check to succeed may carry over from one step to the next, even if there is no formal connection between the steps. The experience from a preliminary experimental evaluation of our approach in the development of embedded applications is very promising. Following our approach, the check succeeds in each step and in particular in the final application program.