WO2020241571A1 - ソフトウェア開発装置およびソフトウェア開発プログラム - Google Patents

ソフトウェア開発装置およびソフトウェア開発プログラム Download PDF

Info

Publication number
WO2020241571A1
WO2020241571A1 PCT/JP2020/020542 JP2020020542W WO2020241571A1 WO 2020241571 A1 WO2020241571 A1 WO 2020241571A1 JP 2020020542 W JP2020020542 W JP 2020020542W WO 2020241571 A1 WO2020241571 A1 WO 2020241571A1
Authority
WO
WIPO (PCT)
Prior art keywords
software development
controller
code
pads
pad
Prior art date
Application number
PCT/JP2020/020542
Other languages
English (en)
French (fr)
Inventor
久利寿 帝都
Original Assignee
コネクトフリー株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by コネクトフリー株式会社 filed Critical コネクトフリー株式会社
Priority to US17/615,043 priority Critical patent/US20220229642A1/en
Priority to EP20814469.1A priority patent/EP3979069A4/en
Publication of WO2020241571A1 publication Critical patent/WO2020241571A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16YINFORMATION AND COMMUNICATION TECHNOLOGY SPECIALLY ADAPTED FOR THE INTERNET OF THINGS [IoT]
    • G16Y30/00IoT infrastructure

Definitions

  • This disclosure relates to software development equipment and software development programs.
  • ICT Information and Communication Technology
  • Patent Document 1 Japanese Patent Application Laid-Open No. 2006-213145
  • Patent Document 1 uses the same ECU in terms of hardware and uses a plurality of specifications in which designated terminal pins are different. Disclose the mechanism for sharing software in.
  • Patent Document 1 The mechanism disclosed in Patent Document 1 described above is intended to realize a plurality of functions having different specifications with a single software by using the same hardware, and the same software has different specifications. It is not a solution to sharing among multiple semiconductor devices.
  • One of the purposes of this disclosure is to provide a solution that enables sharing of software between controllers using semiconductor devices having different specifications.
  • a software development device for generating execution code executed by a controller having one or more pads from source code.
  • the software development device analyzes the source code and extracts the specifications for one or more pads, and refers to the hardware information of the target controller to obtain the code corresponding to the specifications for the extracted pads.
  • the pad may be a physical interface between the controller 200 and any hardware.
  • the hardware information may include information for identifying the connection relationship between the pins and pads of the semiconductor device mounted on the controller.
  • the designation for one or more pads may include identification information for identifying the pad to be used among the one or more pads.
  • the generation means may generate the execution code by the code unique to the target controller instead of the library module commonly used between the controllers.
  • a software development program that generates execution code from source code to be executed by a controller having one or more pads.
  • the software development program asks the computer to analyze the source code and extract the specifications for one or more pads, and refer to the hardware information of the target controller to specify the code corresponding to the extracted pads. To execute the steps to generate the execution code including.
  • software can be shared between controllers using semiconductor devices having different specifications.
  • FIG. 5 It is a schematic diagram which shows an example of the whole structure of the IoT system according to this embodiment. It is a schematic diagram which shows the hardware configuration example of the software development apparatus which follows this Embodiment. It is a schematic diagram which shows the hardware configuration example of the controller according to this embodiment. It is a figure for demonstrating the microcomputer used for the controller connected to the software development apparatus which follows this Embodiment. It is a figure for demonstrating the pad provided by the controller connected to the software development apparatus according to this Embodiment. It is a figure which shows the connection relationship between the microcomputer and a pad shown in FIG. It is a figure which shows an example of the source code directed to the controller shown in FIG. 5 and FIG.
  • 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 the present embodiment will be described.
  • FIG. 1 is a schematic diagram showing an example of the overall configuration of the IoT system 1 according to the present embodiment.
  • a program execution code
  • the generated program is transferred from the software development device 100 to the controller 200 included in the edge device 2.
  • the software development device 100 is provided with an integrated development environment (IDE: Integrated Development Environment), and a user can create an arbitrary program on the integrated development environment.
  • IDE integrated Development Environment
  • the edge device 2 may be any device, but typically, factory equipment, various household devices, social infrastructure equipment, mobile objects such as vehicles, arbitrary portable devices, and the like are assumed. .. More specifically, the edge device 2 includes a controller 200 including a processor and one or more hardware devices 4. The hardware device 4 includes any sensor, actuator, communication device, and the like that make up the edge device 2.
  • the controller 200 and the hardware device 4 are electrically connected by wiring (hard-wired).
  • a user first creates a 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 to generate an execution code ((2) execution code generation). The generated execution code is transferred to the controller 200 of the edge device 2 ((3) execution code transfer). The transferred execution code is executed by the controller 200 ((4) Execution of the execution code). Arbitrary signals may be exchanged with the hardware device 4 by executing the execution code on the controller 200.
  • the software development device 100 generates the execution code executed by the controller 200 from the source code.
  • the software development device 100 is typically realized by a general-purpose computer.
  • FIG. 2 is a schematic diagram showing a hardware configuration example of the software development device 100 according to the present embodiment.
  • the software development apparatus 100 includes a processor 102, a main memory 104, an input unit 106, a display 108, a hard disk 110, and a communication interface 122 as main components. These components are connected via the internal bus 120.
  • the processor 102 is composed of, for example, a CPU (Central Processing Unit) or a GPU (Graphics Processing Unit). A plurality of processors 102 may be arranged, or a processor 102 having a plurality of cores may be adopted.
  • a CPU Central Processing Unit
  • GPU Graphics Processing Unit
  • the main memory 104 is composed of volatile storage devices such as DRAM (Dynamic Random Access Memory) and SRAM (Static Random Access Memory).
  • the hard disk 110 holds various programs and various data executed by the processor 102.
  • a non-volatile storage device such as an SSD (Solid State Drive) or a flash memory may be adopted.
  • the specified program is expanded on the main memory 104, and the processor 102 sequentially issues computer-readable instructions included in the program expanded on the main memory 104. By executing it, various functions as described later are realized.
  • the hard disk 110 stores a source code 112 arbitrarily created by the user, a software development program 114 for realizing an integrated development environment, and an execution code 116 generated from the source code 112. .
  • the software development program 114 generates an execution code 116 from a source code 112 arbitrarily created by a user, and includes a module that provides a program development environment.
  • the input unit 106 accepts an input operation of 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 the display device, an operation button arranged in the housing of the software development device 100, or the like.
  • the display 108 displays the processing result of the processor 102 and the like.
  • the display 108 may be, for example, an LCD (Liquid Crystal Display) or an organic EL (Electro-Luminescence) display.
  • the communication interface 122 is in charge of exchanging data with the controller 200.
  • the communication interface 122 includes, for example, a wired connection terminal such as a USB (Universal Serial Bus) port, a serial port such as IEEE 1394, and a legacy parallel port.
  • the communication interface 122 may include an Ethernet® port.
  • the software development device 100 may be realized by using a hard-wired circuit such as an ASIC (Application Specific Integrated Circuit) in which a circuit corresponding to a computer-readable instruction is incorporated. Further, it may be realized by using a circuit corresponding to a computer-readable instruction on FPGA (field-programmable gate array). Further, the processor 102, the main memory, the ASIC, the FPGA, and the like may be combined as appropriate.
  • ASIC Application Specific Integrated Circuit
  • FPGA field-programmable gate array
  • the media may be, for example, an optical media such as a DVD (Digital Versatile Disc), a semiconductor media such as a USB memory, or the like.
  • the software development program 114 may not only be installed in the software development device 100 via media, but may also be provided from a distribution server on the network.
  • the controller 200 may be realized by using a general-purpose computer, or may be realized by using a semiconductor substrate including components necessary for realizing processing.
  • FIG. 3 is a schematic diagram showing a hardware configuration example of the controller 200 according to the present embodiment.
  • the controller 200 is electrically connected to the arithmetic processing unit 210, the wireless communication module 212, the USB controller 214, the communication controller 216, and one or more pads 220 as main components.
  • a microcomputer 218 including an IO driver includes an IO driver.
  • the arithmetic processing unit 210 is an arithmetic 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 composed of, for example, a CPU, a GPU, or the like. 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 composed of a volatile storage device such as a DRAM or SRAM.
  • the flash memory 206 is a non-volatile storage device that holds a program executed by the processor 202 and necessary data. Among the programs stored in the flash memory 206, the designated program is expanded on the main memory 204 and executed by the processor 202 to realize various functions.
  • the wireless communication module 212 is in charge of wireless data exchange with any other device.
  • the wireless communication module 212 may include a processing circuit, an antenna, and the like for wireless communication with a device, a router, a mobile base station, and the like.
  • the wireless communication supported by the wireless communication module 212 is, 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), or 5th generation mobile communication system (5G).
  • the USB controller 214 is in charge of exchanging data with the software development device 100.
  • the communication controller 216 is in charge of wired data exchange with any other device.
  • the communication controller 216 may be compatible with known data exchange methods such as serial communication, parallel communication, and GPIO (General-purpose input / output).
  • the microcomputer 218 is in charge of exchanging electrical signals with any device electrically connected via the pad 220.
  • the microcomputer 218 outputs an electric signal according to a command from the arithmetic processing unit 210. Further, the microcomputer 218 detects an electric signal given via the pad 220 and outputs the detection result to the arithmetic processing unit 210. More specifically, the microcomputer 218 is composed of a signal generation circuit, a signal detection circuit, a buffer circuit and the like.
  • the pad 220 has an exposed conductor and corresponds to a physical interface between the controller 200 and various hardware.
  • the controller 200 may be driven by electric power from a battery (not shown). ⁇ C. Issues and solutions> Next, the problem to be solved by the software development apparatus 100 according to the present embodiment will be described.
  • FIG. 4 is a diagram for explaining a microcomputer 218 used in the controller 200 connected to the software development device 100 according to the present embodiment.
  • 4 (A) and 4 (B) exemplify the case where the microcomputers 218A and 218B are adopted, respectively.
  • the specifications (size and number of pins) of the microcomputer 218 itself and the pin positions to which each function is assigned may differ.
  • pins of numbers "5", “6”, “7”, “12”, “13”, and “14” are used as terminals for I / O. Be done.
  • pins of numbers "17”, “18”, “19”, “20”, “21”, and “22” are used as terminals for I / O. Be done.
  • FIG. 5 is a diagram for explaining a pad 220 provided by the controller 200 connected to the software development device 100 according to the present embodiment. As shown in FIG. 5, the terminal of the microcomputer 218 and the pad 220 are electrically connected. Any combination is possible depending on the positional relationship between the terminals of the microcomputer 218 and the pads 220.
  • FIG. 5 (A) shows a configuration example using the microcomputer 218A shown in FIG. 4 (A).
  • the pads 220 of numbers “1” to “6” are electrically connected to the pins of numbers “5", “6", “7”, “14”, “13", and “12", respectively. Will be done.
  • FIG. 5 (B) shows a configuration example using the microcomputer 218B shown in FIG. 4 (B).
  • the pads 220 of numbers “1” to “6” are electrically connected to the pins of numbers "22", “21”, “20”, “19”, “18", and “17”, respectively. Will be done.
  • FIG. 6 is a diagram showing the connection relationship between the microcomputer shown in FIG. 5 and the pad. 6 (A) shows the connection relationship shown in FIG. 5 (A), and FIG. 6 (B) shows the connection relationship shown in FIG. 5 (B).
  • FIG. 7 is a diagram showing an example of the source code 112 directed to the controller 200 shown in FIGS. 5 and 6.
  • Source codes 112A and 112B shown in FIG. 7 define processing when signals indicating a predetermined message are output through pads 220 of numbers "5" and "6".
  • the source code 112A shown in FIG. 7A includes a definition 1121 of a variable indicating a message and a definition 1122 of a variable indicating an output port (OutPort1 and OutPort2).
  • the value of the message is set by the function getText () (instruction 1123).
  • the port connected to the pad 220 used to send the signal indicating the message is enabled (instruction 1124A).
  • the instruction 1124A sets the logical ports “IO_05” (OutPort1: pin number “13”) and “IO_04” (OutPort2: pin number “12”) of the microcomputer 218A to “Out” (output) (FIG. 6 (A)). reference).
  • the instruction 1124B shown in FIG. 7B enables a different logical port from the instruction 1124A shown in FIG. 7A.
  • the instruction 1124B sets the logical ports “IO_02” (OutPort1: pin number “18”) and “IO_01” (OutPort2: pin number “17”) of the microcomputer 218B to “Out” (output) (FIG. 6 (B)). reference).
  • the pad 220 electrically connected to any device can be directly specified.
  • FIG. 8 is a diagram showing an example of the source code 112 that can be input to the software development device 100 according to the present embodiment.
  • the source code 112 shown in FIG. 8 defines a process for outputting a signal indicating a predetermined message through the pads 220 of the numbers “5” and “6”, similarly to the source codes 112A and 112B shown in FIG. To do.
  • the source code 112 shown in FIG. 8 includes a definition 1121 of a variable indicating a message and a definition 1126 of a variable (ActivePad1 and ActivePad2) indicating a pad to be used.
  • Definition 1126 corresponds to the designation of the controller 200 for the pad 220 and includes identification information (in this example, the pad number) for identifying the pad to be used from the one or more pads 220.
  • the value of the message is set by the function getText () (instruction 1123).
  • instruction 1127 information for identifying the pad 220 used for sending a signal indicating a message is set (instruction 1127).
  • the instruction 1127 sets the variables “5” and “6”, which are the identification information of the pad 220 to be used, in the variables ActivePad1 and ActivePad2, respectively.
  • the software development device 100 it is possible to create the source code 112 that specifies the pad that is actually connected to the device, and by specifying the pad in this way, it is mounted on the controller 200. It is possible to abstract the difference in specifications of the microcomputer to be used. That is, even if the specifications of the microcomputer mounted on the controller 200 are changed, the same software can be used as it is.
  • the user of the controller 200 can obtain the advantage that the software assets can be continuously used without being aware of the hardware specifications and the like.
  • the manufacturer or vendor of the controller 200 can change or repair the source code as long as the internal wiring is designed so as to satisfy the preset requirements for each pad. Does not occur.
  • FIG. 9 is a block diagram showing a functional configuration example of the software development device 100 according to the present embodiment. Each function shown in FIG. 9 is typically realized by the processor 102 of the software development device 100 executing the software development program 114.
  • the software development program 114 receives the input of the source code 112 and generates the execution code 116 (assembler code). More specifically, the software development program 114 includes a preprocessor 1141, a compiler 1142, an optimizer 1143, and a code generator 1144.
  • the preprocessor 1141 performs lexical analysis and parsing on the source code 112, and controls the behavior of the compiler 1142, the optimizer 1143, and the code generator 1144.
  • the preprocessor 1141 corresponds to the analysis means and analyzes the source code 112 to extract designations for one or more pads 220.
  • the compiler 1142 generates an object code based on the results of word analysis and syntactic analysis on the source code 112.
  • Optimizer 1143 optimizes the generated object code.
  • the code generator 1144 outputs the final execution code 116 based on the result of optimization by the optimizer 1143.
  • the compiler 1142, the optimizer 1143, and the code generator 1144 correspond to the generation means, refer to the hardware information of the target controller 200, and generate the execution code including the code corresponding to the designation for the extracted pad 220.
  • the software development device 100 has a configuration 118 including hardware information of the controller 200 on which the execution code 116 is executed.
  • the configuration 118 is prepared for each controller 200, and the one corresponding to the target controller 200 is selected.
  • Configuration 118 typically includes information for identifying the connection relationship between the pins and pads of the mounted semiconductor device (typically a microcomputer) as shown in FIG.
  • the software development device 100 selects the corresponding configuration 118 according to the type of the controller 200 on which the execution code 116 is executed, and is specified in the source code 112 with reference to the contents of the selected configuration 118. Determine the route information and the like required to use the existing pad 220. That is, the configuration 118 includes setting information for absorbing the difference in the hardware constituting the controller 200.
  • the type of the controller 200 may be manually selected by the user, or may be automatically acquired by connecting the software development device 100 and the controller 200.
  • the configuration 118 may be additionally acquired by the software development program 114 from a server designated in advance, or may be stored in advance in the storage of the controller 200 or the like so that the software development device 100 reads it as needed. It may be.
  • execution code 116 may be generated so as to match the target controller 200.
  • FIG. 10 is a diagram for explaining the data structure of the execution code 116 generated by the software development device 100 according to the present embodiment.
  • the execution code 116A comprises one or more object codes (object codes 1161 and 1162 in the example of FIG. 10A) and the required library module 1163.
  • Library module 1163 becomes part of the object code referenced by object codes 1161 and 1162.
  • the library module 1163 is handed the necessary data from object code 1161 or 1162 to perform processing, and the result is returned to object code 1161 or 1162.
  • the code in charge of the library module 1163 in the execution code 116A shown in FIG. 10A is incorporated into the object codes 1164 and 1166 as the unique codes 1165 and 1167.
  • the object codes 1164 and 1166 include the unique codes 1165 and 1167 for executing the processing specific to the target controller 200.
  • the object codes 1164 and 1166 may incorporate instructions (object codes) generated in accordance with the target controller 200. That is, the software development device 100 may generate the execution code 116 by the code unique to the target controller 200 instead of the library module 1163 that is commonly used between the controllers. By adopting such a configuration, the possibility of an execution error occurring in the controller 200 can be reduced, and the processing speed can be expected to be increased.
  • Pad application example> Next, an application example of the pad 220 provided by the controller 200 according to the present embodiment will be described. As described above, in the present embodiment, it is possible to specify one or more pads 220 included in the controller 200 and execute various processes. By using such a pad 220, a physical interface with various hardware can be realized.
  • FIG. 11 is a diagram for explaining an application example of the pad 220 provided by the controller 200 according to the present embodiment.
  • the controller 200 has a plurality of pads 220 arranged in a matrix, and an adapter 300 that can be electrically connected to these pads 220 is prepared.
  • terminals can be arranged at positions that can be electrically connected to each pad 220.
  • Functions may be defined in advance for each of the plurality of pads 220 arranged in a matrix.
  • FIG. 11 shows an example in which only some of the pads (numbers “6” to “10” and numbers “16” to “20”) are used among the plurality of pads 220. Any device connected to the adapter 300 will send and receive signals to and from a particular pad 220 of the controller 200.
  • the hardware thereof can be used as it is as long as the configuration 118 that defines the configuration is prepared. That is, changes in the hardware configuration of the controller 200 can be absorbed by software.
  • the physical interface (pad 220) of the controller 200 can be maintained and software assets can be used as they are.
  • the interface with the controller 200 is immutable and the system can be maintained permanently, even when viewed from any device connected to the controller 200 via the adapter 300.
  • FIG. 12 is a flowchart showing a processing procedure for generating the execution code 116 from the source code 112 in the software development device 100 according to the present embodiment. Each step shown in FIG. 12 is typically realized by the processor 102 executing the software development program 114.
  • the software development device 100 executes lexical analysis and syntactic analysis on the input source code 112 (step S100).
  • the software development device 100 determines whether or not any of the pads 220 is designated based on the analysis result (step S102). That is, the software development device 100 analyzes the source code 112 and extracts the designation for one or more pads 220.
  • the software development device 100 acquires the configuration 118 corresponding to the controller 200 to which the execution code 116 is transferred (step S104), and the acquired configuration With reference to the ration 118, the route information required to utilize the designated pad 220 is determined (step S106).
  • This route information includes information for resolving the pin number, the logical port, and the like of the microcomputer connected to the designated pad 220.
  • the software development device 100 generates an object code for each module included in the source code 112 (step S108), combines the object codes, and outputs the object code as the execution code 116 (step S110). Then, the process ends.
  • the software development device 100 refers to the hardware information of the target controller 200 (configuration 118 as an example) and generates an execution code including the code corresponding to the designation for the extracted pad 220. ..
  • a pad has been described as a typical example of a physical interface, but the term "pad” is not limited to one or more arbitrary physical interfaces (signals). It is also applicable to some of the circuits that can be exchanged).
  • the interface to be used among the physical interfaces provided by the controller 200 can be defined in the source code 112, and a mechanism capable of absorbing the difference in the hardware configuration of the controller 200 can be provided.
  • the same interface can be maintained regardless of the type of the controller 200, and the software can be used as it is regardless of the change of the controller 200.
  • 1 IoT system 2 edge device, 4 hardware device, 100 software development device, 102, 202 processor, 104, 204 main memory, 106 input section, 108 display, 110 hard disk, 112, 112A, 112B source code, 114 software development Program, 116, 116A Execution code, 118 configuration, 120 internal bus, 122 communication interface, 200 controller, 206 flash memory, 210 arithmetic processing unit, 212 wireless communication module, 214 USB controller, 216 communication controller, 218, 218A, 218B Microcomputer, 220 pads, 300 adapters, 1121,1122,1126 definitions, 1123,1124A, 1124B, 1125, 1127,1128 instructions, 1141 preprocessor, 1142 compiler, 1143 optimizer, 1144 code generator, 1161,1162,1164,1166 object code , 1163 library module, 1165 unique code.

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Programmable Controllers (AREA)

Abstract

仕様の異なる半導体デバイスを用いたコントローラの間でソフトウェアを共有化できるソリューションを提供する。1または複数のパッドを有しているコントローラで実行される実行コードをソースコードから生成するソフトウェア開発装置が提供される。ソフトウェア開発装置は、ソースコードを解析して、1または複数のパッドに対する指定を抽出する解析手段と、対象となるコントローラのハードウェア情報を参照して、抽出されたパッドに対する指定に対応するコードを含む実行コードを生成する生成手段とを含む。

Description

ソフトウェア開発装置およびソフトウェア開発プログラム
 本開示は、ソフトウェア開発装置およびソフトウェア開発プログラムに関する。
 近年の情報通信技術(Information and Communication Technology:ICT)の進歩は目覚ましく、インターネットなどのネットワークに接続されるデバイスは、従来のパーソナルコンピュータやスマートフォンといった情報処理装置に限らず、様々なモノ(things)に広がっている。このような技術トレンドは、「IoT(Internet of Things;モノのインターネット)」と称され、様々な技術およびサービスが提案および実用化されつつある。将来的には、地球上の数十億人と数百億または数兆のデバイスとが同時につながる世界が想定されている。このようなネットワーク化された世界を実現するためには、よりシンプル、より安全、より自由につながることができるソリューションを提供する必要がある。
 IoTで利用されるデバイス(「エッジデバイス」とも称される。)においても、半導体デバイスを用いて様々なプログラムが実行される。このような半導体デバイスとソフトウェアとの関係に関して、例えば、特開2006-213145号公報(特許文献1)は、ハードウェア的に同じECUを用いて、使用される指定端子ピンが異なる複数の仕様間でソフトウェアを共有化するための仕組みを開示する。
特開2006-213145号公報
 エッジデバイスを構成する半導体デバイスの進歩も目覚ましい。このような半導体デバイスの改良に伴って、仕様が変更される場合などもあり、ソフトウェアをどのように維持および管理するのかといった課題が生じ得る。
 上述の特許文献1に開示される仕組みは、同一のハードウェアを用いて、仕様の異なる複数の機能を単一のソフトウェアで実現することを目的とするものであり、同一のソフトウェアを仕様の異なる複数の半導体デバイスの間で共有化することを解決するようなものではない。
 本開示は、仕様の異なる半導体デバイスを用いたコントローラの間でソフトウェアを共有化できるソリューションを提供することを一つの目的とする。
 本開示のある形態に従えば、1または複数のパッドを有しているコントローラで実行される実行コードをソースコードから生成するソフトウェア開発装置が提供される。ソフトウェア開発装置は、ソースコードを解析して、1または複数のパッドに対する指定を抽出する解析手段と、対象となるコントローラのハードウェア情報を参照して、抽出されたパッドに対する指定に対応するコードを含む実行コードを生成する生成手段とを含む。
 パッドは、コントローラ200と任意のハードウェアとの間の物理的なインターフェイスであってもよい。
 ハードウェア情報は、コントローラに実装されている半導体デバイスのピンとパッドとの接続関係を特定するための情報を含んでいてもよい。
 1または複数のパッドに対する指定は、1または複数のパッドのうち、利用すべきパッドを特定するための識別情報を含んでいてもよい。
 生成手段は、コントローラ間で共通に利用されるライブラリモジュールに代えて、対象のコントローラに固有なコードにより、実行コードを生成するようにしてもよい。
 本開示の別の形態に従えば、1または複数のパッドを有しているコントローラで実行される実行コードをソースコードから生成するソフトウェア開発プログラムが提供される。ソフトウェア開発プログラムはコンピュータに、ソースコードを解析して、1または複数のパッドに対する指定を抽出するステップと、対象となるコントローラのハードウェア情報を参照して、抽出されたパッドに対する指定に対応するコードを含む実行コードを生成するステップとを実行させる。
 本開示によれば、仕様の異なる半導体デバイスを用いたコントローラの間でソフトウェアを共有化できる。
本実施の形態に従うIoTシステムの全体構成の一例を示す模式図である。 本実施の形態に従うソフトウェア開発装置のハードウェア構成例を示す模式図である。 本実施の形態に従うコントローラのハードウェア構成例を示す模式図である。 本実施の形態に従うソフトウェア開発装置に接続されるコントローラに用いられるマイコンを説明するための図である。 本実施の形態に従うソフトウェア開発装置に接続されるコントローラで提供されるパッドを説明するための図である。 図5に示すマイコンとパッドとの接続関係を示す図である。 図5および図6に示されるコントローラに向けられたソースコードの一例を示す図である。 本実施の形態に従うソフトウェア開発装置に入力可能なソースコードの一例を示す図である。 本実施の形態に従うソフトウェア開発装置の機能構成例を示すブロック図である。 本実施の形態に従うソフトウェア開発装置により生成される実行コードのデータ構造を説明するための図である。 本実施の形態に従うコントローラが提供するパッドの応用例を説明するための図である。 本実施の形態に従うソフトウェア開発装置におけるソースコードから実行コードを生成する処理手順を示すフローチャートである。
 本開示に係る実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
 以下の説明においては、典型例として、本実施の形態に従うソフトウェア開発装置100をIoTシステムに適用した場合について説明するが、本開示はIoTシステムに限らず任意のシステムおよびコントローラに適用可能である。
 <A.IoTシステム1>
 まず、本実施の形態に従うソフトウェア開発装置100およびエッジデバイス2を含むIoTシステム1の全体構成について説明する。
 図1は、本実施の形態に従うIoTシステム1の全体構成の一例を示す模式図である。図1を参照して、IoTシステム1においては、典型的には、ソフトウェア開発装置100においてエッジデバイス2で実行されるプログラム(実行コード)が生成される。生成されたプログラムは、ソフトウェア開発装置100からエッジデバイス2に含まれるコントローラ200へ転送される。
 ソフトウェア開発装置100には、統合開発環境(IDE:Integrated Development Environment)が提供されており、ユーザは統合開発環境上で任意のプログラムを作成できる。
 エッジデバイス2としては、どのようなデバイスであってもよいが、典型的には、工場設備、家庭内の各種装置、社会インフラ設備、車両などの移動体、任意の携帯デバイスなどが想定される。より具体的には、エッジデバイス2は、プロセッサを含むコントローラ200と、1または複数のハードウェアデバイス4を含む。ハードウェアデバイス4は、エッジデバイス2を構成する任意のセンサ、アクチュエータ、通信デバイスなどを含む。
 コントローラ200とハードウェアデバイス4との間は、配線(hard-wired)により電気的に接続されている。
 図1に示すIoTシステム1における典型的な処理手順としては、まず、ユーザがソフトウェア開発装置100を用いてソースコードを作成する((1)ソースコード作成)。そして、作成されたソースコードは、ソフトウェア開発装置100においてコンパイルされて、実行コードが生成される((2)実行コード生成)。生成された実行コードは、エッジデバイス2のコントローラ200へ転送される((3)実行コード転送)。転送された実行コードは、コントローラ200で実行される((4)実行コードの実行)。実行コードがコントローラ200で実行されことで、ハードウェアデバイス4との間で任意の信号が遣り取りされてもよい。
 このように、ソフトウェア開発装置100は、コントローラ200で実行される実行コードをソースコードから生成する。
 <B.ハードウェア構成例>
 次に、本実施の形態に従うIoTシステム1に含まれるデバイスのハードウェア構成例について説明する。
 (b1:ソフトウェア開発装置100)
 ソフトウェア開発装置100は、典型的には汎用コンピュータで実現される。
 図2は、本実施の形態に従うソフトウェア開発装置100のハードウェア構成例を示す模式図である。図2を参照して、ソフトウェア開発装置100は、主たるコンポーネントとして、プロセッサ102と、メインメモリ104と、入力部106と、ディスプレイ108と、ハードディスク110と、通信インターフェイス122とを含む。これらのコンポーネントは、内部バス120を介して接続されている。
 プロセッサ102は、例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。複数のプロセッサ102が配置されてもよいし、複数のコアを有するプロセッサ102を採用してもよい。
 メインメモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置で構成される。ハードディスク110は、プロセッサ102で実行される各種プログラムや各種データを保持する。なお、ハードディスク110に代えて、SSD(Solid State Drive)やフラッシュメモリなどの不揮発性記憶装置を採用してもよい。ハードディスク110に格納されたプログラムのうち、指定されたプログラムがメインメモリ104上に展開され、プロセッサ102は、メインメモリ104上に展開されたプログラムに含まれるコンピュータ可読命令(computer-readable instructions)を順次実行することで、後述するような各種機能を実現する。
 典型的には、ハードディスク110には、ユーザが任意に作成するソースコード112と、統合開発環境を実現するためのソフトウェア開発プログラム114と、ソースコード112から生成される実行コード116とが格納される。ソフトウェア開発プログラム114は、ユーザが任意に作成するソースコード112から実行コード116を生成するものであり、プログラムの開発環境を提供するモジュールを含む。
 入力部106は、ソフトウェア開発装置100を操作するユーザの入力操作を受け付ける。入力部106は、例えば、キーボード、マウス、表示デバイス上に配置されたタッチパネル、ソフトウェア開発装置100の筐体に配置された操作ボタンなどであってもよい。
 ディスプレイ108は、プロセッサ102での処理結果などを表示する。ディスプレイ108は、例えば、LCD(Liquid Crystal Display)や有機EL(Electro-Luminescence)ディスプレイなどであってもよい。
 通信インターフェイス122は、コントローラ200とのデータ交換を担当する。通信インターフェイス122は、例えば、USB(Universal Serial Bus)ポート、IEEE1394などのシリアルポート、レガシーなパラレルポートといった有線接続端子を含む。あるいは、通信インターフェイス122は、イーサネット(登録商標)ポートを含んでいてもよい。
 なお、ソフトウェア開発装置100の全部または一部は、コンピュータ可読命令に相当する回路が組み込まれたASIC(Application Specific Integrated Circuit)などのハードワイヤード回路を用いて実現してもよい。さらにあるいは、FPGA(field-programmable gate array)上にコンピュータ可読命令に相当する回路を用いて実現してもよい。また、プロセッサ102およびメインメモリ、ASIC、FPGAなどを適宜組み合わせて実現してもよい。
 ソフトウェア開発装置100は、コンピュータ可読命令を含むソフトウェア開発プログラム114を格納する非一過性(non-transitory)のメディアから、当該格納しているプログラムなどを読み出すためのコンポーネントをさらに有していてもよい。メディアは、例えば、DVD(Digital Versatile Disc)などの光学メディア、USBメモリなどの半導体メディアなどであってもよい。
 なお、ソフトウェア開発プログラム114は、メディアを介してソフトウェア開発装置100にインストールされるだけではなく、ネットワーク上の配信サーバから提供されるようにしてもよい。
 (b2:コントローラ200)
 コントローラ200は、汎用コンピュータを用いて実現してもよいし、処理を実現するために必要なコンポーネントを含む半導体基板を用いて実現してもよい。
 図3は、本実施の形態に従うコントローラ200のハードウェア構成例を示す模式図である。図3を参照して、コントローラ200は、主たるコンポーネントとして、演算処理部210と、無線通信モジュール212と、USBコントローラ214と、通信コントローラ216と、1または複数のパッド220と電気的に接続されたIOドライバを含むマイコン218とを含む。
 演算処理部210は、プログラムを実行する演算部であり、主たるコンポーネントとして、プロセッサ202と、メインメモリ204と、フラッシュメモリ206とを含む。プロセッサ202は、例えば、CPUやGPUなどで構成される。複数のプロセッサ202が配置されてもよいし、複数のコアを有するプロセッサ202を採用してもよい。メインメモリ204は、DRAMやSRAMなどの揮発性記憶装置で構成される。フラッシュメモリ206は、プロセッサ202で実行されるプログラムや必要なデータを保持する不揮発性記憶装置である。フラッシュメモリ206に格納されたプログラムのうち、指定されたプログラムがメインメモリ204上に展開されて、プロセッサ202により実行されることで、各種機能が実現される。
 無線通信モジュール212は、他の任意のデバイスとの間の無線によるデータ交換を担当する。無線通信モジュール212は、デバイス、ルータ、移動体基地局などと無線通信するための処理回路およびアンテナなどを含んでもよい。無線通信モジュール212が対応する無線通信は、例えば、Wi-Fi(登録商標)、Bluetooth(登録商標)、ZigBee(登録商標)、LPWA(Low Power Wide Area)、GSM(登録商標)、W-CDMA、CDMA200、LTE(Long Term Evolution)、第5世代移動通信システム(5G)のいずれであってもよい。
 USBコントローラ214は、ソフトウェア開発装置100とのデータ交換を担当する。通信コントローラ216は、他の任意のデバイスとの間の有線によるデータ交換を担当する。通信コントローラ216は、例えば、シリアル通信、パラレル通信、GPIO(General-purpose input/output)などの公知のデータ交換方式に対応するようにしてもよい。
 マイコン218は、パッド220を介して電気的に接続された任意のデバイスとの間の電気信号の遣り取りを担当する。マイコン218は、演算処理部210からの指令に従って電気信号を出力する。また、マイコン218は、パッド220を介して与えられる電気信号を検知し、その検知結果を演算処理部210へ出力する。より具体的には、マイコン218は、信号生成回路、信号検知回路、バッファ回路などで構成される。
 パッド220は、露出して配置された導電体を有しており、コントローラ200と様々なハードウェアとの間の物理的なインターフェイスに相当する。
 コントローラ200は、図示しないバッテリからの電力により駆動されてもよい。
 <C.課題および解決手段>
 次に、本実施の形態に従うソフトウェア開発装置100が解決しようとする課題について説明する。
 図4は、本実施の形態に従うソフトウェア開発装置100に接続されるコントローラ200に用いられるマイコン218を説明するための図である。図4(A)および図4(B)には、それぞれマイコン218Aおよび218Bを採用する場合について例示する。
 図4に示すように、実質的に同じ機能を提供するマイコン218であっても、マイコン218自体の仕様(大きさやピン数)ならびに各機能が割り当てられるピン位置が異なる場合がある。
 例えば、図4(A)に示すマイコン218Aにおいては、I/O用の端子として、番号「5」,「6」,「7」,「12」,「13」,「14」のピンが用いられる。また、図4(B)に示すマイコン218Bにおいては、I/O用の端子として、番号「17」,「18」,「19」,「20」,「21」,「22」のピンが用いられる。
 図5は、本実施の形態に従うソフトウェア開発装置100に接続されるコントローラ200で提供されるパッド220を説明するための図である。図5に示すように、マイコン218の端子とパッド220とが電気的に接続される。マイコン218の端子とパッド220との位置関係に応じて、任意の組み合わせが可能である。
 図5(A)には、図4(A)に示すマイコン218Aを用いた構成例を示す。この構成例においては、番号「1」~「6」のパッド220は、番号「5」,「6」,「7」,「14」,「13」,「12」のピンとそれぞれ電気的に接続される。また、図5(B)には、図4(B)に示すマイコン218Bを用いた構成例を示す。この構成例においては、番号「1」~「6」のパッド220は、番号「22」,「21」,「20」,「19」,「18」,「17」のピンとそれぞれ電気的に接続される。
 図6は、図5に示すマイコンとパッドとの接続関係を示す図である。図6(A)は、図5(A)に示す接続関係を示し、図6(B)は、図5(B)に示す接続関係を示す。
 図6(A)と図6(B)とを比較して分かるように、マイコン218Aとマイコン218Bとの間では、番号「1」~「6」のパッド220に接続されるピン番号および論理ポートのいずれもが互いに異なっている。
 このようなハードウェアの相違によって、従来技術においては、コントローラ200で実行されるソフトウェアを共通化することが難しかった。
 図7は、図5および図6に示されるコントローラ200に向けられたソースコード112の一例を示す図である。図7に示されるソースコード112Aおよび112Bは、所定のメッセージを示す信号を番号「5」および「6」のパッド220を通じて出力する場合の処理を規定する。
 より具体的には、図7(A)に示されるソースコード112Aは、メッセージを示す変数の定義1121と、出力ポートを示す変数(OutPort1およびOutPort2)の定義1122とを含む。メッセージの値は、ファンクションgetText()により設定される(命令1123)。
 また、メッセージを示す信号の送出に使用されるパッド220に接続されるポートを有効化される(命令1124A)。命令1124Aは、マイコン218Aの論理ポート「IO_05」(OutPort1:ピン番号「13」)および「IO_04」(OutPort2:ピン番号「12」)を「Out」(出力)に設定する(図6(A)参照)。
 そして、命令1125が実行されることで、設定された2つの倫理ポートからメッセージを示す信号が送出される。
 これに対して、マイコン218Bを用いる構成において、番号「5」および「6」のパッド220は、マイコン218Bの論理ポート「IO_02」(ピン番号「18」)および「IO_01」(ピン番号「6」)と電気的に接続されているので、この構成の差異をソースコード112に反映する必要がある。
 具体的には、図7(B)に示される命令1124Bは、図7(A)に示される命令1124Aとは異なる論理ポートを有効する。命令1124Bは、マイコン218Bの論理ポート「IO_02」(OutPort1:ピン番号「18」)および「IO_01」(OutPort2:ピン番号「17」)を「Out」(出力)に設定する(図6(B)参照)。
 このように、コントローラ200に用いられるマイコン218の仕様が変更される毎にソースコード112を修正する必要が生じ得る。
 このような課題に対して、本実施の形態に従うソフトウェア開発装置100においては、任意のデバイスと電気的に接続されるパッド220を直接指定できるようになっている。
 図8は、本実施の形態に従うソフトウェア開発装置100に入力可能なソースコード112の一例を示す図である。図8に示されるソースコード112は、図7に示されるソースコード112Aおよび112Bと同様に、所定のメッセージを示す信号を番号「5」および「6」のパッド220を通じて出力する場合の処理を規定する。
 より具体的には、図8に示されるソースコード112は、メッセージを示す変数の定義1121と、利用されるパッドを示す変数(ActivePad1およびActivePad2)の定義1126とを含む。定義1126は、コントローラ200のパッド220に対する指定に相当し、1または複数のパッド220のうち、利用すべきパッドを特定するための識別情報(この例では、パッドの番号)を含む。
 メッセージの値は、ファンクションgetText()により設定される(命令1123)。
 また、メッセージを示す信号の送出に使用されるパッド220を特定する情報が設定される(命令1127)。命令1127は、利用されるパッド220の識別情報である「5」および「6」を変数ActivePad1およびActivePad2にそれぞれ設定する。
 そして、命令1128が実行されることで、設定された2つのパッド220からメッセージを示す信号が送出される。
 このように、本実施の形態に従うソフトウェア開発装置100においては、実際にデバイスと接続されるパッドを特定したソースコード112の作成が可能であり、このようにパッドを特定できることで、コントローラ200に実装されるマイコンなどの仕様の相違を抽象化できる。すなわち、コントローラ200に実装されるマイコンなどの仕様が変更された場合であっても、同一のソフトウェアをそのまま流用できる。
 このようなプログラミング構成を採用することで、コントローラ200のユーザは、ハードウェアの仕様などを意識せず、ソフトウェア資産を継続して利用することができるという利点が得られる。また、コントローラ200のメーカやベンダは、使用するマイコンなどの仕様が変更されても、各パッドに予め設定されている要求を満たすように内部配線を設計さえすれば、ソースコードの変更や改修などを生じさせることがない。
 <D.ソフトウェア開発装置100の機能構成>
 次に、本実施の形態に従うソフトウェアの機能構成について説明する。
 図9は、本実施の形態に従うソフトウェア開発装置100の機能構成例を示すブロック図である。図9に示す各機能は、典型的には、ソフトウェア開発装置100のプロセッサ102がソフトウェア開発プログラム114を実行することで実現される。
 図9を参照して、ソフトウェア開発プログラム114は、ソースコード112の入力を受けて、実行コード116(アセンブラコード)を生成する。より具体的には、ソフトウェア開発プログラム114は、プリプロセッサ1141と、コンパイラ1142と、オプティマイザ1143と、コードジェネレータ1144とを含む。
 プリプロセッサ1141は、ソースコード112に対する語句解析および構文解析を実行するとともに、コンパイラ1142、オプティマイザ1143およびコードジェネレータ1144の挙動を制御する。プリプロセッサ1141は、解析手段に相当し、ソースコード112を解析して、1または複数のパッド220に対する指定を抽出する。
 コンパイラ1142は、ソースコード112に対する語句解析および構文解析の結果に基づいて、オブジェクトコードに生成する。オプティマイザ1143は、生成されたオブジェクトコードを最適化する。コードジェネレータ1144は、オプティマイザ1143による最適化の結果に基づいて、最終的な実行コード116を出力する。
 コンパイラ1142、オプティマイザ1143およびコードジェネレータ1144は、生成手段に相当し、対象となるコントローラ200のハードウェア情報を参照して、抽出されたパッド220に対する指定に対応するコードを含む実行コードを生成する。
 ソフトウェア開発装置100は、実行コード116が実行されるコントローラ200のハードウェア情報を含むコンフィグレーション118を有している。コンフィグレーション118は、コントローラ200毎に用意され、対象とするコントローラ200に応じたものが選択される。
 コンフィグレーション118は、典型的には、図6に示すような実装されている半導体デバイス(典型的には、マイコン)のピンとパッドとの接続関係を特定するための情報を含む。ソフトウェア開発装置100は、実行コード116が実行されるコントローラ200の種別に応じて、対応するコンフィグレーション118を選択するとともに、選択したコンフィグレーション118の内容を参照して、ソースコード112において指定されているパッド220を利用するのに必要な経路情報などを決定する。すなわち、コンフィグレーション118は、コントローラ200を構成するハードウェアの相違を吸収するための設定情報を含む。
 なお、コントローラ200の種別は、ユーザが手動で選択してもよいし、ソフトウェア開発装置100とコントローラ200とを接続して、自動的に取得するようにしてもよい。コンフィグレーション118については、ソフトウェア開発プログラム114が予め指定されたサーバから追加取得するようにしてもよいし、コントローラ200のストレージなどに予め格納しておき、ソフトウェア開発装置100が必要に応じて読み出すようにしてもよい。
 さらに、対象となるコントローラ200に適合するように、実行コード116を生成するようにしてもよい。
 図10は、本実施の形態に従うソフトウェア開発装置100により生成される実行コード116のデータ構造を説明するための図である。図10(A)を参照して、実行コード116Aは、1または複数のオブジェクトコード(図10(A)の例では、オブジェクトコード1161および1162)と、必要なライブラリモジュール1163とで構成される。ライブラリモジュール1163は、オブジェクトコード1161および1162から参照されるオブジェクトコードの一部となる。典型的には、ライブラリモジュール1163には、オブジェクトコード1161または1162から必要なデータが引き渡されて処理が実行され、その結果がオブジェクトコード1161または1162へ戻される。
 これに対して、図10(B)に示す例では、図10(A)に示す実行コード116Aにおいてライブラリモジュール1163が担当するコードが固有コード1165および1167として、オブジェクトコード1164および1166に組み込まれている。すなわち、オブジェクトコード1164および1166は、対象となるコントローラ200に特有な処理が実行するための固有コード1165および1167を含む。
 このように、オブジェクトコード1164および1166に対象となるコントローラ200に適合させて生成した命令(オブジェクトコード)を組み入れてもよい。すなわち、ソフトウェア開発装置100は、コントローラ間で共通に利用されるライブラリモジュール1163に代えて、対象のコントローラ200に固有なコードにより、実行コード116を生成するようにしてもよい。このような構成を採用することで、コントローラ200での実行エラーの発生の可能性を低減するとともに、処理の高速化も期待できる。
 <E.パッドの応用例>
 次に、本実施の形態に従うコントローラ200が提供するパッド220の応用例について説明する。上述したように、本実施の形態においては、コントローラ200が有している1または複数のパッド220を特定して各種処理を実行することができる。このようなパッド220を利用することで、様々なハードウェアとの物理的なインターフェイスを実現できる。
 図11は、本実施の形態に従うコントローラ200が提供するパッド220の応用例を説明するための図である。図11を参照して、コントローラ200は行列状に配置された複数のパッド220を有しており、これらのパッド220と電気的に接続可能なアダプタ300を用意する。アダプタ300は、装着状態において、各パッド220と電気的に接続可能な位置に端子が配置可能になっている。
 行列状に配置された複数のパッド220の各々について、予め機能が定義されていてもよい。
 図11には、複数のパッド220のうち、一部のパッド(番号「6」~「10」および番号「16」~「20」)のみが利用される例を示す。アダプタ300に接続された任意のデバイスは、コントローラ200の特定のパッド220との間で信号を遣り取りすることになる。
 上述したように、コントローラ200に組み込まれるマイコン218の仕様が変更されたことで、パッド220のレイアウトおよび提供される機能を維持するための新たなハードウェア構成が採用されたとしても、そのハードウェア構成を定義するコンフィグレーション118さえ用意すれば、ソースコード112をそのまま流用できる。すなわち、コントローラ200のハードウェア構成の変更をソフトウェアで吸収できる。
 このように、マイコンなどの半導体デバイスの進歩が生じても、コントローラ200の物理的なインターフェイス(パッド220)を維持するとともに、ソフトウェア資産についてもそのまま利用できる。その結果、アダプタ300を介してコントローラ200に接続される任意のデバイスから見た場合にも、コントローラ200とのインターフェイスは不変であり、システムを永続的に維持できる。
 <F.処理手順>
 次に、本実施の形態に従うソフトウェア開発装置100におけるソースコード112から実行コード116を生成する処理手順について説明する。
 図12は、本実施の形態に従うソフトウェア開発装置100におけるソースコード112から実行コード116を生成する処理手順を示すフローチャートである。図12に示す各ステップは、典型的には、プロセッサ102がソフトウェア開発プログラム114を実行することで実現される。
 図12を参照して、ソフトウェア開発装置100は、入力されたソースコード112に対して語句解析および構文解析を実行する(ステップS100)。ソフトウェア開発装置100は、解析結果に基づいて、いずれかのパッド220が指定されているか否かを判断する(ステップS102)。すなわち、ソフトウェア開発装置100は、ソースコード112を解析して、1または複数のパッド220に対する指定を抽出する。
 いずれのパッド220も指定されていなければ(ステップS102においてNO)、ステップS104およびS106の処理はスキップされる。
 いずれかのパッド220が指定されていれば(ステップS102においてYES)、ソフトウェア開発装置100は、実行コード116の転送先のコントローラ200に対応するコンフィグレーション118を取得し(ステップS104)、取得したコンフィグレーション118を参照して、指定されているパッド220を利用するのに必要な経路情報を決定する(ステップS106)。この経路情報は、指定されているパッド220に接続されているマイコンのピン番号や論理ポートなどを解決するための情報を含む。
 そして、ソフトウェア開発装置100は、ソースコード112に含まれるモジュール単位にオブジェクトコードを生成し(ステップS108)、オブジェクトコードを結合して実行コード116として出力する(ステップS110)。そして、処理は終了する。
 このように、ソフトウェア開発装置100は、対象となるコントローラ200のハードウェア情報(一例として、コンフィグレーション118)を参照して、抽出されたパッド220に対する指定に対応するコードを含む実行コードを生成する。
 <G.変形例>
 上述の説明においては、説明の便宜上、物理的なインターフェイスの典型例として、パッドについて説明したが、「パッド」という用語に限定されることなく、1または複数の任意の物理的なインターフェイス(信号を遣り取り可能な回路の一部)について同様に適用可能である。
 <H.利点>
 本実施の形態によれば、コントローラ200が提供する物理的なインターフェイスのうち利用されるインターフェイスをソースコード112において定義できるとともに、コントローラ200のハードウェア構成の相違を吸収できる仕組みを提供できる。これによって、コントローラ200に接続されるデバイスから見れば、コントローラ200の種類に依存することなく同一のインターフェイスを維持できるとともに、コントローラ200の変更によらず、ソフトウェアもそのまま利用できる。
 今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
 1 IoTシステム、2 エッジデバイス、4 ハードウェアデバイス、100 ソフトウェア開発装置、102,202 プロセッサ、104,204 メインメモリ、106 入力部、108 ディスプレイ、110 ハードディスク、112,112A,112B ソースコード、114 ソフトウェア開発プログラム、116,116A 実行コード、118 コンフィグレーション、120 内部バス、122 通信インターフェイス、200 コントローラ、206 フラッシュメモリ、210 演算処理部、212 無線通信モジュール、214 USBコントローラ、216 通信コントローラ、218,218A,218B マイコン、220 パッド、300 アダプタ、1121,1122,1126 定義、1123,1124A,1124B,1125,1127,1128 命令、1141 プリプロセッサ、1142 コンパイラ、1143 オプティマイザ、1144 コードジェネレータ、1161,1162,1164,1166 オブジェクトコード、1163 ライブラリモジュール、1165 固有コード。

Claims (6)

  1.  1または複数のパッドを有しているコントローラで実行される実行コードをソースコードから生成するソフトウェア開発装置であって、
     前記ソースコードを解析して、前記1または複数のパッドに対する指定を抽出する解析手段と、
     対象となるコントローラのハードウェア情報を参照して、抽出されたパッドに対する指定に対応するコードを含む実行コードを生成する生成手段とを備える、ソフトウェア開発装置。
  2.  前記パッドは、前記コントローラ200と任意のハードウェアとの間の物理的なインターフェイスである、請求項1に記載のソフトウェア開発装置。
  3.  前記ハードウェア情報は、前記コントローラに実装されている半導体デバイスのピンと前記パッドとの接続関係を特定するための情報を含む、請求項1または2に記載のソフトウェア開発装置。
  4.  前記1または複数のパッドに対する指定は、前記1または複数のパッドのうち、利用すべきパッドを特定するための識別情報を含む、請求項1~3のいずれか1項に記載のソフトウェア開発装置。
  5.  前記生成手段は、コントローラ間で共通に利用されるライブラリモジュールに代えて、対象のコントローラに固有なコードにより、前記実行コードを生成する、請求項1~4のいずれか1項に記載のソフトウェア開発装置。
  6.  1または複数のパッドを有しているコントローラで実行される実行コードをソースコードから生成するソフトウェア開発プログラムであって、前記ソフトウェア開発プログラムはコンピュータに
     前記ソースコードを解析して、前記1または複数のパッドに対する指定を抽出するステップと、
     対象となるコントローラのハードウェア情報を参照して、抽出されたパッドに対する指定に対応するコードを含む実行コードを生成するステップとを実行させる、ソフトウェア開発プログラム。
PCT/JP2020/020542 2019-05-31 2020-05-25 ソフトウェア開発装置およびソフトウェア開発プログラム WO2020241571A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/615,043 US20220229642A1 (en) 2019-05-31 2020-05-25 Software development device and software development program
EP20814469.1A EP3979069A4 (en) 2019-05-31 2020-05-25 SOFTWARE DEVELOPMENT DEVICE AND SOFTWARE DEVELOPMENT PROGRAM

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019-103139 2019-05-31
JP2019103139A JP7385240B2 (ja) 2019-05-31 2019-05-31 ソフトウェア開発装置およびソフトウェア開発プログラム

Publications (1)

Publication Number Publication Date
WO2020241571A1 true WO2020241571A1 (ja) 2020-12-03

Family

ID=73552153

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/020542 WO2020241571A1 (ja) 2019-05-31 2020-05-25 ソフトウェア開発装置およびソフトウェア開発プログラム

Country Status (5)

Country Link
US (1) US20220229642A1 (ja)
EP (1) EP3979069A4 (ja)
JP (2) JP7385240B2 (ja)
TW (1) TW202111516A (ja)
WO (1) WO2020241571A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006213145A (ja) 2005-02-02 2006-08-17 Denso Corp 自動車用制御装置
JP2010206424A (ja) * 2009-03-02 2010-09-16 Renesas Electronics Corp 半導体装置、入力選択制御方法
JP2018018498A (ja) * 2017-03-08 2018-02-01 ネットエージェント株式会社 ソフトウェア生成システム、情報処理装置およびプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5561282A (en) * 1978-10-27 1980-05-08 Nippon Soken Inc Separate excitation type inverter circuit
JP4958692B2 (ja) * 2007-08-31 2012-06-20 キヤノン株式会社 配信装置、配信方法、及びコンピュータプログラム
US20110209128A1 (en) * 2010-02-24 2011-08-25 Nokia Corporation Systems, methods and apparatuses for facilitating targeted compilation of source code
CA3172550A1 (en) * 2014-05-26 2015-11-26 The Toronto-Dominion Bank On-boarding server for authorizing an entity to effect electronic payments
US10229404B1 (en) * 2016-12-16 2019-03-12 Worldpay, Llc Systems and methods for network configurations of pin pads

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006213145A (ja) 2005-02-02 2006-08-17 Denso Corp 自動車用制御装置
JP2010206424A (ja) * 2009-03-02 2010-09-16 Renesas Electronics Corp 半導体装置、入力選択制御方法
JP2018018498A (ja) * 2017-03-08 2018-02-01 ネットエージェント株式会社 ソフトウェア生成システム、情報処理装置およびプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3979069A4

Also Published As

Publication number Publication date
JP2024001328A (ja) 2024-01-09
JP7385240B2 (ja) 2023-11-22
JP2020197867A (ja) 2020-12-10
TW202111516A (zh) 2021-03-16
EP3979069A1 (en) 2022-04-06
US20220229642A1 (en) 2022-07-21
EP3979069A4 (en) 2023-05-31

Similar Documents

Publication Publication Date Title
CN101924656B (zh) 一种基于动态配置的网络设备cli实现方法和装置
KR102375417B1 (ko) 디바이스 수명 예측 방법, 디바이스 설계 방법, 및 컴퓨터 판독 가능한 저장매체
US20170255458A1 (en) Module system, module based robot system, and update method for module system
CN109508178A (zh) 一种程序开发方法及装置
US9002694B2 (en) Verification of design derived from power intent
CN111400167A (zh) Redfish服务合规性验证方法、装置及设备和介质
CN115407745A (zh) 基于hil测试系统的并行仿真模拟测试方法和相关设备
KR102341827B1 (ko) 테스트 벤치 생성 방법, 테스트 벤치 생성 장치, 및 테스트 벤치 생성 시스템
CN103514074A (zh) Mvb网卡开发方法及平台
CN113127361B (zh) 应用程序的开发方法、装置、电子设备和存储介质
JP2024041899A (ja) システムおよび方法
WO2020241571A1 (ja) ソフトウェア開発装置およびソフトウェア開発プログラム
US11030362B2 (en) Modeling and cooperative simulation of systems with interdependent discrete and continuous elements
US20160085883A1 (en) Verification System for System Design Consistency
CN112434478A (zh) 仿真逻辑系统设计的虚拟接口的方法及相关设备
Arzenšek et al. Criteria for selecting mobile application testing tools
WO2020241570A1 (ja) ソフトウェア開発装置およびソフトウェア開発プログラム
CN108363674B (zh) 一种无线usb数据交互系统及方法
WO2021015182A1 (ja) コンピューティングシステムおよび情報処理方法
Karmore et al. Universal methodology for embedded system testing
CN113542323B (zh) 业务处理方法、装置、设备及计算机可读存储介质
US11550980B1 (en) System and method for generating power-aware electronics
EP3963446A1 (en) Pipelined-data-transform-enabled data mover system
Ben Hlima et al. Efficient implementation of low cost and secure framework with firmware updates
KR20240082599A (ko) 정보 모델을 편집하는 전자 장치

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20814469

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020814469

Country of ref document: EP

Effective date: 20220103