(57)【要約】【課題】仕様の異なる半導体デバイスを用いたコントローラの間でソフトウェアを共有化できるソリューションを提供する。【解決手段】１または複数のパッドを有しているコントローラで実行される実行コードをソースコードから生成するソフトウェア開発装置が提供される。ソフトウェア開発装置は、ソースコードを解析して、１または複数のパッドに対する指定を抽出する解析手段と、対象となるコントローラのハードウェア情報を参照して、抽出されたパッドに対する指定に対応するコードを含む実行コードを生成する生成手段とを含む。【選択図】図１２
2020197867.tif 000002
【特許請求の範囲】
【請求項１】
１または複数のパッドを有しているコントローラで実行される実行コードをソースコードから生成するソフトウェア開発装置であって、
前記ソースコードを解析して、前記１または複数のパッドに対する指定を抽出する解析手段と、
対象となるコントローラのハードウェア情報を参照して、抽出されたパッドに対する指定に対応するコードを含む実行コードを生成する生成手段とを備える、ソフトウェア開発装置。
【請求項２】
前記パッドは、前記コントローラ２００と任意のハードウェアとの間の物理的なインターフェイスである、請求項１に記載のソフトウェア開発装置。
【請求項３】
前記ハードウェア情報は、前記コントローラに実装されている半導体デバイスのピンと前記パッドとの接続関係を特定するための情報を含む、請求項１または２に記載のソフトウェア開発装置。
【請求項４】
前記１または複数のパッドに対する指定は、前記１または複数のパッドのうち、利用すべきパッドを特定するための識別情報を含む、請求項１〜３のいずれか１項に記載のソフトウェア開発装置。
【請求項５】
前記生成手段は、コントローラ間で共通に利用されるライブラリモジュールに代えて、対象のコントローラに固有なコードにより、前記実行コードを生成する、請求項１〜４のいずれか１項に記載のソフトウェア開発装置。
【請求項６】
１または複数のパッドを有しているコントローラで実行される実行コードをソースコードから生成するソフトウェア開発プログラムであって、前記ソフトウェア開発プログラムはコンピュータに
前記ソースコードを解析して、前記１または複数のパッドに対する指定を抽出するステップと、
対象となるコントローラのハードウェア情報を参照して、抽出されたパッドに対する指定に対応するコードを含む実行コードを生成するステップとを実行させる、ソフトウェア開発プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ソフトウェア開発装置およびソフトウェア開発プログラムに関する。
【背景技術】
【０００２】
近年の情報通信技術（Information and Communication Technology：ＩＣＴ）の進歩は目覚ましく、インターネットなどのネットワークに接続されるデバイスは、従来のパーソナルコンピュータやスマートフォンといった情報処理装置に限らず、様々なモノ（things）に広がっている。このような技術トレンドは、「ＩｏＴ（Internet of Things；モノのインターネット）」と称され、様々な技術およびサービスが提案および実用化されつつある。将来的には、地球上の数十億人と数百億または数兆のデバイスとが同時につながる世界が想定されている。このようなネットワーク化された世界を実現するためには、よりシンプル、より安全、より自由につながることができるソリューションを提供する必要がある。
【０００３】
ＩｏＴで利用されるデバイス（「エッジデバイス」とも称される。）においても、半導体デバイスを用いて様々なプログラムが実行される。このような半導体デバイスとソフトウェアとの関係に関して、例えば、特開２００６−２１３１４５号公報（特許文献１）は、ハードウェア的に同じＥＣＵを用いて、使用される指定端子ピンが異なる複数の仕様間でソフトウェアを共有化するための仕組みを開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２１３１４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
エッジデバイスを構成する半導体デバイスの進歩も目覚ましい。このような半導体デバイスの改良に伴って、仕様が変更される場合などもあり、ソフトウェアをどのように維持および管理するのかといった課題が生じ得る。
【０００６】
上述の特許文献１に開示される仕組みは、同一のハードウェアを用いて、仕様の異なる複数の機能を単一のソフトウェアで実現することを目的とするものであり、同一のソフトウェアを仕様の異なる複数の半導体デバイスの間で共有化することを解決するようなものではない。
【０００７】
本開示は、仕様の異なる半導体デバイスを用いたコントローラの間でソフトウェアを共有化できるソリューションを提供することを一つの目的とする。
【課題を解決するための手段】
【０００８】
本開示のある形態に従えば、１または複数のパッドを有しているコントローラで実行される実行コードをソースコードから生成するソフトウェア開発装置が提供される。ソフトウェア開発装置は、ソースコードを解析して、１または複数のパッドに対する指定を抽出する解析手段と、対象となるコントローラのハードウェア情報を参照して、抽出されたパッドに対する指定に対応するコードを含む実行コードを生成する生成手段とを含む。
【０００９】
パッドは、コントローラ２００と任意のハードウェアとの間の物理的なインターフェイスであってもよい。
【００１０】
ハードウェア情報は、コントローラに実装されている半導体デバイスのピンとパッドとの接続関係を特定するための情報を含んでいてもよい。
【００１１】
１または複数のパッドに対する指定は、１または複数のパッドのうち、利用すべきパッドを特定するための識別情報を含んでいてもよい。
【００１２】
生成手段は、コントローラ間で共通に利用されるライブラリモジュールに代えて、対象のコントローラに固有なコードにより、実行コードを生成するようにしてもよい。
【００１３】
本開示の別の形態に従えば、１または複数のパッドを有しているコントローラで実行される実行コードをソースコードから生成するソフトウェア開発プログラムが提供される。ソフトウェア開発プログラムはコンピュータに、ソースコードを解析して、１または複数のパッドに対する指定を抽出するステップと、対象となるコントローラのハードウェア情報を参照して、抽出されたパッドに対する指定に対応するコードを含む実行コードを生成するステップとを実行させる。
【発明の効果】
【００１４】
本開示によれば、仕様の異なる半導体デバイスを用いたコントローラの間でソフトウェアを共有化できる。
【図面の簡単な説明】
【００１５】
【図１】本実施の形態に従うＩｏＴシステムの全体構成の一例を示す模式図である。
【図２】本実施の形態に従うソフトウェア開発装置のハードウェア構成例を示す模式図である。
【図３】本実施の形態に従うコントローラのハードウェア構成例を示す模式図である。
【図４】本実施の形態に従うソフトウェア開発装置に接続されるコントローラに用いられるマイコンを説明するための図である。
【図５】本実施の形態に従うソフトウェア開発装置に接続されるコントローラで提供されるパッドを説明するための図である。
【図６】図５に示すマイコンとパッドとの接続関係を示す図である。
【図７】図５および図６に示されるコントローラに向けられたソースコードの一例を示す図である。
【図８】本実施の形態に従うソフトウェア開発装置に入力可能なソースコードの一例を示す図である。
【図９】本実施の形態に従うソフトウェア開発装置の機能構成例を示すブロック図である。
【図１０】本実施の形態に従うソフトウェア開発装置により生成される実行コードのデータ構造を説明するための図である。
【図１１】本実施の形態に従うコントローラが提供するパッドの応用例を説明するための図である。
【図１２】本実施の形態に従うソフトウェア開発装置におけるソースコードから実行コードを生成する処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１６】
本開示に係る実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００１７】
以下の説明においては、典型例として、本実施の形態に従うソフトウェア開発装置１００をＩｏＴシステムに適用した場合について説明するが、本開示はＩｏＴシステムに限らず任意のシステムおよびコントローラに適用可能である。
【００１８】
＜Ａ．ＩｏＴシステム１＞
まず、本実施の形態に従うソフトウェア開発装置１００およびエッジデバイス２を含むＩｏＴシステム１の全体構成について説明する。
【００１９】
図１は、本実施の形態に従うＩｏＴシステム１の全体構成の一例を示す模式図である。図１を参照して、ＩｏＴシステム１においては、典型的には、ソフトウェア開発装置１００においてエッジデバイス２で実行されるプログラム（実行コード）が生成される。生成されたプログラムは、ソフトウェア開発装置１００からエッジデバイス２に含まれるコントローラ２００へ転送される。
【００２０】
ソフトウェア開発装置１００には、統合開発環境（ＩＤＥ：Integrated Development Environment）が提供されており、ユーザは統合開発環境上で任意のプログラムを作成できる。
【００２１】
エッジデバイス２としては、どのようなデバイスであってもよいが、典型的には、工場設備、家庭内の各種装置、社会インフラ設備、車両などの移動体、任意の携帯デバイスなどが想定される。より具体的には、エッジデバイス２は、プロセッサを含むコントローラ２００と、１または複数のハードウェアデバイス４を含む。ハードウェアデバイス４は、エッジデバイス２を構成する任意のセンサ、アクチュエータ、通信デバイスなどを含む。
【００２２】
コントローラ２００とハードウェアデバイス４との間は、配線（hard-wired）により電気的に接続されている。
【００２３】
図１に示すＩｏＴシステム１における典型的な処理手順としては、まず、ユーザがソフトウェア開発装置１００を用いてソースコードを作成する（（１）ソースコード作成）。そして、作成されたソースコードは、ソフトウェア開発装置１００においてコンパイルされて、実行コードが生成される（（２）実行コード生成）。生成された実行コードは、エッジデバイス２のコントローラ２００へ転送される（（３）実行コード転送）。転送された実行コードは、コントローラ２００で実行される（（４）実行コードの実行）。実行コードがコントローラ２００で実行されことで、ハードウェアデバイス４との間で任意の信号が遣り取りされてもよい。
【００２４】
このように、ソフトウェア開発装置１００は、コントローラ２００で実行される実行コードをソースコードから生成する。
【００２５】
＜Ｂ．ハードウェア構成例＞
次に、本実施の形態に従うＩｏＴシステム１に含まれるデバイスのハードウェア構成例について説明する。
【００２６】
（ｂ１：ソフトウェア開発装置１００）
ソフトウェア開発装置１００は、典型的には汎用コンピュータで実現される。
【００２７】
図２は、本実施の形態に従うソフトウェア開発装置１００のハードウェア構成例を示す模式図である。図２を参照して、ソフトウェア開発装置１００は、主たるコンポーネントとして、プロセッサ１０２と、メインメモリ１０４と、入力部１０６と、ディスプレイ１０８と、ハードディスク１１０と、通信インターフェイス１２２とを含む。これらのコンポーネントは、内部バス１２０を介して接続されている。
【００２８】
プロセッサ１０２は、例えば、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphics Processing Unit）などで構成される。複数のプロセッサ１０２が配置されてもよいし、複数のコアを有するプロセッサ１０２を採用してもよい。
【００２９】
メインメモリ１０４は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置で構成される。ハードディスク１１０は、プロセッサ１０２で実行される各種プログラムや各種データを保持する。なお、ハードディスク１１０に代えて、ＳＳＤ（Solid State Drive）やフラッシュメモリなどの不揮発性記憶装置を採用してもよい。ハードディスク１１０に格納されたプログラムのうち、指定されたプログラムがメインメモリ１０４上に展開され、プロセッサ１０２は、メインメモリ１０４上に展開されたプログラムに含まれるコンピュータ可読命令（computer-readable instructions）を順次実行することで、後述するような各種機能を実現する。
【００３０】
典型的には、ハードディスク１１０には、ユーザが任意に作成するソースコード１１２と、統合開発環境を実現するためのソフトウェア開発プログラム１１４と、ソースコード１１２から生成される実行コード１１６とが格納される。ソフトウェア開発プログラム１１４は、ユーザが任意に作成するソースコード１１２から実行コード１１６を生成するものであり、プログラムの開発環境を提供するモジュールを含む。
【００３１】
入力部１０６は、ソフトウェア開発装置１００を操作するユーザの入力操作を受け付ける。入力部１０６は、例えば、キーボード、マウス、表示デバイス上に配置されたタッチパネル、ソフトウェア開発装置１００の筐体に配置された操作ボタンなどであってもよい。
【００３２】
ディスプレイ１０８は、プロセッサ１０２での処理結果などを表示する。ディスプレイ１０８は、例えば、ＬＣＤ（Liquid Crystal Display）や有機ＥＬ（Electro-Luminescence)ディスプレイなどであってもよい。
【００３３】
通信インターフェイス１２２は、コントローラ２００とのデータ交換を担当する。通信インターフェイス１２２は、例えば、ＵＳＢ（Universal Serial Bus）ポート、ＩＥＥＥ１３９４などのシリアルポート、レガシーなパラレルポートといった有線接続端子を含む。あるいは、通信インターフェイス１２２は、イーサネット（登録商標）ポートを含んでいてもよい。
【００３４】
なお、ソフトウェア開発装置１００の全部または一部は、コンピュータ可読命令に相当する回路が組み込まれたＡＳＩＣ（Application Specific Integrated Circuit）などのハードワイヤード回路を用いて実現してもよい。さらにあるいは、ＦＰＧＡ（field-programmable gate array）上にコンピュータ可読命令に相当する回路を用いて実現してもよい。また、プロセッサ１０２およびメインメモリ、ＡＳＩＣ、ＦＰＧＡなどを適宜組み合わせて実現してもよい。
【００３５】
ソフトウェア開発装置１００は、コンピュータ可読命令を含むソフトウェア開発プログラム１１４を格納する非一過性（non-transitory）のメディアから、当該格納しているプログラムなどを読み出すためのコンポーネントをさらに有していてもよい。メディアは、例えば、ＤＶＤ（Digital Versatile Disc）などの光学メディア、ＵＳＢメモリなどの半導体メディアなどであってもよい。
【００３６】
なお、ソフトウェア開発プログラム１１４は、メディアを介してソフトウェア開発装置１００にインストールされるだけではなく、ネットワーク上の配信サーバから提供されるようにしてもよい。
【００３７】
（ｂ２：コントローラ２００）
コントローラ２００は、汎用コンピュータを用いて実現してもよいし、処理を実現するために必要なコンポーネントを含む半導体基板を用いて実現してもよい。
【００３８】
図３は、本実施の形態に従うコントローラ２００のハードウェア構成例を示す模式図である。図３を参照して、コントローラ２００は、主たるコンポーネントとして、演算処理部２１０と、無線通信モジュール２１２と、ＵＳＢコントローラ２１４と、通信コントローラ２１６と、１または複数のパッド２２０と電気的に接続されたＩＯドライバを含むマイコン２１８とを含む。
【００３９】
演算処理部２１０は、プログラムを実行する演算部であり、主たるコンポーネントとして、プロセッサ２０２と、メインメモリ２０４と、フラッシュメモリ２０６とを含む。プロセッサ２０２は、例えば、ＣＰＵやＧＰＵなどで構成される。複数のプロセッサ２０２が配置されてもよいし、複数のコアを有するプロセッサ２０２を採用してもよい。メインメモリ２０４は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置で構成される。フラッシュメモリ２０６は、プロセッサ２０２で実行されるプログラムや必要なデータを保持する不揮発性記憶装置である。フラッシュメモリ２０６に格納されたプログラムのうち、指定されたプログラムがメインメモリ２０４上に展開されて、プロセッサ２０２により実行されることで、各種機能が実現される。
【００４０】
無線通信モジュール２１２は、他の任意のデバイスとの間の無線によるデータ交換を担当する。無線通信モジュール２１２は、デバイス、ルータ、移動体基地局などと無線通信するための処理回路およびアンテナなどを含んでもよい。無線通信モジュール２１２が対応する無線通信は、例えば、Ｗｉ−Ｆｉ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＺｉｇＢｅｅ（登録商標）、ＬＰＷＡ（Low Power Wide Area）、ＧＳＭ（登録商標）、Ｗ−ＣＤＭＡ、ＣＤＭＡ２００、ＬＴＥ（Long Term Evolution）、第５世代移動通信システム（５Ｇ）のいずれであってもよい。
【００４１】
ＵＳＢコントローラ２１４は、ソフトウェア開発装置１００とのデータ交換を担当する。通信コントローラ２１６は、他の任意のデバイスとの間の有線によるデータ交換を担当する。通信コントローラ２１６は、例えば、シリアル通信、パラレル通信、ＧＰＩＯ（General-purpose input/output）などの公知のデータ交換方式に対応するようにしてもよい。
【００４２】
マイコン２１８は、パッド２２０を介して電気的に接続された任意のデバイスとの間の電気信号の遣り取りを担当する。マイコン２１８は、演算処理部２１０からの指令に従って電気信号を出力する。また、マイコン２１８は、パッド２２０を介して与えられる電気信号を検知し、その検知結果を演算処理部２１０へ出力する。より具体的には、マイコン２１８は、信号生成回路、信号検知回路、バッファ回路などで構成される。
【００４３】
パッド２２０は、露出して配置された導電体を有しており、コントローラ２００と様々なハードウェアとの間の物理的なインターフェイスに相当する。
【００４４】
コントローラ２００は、図示しないバッテリからの電力により駆動されてもよい。
＜Ｃ．課題および解決手段＞
次に、本実施の形態に従うソフトウェア開発装置１００が解決しようとする課題について説明する。
【００４５】
図４は、本実施の形態に従うソフトウェア開発装置１００に接続されるコントローラ２００に用いられるマイコン２１８を説明するための図である。図４（Ａ）および図４（Ｂ）には、それぞれマイコン２１８Ａおよび２１８Ｂを採用する場合について例示する。
【００４６】
図４に示すように、実質的に同じ機能を提供するマイコン２１８であっても、マイコン２１８自体の仕様（大きさやピン数）ならびに各機能が割り当てられるピン位置が異なる場合がある。
【００４７】
例えば、図４（Ａ）に示すマイコン２１８Ａにおいては、Ｉ／Ｏ用の端子として、番号「５」，「６」，「７」，「１２」，「１３」，「１４」のピンが用いられる。また、図４（Ｂ）に示すマイコン２１８Ｂにおいては、Ｉ／Ｏ用の端子として、番号「１７」，「１８」，「１９」，「２０」，「２１」，「２２」のピンが用いられる。
【００４８】
図５は、本実施の形態に従うソフトウェア開発装置１００に接続されるコントローラ２００で提供されるパッド２２０を説明するための図である。図５に示すように、マイコン２１８の端子とパッド２２０とが電気的に接続される。マイコン２１８の端子とパッド２２０との位置関係に応じて、任意の組み合わせが可能である。
【００４９】
図５（Ａ）には、図４（Ａ）に示すマイコン２１８Ａを用いた構成例を示す。この構成例においては、番号「１」〜「６」のパッド２２０は、番号「５」，「６」，「７」，「１４」，「１３」，「１２」のピンとそれぞれ電気的に接続される。また、図５（Ｂ）には、図４（Ｂ）に示すマイコン２１８Ｂを用いた構成例を示す。この構成例においては、番号「１」〜「６」のパッド２２０は、番号「２２」，「２１」，「２０」，「１９」，「１８」，「１７」のピンとそれぞれ電気的に接続される。
【００５０】
図６は、図５に示すマイコンとパッドとの接続関係を示す図である。図６（Ａ）は、図５（Ａ）に示す接続関係を示し、図６（Ｂ）は、図５（Ｂ）に示す接続関係を示す。
【００５１】
図６（Ａ）と図６（Ｂ）とを比較して分かるように、マイコン２１８Ａとマイコン２１８Ｂとの間では、番号「１」〜「６」のパッド２２０に接続されるピン番号および論理ポートのいずれもが互いに異なっている。
【００５２】
このようなハードウェアの相違によって、従来技術においては、コントローラ２００で実行されるソフトウェアを共通化することが難しかった。
【００５３】
図７は、図５および図６に示されるコントローラ２００に向けられたソースコード１１２の一例を示す図である。図７に示されるソースコード１１２Ａおよび１１２Ｂは、所定のメッセージを示す信号を番号「５」および「６」のパッド２２０を通じて出力する場合の処理を規定する。
【００５４】
より具体的には、図７（Ａ）に示されるソースコード１１２Ａは、メッセージを示す変数の定義１１２１と、出力ポートを示す変数（ＯｕｔＰｏｒｔ１およびＯｕｔＰｏｒｔ２）の定義１１２２とを含む。メッセージの値は、ファンクションｇｅｔＴｅｘｔ（）により設定される（命令１１２３）。
【００５５】
また、メッセージを示す信号の送出に使用されるパッド２２０に接続されるポートを有効化される（命令１１２４Ａ）。命令１１２４Ａは、マイコン２１８Ａの論理ポート「ＩＯ＿０５」（ＯｕｔＰｏｒｔ１：ピン番号「１３」）および「ＩＯ＿０４」（ＯｕｔＰｏｒｔ２：ピン番号「１２」）を「Ｏｕｔ」（出力）に設定する（図６（Ａ）参照）。
【００５６】
そして、命令１１２５が実行されることで、設定された２つの倫理ポートからメッセージを示す信号が送出される。
【００５７】
これに対して、マイコン２１８Ｂを用いる構成において、番号「５」および「６」のパッド２２０は、マイコン２１８Ｂの論理ポート「ＩＯ＿０２」（ピン番号「１８」）および「ＩＯ＿０１」（ピン番号「６」）と電気的に接続されているので、この構成の差異をソースコード１１２に反映する必要がある。
【００５８】
具体的には、図７（Ｂ）に示される命令１１２４Ｂは、図７（Ａ）に示される命令１１２４Ａとは異なる論理ポートを有効する。命令１１２４Ｂは、マイコン２１８Ｂの論理ポート「ＩＯ＿０２」（ＯｕｔＰｏｒｔ１：ピン番号「１８」）および「ＩＯ＿０１」（ＯｕｔＰｏｒｔ２：ピン番号「１７」）を「Ｏｕｔ」（出力）に設定する（図６（Ｂ）参照）。
【００５９】
このように、コントローラ２００に用いられるマイコン２１８の仕様が変更される毎にソースコード１１２を修正する必要が生じ得る。
【００６０】
このような課題に対して、本実施の形態に従うソフトウェア開発装置１００においては、任意のデバイスと電気的に接続されるパッド２２０を直接指定できるようになっている。
【００６１】
図８は、本実施の形態に従うソフトウェア開発装置１００に入力可能なソースコード１１２の一例を示す図である。図８に示されるソースコード１１２は、図７に示されるソースコード１１２Ａおよび１１２Ｂと同様に、所定のメッセージを示す信号を番号「５」および「６」のパッド２２０を通じて出力する場合の処理を規定する。
【００６２】
より具体的には、図８に示されるソースコード１１２は、メッセージを示す変数の定義１１２１と、利用されるパッドを示す変数（ＡｃｔｉｖｅＰａｄ１およびＡｃｔｉｖｅＰａｄ２）の定義１１２６とを含む。定義１１２６は、コントローラ２００のパッド２２０に対する指定に相当し、１または複数のパッド２２０のうち、利用すべきパッドを特定するための識別情報（この例では、パッドの番号）を含む。
【００６３】
メッセージの値は、ファンクションｇｅｔＴｅｘｔ（）により設定される（命令１１２３）。
【００６４】
また、メッセージを示す信号の送出に使用されるパッド２２０を特定する情報が設定される（命令１１２７）。命令１１２７は、利用されるパッド２２０の識別情報である「５」および「６」を変数ＡｃｔｉｖｅＰａｄ１およびＡｃｔｉｖｅＰａｄ２にそれぞれ設定する。
【００６５】
そして、命令１１２８が実行されることで、設定された２つのパッド２２０からメッセージを示す信号が送出される。
【００６６】
このように、本実施の形態に従うソフトウェア開発装置１００においては、実際にデバイスと接続されるパッドを特定したソースコード１１２の作成が可能であり、このようにパッドを特定できることで、コントローラ２００に実装されるマイコンなどの仕様の相違を抽象化できる。すなわち、コントローラ２００に実装されるマイコンなどの仕様が変更された場合であっても、同一のソフトウェアをそのまま流用できる。
【００６７】
このようなプログラミング構成を採用することで、コントローラ２００のユーザは、ハードウェアの仕様などを意識せず、ソフトウェア資産を継続して利用することができるという利点が得られる。また、コントローラ２００のメーカやベンダは、使用するマイコンなどの仕様が変更されても、各パッドに予め設定されている要求を満たすように内部配線を設計さえすれば、ソースコードの変更や改修などを生じさせることがない。
【００６８】
＜Ｄ．ソフトウェア開発装置１００の機能構成＞
次に、本実施の形態に従うソフトウェアの機能構成について説明する。
【００６９】
図９は、本実施の形態に従うソフトウェア開発装置１００の機能構成例を示すブロック図である。図９に示す各機能は、典型的には、ソフトウェア開発装置１００のプロセッサ１０２がソフトウェア開発プログラム１１４を実行することで実現される。
【００７０】
図９を参照して、ソフトウェア開発プログラム１１４は、ソースコード１１２の入力を受けて、実行コード１１６（アセンブラコード）を生成する。より具体的には、ソフトウェア開発プログラム１１４は、プリプロセッサ１１４１と、コンパイラ１１４２と、オプティマイザ１１４３と、コードジェネレータ１１４４とを含む。
【００７１】
プリプロセッサ１１４１は、ソースコード１１２に対する語句解析および構文解析を実行するとともに、コンパイラ１１４２、オプティマイザ１１４３およびコードジェネレータ１１４４の挙動を制御する。プリプロセッサ１１４１は、解析手段に相当し、ソースコード１１２を解析して、１または複数のパッド２２０に対する指定を抽出する。
【００７２】
コンパイラ１１４２は、ソースコード１１２に対する語句解析および構文解析の結果に基づいて、オブジェクトコードに生成する。オプティマイザ１１４３は、生成されたオブジェクトコードを最適化する。コードジェネレータ１１４４は、オプティマイザ１１４３による最適化の結果に基づいて、最終的な実行コード１１６を出力する。
【００７３】
コンパイラ１１４２、オプティマイザ１１４３およびコードジェネレータ１１４４は、生成手段に相当し、対象となるコントローラ２００のハードウェア情報を参照して、抽出されたパッド２２０に対する指定に対応するコードを含む実行コードを生成する。
【００７４】
ソフトウェア開発装置１００は、実行コード１１６が実行されるコントローラ２００のハードウェア情報を含むコンフィグレーション１１８を有している。コンフィグレーション１１８は、コントローラ２００毎に用意され、対象とするコントローラ２００に応じたものが選択される。
【００７５】
コンフィグレーション１１８は、典型的には、図６に示すような実装されている半導体デバイス（典型的には、マイコン）のピンとパッドとの接続関係を特定するための情報を含む。ソフトウェア開発装置１００は、実行コード１１６が実行されるコントローラ２００の種別に応じて、対応するコンフィグレーション１１８を選択するとともに、選択したコンフィグレーション１１８の内容を参照して、ソースコード１１２において指定されているパッド２２０を利用するのに必要な経路情報などを決定する。すなわち、コンフィグレーション１１８は、コントローラ２００を構成するハードウェアの相違を吸収するための設定情報を含む。
【００７６】
なお、コントローラ２００の種別は、ユーザが手動で選択してもよいし、ソフトウェア開発装置１００とコントローラ２００とを接続して、自動的に取得するようにしてもよい。コンフィグレーション１１８については、ソフトウェア開発プログラム１１４が予め指定されたサーバから追加取得するようにしてもよいし、コントローラ２００のストレージなどに予め格納しておき、ソフトウェア開発装置１００が必要に応じて読み出すようにしてもよい。
【００７７】
さらに、対象となるコントローラ２００に適合するように、実行コード１１６を生成するようにしてもよい。
【００７８】
図１０は、本実施の形態に従うソフトウェア開発装置１００により生成される実行コード１１６のデータ構造を説明するための図である。図１０（Ａ）を参照して、実行コード１１６Ａは、１または複数のオブジェクトコード（図１０（Ａ）の例では、オブジェクトコード１１６１および１１６２）と、必要なライブラリモジュール１１６３とで構成される。ライブラリモジュール１１６３は、オブジェクトコード１１６１および１１６２から参照されるオブジェクトコードの一部となる。典型的には、ライブラリモジュール１１６３には、オブジェクトコード１１６１または１１６２から必要なデータが引き渡されて処理が実行され、その結果がオブジェクトコード１１６１または１１６２へ戻される。
【００７９】
これに対して、図１０（Ｂ）に示す例では、図１０（Ａ）に示す実行コード１１６Ａにおいてライブラリモジュール１１６３が担当するコードが固有コード１１６５および１１６７として、オブジェクトコード１１６４および１１６６に組み込まれている。すなわち、オブジェクトコード１１６４および１１６６は、対象となるコントローラ２００に特有な処理が実行するための固有コード１１６５および１１６７を含む。
【００８０】
このように、オブジェクトコード１１６４および１１６６に対象となるコントローラ２００に適合させて生成した命令（オブジェクトコード）を組み入れてもよい。すなわち、ソフトウェア開発装置１００は、コントローラ間で共通に利用されるライブラリモジュール１１６３に代えて、対象のコントローラ２００に固有なコードにより、実行コード１１６を生成するようにしてもよい。このような構成を採用することで、コントローラ２００での実行エラーの発生の可能性を低減するとともに、処理の高速化も期待できる。
【００８１】
＜Ｅ．パッドの応用例＞
次に、本実施の形態に従うコントローラ２００が提供するパッド２２０の応用例について説明する。上述したように、本実施の形態においては、コントローラ２００が有している１または複数のパッド２２０を特定して各種処理を実行することができる。このようなパッド２２０を利用することで、様々なハードウェアとの物理的なインターフェイスを実現できる。
【００８２】
図１１は、本実施の形態に従うコントローラ２００が提供するパッド２２０の応用例を説明するための図である。図１１を参照して、コントローラ２００は行列状に配置された複数のパッド２２０を有しており、これらのパッド２２０と電気的に接続可能なアダプタ３００を用意する。アダプタ３００は、装着状態において、各パッド２２０と電気的に接続可能な位置に端子が配置可能になっている。
【００８３】
行列状に配置された複数のパッド２２０の各々について、予め機能が定義されていてもよい。
【００８４】
図１１には、複数のパッド２２０のうち、一部のパッド（番号「６」〜「１０」および番号「１６」〜「２０」）のみが利用される例を示す。アダプタ３００に接続された任意のデバイスは、コントローラ２００の特定のパッド２２０との間で信号を遣り取りすることになる。
【００８５】
上述したように、コントローラ２００に組み込まれるマイコン２１８の仕様が変更されたことで、パッド２２０のレイアウトおよび提供される機能を維持するための新たなハードウェア構成が採用されたとしても、そのハードウェア構成を定義するコンフィグレーション１１８さえ用意すれば、ソースコード１１２をそのまま流用できる。すなわち、コントローラ２００のハードウェア構成の変更をソフトウェアで吸収できる。
【００８６】
このように、マイコンなどの半導体デバイスの進歩が生じても、コントローラ２００の物理的なインターフェイス（パッド２２０）を維持するとともに、ソフトウェア資産についてもそのまま利用できる。その結果、アダプタ３００を介してコントローラ２００に接続される任意のデバイスから見た場合にも、コントローラ２００とのインターフェイスは不変であり、システムを永続的に維持できる。
【００８７】
＜Ｆ．処理手順＞
次に、本実施の形態に従うソフトウェア開発装置１００におけるソースコード１１２から実行コード１１６を生成する処理手順について説明する。
【００８８】
図１２は、本実施の形態に従うソフトウェア開発装置１００におけるソースコード１１２から実行コード１１６を生成する処理手順を示すフローチャートである。図１２に示す各ステップは、典型的には、プロセッサ１０２がソフトウェア開発プログラム１１４を実行することで実現される。
【００８９】
図１２を参照して、ソフトウェア開発装置１００は、入力されたソースコード１１２に対して語句解析および構文解析を実行する（ステップＳ１００）。ソフトウェア開発装置１００は、解析結果に基づいて、いずれかのパッド２２０が指定されているか否かを判断する（ステップＳ１０２）。すなわち、ソフトウェア開発装置１００は、ソースコード１１２を解析して、１または複数のパッド２２０に対する指定を抽出する。
【００９０】
いずれのパッド２２０も指定されていなければ（ステップＳ１０２においてＮＯ）、ステップＳ１０４およびＳ１０６の処理はスキップされる。
【００９１】
いずれかのパッド２２０が指定されていれば（ステップＳ１０２においてＹＥＳ）、ソフトウェア開発装置１００は、実行コード１１６の転送先のコントローラ２００に対応するコンフィグレーション１１８を取得し（ステップＳ１０４）、取得したコンフィグレーション１１８を参照して、指定されているパッド２２０を利用するのに必要な経路情報を決定する（ステップＳ１０６）。この経路情報は、指定されているパッド２２０に接続されているマイコンのピン番号や論理ポートなどを解決するための情報を含む。
【００９２】
そして、ソフトウェア開発装置１００は、ソースコード１１２に含まれるモジュール単位にオブジェクトコードを生成し（ステップＳ１０８）、オブジェクトコードを結合して実行コード１１６として出力する（ステップＳ１１０）。そして、処理は終了する。
【００９３】
このように、ソフトウェア開発装置１００は、対象となるコントローラ２００のハードウェア情報（一例として、コンフィグレーション１１８）を参照して、抽出されたパッド２２０に対する指定に対応するコードを含む実行コードを生成する。
【００９４】
＜Ｇ．変形例＞
上述の説明においては、説明の便宜上、物理的なインターフェイスの典型例として、パッドについて説明したが、「パッド」という用語に限定されることなく、１または複数の任意の物理的なインターフェイス（信号を遣り取り可能な回路の一部）について同様に適用可能である。
【００９５】
＜Ｈ．利点＞
本実施の形態によれば、コントローラ２００が提供する物理的なインターフェイスのうち利用されるインターフェイスをソースコード１１２において定義できるとともに、コントローラ２００のハードウェア構成の相違を吸収できる仕組みを提供できる。これによって、コントローラ２００に接続されるデバイスから見れば、コントローラ２００の種類に依存することなく同一のインターフェイスを維持できるとともに、コントローラ２００の変更によらず、ソフトウェアもそのまま利用できる。
【００９６】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００９７】
１  ＩｏＴシステム、２  エッジデバイス、４  ハードウェアデバイス、１００  ソフトウェア開発装置、１０２，２０２  プロセッサ、１０４，２０４  メインメモリ、１０６  入力部、１０８  ディスプレイ、１１０  ハードディスク、１１２，１１２Ａ，１１２Ｂ  ソースコード、１１４  ソフトウェア開発プログラム、１１６，１１６Ａ  実行コード、１１８  コンフィグレーション、１２０  内部バス、１２２  通信インターフェイス、２００  コントローラ、２０６  フラッシュメモリ、２１０  演算処理部、２１２  無線通信モジュール、２１４  ＵＳＢコントローラ、２１６  通信コントローラ、２１８，２１８Ａ，２１８Ｂ  マイコン、２２０  パッド、３００  アダプタ、１１２１，１１２２，１１２６  定義、１１２３，１１２４Ａ，１１２４Ｂ，１１２５，１１２７，１１２８  命令、１１４１  プリプロセッサ、１１４２  コンパイラ、１１４３  オプティマイザ、１１４４  コードジェネレータ、１１６１，１１６２，１１６４，１１６６  オブジェクトコード、１１６３  ライブラリモジュール、１１６５  固有コード。
【図１】
2020197867.tif 000003
【図２】
2020197867.tif 000004
【図３】
2020197867.tif 000005
【図４】
2020197867.tif 000006
【図５】
2020197867.tif 000007
【図６】
2020197867.tif 000008
【図７】
2020197867.tif 000009
【図８】
2020197867.tif 000010
【図９】
2020197867.tif 000011
【図１０】
2020197867.tif 000012
【図１１】
2020197867.tif 000013
【図１２】
2020197867.tif 000014