skip to main content
research-article

A Hardware Abstraction Layer in Java

Published:01 November 2011Publication History
Skip Abstract Section

Abstract

Embedded systems use specialized hardware devices to interact with their environment, and since they have to be dependable, it is attractive to use a modern, type-safe programming language like Java to develop programs for them. Standard Java, as a platform-independent language, delegates access to devices, direct memory access, and interrupt handling to some underlying operating system or kernel, but in the embedded systems domain resources are scarce and a Java Virtual Machine (JVM) without an underlying middleware is an attractive architecture. The contribution of this article is a proposal for Java packages with hardware objects and interrupt handlers that interface to such a JVM. We provide implementations of the proposal directly in hardware, as extensions of standard interpreters, and finally with an operating system middleware. The latter solution is mainly seen as a migration path allowing Java programs to coexist with legacy system components. An important aspect of the proposal is that it is compatible with the Real-Time Specification for Java (RTSJ).

References

  1. aJile. 2000. aj-100 real-time low power Java processor. Preliminary data sheet.Google ScholarGoogle Scholar
  2. Armbruster, A., Baker, J., Cunei, A., Flack, C., Holmes, D., Pizlo, F., Pla, E., Prochazka, M., and Vitek, J. 2007. A real-time Java virtual machine with applications in avionics. Trans. Embed. Comput. Sys. 7, 1, 1--49. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Bacon, D. F., Cheng, P., and Rajan, V. T. 2003. A real-time garbage collector with low overhead and consistent utilization. In Proceedings of the 30th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL’03). ACM Press, New York, 285--298. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Bollella, G., Gosling, J., Brosgol, B., Dibble, P., Furr, S., and Turnbull, M. 2000. The Real-Time Specification for Java. Java Series. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Burns, A. and Wellings, A. J. 2001. Real-Time Systems and Programming Languages: ADA 95, Real-Time Java, and Real-Time POSIX 3rd Ed. Addison-Wesley Longman Publishing. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Caska, J. accessed 2009. micro {μ} virtual-machine. http://muvium.com/.Google ScholarGoogle Scholar
  7. Chou, A., Yang, J., Chelf, B., Hallem, S., and Engler, D. 2001. An empirical study of operating systems errors. SIGOPS Oper. Syst. Rev. 35, 5, 73--88. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Felser, M., Golm, M., Wawersich, C., and Kleinöder, J. 2002. The JX operating system. In Proceedings of the USENIX Annual Technical Conference. 45--58. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Gamma, E., Helm, R., Johnson, R., and Vlissides, J. M. 1994. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley Professional. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Gay, D., Levis, P., von Behren, R., Welsh, M., Brewer, E., and Culler, D. 2003. The nesC language: A holistic approach to networked embedded systems. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’03). ACM Press, New York, 1--11. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Gerum, P. 2004. Xenomai - Implementing a RTOS emulation framework on GNU/Linux. http://www.xenomai.org/documentation/branches/v2.4.x/pdf/xenomai.pdf.Google ScholarGoogle Scholar
  12. Group, T. C. 2008. Trusted computing. https://www.trustedcomputinggroup.org/.Google ScholarGoogle Scholar
  13. Hansen, P. B. 1977. The Architecture of Concurrent Programs. Prentice-Hall Series in Automatic Computing. Prentice-Hall. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Hennessy, J. and Patterson, D. 2002. Computer Architecture: A Quantitative Approach 3rd Ed. Morgan Kaufmann Publishers, Palo Alto, CA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Henties, T., Hunt, J. J., Locke, D., Nilsen, K., Schoeberl, M., and Vitek, J. 2009. Java for safety-critical applications. In Proceedings of the 2nd International Workshop on the Certification of Safety-Critical Software Controlled Systems (SafeCert’09).Google ScholarGoogle Scholar
  16. Hill, J., Szewczyk, R., Woo, A., Hollar, S., Culler, D. E., and Pister, K. S. J. 2000. System architecture directions for networked sensors. In Proceedings of the 9th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS IX). 93--104. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Hunt, G., Larus, J. R., Abadi, M., Aiken, M., Barham, P., Fahndrich, M., Hawblitzel, C., Hodson, O., Levi, S., Murphy, N., Steensgaard, B., Tarditi, D., Wobber, T., and Zill, B. D. 2005. An overview of the singularity project. Tech. rep. MSR-TR-2005-135, Microsoft Research (MSR).Google ScholarGoogle Scholar
  18. Korsholm, S., Schoeberl, M., and Ravn, A. P. 2008. Interrupt handlers in Java. In Proceedings of the 11th IEEE International Symposium on Object/Component/Service-Oriented Real-Time Distributed Computing (ISORC’08). IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Krall, A. and Grafl, R. 1997. CACAO -- A 64 bit JavaVM just-in-time compiler. In Proceedings of the Workshop on Java for Science and Engineering Computation (PPoPP’97), G. C. Fox and W. Li Eds. ACM.Google ScholarGoogle Scholar
  20. Kreuzinger, J., Brinkschulte, U., Pfeffer, M., Uhrig, S., and Ungerer, T. 2003. Real-Time event-handling and scheduling on a multithreaded Java microcontroller. Microprocess. Microsyst. 27, 1, 19--31.Google ScholarGoogle ScholarCross RefCross Ref
  21. Lindholm, T. and Yellin, F. 1999. The Java Virtual Machine Specification 2nd Ed. Addison-Wesley, Reading, MA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Lohmeier, S. 2005. Jini on the Jnode Java os. http://monochromata.de/jnodejini.html.Google ScholarGoogle Scholar
  23. Phipps, G. 1999. Comparing observed bug and productivity rates for Java and c++. Softw. Pract. Exper. 29, 4, 345--358. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Ravn, A. P. 1980. Device monitors. IEEE Trans. Softw. Engin. 6, 1, 49--53. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. RTJ Computing. 2000. SimpleRTJ a small footprint Java VM for embedded and consumer devices. http://www.rtjcom.com/.Google ScholarGoogle Scholar
  26. Schoeberl, M. 2005. Jop: A Java optimized processor for embedded real-time systems. Ph.D. thesis, Vienna University of Technology.Google ScholarGoogle Scholar
  27. Schoeberl, M. 2006. Real-Time garbage collection for Java. In Proceedings of the 9th IEEE International Symposium on Object and Component-Oriented Real-Time Distributed Computing (ISORC’06). IEEE, 424--432. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Schoeberl, M. 2008. A Java processor architecture for embedded real-time systems. J. Syst. Archit. 54/1--2, 265--286. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Schoeberl, M. and Vitek, J. 2007. Garbage collection for safety critical Java. In Proceedings of the 5th International Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES’07). ACM Press, 85--93. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Schoeberl, M. and Puffitsch, W. 2008. Non-Blocking object copy for real-time garbage collection. In Proceedings of the 6th International Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES’08). ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Schoeberl, M., Korsholm, S., Thalinger, C., and Ravn, A. P. 2008. Hardware objects for Java. In Proceedings of the 11th IEEE International Symposium on Object/Component/Service-Oriented Real-Time Distributed Computing (ISORC’08). IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Sha, L., Rajkumar, R., and Lehoczky, J. P. 1990. Priority inheritance protocols: An approach to real-time synchronization. IEEE Trans. Comput. 39, 9, 1175--1185. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Siebert, F. 2002. Hard Realtime Garbage Collection in Modern Object Oriented Programming Languages. aicas Books.Google ScholarGoogle Scholar
  34. Simon, D., Cifuentes, C., Cleal, D., Daniels, J., and White, D. 2006. Java on the bare metal of wireless sensor devices: The squawk Java virtual machine. In Proceedings of the 2nd International Conference on Virtual Execution Environments (VEE’06). ACM Press, New York, 78--88. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Wellings, A. and Schoeberl, M. 2009. Thread-local scope caching for real-time Java. In Proceedings of the 12th IEEE International Symposium on Object/Component/Service-Oriented Real-Time Distributed Computing (ISORC’09). IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Wilkinson, T. 1996. Kaffe -- A virtual machine to run Java code. http://www.kaffe.org.Google ScholarGoogle Scholar
  37. Wirth, N. 1977. Design and implementation of modula. Softw. Pract. Exper. 7, 3--84.Google ScholarGoogle ScholarCross RefCross Ref
  38. Wirth, N. 1982. Programming in Modula-2. Springer. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Xenomai Developers. 2008. Xenomai: Real-Time framework for Linux. http://www.xenomai.org.Google ScholarGoogle Scholar

Index Terms

  1. A Hardware Abstraction Layer in Java

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!