Computing system and information processing method

JP2025020384A5Active Publication Date: 2025-03-27帝都久利寿 +1
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024198004
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-11-13
Publication Date
2025-03-27
Estimated Expiration
2039-07-22

AI Technical Summary

Technical Problem

Existing application programs require awareness of the hardware configuration of computing devices to function correctly, limiting flexibility and adaptability in dynamic IoT environments where devices have varying specifications.

Method used

A computing system and method that compiles source code into intermediate code, which is then converted to machine code by a second compiler reflecting the hardware configuration of the device, allowing application programs to execute without prior knowledge of the device's hardware, with features like authentication and copyright management.

Benefits of technology

Enables application programs to run on diverse hardware configurations without modification, ensuring compatibility and security while managing copyrights and updating as needed.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
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]

[0001] The present disclosure relates to computing systems and methods of processing information. [Background technology]

[0002] Recent advances in Information and Communication Technology (ICT) have been remarkable, and devices connected to networks such as the Internet are no longer limited to conventional information processing devices such as personal computers and smartphones, but are now expanding to include a wide variety of things. This technological trend is known as the "Internet of Things (IoT)," and various technologies and services are being proposed and put into practical use. In the future, it is expected that billions of people and tens of billions or even trillions of devices on Earth will be connected simultaneously. To realize such a networked world, it is necessary to provide solutions that allow connections to be made simpler, safer, and more freely.

[0003] As devices used in IoT (also called "edge devices") become more intelligent, it is becoming necessary to create various types of application programs. On the other hand, as various types of edge devices exist, it is expected that the hardware specifications will change frequently.

[0004] For example, JP 2004-038956 A discloses a system for discovering and revealing computing resources available on various computing devices and for exposing such resources as services addressable by software applications. [Prior art documents] [Patent documents]

[0005] [Patent Document 1] JP 2004-038956 A Summary of the Invention [Problem to be solved by the invention]

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

[0007] A typical objective of the present disclosure is to provide a solution that enables application programs to be created without being aware of the hardware configuration of a computing device, and enables processing to be executed in accordance with the hardware configuration of each computing device. [Means for solving the problem]

[0008] A computing system according to an embodiment of the present disclosure includes a computing device including a processor, and a software development apparatus for creating an application program to be executed on the computing device. The software development apparatus includes a first compiler that compiles a source including one or more instructions and data to be processed to generate an intermediate code. The computing device includes a second compiler that generates machine code by reflecting one or more instructions included in the intermediate code to a hardware configuration of the computing device. The processor of the computing device is a machine After generating the machine code, the generated machine code is executed.

[0009] The intermediate code may include an electronic certificate for the intermediate code and an authentication instruction for performing authentication processing based on the electronic certificate, and when the machine code is executed, the authentication instruction may realize authentication processing based on the electronic certificate.

[0010] The intermediate code may include content, copyright management information for managing the copyright of the content, and a management instruction for executing copyright management based on the copyright management information. When the machine code is executed, the management instruction may determine whether the content can be used based on the copyright management information.

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

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

[0013] According to another aspect of the present disclosure, there is provided an information processing method executed in a computing system including a computing device including a processor, and a software development apparatus for creating an application program executed on the computing device. The information processing method includes a step of the software development apparatus compiling a source including one or more instructions and data to be processed to generate an intermediate code, a step of the computing device generating machine code by reflecting the one or more instructions included in the intermediate code with a hardware configuration of the computing device, and a step of the processor of the computing device executing the generated machine code after the machine code is generated. Effect of the Invention

[0014] According to the present disclosure, it is possible to create an application program without being aware of the hardware configuration of a computing device, and to execute processing according to the hardware configuration of each computing device. [Brief description of the drawings]

[0015] [Figure 1] 1 is a schematic diagram showing an example of an overall configuration of an IoT system according to an embodiment of the present invention. [Diagram 2] FIG. 1 is a schematic diagram showing an example of a hardware configuration of a software development apparatus according to an embodiment of the present invention. [Diagram 3] FIG. 2 is a schematic diagram showing an example of a hardware configuration of a controller according to the present embodiment. [Figure 4] FIG. 2 is a schematic diagram for illustrating functional procedures related to the execution of an application program in the IoT system according to the present embodiment. [Diagram 5] 10 is a diagram for explaining an example of generation of an intermediate code in the IoT system according to the present embodiment. FIG. [Figure 6] 4 is a diagram for explaining an example of an intermediate code in the IoT system according to the present embodiment. FIG. [Figure 7] 7 is a diagram for explaining a process for generating a machine code from the intermediate code shown in FIG. 6; [Figure 8] 11 is a flowchart showing a processing procedure of processing executed in the IoT system according to the present embodiment. [Figure 9] FIG. 4 is a diagram showing an example of intermediate code in the IoT system according to the present embodiment. [Figure 10] FIG. 11 is a diagram showing another example of the intermediate code in the IoT system according to the present embodiment. [Figure 11] FIG. 11 is a schematic diagram for illustrating a process of updating / adding a controller in the IoT system according to the present embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0016] DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS The present disclosure will now be described in detail with reference to the accompanying drawings, in which the same or corresponding parts in the drawings are designated by the same reference numerals and will not be described repeatedly.

[0017] In the following description, an IoT system 1 including an edge device 2 and a software development apparatus 100 will be described as a typical example of a computing system; 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システム1> First, the overall configuration of an IoT system 1 including a software development apparatus 100 and an edge device 2 according to the present embodiment will be described.

[0019] Fig. 1 is a schematic diagram showing an example of an overall configuration of an IoT system 1 according to the present embodiment. With reference to Fig. 1, in the IoT system 1, typically, an application program (intermediate code) to be executed in an edge device 2 is generated in a software development device 100. The generated application program is transferred from the software development device 100 to a controller 200 included in the edge device 2. The controller 200 generates a machine code (or an assembler 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 in the edge device 2 (the controller 200 included in the edge device 2). The software development device 100 is provided with an integrated development environment (IDE), and a 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 may be any device, but typically includes factory equipment, various household devices, social infrastructure equipment, moving objects such as vehicles, any portable devices, and the like. As described below, the controller 200 has a processor and is capable of executing application programs 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 in 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 composed of, for example, a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), or the like. A plurality of processors 102 may be arranged , a processor 102 having multiple cores may be employed.

[0028] The main memory 104 is configured with a volatile storage device such as a dynamic random access memory (DRAM) or a static random access memory (SRAM). The hard disk 110 may be replaced with a non-volatile memory such as a solid state drive (SSD) or a flash memory. A volatile storage device may be used. Of the programs stored in the hard disk 110, designated machine codes are loaded onto the main memory 104, and the processor 102 sequentially executes computer-readable instructions included in the machine codes loaded onto the main memory 104 to realize various functions as described below.

[0029] Typically, the hard disk 110 stores source code 112 created arbitrarily by the user, a software development program 114 for realizing 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 arbitrarily by the user, and includes a module that provides a development environment for an application program.

[0030] The input unit 106 accepts input operations from a user who operates the software development device 100. The input unit 106 may be, for example, a keyboard, a mouse, a touch panel arranged on a display device, or operation buttons arranged on the housing of the software development device 100.

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

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

[0033] All or part of the software development device 100 may be implemented using a software program such as an ASIC (Application Specific Integrated Circuit) incorporating a circuit that corresponds to a computer-readable instruction. This may be implemented using hardwired circuitry, or alternatively, using circuitry corresponding to computer-readable instructions on a field-programmable gate array (FPGA). Moreover, it may be realized by appropriately combining the processor 102, a main memory, an ASIC, an FPGA, and the like.

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

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

[0036] (b2: Controller 200) The controller 200 may be implemented using a general purpose computer or may be implemented using a semiconductor substrate containing the necessary components to implement the processing.

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

[0038] The arithmetic processing unit 210 is a calculation unit that executes a program, and includes a processor 202, a main memory 204, and a flash memory 206 as main components. The processor 202 is configured with, for example, a CPU or a GPU. A plurality of processors 202 may be arranged, or a processor 202 having a plurality of cores may be adopted. The main memory 204 is configured with a volatile storage device such as a DRAM or an SRAM. The flash memory 206 is a non-volatile storage device that holds programs executed by the processor 202 and necessary data. Of the programs stored in the flash memory 206, a specified program is expanded on the main memory 204 and executed by the processor 202 to realize various functions.

[0039] Typically, the flash memory 206 stores the intermediate code 116 provided by the software development device 100 and a system program 208 for implementing a process such as generating a 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 adapted to support known data exchange methods such as serial communication, parallel communication, GPIO (General-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, the intermediate code 116 is provided to the controller 200, and the controller 200 generates and executes the machine code 230 from the intermediate code 116.​

[0044] In this specification, the "intermediate code" includes an instruction for executing a process at a distribution destination such as a controller and data required for executing the instruction. The "intermediate code" is generated so as to fit a predetermined execution environment (typically, the execution environment of a virtual processor) without depending on the computer architecture and execution environment of the distribution destination. In other words, the "intermediate code" is generated according to the same coding rules regardless of the computer architecture of the distribution destination. Then, the machine code 230 is generated from the "intermediate code" so as to fit the computer architecture of the distribution destination. Although the "intermediate code" can be executed by a virtual processor, generally, computer resources can be used more efficiently and processing can be accelerated by using the machine code generated from the "intermediate code". The "intermediate code" may be expressed in any manner. The "intermediate code" may also be called an "intermediate expression".

[0045] Fig. 4 is a schematic diagram for explaining a functional procedure related to the execution of an application program in the IoT system 1 according to the present embodiment. With reference to Fig. 4, in the IoT system 1, intermediate code 116 corresponding to the application program generated in the software development device 100 is provided to the controller 200, which converts it into machine code 230 and then executes it.

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

[0047] The source code compiler 1140 receives as input an instruction sequence 130 and / or data 132 created by a user. The source code compiler 1140 interprets each of the instruction sequences 130 to generate an intermediate code 116 in binary format. In this manner, the source code compiler 1140 compiles a source including the instruction sequence 130 consisting of one or more instructions and data to be processed to generate the intermediate code 116. The generated intermediate code 116 is transmitted from the software development device 100 to the controller 200 by any method.

[0048] The controller 200 includes an intermediate code compiler 220 and an API / ABI group 224. These components are included as part of a 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 the machine code 230 by reflecting an instruction sequence 130 consisting of one or more instructions included in the intermediate code 116, in accordance with the hardware configuration of the controller 200. The intermediate code compiler 220 includes a management module 222, and executes processing required for generating the machine code 230 according to special instructions included in the intermediate code 116 (a detailed processing example will be described later).

[0050] The API / ABI group 224 is a set of APIs (Application Programming Interfaces) and ABIs that associate commands and functions described in the intermediate code 116 with the system. The intermediate code compiler 220 provides an Application Binary Interface (API / ABI) for the intermediate code 116. The intermediate code compiler 220 interprets the intermediate code 116 and generates machine code 230 while referring to an API / ABI group 224. The API / ABI group 224 may include drivers for controlling hardware and various setting information.

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

[0052] Fig. 5 is a diagram for explaining an example of generation of the intermediate code 116 in the IoT system 1 according to the present embodiment. Fig. 5(a) shows an example in which the intermediate code 116 is generated from an instruction sequence 130. Fig. 5(b) shows an example in which the intermediate code 116 is generated from data 132 required for processing in addition to the instruction sequence 130.

[0053] The data 132 is provided according to the purpose and use of the application program. For example, assuming an application program for displaying an arbitrary image, the instruction sequence 130 describes an instruction for internally generating the image and the contents for displaying and outputting the image. The data 132 may also include raster data or vector data for defining the image.

[0054] Next, the process of converting the intermediate code 116 into the machine code 230 will be described with reference to FIGS.

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

[0056] As an example, Figures 6 and 7 show an example of a process for displaying a figure drawn according to a definition prescribed in data 132. For convenience of explanation, codes are written in the form of pseudo commands in Figures 6 and 7, but in reality, the codes are processed in binary format.

[0057] The intermediate code 116 includes a portion corresponding to an instruction sequence 130 (see FIG. 4) and a portion corresponding to data 132 (see FIG. 4). An example of the intermediate code 116 shown in FIG. 6 includes several partitioned 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 a function signature specification such as a definition of a type referenced in the target program. The import section 1162 includes a definition of an external program or an external library referenced in the target program. The function section 1163 includes a definition of a function specified in the target program. The export section 1164 includes a definition of a function to be made public when the target program is referenced from an external program or the like. The start section 1165 includes a definition of an index of a function referenced in the target program. The code section 1166 is a portion that substantially corresponds to the instruction sequence 130, and includes one or more instructions. The code section 1166 can include any type of instruction. For example, in addition to general-purpose arithmetic processing, data access, file access, etc., it can also include an instruction for realizing communication (e.g., inter-process communication, etc.) between other controllers, servers, etc.

[0060] Data section 1167 includes a definition of the data that is to be processed by one or more instructions specified in code section 1166. Any data may be included in data section 1167. For example, data section 1167 may include information for configuring a communications stack, digital certificates, and other information.

[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. Therefore, an application program that can be executed on various controllers 200 can be provided using the same source code. In addition, 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 and generates the intermediate code 116 according to the operation by the user (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 for a while (step S200). Then, when receiving an explicit instruction from the outside or when a predetermined condition is satisfied, the controller 200 analyzes the intermediate code 116 to generate a 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 on an instruction sequence 130 composed of one or a plurality of instructions included in the intermediate code 116.

[0068] Then, the controller 200 executes the generated machine code 230 (step S204). That is, after the generation of the machine code 230, 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] When the machine code 230 is generated from the intermediate code 116, the generated machine code 230 can be used unless the hardware configuration of the controller 200 is changed. Therefore, in the case of an application that is repeatedly executed, when receiving the intermediate code 116, 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 and data 132 created by the user, as well as an electronic certificate 134 given by the software development device 100 or the entity providing the intermediate code 116.

[0072] The electronic certificate 134 includes a hash value generated using the electronic certificate held by the entity that gave 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 by executing the authentication instruction 1310.

[0074] In this way, 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 a command 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 may be generated and granted by a software development device 100 or the like when the creator of the intermediate code 116 manages the copyright himself / herself.

[0080] In the controller 200, by referring to the DRM 136, it is possible to determine whether the use of the content included in the intermediate code 116 is appropriate use. For example, a DRM check instruction 1320 may be included in the command 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 the API / ABI group 224 and libraries required for generating the machine code 230 from the intermediate code 116 in the controller 200 .

[0084] Fig. 11 is a schematic diagram for explaining the update / addition process of the controller 200 in the IoT system 1 according to the present embodiment. Referring to Fig. 11, when the intermediate code compiler 220 of the controller 200 finds an unresolvable command, function, etc. in interpreting the intermediate code 116, the intermediate code compiler 220 may acquire necessary libraries, definitions, etc. 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 acquire libraries, definitions, and the like required to generate the machine code 230 from the intermediate code 116, and adds update libraries and the like 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 data referenced by the intermediate code compiler 220.

[0086] In the IoT system 1 according to this embodiment, the controller 200 automatically acquires necessary libraries, definitions, etc., and generates the 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 itself may be updated. In this case, the intermediate code 116 is The intermediate code 116 includes instructions for updating the program and the updated program. The intermediate code 116 is converted into a machine code 230 and executed by the controller 200, so that the execution environment of the controller 200 itself can 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, for the purpose of facilitating distribution to the controller 200, etc., the intermediate code 116 may be data-compressed.

[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, etc. of the distribution destination. 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 or a pre-designed memory map, etc.

[0092] <J. Modification 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 was 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 as 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 are 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 Ibar, 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. 1. A system comprising: a first generating means for analyzing a source including one or more instructions and data to be processed to generate an intermediate representation and a digital certificate for the intermediate representation; a system program for authenticating the digital certificate implemented on a computing device separate from the device on which the intermediate representation was generated; and second generating means for generating machine code from the intermediate representation to reflect a hardware configuration of the computing device.

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

3. The system according to claim 2 , further comprising: means for acquiring a library referenced by said second generating means from an external server.

4. the intermediate representation includes content and copyright management information for managing a copyright of the content; The system according to any one of claims 1 to 3, further comprising a means for determining whether or not the content can be used based on the copyright management information.

5. The system according to any one of claims 1 to 4, further comprising means for assisting a user in developing said source.

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

7. A computer analysing a source including one or more instructions and data to be processed to generate an intermediate representation and a digital certificate for the intermediate representation; a computing device other than the device on which the intermediate representation was generated authenticating the digital certificate using a system program implemented therein; and generating, by the computing device, machine code from the intermediate representation to reflect a hardware configuration of the computing device.