MPSoC embedded systems contain a wide variety of processors, most often simultaneously on the same chip, the typical case being the combination of a host micro-controller plus a number of dedicated media processors in a single system. In the current market, applications have a much longer lifetime than the hardware for which they were initially designed. Application portability is of utmost importance for the embedded systems industry.
The Common Language Infrastructure (CLI) framework is a rich virtualization environment for the execution of applications written in multiple languages. The main use of CLI is to provide a virtual execution environment for high-level managed languages. However, unlike other bytecodes, it also efficiently captures the semantics of unmanaged languages, such as C. The CLI executables are compact, and they can easily inter-operate with native environments. For these reasons, we are investigating the use of CLI as a deployment format for MPSoC embedded systems, where C legacy and execution efficiency are critical, and at the same time the need for ISA virtualization is high.
In this paper, we motivate our CLI-based compilation environment for C, and its different use scenarios. We then focus on the specific challenges of effectively mapping the C language to CLI, and our proposed solutions. We finally analyze the interactions between the CLI environment and native libraries, which is of primary importance for a practical use of the proposed approach.