  Embedded software is used in safety-critical systems such as medical devices
and autonomous vehicles, where software defects, including security
vulnerabilities, have severe consequences. Most embedded codebases are
developed in unsafe languages, specifically C/C++, and are riddled with memory
safety vulnerabilities. To prevent such vulnerabilities, RUST, a performant
memory-safe systems language, provides an optimal choice for developing
embedded software. RUST interoperability enables developing RUST applications
on top of existing C codebases. Despite this, even the most resourceful
organizations continue to develop embedded software in C/C++. This paper
performs the first systematic study to holistically understand the current
state and challenges of using RUST for embedded systems. Our study is organized
across three research questions. We collected a dataset of 2,836 RUST embedded
software spanning various categories and 5 Static Application Security Testing
( SAST) tools. We performed a systematic analysis of our dataset and surveys
with 225 developers to investigate our research questions. We found that
existing RUST software support is inadequate, SAST tools cannot handle certain
features of RUST embedded software, resulting in failures, and the prevalence
of advanced types in existing RUST software makes it challenging to engineer
interoperable code. In addition, we found various challenges faced by
developers in using RUST for embedded systems development.
