Static Analysis of Lockless Microcontroller C Programs
Concurrently accessing shared data without locking is usually a subject to race conditions resulting in inconsistent or corrupted data. However, there are programs operating correctly without locking by exploiting the atomicity of certain operations on a specific hardware. In this paper, the authors describe how to precisely analyze lockless microcontroller C programs with interrupts by taking the hardware architecture into account. They evaluate this technique in an octagon-based value range analysis using access-based localization to increase efficiency. Static analysis based on abstract interpretation is a formal method that found its way into practice by several commercial code analysis tools.