Abstract
Software productivity for embedded systems is greatly limited by the fragmentation of platforms and associated development tools. Platform virtualization environments, like Java and Microsoft .NET, help alleviate the problem, but they are limited to host functionalities running on the system microcontroller. Due to the ever increasing demand for processing power, it is desirable to extend their benefits to the rest of the system. We present an experimental framework based on GCC that validates the choice of CLI as a suitable processor-independent deployment format. In particular, we illustrate our GCC port to CLI and we evaluate the generated bytecode in terms of code size and performance. We inject it back into GCC through a CLI front-end that we also illustrate, and we complete the compilation down to native code. We show that using CLI does not degrade performance. Compared to other CLI solutions, we offer a full development flow for the C language, generating a subset of pure CLI that does not require any virtual machine support other than a JIT compiler. It is therefore well suited for deeply embedded media processors running high performance media applications.
Keywords
This work was partially funded by the HiPEAC Network of Excellence.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
DotGNU project, http://dotgnu.org
Mono-compatible compilers, http://www.mono-project.com/Languages
The Mono Project, http://www.mono-project.com
Bona, A., Costa, R., Ornstein, A., Rohou, E.: GCC CLI back-end project, http://gcc.gnu.org/projects/cli.html
Costa, R., Ornstein, A., Rohou, E.: CLI Back-End in GCC. In: GCC Developers’ Summit, pp. 111–116, Ottawa, Canada (July 2007)
Costa, R., Rohou, E.: Comparing the Size of .NET Applications with Native Code. In: Proceedings of the 3rd IEEE/ACM/IFIP International Conference on Hardware/Software Codesign and System Synthesis, Jersey City, NJ, USA, pp. 99–104. ACM Press, New York (2005)
ECMA International, Rue du Rhône 114, 1204 Geneva, Switzerland. Common Language Infrastructure (CLI) Partitions I to IV, 4th edn. (June 2006)
Free Software Foundation. The GNU Compiler Collection, http://gcc.gnu.org
The GNU Compiler for the Java Programming Language. http://gcc.gnu.org/java
Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java Language Specification, 2nd edn. Addison-Wesley, Reading (2000)
Guthaus, M.R., Ringenberg, J.S., Ernst, D., Austin, T.M., Mudge, T., Brown, R.B.: MiBench: A free, commercially representative embedded benchmark suite. In: IEEE 4th Annual Workshop on Workload Characterization, Austin, TX, USA (December 2001)
Hanson, D.R.: Lcc.NET: Targeting the .NET Common Intermediate Language from Standard C. Software: Practice and Experience 34(3), 265–286 (2003)
International Organization for Standardization and International Electrotechnical Commission. International Standard ISO/IEC 23271:2006 - Common Language Infrastructure (CLI), Partitions I to VI, 2nd edn.
International Organization for Standardization and International Electrotechnical Commission. International Standard ISO/IEC 9899:TC2 - Programming languages - C (1999)
Kottalam, J.: Blog of Jeyasankar Kottalam (2005), http://gcc-cil.blogspot.com , http://forge.novell.com/modules/xfmod/project/?gcc-cil
Lee, C., Potkonjak, M., Mangione-Smith, W.H.: MediaBench: A Tool for Evaluating and Synthesizing Multimedia and Communications Systems. In: Proceedings of the 30th Annual IEEE/ACM International Symposium on Microarchitecture, pp. 330–335 (1997)
Lindholm, T., Yellin, F.: The Java Virtual Machine Specification, 2nd edn. Addison-Wesley, Reading (1999)
Merill, J.: GENERIC and GIMPLE: A New Tree Representation for Entire Functions. In: GCC Developers’ Summit (2003)
Fernández Pascual, R.: HiPEAC PhD Internship – GCC CIL Frontend (2006), http://www.hipeac.net/node/823
Rabe, B.: Towards a CLI Assembly Format for Embedded Systems. In: International Conference on Embedded Systems and Applications, Las Vegas, NE, USA (June 2006)
Richter, S., Rasche, A., Polze, A.: Hardware-near Programming in the Common Language Infrastructure. In: Proceedings of the 10th IEEE International Symposium on Object and Component-oriented Real-time Distributed Computing, Santorini Island, Greece (May 2007)
Singer, J.: GCC .NET – a Feasibility Study. In: 1st International Workshop on C# and .NET Technologies on Algorithms, Computer Graphics, Visualization, Distributed and WEB Computing, Plzen, Czech Republic (2003)
Stallman, R.M., and the GCC Developer Community. GNU Compiler Collection Internals. Free Software Foundation
STMicroelectronics. STb7100-MBoard Datasheet – Single-chip, low-cost HD set-top box decoder for digital TV, digital set-top box or cable box (December 2005)
Operating Systems and Middleware Group. Lego.NET website, http://www.dcl.hpi.uni-potsdam.de/research/lego.NET
Löwis, M.v., Möller, J.: A Microsoft .NET Front-End for GCC. In: Proceedings of .NET Technologies 2006, Plzen, Czech Republic (June 2006) ISBN 80-86943-11-9
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Cornero, M., Costa, R., Fernández Pascual, R., Ornstein, A.C., Rohou, E. (2008). An Experimental Environment Validating the Suitability of CLI as an Effective Deployment Format for Embedded Systems. In: Stenström, P., Dubois, M., Katevenis, M., Gupta, R., Ungerer, T. (eds) High Performance Embedded Architectures and Compilers. HiPEAC 2008. Lecture Notes in Computer Science, vol 4917. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-77560-7_10
Download citation
DOI: https://doi.org/10.1007/978-3-540-77560-7_10
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-77559-1
Online ISBN: 978-3-540-77560-7
eBook Packages: Computer ScienceComputer Science (R0)