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

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

Info

Publication number
JP7385240B2
JP7385240B2 JP2019103139A JP2019103139A JP7385240B2 JP 7385240 B2 JP7385240 B2 JP 7385240B2 JP 2019103139 A JP2019103139 A JP 2019103139A JP 2019103139 A JP2019103139 A JP 2019103139A JP 7385240 B2 JP7385240 B2 JP 7385240B2
Authority
JP
Japan
Prior art keywords
controller
software development
pads
code
hardware
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2019103139A
Other languages
English (en)
Other versions
JP2020197867A (ja
JP2020197867A5 (ja
Inventor
久利寿 帝都
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Connectfree Corp
Original Assignee
Connectfree Corp
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 Connectfree Corp filed Critical Connectfree Corp
Priority to JP2019103139A priority Critical patent/JP7385240B2/ja
Priority to US17/615,043 priority patent/US20220229642A1/en
Priority to PCT/JP2020/020542 priority patent/WO2020241571A1/ja
Priority to EP20814469.1A priority patent/EP3979069A4/en
Priority to TW109117815A priority patent/TWI851728B/zh
Publication of JP2020197867A publication Critical patent/JP2020197867A/ja
Publication of JP2020197867A5 publication Critical patent/JP2020197867A5/ja
Priority to JP2023188125A priority patent/JP2024001328A/ja
Application granted granted Critical
Publication of JP7385240B2 publication Critical patent/JP7385240B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/30Creation or generation of source code
    • 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

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)

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 (5)

  1. 1または複数のパッドを有しているコントローラで実行される実行コードをソースコードから生成するソフトウェア開発装置であって、前記1または複数のパッドは、前記コントローラと任意のハードウェアとの間の物理的なインターフェイスであり、
    前記ソースコードから前記1または複数のパッドに対する指定を抽出する抽出手段と、
    対象となるコントローラのハードウェア情報を取得する取得手段とを備え、前記ハードウェア情報は、当該対象となるコントローラに実装されている半導体デバイスのピンとパッドとの接続関係を特定するための情報を含み、
    前記ハードウェア情報を参照して、前記抽出された指定が示すパッドに接続されたピンが特定されたコードを含む実行コードを生成する生成手段とを備える、ソフトウェア開発装置。
  2. 前記1または複数のパッドに対する指定は、前記1または複数のパッドのうち、利用すべきパッドを特定するための識別情報を含む、請求項に記載のソフトウェア開発装置。
  3. 前記実行コードは、対象のコントローラに適合させて生成したオブジェクトを含む、請求項1または2に記載のソフトウェア開発装置。
  4. 前記生成手段は、前記ハードウェア情報を参照して、前記抽出された指定が示すパッドに接続されているピンと当該ピンに対応する論理ポートとを含む、経路情報を決定する、請求項1~3のいずれか1項に記載のソフトウェア開発装置。
  5. 1または複数のパッドを有しているコントローラで実行される実行コードをソースコードから生成するソフトウェア開発プログラムであって、前記1または複数のパッドは、前記コントローラと任意のハードウェアとの間の物理的なインターフェイスであり、前記ソフトウェア開発プログラムはコンピュータに
    前記ソースコードから前記1または複数のパッドに対する指定を抽出するステップと、
    対象となるコントローラのハードウェア情報を取得するステップとを備え、前記ハードウェア情報は、当該対象となるコントローラに実装されている半導体デバイスのピンとパッドとの接続関係を特定するための情報を含み、
    前記ハードウェア情報を参照して、前記抽出された指定が示すパッドに接続されたピンが特定されたコードを含む実行コードを生成するステップとを実行させる、ソフトウェア開発プログラム。
JP2019103139A 2019-05-31 2019-05-31 ソフトウェア開発装置およびソフトウェア開発プログラム Active JP7385240B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2019103139A JP7385240B2 (ja) 2019-05-31 2019-05-31 ソフトウェア開発装置およびソフトウェア開発プログラム
PCT/JP2020/020542 WO2020241571A1 (ja) 2019-05-31 2020-05-25 ソフトウェア開発装置およびソフトウェア開発プログラム
EP20814469.1A EP3979069A4 (en) 2019-05-31 2020-05-25 SOFTWARE DEVELOPMENT DEVICE AND SOFTWARE DEVELOPMENT PROGRAM
US17/615,043 US20220229642A1 (en) 2019-05-31 2020-05-25 Software development device and software development program
TW109117815A TWI851728B (zh) 2019-05-31 2020-05-28 軟體開發裝置和軟體開發程式
JP2023188125A JP2024001328A (ja) 2019-05-31 2023-11-02 ソフトウェア開発装置およびソフトウェア開発プログラム

Applications Claiming Priority (1)

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

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023188125A Division JP2024001328A (ja) 2019-05-31 2023-11-02 ソフトウェア開発装置およびソフトウェア開発プログラム

Publications (3)

Publication Number Publication Date
JP2020197867A JP2020197867A (ja) 2020-12-10
JP2020197867A5 JP2020197867A5 (ja) 2022-06-01
JP7385240B2 true JP7385240B2 (ja) 2023-11-22

Family

ID=73552153

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019103139A Active JP7385240B2 (ja) 2019-05-31 2019-05-31 ソフトウェア開発装置およびソフトウェア開発プログラム
JP2023188125A Pending JP2024001328A (ja) 2019-05-31 2023-11-02 ソフトウェア開発装置およびソフトウェア開発プログラム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2023188125A Pending JP2024001328A (ja) 2019-05-31 2023-11-02 ソフトウェア開発装置およびソフトウェア開発プログラム

Country Status (4)

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

Citations (2)

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

Family Cites Families (6)

* 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
JP4457347B2 (ja) 2005-02-02 2010-04-28 株式会社デンソー 自動車用制御装置
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
US10679212B2 (en) * 2014-05-26 2020-06-09 The Toronto-Dominion Bank Post-manufacture configuration of pin-pad terminals
US10229404B1 (en) * 2016-12-16 2019-03-12 Worldpay, Llc Systems and methods for network configurations of pin pads

Patent Citations (2)

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

Also Published As

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

Similar Documents

Publication Publication Date Title
US9292652B2 (en) Generic design rule checking (DRC) test case extraction
US9003363B2 (en) Device flags
US20200184784A1 (en) Guided cable management
KR20190030428A (ko) 디바이스 수명 예측 방법, 디바이스 설계 방법, 및 컴퓨터 판독 가능한 저장매체
WO2011159892A1 (en) Multiple platform support in computer system firmware
JP2024041899A (ja) システムおよび方法
CN112434478B (zh) 仿真逻辑系统设计的虚拟接口的方法及相关设备
JP7385240B2 (ja) ソフトウェア開発装置およびソフトウェア開発プログラム
US11030362B2 (en) Modeling and cooperative simulation of systems with interdependent discrete and continuous elements
US10295596B1 (en) Method and system for generating validation tests
TWI851728B (zh) 軟體開發裝置和軟體開發程式
CN113760751B (zh) 生成测试用例的方法、电子设备及存储介质
Arzenšek et al. Criteria for selecting mobile application testing tools
JP7473145B2 (ja) ソフトウェア開発装置およびソフトウェア開発プログラム
CN107665292B (zh) 基于开发者简档的许可证信息访问
JP7335591B2 (ja) コンピューティングシステムおよび情報処理方法
JP5738065B2 (ja) 制御プログラム開発支援装置
US20240220693A1 (en) Making Circuitry Having An Attribute
CN108701098B (zh) 控制计算装置的方法、计算机可读介质及计算装置
CN117033111A (zh) Usb接口的测试系统、方法、计算机设备和存储介质
TW202433333A (zh) 用於系統單晶片驗證的系統、方法和非瞬態電腦可讀儲存介質
CN117436403A (zh) 一种ram验证方法、装置及存储介质
CN114503114A (zh) 针对不同应用使用通用熔丝控制器硬件
JP2006113862A (ja) Lsiの論理検証方法、および装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220524

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230704

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230904

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231102

R150 Certificate of patent or registration of utility model

Ref document number: 7385240

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150