IP Library Granted Patent US 8,239,848
Granted Patent B2
US 8,239,848 · App. 12/286,137 · Granted Aug 7, 2012

Incremental deployment and execution of a program on an embedded device

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,239,848
App. No.
12/286,137
Granted
Aug 7, 2012
Kind
B2
Abstract

System and method for deploying and executing a program, e.g., a graphical program, on an embedded device. The program and a plurality of execution system components are stored on a host computer. The program is analyzed programmatically to determine a subset of the plurality of components required for execution of the program. The subset of components and the program are combined into a file while preserving execution order of the program. The file is transmitted to the device. The file is used to construct a combined program which includes executable code for the program and the subset of components. The device includes a minimal execution engine which executes the subset of components to execute the program. The file may be streamed to the device for streaming execution, where received portions of the subset of components needed for execution of received portions of the program are stored until no longer needed.

Claims (105)

1. A method for receiving and executing a program, the method comprising:

storing a linker/loader program;

receiving a first part of a file from a remote device, wherein the file comprises a plurality of components of a program execution system and a program, wherein the plurality of components are operable to execute the program;

storing the first part of the file;

executing the linker/loader program to create a first portion of a combined program from the first part of the file;

storing the first portion of the combined program;

deleting the first part of the file;

receiving a second part of the file from the remote device;

storing the second part of the file;

executing the linker/loader program to create a second portion of the combined program from the second part of the file;

storing the second portion of the combined program;

deleting the second part of the file; and

executing the first portion and the second portion of the combined program to execute the plurality of components to execute the program.

2. The method of claim 1 ,

wherein the program comprises a graphical program, comprising a block diagram portion and a user interface portion;

wherein said receiving the program from the remote device comprises receiving the block diagram portion of the program from the remote device; and

wherein, during execution of the program, the block diagram executes using the program execution system and the graphical user interface is displayed on a display of the remote device.

3. The method of claim 1 ,

wherein the program comprises a graphical program; and

wherein the graphical program comprises a plurality of interconnected nodes that visually indicate functionality of the graphical program.

4. The method of claim 1 ,

wherein the combined program comprises the plurality of components of the program execution system and the program.

5. The method of claim 1 , further comprising:

wherein the plurality of components are selected out of a larger plurality of program execution components by programmatically analyzing the program to determine required components for execution of the program.

6. The method of claim 1 ,

wherein the plurality of components are determined based on functionality present in the program.

7. The method of claim 1 ,

wherein the file comprises a flat file, wherein the file is created by combining the plurality of components and the program into the file.

8. The method of claim 7 ,

wherein said combining comprises interspersing the plurality of components with the program according to an execution order of the program; and

wherein the first and the second parts of the file are arranged according to the execution order of the program.

9. The method of claim 1 , wherein the program execution system comprises one or more of:

a minimal execution engine; or

a network manager.

10. The method of claim 1 ,

wherein said executing the first portion and the second portion of the combined program comprises executing each of the first and the second portions of the combined program after said storing each respective portion of the combined program.

11. A computer-implemented method for creating and executing a program, the method comprising:

generating a file based on a program and one or more execution modules, wherein the program is operable to execute on an embedded device, wherein the one or more execution modules are usable to execute the program, wherein the one or more execution modules comprise a minimal execution system;

transmitting the file to the embedded device, wherein the file is transmitted in two or more parts;

the embedded device receiving a first of the two or more parts of the file;

the embedded device constructing a combined program based on the first of the two or more parts of the file, wherein the combined program includes program code from the program and execution module code for executing the program code;

the embedded device deleting the first part of the file;

the embedded device receiving a second of the two or more parts of the file;

the embedded device constructing the combined program based on the second part of the file; and

the embedded device executing the program using the minimal program execution system.

12. The method of claim 11 , further comprising:

the embedded device deleting the second of the two or more parts of the file.

13. The method of claim 11 , further comprising:

programmatically analyzing the program to determine required execution modules for execution of the program; and

selecting the required execution modules in response to programmatically analyzing, wherein the required execution modules comprise the one or more execution modules.

14. The method of claim 11 ,

wherein said generating the file comprises interspersing the execution modules with the program according to an execution order of the program; and

wherein the first and the second parts of the file are arranged according to the execution order of the program.

15. The method of claim 11 ,

wherein the execution module code includes code from the one or more execution modules.

16. A method for receiving and executing a program, the method comprising:

receiving a first part of a file, wherein the file comprises a plurality of components of a program execution system and a program;

storing the first part of the file in a memory;

linking the first part of the file into a combined program;

deleting the first part of the file from the memory;

receiving a second part of the file;

storing the second part of the file in the memory;

linking the second part of the file into the combined program;

deleting the second part of the file from the memory;

executing the combined program to execute the plurality of components to execute the program.

17. The method of claim 16 ,

wherein the plurality of components is required for execution of the program; and

wherein the plurality of components is selected out of a larger plurality of program execution components by programmatically analyzing the program to determine required components for execution of the program.

18. The method of claim 16 ,

wherein the file comprises a flat file, wherein the file is created by combining the plurality of components and the program into the file.

19. A method for receiving and executing a program, the method comprising:

receiving a first part of a file from a remote device, wherein the file comprises a plurality of components of a program execution system and a program;

storing the first part of the file in a first memory;

creating a first portion of a combined program from the first part of the file;

storing the first portion of the combined program in a second memory;

deleting the first part of the file from the first memory;

receiving a second part of the file from the remote device;

storing the second part of the file in the first memory;

creating a second portion of the combined program from the second part of the file;

storing the second portion of the combined program in the second memory;

deleting the second part of the file from the second memory; and

executing the first portion and the second portion of the combined program to execute the plurality of components to execute the program.

20. The method of claim 19 ,

wherein the plurality of components is required for execution of the program; and

wherein the plurality of components is selected out of a larger plurality of components of the program execution system by programmatically analyzing the program to determine required components for execution of the program.

21. The method of claim 19 ,

wherein said executing the first portion and the second portion of the combined program comprises executing each of the first and the second portions of the combined program after said storing each respective portion of the combined program.

22. A method for receiving and executing a program, the method comprising:

storing a linker/loader program;

receiving a first part of a file from a remote device, wherein the file comprises a plurality of components of a program execution system and a program, wherein the plurality of components are operable to execute the program;

storing the first part of the file;

executing the linker/loader program to create a first portion of a combined program from the first part of the file;

executing the first portion of the combined program to execute one or more of the plurality of components to execute the program;

deleting the first part of the file;

receiving a second part of the file from the remote device;

storing the second part of the file;

executing the linker/loader program to create a second portion of the combined program from the second part of the file; and

executing the second portion of the combined program to execute one or more of the plurality of components to execute the program.

23. The method of claim 22 ,

wherein the file comprises a flat file, wherein the file is created by combining the plurality of components and the program into the file.

24. The method of claim 23 ,

wherein said combining comprises interspersing the plurality of components with the program according to an execution order of the program; and

wherein the first and the second parts of the file are arranged according to the execution order of the program.

25. The method of claim 22 , further comprising:

deleting the second part of the file.

Assignments (4)
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 057280/0028) Recorded Oct 13, 2023
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: NATIONAL INSTRUMENTS CORPORATION
Reel/Frame 065231/0466 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 052935/0001) Recorded Oct 13, 2023
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: NATIONAL INSTRUMENTS CORPORATION; PHASE MATRIX, INC.
Reel/Frame 065653/0463 →
SECURITY INTEREST Recorded Jun 18, 2021
From: NATIONAL INSTRUMENTS CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 057280/0028 →
SECURITY INTEREST Recorded Jun 14, 2020
From: NATIONAL INSTRUMENTS CORPORATION; PHASE MATRIX, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 052935/0001 →