Embedded System Programming via Gateway Execution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Embedded systems, such as sensor nodes, typically require specialized programming skills due to the use of low-level languages like C/C++ or domain-specific languages, which limits their programming efficiency and accessibility.

Innovation Solution

Programming embedded systems using high-level languages like C# or Java within a software development framework that includes class libraries and tools, allowing applications to be executed on a gateway computing device rather than the embedded system itself, thereby avoiding the need for a virtual execution system and providing a more accessible programming model.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If low-level languages like C/C++ are used for programming embedded systems, then the system can be programmed with direct hardware control, but the programming requires specialized skill set and reduces accessibility

Engineering Contradiction:
Improveprogramming accessibilityVSAvoidprogramming complexity
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent introduces an intermediary layer consisting of a high-level programming language runtime environment and a compilation system that translates high-level code into low-level machine code. This intermediary allows programmers to use accessible high-level languages while the system executes efficient low-level code on the embedded device, resolving the contradiction between programming accessibility and execution efficiency.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of operation

If a virtual execution system is deployed on the embedded system to enable high-level language execution, then programming accessibility is improved, but the embedded system's limited resources are consumed

Engineering Contradiction:
Improveprogramming accessibilityVSAvoidresource consumption on embedded system
Core Design Contradiction:
Ease of operationVSUse of energy by moving object

Solution Approach 1:

The patent segments the execution environment by separating the high-level language runtime and virtual machine from the embedded system. The runtime environment is deployed on a development or gateway system with sufficient resources, while the embedded system only receives compiled machine code. This segmentation allows high-level programming accessibility without consuming the embedded system's limited resources.

Inventive Principle:
Principle #1Segmentation

3Productivity

If high-level languages are used for embedded system programming, then programming efficiency and accessibility are improved, but the application requires a virtual execution system on the embedded device which consumes resources

Engineering Contradiction:
Improveprogramming efficiencyVSAvoidexecution system complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent uses copying by compiling high-level language source code into machine code that can be executed directly on the embedded system without requiring the original high-level runtime environment. The compiled code is a self-contained copy of the application that runs natively on the resource-constrained device, maintaining programming efficiency benefits while eliminating the need for complex virtual execution systems on the embedded device.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS8661407B2Framework for programming embedded system applications
Publication Date: 2014.02.25 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8661407B2 patent drawing
  • US8661407B2 patent drawing
  • US8661407B2 patent drawing

AI summary

The disclosure describes a method for programming applications for embedded systems such as sensor nodes. In an embodiment, this comprises writing embedded system applications in a high-level language such as C# or Java using a software development framework which includes a set of tools and class libraries. The class libraries contain pre-written code to carry out tasks which may be required of an embedded system. The class libraries may be extended following identification of a need for a particular function in an embedded system. Developed applications may be subsequently stored on the embedded system but executed on a gateway computing device which interacts with the embedded system. This means that the application(s) can be executed without requiring the presence of a virtual execution system located on the embedded system while allowing a high-level programming model for application programmers.