Location of Repository

Combining single-processor prototyping and code generation for the development of distributed embedded systems

By Peter John Vidler


Distributed embedded systems can be very challenging to test—not only is there increased complexity in the design of the software and operating systems, but we may also have to evaluate different scheduling and fault-tolerance approaches for suitability. The result is that system-level testing will generally take place in hardware at a much later time than would be possible with a single-processor system.\ud Carrying out high-level testing at an early stage of the software development process offers a number of advantages in the common scenarios of changing and poorly specified requirements; this thesis aims to address these concerns.\ud A tool-supported process is introduced, which is capable of converting a single-processor prototype embedded system into various multi-processor equivalents, allowing the creation and use of a testable system at an earlier stage of development.\ud The process is then expanded to incorporate the automatic generation of source-code supporting redundancy, essentially allowing a developer to focus on writing code and leave the exploration of multi-processor scheduling and fault-tolerance mechanisms to the process described in this thesis.\ud These approaches are illustrated by means of empirical studies

Publisher: University of Leicester
Year: 2011
OAI identifier: oai:lra.le.ac.uk:2381/9629

Suggested articles



  1. (2006). A C++ refactoring browser and method extraction. doi
  2. (2000). A comparative performance study of a fine-grain multi-threading model on distributed memory machines. doi
  3. (1999). A comparison of the Business Object Notation and the Unified Modeling Language. doi
  4. (2002). A control performance metric for real-time timing constraints. doi
  5. (2000). A modelling framework to support the design and analysis of distributed real-time control systems. doi
  6. (1997). A refactoring tool for Smalltalk. Theory and doi
  7. (1990). A survey of parallel computer architectures. doi
  8. (2004). A survey of software refactoring. doi
  9. (2010). A time-triggered communication protocol for CAN-based networks with a fault-tolerant star topology. doi
  10. (1984). Ada in perspective. doi
  11. (1997). An approach for quantitative analysis of application-specific dataflow architectures. doi
  12. (2000). An empirical evaluation of the MC/DC coverage criterion on the HETE-2 satellite software. doi
  13. (2005). An initial comparison of synchronous and asynchronous network architectures for use in embedded control systems with duplicate processor nodes.
  14. (2003). Analytical design space exploration of caches for embedded systems. doi
  15. (2004). Applying agile methods to embedded systems development.
  16. ARM7TDMI technical reference manual.
  17. (2008). Assessment of performance and dependability in embedded control systems: Methodology and case study. Control Engineering Practice. Cited on doi
  18. (2004). Automated unit testing of embedded ARM applications.
  19. (2005). Automatic conversion from ‘single processor’ to ‘multi-processor’ software architectures for embedded control systems.
  20. (2004). C++ coding standards: 101 rules, guidelines, and best practices.
  21. (1996). C167 derivatives — User’s manual.
  22. (2000). CAN network with time triggered communication. doi
  23. (2003). CASE tools for embedded systems.
  24. (2002). Challenges of refactoring C programs. doi
  25. (1998). Code generation from object models.
  26. (1998). Codesign of embedded systems: Status and trends. doi
  27. (2003). Compiler and runtime support for running OpenMP programs on pentiumand itanium-architectures. doi
  28. (2006). Computer assisted source-code parallelisation. doi
  29. (2005). Computer Organization and Design. doi
  30. (2002). Consistencypreserving model evolution through transformations. doi
  31. (2002). Design by extrapolation: An evaluation of fault tolerant avionics. doi
  32. (2004). Design space exploration for real-time embedded stream processors. doi
  33. (1995). Distributed operating systems. Prentice Hall. Cited on
  34. (2005). E-TDD — embedded test driven development: A tool for hardware-software co-design projects. doi
  35. (2006). Early embedded software design space exploration using UML-based estimation. doi
  36. (2006). Effective test driven development for embedded software. doi
  37. (2000). Efficient methods for embedded system design space exploration. doi
  38. (2003). Embedded software engineering: The state of the practice. doi
  39. (2001). Embedded UML: A merger of real-time UML and co-design. doi
  40. (2004). Eventdriven programming with logical execution times. doi
  41. (2002). Executable modeling with UML: A vision or a nightmare? doi
  42. (2006). Extending the embedded system E-TDDunit test driven development tool for development of a real time video security system prototype. doi
  43. (2004). Fast design space exploration framework with an efficient performance estimation technique. doi
  44. (2002). Fault-tolerant drive-by-wire systems. doi
  45. (2007). Fault-tolerant time-triggered communication using CAN. doi
  46. (1995). Fixed priority pre-emptive scheduling: an historical perspective. doi
  47. (1990). Formal verification of Ada programs. doi
  48. (2005). Formalizing refactorings with graph transformations. doi
  49. (1998). Functional safety of electrical/electronic/programmable electronic safety-related systems. doi
  50. (1990). Generating explicit communication from sharedmemory program references. doi
  51. (1998). Generating reliable embedded processors. doi
  52. (2003). Giotto: A timetriggered language for embedded programming. doi
  53. (2006). Graph transformation in a nutshell. doi
  54. (1973). Graph-grammars: An algebraic approach. doi
  55. (2006). GUI architectures. http://www.martinfowler.com/eaaDev/ uiArchs.html.
  56. (1998). Guidance on the use of Ada95 in high integrity systems. doi
  57. (1997). Handbook of graph grammars and computing by graph transformation: Volume I. foundations. World Scientific Publishing. Cited on doi
  58. (1993). High-Performance Computer Architecture. doi
  59. (2002). Higher-order modeling and automated design-space exploration.
  60. (1981). Introduction to real-time software design. doi
  61. (2000). Introduction to scheduling and timing analysis.
  62. (2002). Just enough software test automation. Prentice Hall.
  63. (2001). Low latency optoelectronic processor-memory interconnection demonstrator. doi
  64. (2003). Microcontrollers for the automobile.
  65. (2004). Modern control systems. doi
  66. (1999). On the requirements of highintegrity code generation. doi
  67. (2001). Patterns for time-triggered embedded systems. doi
  68. (2004). Performance evaluation of antilock brake controller for pneumatic brake system. doi
  69. (2001). Pointer analysis: haven’t we solved this problem yet? doi
  70. (2006). Presenter first: Organizing complex GUI applications for test-driven development. AGILE 2006, page 10. Cited on doi
  71. (2000). Principles for modeling language design. doi
  72. (2004). Productivity analysis of the UPC language. doi
  73. (2005). Program refactoring in the presence of preprocessor directives. doi
  74. (2007). Programming distributed memory systems using OpenMP. doi
  75. (1997). Real-time systems: Design principles for distributed embedded applications. doi
  76. (1993). Realistic and cost-effective software testing.
  77. (1997). Realtime systems. doi
  78. (2003). Refactoring browser with preprocessor. doi
  79. (1992). Refactoring object-oriented frameworks.
  80. (1999). Refactoring: Improving the Design of Existing Code. doi
  81. (2005). Reliable eventtriggered systems for mechatronic applications. doi
  82. (1995). Safer C: Developing software for high-integrity and safetycritical systems. doi
  83. (1986). Scheduling of hard real-time systems. doi
  84. (1992). Software architecture for hard real-time applications: Cyclic executives vs. fixed priority executives. doi
  85. (1982). Software engineering economics. Prentice Hall.
  86. (1988). SPARK: The SPADE Ada kernel.
  87. (2008). Structural testing of component-based systems. doi
  88. (2005). SysML open source project.
  89. (2000). System-level design: Orthogonalization of concerns and platformbased design. doi
  90. (2002). Test driven development: By example. The Addison-Wesley Signature Series.
  91. (2006). Test-driven development for the embedded systems space.
  92. (2000). Testing: A roadmap. doi
  93. (1992). The AVA reference manual.
  94. (1998). The Boost C++ libraries. doi
  95. (2009). The design of OpenMP tasks. doi
  96. (2002). The Embedded Machine: Predictable, portable real-time code. doi
  97. (1998). The Spirit parser framework.
  98. (2005). The Unified Modelling Language reference manual.
  99. (2003). Timed multitasking for real-time embedded software. doi
  100. (2002). Towards efficient design space exploration of heterogeneous embedded media systems. doi
  101. (2007). Two novel shared-clock scheduling algorithms for use with ‘Controller Area Network’ and related protocols. doi
  102. (2005). Two novel shared-clock scheduling algorithms for use with CAN-based distributed systems. doi
  103. (2005). UML 2 and SysML: An approach to deal with complexity in SoC/NoC design. doi
  104. (2005). UML 2.0 profile for embedded system design. doi
  105. (2005). Using “planned pre-emption” to reduce levels of task jitter in a time-triggered hybrid scheduler.
  106. (2008). Using source-tosource transformation tools to provide distributed parallel applications from OpenMP source-code. doi
  107. (2002). What we have learned about fighting defects. doi
  108. (1999). Why unified is not universal: UML shortcomings for coping with round-trip engineering. doi

To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.