Computing systems and information processing methods

The computing system generates intermediate code independent of hardware configuration, allowing for efficient execution on diverse edge devices by compiling it into machine code tailored to each device's specifications, addressing the challenge of creating adaptable applications for varying hardware configurations.

JP7847343B2Active Publication Date: 2026-04-17帝都久利寿 +1
View PDF 11 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
帝都久利寿
Filing Date
2024-11-13
Publication Date
2026-04-17

AI Technical Summary

Technical Problem

Existing technologies require awareness of the hardware configuration of computing devices to create application programs, limiting flexibility and adaptability in creating applications for diverse edge devices with varying specifications.

Method used

A computing system and method that generates intermediate code independent of hardware configuration, which is then compiled into machine code by a second compiler reflecting the device's hardware, enabling execution on various devices without prior knowledge of their configuration.

Benefits of technology

Enables the creation of application programs that can execute efficiently on different hardware configurations, maintaining compatibility and flexibility across diverse edge devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007847343000001
    Figure 0007847343000001
  • Figure 0007847343000002
    Figure 0007847343000002
  • Figure 0007847343000003
    Figure 0007847343000003
Patent Text Reader

Abstract

To provide a solution for generating an application program without considering hardware configuration of a computing device and executing processing in accordance with hardware configuration.SOLUTION: A computing system includes a computing device including a processor, and a software development apparatus for generating an application program to be executed on the computing device. The software development apparatus includes a first compiler for generating an intermediate code by compiling a source including one or more instructions and data to be processed. The computing device includes a second compiler for generating a machine code by reflecting the one or more instructions included in the intermediate code in hardware configuration of the computing device. The processor of the computing device executes the generated machine code after the machine code is generated.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0004] , , , , , , , , ,

[0005]

[0001] The present disclosure relates to a computing system and an information processing method.

Background Art

[0002] The recent progress of information and communication technology (ICT) has been remarkable. Devices connected to networks such as the Internet are spreading not only to conventional information processing devices such as personal computers and smartphones but also to various things. Such a technological trend is called "IoT (Internet of Things; Internet of Things)", and various technologies and services are being proposed and put into practical use. In the future, a world where billions of people on the earth are simultaneously connected to hundreds of billions or trillions of devices is envisioned. In order to realize such a networked world, it is necessary to provide a solution that can be connected more simply, more securely, and more freely.

[0003] With the intelligence of devices used in IoT (also referred to as "edge devices"), it has become necessary to create various types of application programs. On the other hand, it is assumed that there are various types of edge devices and that the hardware specifications and the like are frequently changed.

[0004] For example, Japanese Patent Application Laid-Open No. 2004-038956 discloses a system for discovering and showing computing resources available on various computing devices and exposing such resources as services that can be addressed by software applications.

Prior Art Documents

Patent Documents

[0005]

Patent Document 1

[0006] It is preferable that such application programs can be created without being aware of the resources available to each computing device, as disclosed in the aforementioned Japanese Patent Publication No. 2004-038956 (Patent Document 1).

[0007] A typical objective of this disclosure is to provide a solution that enables the creation of application programs without being aware of the hardware configuration of computing devices, and that allows for the execution of processing according to the hardware configuration of each computing device. [Means for solving the problem]

[0008] A computing system according to one form of this disclosure includes a computing device including a processor and a software development device for creating application programs to run on the computing device. The software development device includes a first compiler that compiles a source including one or more instructions and data to be processed to generate intermediate code. The computing device includes a second compiler that generates machine code from one or more instructions contained in the intermediate code, reflecting the hardware configuration of the computing device. The processor of the computing device is a machine... After the machine code is generated, the generated machine code is executed.

[0009] The intermediate code may include an electronic certificate for the intermediate code and an authentication command for performing an authentication process based on the electronic certificate, and the authentication process based on the electronic certificate may be realized by the authentication command when the machine code is executed.

[0010] The intermediate code may include content, copyright management information for managing the copyright of said content, and management instructions for performing copyright management based on said copyright management information. When machine code is executed, the management instructions may determine whether the content is available for use based on the copyright management information.

[0011] The second compiler may include a management module for updating data that the second compiler references.

[0012] The intermediate code may include auxiliary information to assist in the generation of machine code by the second compiler.

[0013] In another form of this disclosure, a method for processing information is provided that is performed in a computing system including a computing device including a processor and a software development device for creating application programs to be executed on the computing device. The method for processing information includes the steps of: the software development device compiling a source including one or more instructions and data to be processed to generate intermediate code; the computing device generating machine code from one or more instructions included in the intermediate code, reflecting the hardware configuration of the computing device; and the processor of the computing device executing the generated machine code after it has been generated. [Effects of the Invention]

[0014] According to this disclosure, application programs can be created without being aware of the hardware configuration of computing devices, and processing can be executed according to the hardware configuration of each computing device. [Brief explanation of the drawing]

[0015] [Figure 1] This is a schematic diagram showing an example of the overall configuration of an IoT system according to this embodiment. [Figure 2] It is a schematic diagram showing a hardware configuration example of a software development apparatus according to the present embodiment. [Figure 3] It is a schematic diagram showing a hardware configuration example of a controller according to the present embodiment. [Figure 4] It is a schematic diagram for explaining an operation procedure related to the execution of an application program in an IoT system according to the present embodiment. [Figure 5] It is a diagram for explaining an example of generation of intermediate code in an IoT system according to the present embodiment. [Figure 6] It is a diagram for explaining an example of intermediate code in an IoT system according to the present embodiment. [Figure 7] It is a diagram for explaining processing related to generation of machine code from the intermediate code shown in FIG. 6. [Figure 8] It is a flowchart showing a processing procedure of processing executed in an IoT system according to the present embodiment. [Figure 9] It is a diagram showing an example of intermediate code in an IoT system according to the present embodiment. [Figure 10] It is a diagram showing another example of intermediate code in an IoT system according to the present embodiment. [Figure 11] It is a schematic diagram for explaining processing of update / addition of a controller in an IoT system according to the present embodiment. MODE FOR CARRYING OUT THE INVENTION

[0016] Embodiments according to the present disclosure will be described in detail with reference to the drawings. In the drawings, the same or corresponding parts are denoted by the same reference numerals and their description will not be repeated.

[0017] In the following description, as a typical example of a computing system, an IoT system 1 including an edge device 2 and a software development apparatus 100 will be described. However, the computing system of the present disclosure is not limited to the IoT system 1 and can be applied to any system.

[0018] <A.IoT System 1> First, the overall configuration of the IoT system 1 including the software development device 100 and the edge device 2 according to this embodiment will be described.

[0019] FIG. 1 is a schematic diagram showing an example of the overall configuration of the IoT system 1 according to this embodiment. Referring to FIG. 1, in the IoT system 1, typically, an application program (intermediate code) to be executed on the edge device 2 is generated in the software development device 100. The generated application program is transferred from the software development device 100 to the controller 200 included in the edge device 2. The controller 200 generates machine code (or assembly code) from the intermediate code and executes the generated machine code.

[0020] The software development device 100 is used to create an application program to be executed on the edge device 2 (controller 200 included therein). An integrated development environment (IDE: Integrated Development Environment) is provided in the software development device 100, and the user can create any application program on the integrated development environment.

[0021] The controller 200 included in the edge device 2 is an example of a computing device and includes a processor. The edge device 2 can be any device, but typically, factory equipment, various devices in the home, social infrastructure equipment, moving bodies such as vehicles, and any portable device are assumed. As will be described later, the controller 200 has a processor and is capable of executing an application program from the software development device 100.

[0022] An example of the processing procedure in the IoT system 1 will be described. First, the user creates source code using the software development device 100 ((1) Source code creation). Then, the created source code is compiled in the software development device 100, and intermediate code is generated ((2) Intermediate code generation). The generated intermediate code is transferred to the controller 200 of the edge device 2 ((3) Intermediate code transfer). The transferred intermediate code is converted into machine code by the controller 200 ((4) Machine code generation) and executed by the controller 200 ((5) Machine code execution).

[0023] Through such a procedure, any application program developed in the software development device 100 can be executed by the controller 200.

[0024] <B. Hardware configuration example> Next, a hardware configuration example of the devices included in the IoT system 1 according to the present embodiment will be described.

[0025] (b1: Software development device 100) The software development device 100 is typically realized by a general-purpose computer.

[0026] FIG. 2 is a schematic diagram showing a hardware configuration example of the software development device 100 according to the present embodiment. Referring to FIG. 2, the software development device 100 includes, as main components, a processor 102, a main memory 104, an input unit 106, a display 108, a hard disk 110, and a communication interface 122. These components are connected via an internal bus 120.

[0027] The processor 102 is constituted by, for example, a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), or the like. A plurality of processors 102 may be arranged Alternatively, a processor 102 having multiple cores may be used.

[0028] Main memory 104 consists of volatile storage devices such as DRAM (Dynamic Random Access Memory) and SRAM (Static Random Access Memory). Hard disk 110 This holds various programs and data executed by processor 102. Note that instead of the hard disk 110, an SSD (Solid State Drive) or flash memory can be used. A volatile memory device may be used. Of the programs stored on the hard disk 110, the specified machine code is loaded onto the main memory 104, and the processor 102 sequentially executes the computer-readable instructions contained in the machine code loaded onto the main memory 104 to realize various functions as described later.

[0029] Typically, the hard disk 110 stores source code 112 created by the user, a software development program 114 for implementing an integrated development environment, and intermediate code 116 generated from the source code 112. The software development program 114 generates the intermediate code 116 from the source code 112 created by the user and includes a module that provides a development environment for application programs.

[0030] The input unit 106 receives input from a user operating the software development device 100. The input unit 106 may be, for example, a keyboard, a mouse, a touch panel on a display device, or operation buttons located on the casing of the software development device 100.

[0031] The display 108 displays the processing results from the processor 102, etc. The display 108 may be, for example, an LCD (Liquid Crystal Display) or an OLED (Electro-Luminescence) display.

[0032] The communication interface 122 is responsible for data exchange with the controller 200. The communication interface 122 includes wired connection terminals such as a USB (Universal Serial Bus) port, a serial port such as IEEE1394, or a legacy parallel port. Alternatively, the communication interface 122 may include an Ethernet® port.

[0033] Furthermore, all or part of the software development device 100 incorporates an ASIC (Application Specific Integrated Circuit) or similar, which has a circuit equivalent to a computer-readable instruction set. This may be implemented using hardwired circuits. Alternatively, it may be implemented using circuits equivalent to computer-readable instructions on an FPGA (field-programmable gate array). Alternatively, it may be implemented by combining the processor 102, main memory, ASIC, FPGA, etc., as appropriate.

[0034] The software development device 100 may further include a component for reading a software development program 114 containing computer-readable instructions from a non-transitory medium that stores the program. The medium may be, for example, an optical medium such as a DVD (Digital Versatile Disc), or a semiconductor medium such as a USB memory stick.

[0035] Furthermore, the software development program 114 may not only be installed on the software development device 100 via media, but may also be provided from a distribution server on the network.

[0036] (b2: Controller 200) The controller 200 may be implemented using a general-purpose computer, or it may be implemented using a semiconductor substrate that includes the components necessary to perform the processing.

[0037] Figure 3 is a schematic diagram showing an example of the hardware configuration of a controller 200 according to this embodiment. Referring to Figure 3, the controller 200 includes, as its main components, an arithmetic processing unit 210, a wireless communication module 212, a USB controller 214, a communication controller 216, and an I / O driver 218 electrically connected to one or more pads 219.

[0038] The arithmetic processing unit 210 is an arithmetic unit that executes programs, and its main components include a processor 202, main memory 204, and flash memory 206. The processor 202 is composed of, for example, a CPU or a GPU. Multiple processors 202 may be arranged, or a processor 202 having multiple cores may be used. The main memory 204 is composed of a volatile storage device such as DRAM or SRAM. The flash memory 206 is a non-volatile storage device that holds programs executed by the processor 202 and necessary data. Various functions are realized when a specified program from among the programs stored in the flash memory 206 is loaded onto the main memory 204 and executed by the processor 202.

[0039] Typically, the flash memory 206 stores intermediate code 116 provided by the software development device 100 and a system program 208 for performing processes such as generating machine code 230 from the intermediate code 116.

[0040] The wireless communication module 212 is responsible for wireless data exchange with any other device. The wireless communication module 212 may include a processing circuit, an antenna, etc. for wireless communication with devices, routers, mobile base stations, etc. The wireless communication that the wireless communication module 212 supports may be, for example, Wi-Fi (registered trademark), Bluetooth (registered trademark), ZigBee (registered trademark), LPWA (Low Power Wide Area), GSM (registered trademark) , W-CDMA, CDMA200, LTE (Long Term Evolution), the fifth-generation mobile communication system (5G).

[0041] The USB controller 214 is responsible for data exchange with the software development device 100. The communication controller 216 is responsible for wired data exchange with any other device. The communication controller 216 may be configured to support known data exchange methods such as serial communication, parallel communication, GPIO (Ge neral-purpose input / output), etc.

[0042] The IO driver 218 is responsible for the exchange of electrical signals with any device electrically connected via the pad 219. The IO driver 218 outputs an electrical signal according to a command from the arithmetic processing unit 210. Also, the IO driver 218 detects an electrical signal given via the pad 219 and outputs the detection result to the arithmetic processing unit 210. More specifically, the IO driver 218 is composed of a signal generation circuit, a signal detection circuit, a buffer circuit, etc.

[0043] The controller 200 may be driven by power from a battery (not shown). <C. Execution of Application Programs in the Controller 200> In the IoT system 1 according to the present embodiment, intermediate code 116 is provided to the controller 200, and the controller 200 generates and executes machine code 230 from the intermediate code 116.

[0044] In this specification, “intermediate code” includes instructions for executing processing at a distribution destination such as a controller, and the data necessary for executing said instructions. “Intermediate code” is generated to conform to a predetermined execution environment (typically a virtual processor execution environment), independent of the distribution destination's computer architecture and execution environment. That is, “intermediate code” is generated according to the same coding rules regardless of the distribution destination's computer architecture. Machine code 230 is then generated from the “intermediate code” to conform to the distribution destination's computer architecture. While “intermediate code” can also be executed on a virtual processor, generally, using the machine code generated from “intermediate code” allows for more efficient use of computer resources and faster processing. The representation of “intermediate code” can be anything. “Intermediate code” may also be referred to as “intermediate representation.”

[0045] Figure 4 is a schematic diagram illustrating the functional procedure for executing an application program in IoT system 1 according to this embodiment. Referring to Figure 4, in IoT system 1, intermediate code 116 corresponding to the application program generated in the software development device 100 is provided to the controller 200, where it is converted to machine code 230 and then executed.

[0046] More specifically, the software development device 100 has a source code compiler 1140. The source code compiler 1140 may be implemented by the processor 102 of the software development device 100 executing a software development program 114.

[0047] The source code compiler 1140 receives a user-created instruction sequence 130 and / or data 132 as input. The source code compiler 1140 interprets each of the instruction sequences 130 and generates binary intermediate code 116. In this way, the source code compiler 1140 compiles the source containing the instruction sequence 130, which consists of one or more instructions, and the data to be processed, to generate intermediate code 116. The generated intermediate code 116 is sent from the software development device 100 to the controller 200 by any means.

[0048] The controller 200 includes an intermediate code compiler 220 and an API / ABI group 224. These components are included as part of the system program 208 and are provided when the processor 202 of the controller 200 executes the system program 208.

[0049] The intermediate code compiler 220 interprets the intermediate code 116 to generate machine code 230. More specifically, the intermediate code compiler 220 generates machine code 230 from the instruction sequence 130, which consists of one or more instructions contained in the intermediate code 116, reflecting the hardware configuration of the controller 200. The intermediate code compiler 220 includes a management module 222, which performs the processing necessary for generating machine code 230 according to special instructions and other information contained in the intermediate code 116 (detailed processing examples will be described later).

[0050] API / ABI group 224 consists of APIs (Application Programming Interfaces) and ABIs that map the instructions and functions described in intermediate code 116 to the system. An Application Binary Interface (ABI) is provided. The intermediate code compiler 220 interprets the intermediate code 116 and generates machine code 230 while referring to the API / ABI group 224. The API / ABI group 224 may include drivers for controlling hardware and various configuration information.

[0051] The generated machine code 230 is executed sequentially by the processor 202 of the controller 200. That is, the processor 202 of the controller 200 executes the generated machine code 230 after it has been generated.

[0052] Figure 5 is a diagram illustrating an example of intermediate code 116 generation in an IoT system 1 according to this embodiment. Figure 5(a) shows an example in which intermediate code 116 is generated from an instruction sequence 130. Figure 5(b) shows an example in which intermediate code 116 is generated from the instruction sequence 130 as well as data 132 necessary for processing.

[0053] Data 132 is provided according to the purpose and use of the application program. For example, if an application program is intended to display an arbitrary image, then the instruction sequence 130 will contain instructions for internally generating the image and the content for display output. Data 132 may also include raster data or vector data for defining the image.

[0054] Next, with reference to Figures 6 and 7, the conversion process from intermediate code 116 to machine code 230 will be described.

[0055] Figure 6 is a diagram illustrating an example of intermediate code 116 in IoT system 1 according to this embodiment. Figure 7 is a diagram illustrating the process of generating machine code 230 from the intermediate code 116 shown in Figure 6.

[0056] As an example, Figures 6 and 7 show an example of the process of displaying a figure drawn according to the definition specified in data 132. For the sake of explanation, the code in Figures 6 and 7 is written in the form of pseudo-instructions, but in reality, it will be processed in binary format.

[0057] Intermediate code 116 includes a portion corresponding to instruction sequence 130 (see Figure 4) and a portion corresponding to data 132 (see Figure 4). An example of intermediate code 116 shown in Figure 6 includes several divided sections.

[0058] More specifically, the intermediate code 116 includes a type section 1161, an import section 1162, a function section 1163, an export section 1164, a start section 1165, a code section 1166, and a data section 1167.

[0059] The type section 1161 includes the specification of function signatures, such as the definition of types referenced in the target program. The import section 1162 includes the definition of external programs or external libraries referenced in the target program. The function section 1163 includes the definition of functions defined in the target program. The export section 1164 includes the definition of functions that are exposed when the target program is referenced by external programs, etc. The start section 1165 includes the definition of the index of functions referenced within the target program. The code section 1166 is essentially the part corresponding to the instruction sequence 130 and contains one or more instructions. The code section 1166 can contain any type of instruction. For example, in addition to general-purpose arithmetic, data access, and file access, it can also contain instructions for communication with other controllers or servers (e.g., inter-process communication).

[0060] Data section 1167 contains definitions of data that are subject to processing by one or more instructions specified in code section 1166. Data section 1167 may contain any data. For example, it may include information for configuring a communication stack or information such as digital certificates.

[0061] Referring to FIG. 7, the machine code 230 includes one or more instructions described by an instruction set that can be interpreted by the processor 202 of the controller 200. That is, depending on the type of the processor 202 of the controller 200 and the like, the type of the instruction set that defines the machine code 230 and the like is determined.

[0062] Thus, in the IoT system 1 according to the present embodiment, after converting the intermediate code 116 into the machine code 230 according to the execution environment, it is executed in each controller 200, so that an application program executable on various controllers 200 can be provided using the same source code. Further, since the executable machine code 230 is generated according to the environment and hardware of the controller 200 and the like, even when the hardware specification of the controller 200 is changed, compatibility and the like can be maintained.

[0063] <D. Processing Procedure> Next, the processing procedure of the processing executed in the IoT system 1 according to the present embodiment will be described.

[0064] FIG. 8 is a flowchart showing the processing procedure of the processing executed in the IoT system 1 according to the present embodiment. FIG. 8(a) shows the processing procedure executed in the software development device 100, and FIG. 8(a) shows the processing procedure executed in the controller 200.

[0065] Referring to FIG. 8(a), the software development device 100 generates the source code 112 according to the operation by the user (step S100). Then, the software development device 100 analyzes the source code 112 according to the operation by the user and generates the intermediate code 116 (step S102). More specifically, the software development device 100 executes a process of compiling a source including an instruction sequence 130 composed of one or more instructions and data 132 to be processed to generate the intermediate code 116.

[0066] Then, according to the operation by the user, the software development device 100 transmits the generated intermediate code 116 to the controller 200 of the distribution destination (step S104).

[0067] Referring to FIG. 8(b), the controller 200 stores the intermediate code 116 transmitted from the software development device 100 in the flash memory 206 or the like temporarily (step S200). Then, when the controller 200 receives an explicit instruction from the outside or when a predetermined condition is satisfied, the controller 200 analyzes the intermediate code 116 to generate machine code 230 (step S202). More specifically, the controller 200 executes a process of generating the machine code 230 by reflecting the hardware configuration of the controller 200 in an instruction sequence 130 composed of one or more instructions included in the intermediate code 116.

[0068] Then, the controller 200 executes the generated machine code 230 (step S204). That is, after the machine code 230 is generated, the processor 202 of the controller 200 executes the generated machine code 230. The execution of the machine code 230 by the processor 202 (the process of step S204) may be repeated a predetermined number of times.

[0069] Note that once the machine code 230 is generated from the intermediate code 116, the generated machine code 230 can be used as long as the hardware configuration of the controller 200 does not change. Therefore, in the case of an application that is repeatedly executed, when the intermediate code 116 is received, the machine code 230 may be automatically generated.

[0070] <E. Authentication Process> In order to enhance the security for the intermediate code 116 provided to the controller 200, an authentication process for the intermediate code 116 may be added.

[0071] FIG. 9 is a diagram showing an example of the intermediate code 116 in the IoT system 1 according to the present embodiment. The intermediate code 116 shown in FIG. 9 includes an instruction sequence 130 created by the user, data 132, and an electronic certificate 134 provided by the software development apparatus 100 or the entity that provides the intermediate code 116.

[0072] The electronic certificate 134 includes a hash value generated using the electronic certificate held by the entity that has provided the electronic certificate 134 to the intermediate code 116.

[0073] In the controller 200, the intermediate code 116 may be authenticated by executing the machine code 230 generated from the intermediate code 116. For example, an authentication instruction 1310 may be included in the instruction sequence 130, and an authentication process using the electronic certificate 134 may be executed when the authentication instruction 1310 is executed.

[0074] As described above, the intermediate code 116 may include the electronic certificate 134 for the intermediate code 116 and the authentication instruction 1310 for executing the authentication process based on the electronic certificate 134. Then, by executing the machine code 230 generated from the intermediate code 116, the authentication process based on the electronic certificate 134 may be realized by the authentication instruction 1310.

[0075] Instead of the above-described implementation form, a function for authenticating the electronic certificate 134 may be added to the system program 208 of the controller 200.

[0076] By using the authentication function implemented in such a controller 200, the legitimacy and authenticity of the intermediate code 116 can be ensured.

[0077] <F. Copyright Management> A function for realizing copyright management for the digital content included in the intermediate code 116 provided to the controller 200 may be added.

[0078] FIG. 10 is a diagram showing another example of the intermediate code 116 in the IoT system 1 according to the present embodiment. The intermediate code 116 shown in FIG. 10 includes an instruction sequence 130 created by a user and data 132 including content, and also includes a DRM 136 for managing the copyright of the content included in the data 132.

[0079] The DRM 136 may typically be issued by an organization or the like that manages copyrights, or when the creator of the intermediate code 116 manages the copyrights, it may be generated and assigned by a software development device 100 or the like.

[0080] In the controller 200, by referring to the DRM 136, it can be determined whether the use of the content included in the intermediate code 116 is proper use. For example, a DRM check instruction 1320 may be included in the instruction sequence 130, and by executing the DRM check instruction 1320, copyright management based on the DRM 136 may be realized. Alternatively, a function for realizing copyright management based on the DRM 136 may be added to the system program 208 of the controller 200.

[0081] The intermediate code 116 shown in FIG. 10 includes data 132 including content, a DRM 136 which is copyright management information for managing the copyright of the content, and a DRM check instruction 1320 which is a management instruction for executing copyright management based on the DRM 136. Then, when the machine code 230 generated from the intermediate code 116 is executed, the DRM check instruction 1320 determines whether the content can be used based on the DRM 136.

[0082] By using such a copyright management function implemented in the controller 200, proper use of the content included in the intermediate code 116 can be guaranteed.

[0083] <G. Update / Addition> The controller 200 may update or add APIs / ABIs 224 and libraries necessary for generating machine code 230 from intermediate code 116.

[0084] Figure 11 is a schematic diagram illustrating the update / addition process of the controller 200 in the IoT system 1 according to this embodiment. Referring to Figure 11, when the intermediate code compiler 220 of the controller 200 finds instructions or functions that it cannot resolve when interpreting the intermediate code 116, it may obtain the necessary libraries and definitions from an external server 300.

[0085] Specifically, the management module 222 of the intermediate code compiler 220 sends a request to the external server 300 to obtain libraries and definitions necessary for generating machine code 230 from the intermediate code 116, and adds update libraries and other items provided by the external server 300 to the API / ABI group 224. In this way, the intermediate code compiler 220 includes a management module 222 for updating the data that the intermediate code compiler 220 references.

[0086] In the IoT system 1 according to this embodiment, the controller 200 automatically acquires the necessary libraries and definitions, and then generates machine code 230 from the intermediate code 116. Therefore, in the software development device 100, the user does not need to be aware of the environment in which the application program is executed.

[0087] Furthermore, the execution environment (system program 208) of the controller 200 may be updated itself. In this case, the system program is updated in the intermediate code 116. This includes the instructions and the updated program. This intermediate code 116 is converted to machine code 230 and executed by the controller 200, allowing the controller 200's own execution environment to be updated at any time.

[0088] <H. Compression Processing of Intermediate Code 116> Generally, since the intermediate code 116 is more redundant compared to the machine code 230, the intermediate code 116 may be data-compressed for the purpose of facilitating distribution to the controller 200 or the like.

[0089] As a data compression method, known compression techniques can be used. Alternatively, after data-compressing the intermediate code 116 (intermediate representation) generated by compiling the source code 112 using a shortened representation, it may be converted into a binary format. In this case, information indicating the correspondence between the representation originally used in the intermediate representation and the shortened representation may be added to the intermediate code 116 and then provided to the controller 200.

[0090] <I. Auxiliary Information> As described above, the intermediate code 116 is generated to conform to a predetermined execution environment without depending on the computer architecture and execution environment of the distribution destination, etc. However, ultimately, since it is necessary to generate the machine code 230 to be executed by the processor at the distribution destination, auxiliary information (preliminary information) for assisting in the generation of the machine code 230 at the distribution destination may be included in the intermediate code 116.

[0091] Such auxiliary information can include arbitrary information. For example, it may include the specification of optimization options when executing on a specific processor, a pre-designed memory map, and the like.

[0092] <J. Variation Example> In the above-described embodiment, an example of directly transmitting the intermediate code 116 from the software development apparatus 100 to the controller 200 is shown. However, it is not limited to such a one-to-one configuration. For example, the intermediate code 116 generated by the software development apparatus 100 may be uploaded to a server, and any controller 200 may download an arbitrary intermediate code 116 from the server to distribute the intermediate code 116.

[0093] <K. Advantages> According to the IoT system 1 according to the present embodiment, an application program can be created without being aware of the hardware configuration of the controller 200, and execution of processing according to the hardware configuration of each controller 200 is enabled.

[0094] The embodiments disclosed this time should be considered to be illustrative in all respects and not restrictive. The scope of the present invention is shown not by the above description but by the claims, and it is intended that all modifications within the meaning and scope equivalent to the claims be included.

Explanation of Signs

[0095] 1 IoT system, 2 Edge device, 100 Software development device, 102, 202 Processor, 104, 204 Main memory, 106 Input unit, 108 Display, 110 Hard disk, 112 Source code, 114 Software development program, 116 Intermediate code, 120 Internal bus, 122 Communication interface, 130 Instruction sequence, 132 Data, 134 Electronic certificate, 200 Controller, 206 Flash memory, 208 System program, 210 Arithmetic processing unit, 212 Wireless communication module, 214 USB controller, 216 Communication controller, 218 Driver, 219 Pad, 220 Compiler, 222 Management module, 224 API / ABI group, 230 Machine code, 300 Server, 1140 Source code compiler, 1301, 1302, 1303, 1304, 1305, 1306 Instructions, 1310 Authentication instruction, 1320 Check instruction. Driver, 219 Pad, 220 Compiler, 222 Management module, 224 API / ABI group, 230 Machine code, 300 Server, 1140 Source code compiler, 1301, 1302, 1303, 1304, 1305, 1306 Instructions, 1310 Authentication instruction, 1320 Check instruction.

Claims

1. It is a system, A first generation means that analyzes a source containing one or more instructions and data to be processed to generate an intermediate representation and an electronic certificate for said intermediate representation, A system program for authenticating the electronic certificate, implemented on a computing device separate from the device on which the intermediate representation was generated, A system comprising: a second generation means for generating machine code from the intermediate representation, reflecting the hardware configuration of the computing device.

2. The second generation means generates the machine code by referring to a library for controlling the hardware of the computing device as the hardware configuration of the computing device, The system according to claim 1, wherein the library includes at least one of an API (Application Programming Interface) and an ABI (Application Binary Interface).

3. The system according to claim 2, further comprising means for obtaining a library referenced by the second generation means from an external server.

4. The aforementioned intermediate representation includes content and copyright management information for managing the copyright of said content. The system according to any one of claims 1 to 3, further comprising means for determining whether the content is available for use based on the copyright management information.

5. The system according to any one of claims 1 to 4, further comprising means for supporting the development of the source by a user.

6. The system according to any one of claims 1 to 5, further comprising at least one of the following: means for transmitting the intermediate representation to the computing device, or means for uploading the intermediate representation to a server.

7. A computer analyzes a source containing one or more instructions and data to be processed to generate an intermediate representation and an electronic certificate for the intermediate representation. A computing device other than the device that generated the intermediate representation authenticates the electronic certificate using an implemented system program; A method comprising the steps of: the computing device generating machine code from the intermediate representation, reflecting the hardware configuration of the computing device.

Citation Information

Patent Citations

  • Webpage application code protective method and system, and executive speed-up method and system

    CN103177199A

  • Device and method for compilation

    JP2001075814A

  • Computing system and method

    JP2004038956A

  • Intermediate code optimization method, device and program

    JP2004078821A

  • Program link program, recording medium with program link program recorded, program link device, terminal device and program link method

    JP2004318860A