(57)【要約】      （修正有）【課題】マイコンが組み込まれた装置において、そのマイコン上のプログラムのどの機能をどのような条件で実行して良いかを判断できるようにする。【解決手段】マイコン２００が内蔵するフラッシュＲＯＭ２１０へプログラムを書き込むプログラム書き込み方法は、ソースディレクトリに含まれる予め定められた種類のファイルから、ソースディレクトリのバージョンを表すバージョン代表値を生成する生成ステップと、バージョン代表値をソースディレクトリに含まれるソースファイルに追記する追記ステップと、バージョン代表値が追記されたソースファイルをコンパイルして生成した、ソースディレクトリに対応するプログラムをフラッシュＲＯＭへ書き込むプログラム書込ステップとを含む。【選択図】図１
2018106257.tif 000002
【特許請求の範囲】
【請求項１】
マイコンが内蔵するフラッシュＲＯＭへプログラムを書き込むプログラム書き込み方法であって、
ソースディレクトリに含まれる予め定められた種類のファイルから、前記ソースディレクトリのバージョンを表すバージョン代表値を生成する生成ステップと、
前記バージョン代表値を前記ソースディレクトリに含まれるソースファイルに追記する追記ステップと、
前記バージョン代表値が追記された前記ソースファイルをコンパイルして生成した、前記ソースディレクトリに対応するプログラムを前記フラッシュＲＯＭへ書き込むプログラム書込ステップと
を含むプログラム書き込み方法。
【請求項２】
互いに前記バージョンの異なる前記ソースディレクトリごとに前記生成ステップ、前記追記ステップおよび前記プログラム書込ステップを実行して、それぞれに対応する複数のプログラムを利用可能に実装する実装ステップを含む請求項１に記載のプログラム書き込み方法。
【請求項３】
前記バージョン代表値とプログラムによって実行可能な機能の対応を表す対応情報を前記フラッシュＲＯＭに書き込む対応情報書込ステップを含む請求項２に記載のプログラム書き込み方法。
【請求項４】
請求項１から３のいずれか１項に記載のプログラム書き込み方法を、前記マイコンに接続されたプログラム書き込み装置のコンピュータに実行させるプログラム書き込みプログラム。
【請求項５】
請求項１に記載のプログラム書き込み方法によってプログラムが書き込まれた前記マイコンを搭載した装置の制御方法であって、
前記装置において実行させたい機能の実行が許可されているバージョンのバージョン代表値を取得する取得ステップと、
前記フラッシュＲＯＭに書き込まれたバージョン代表値を読み込む読込ステップと、
前記読込ステップで読み込まれたバージョン代表値が、前記取得ステップで取得されたバージョン代表値と一致する場合は前記機能を実行し、一致しない場合は前記機能の実行を禁止する実行処理ステップと
を含む装置の制御方法。
【請求項６】
請求項２に記載のプログラム書き込み方法によって複数のプログラムが書き込まれた前記マイコンを搭載した装置の制御方法であって、
前記装置において実行させたい機能の実行が許可されているバージョンのバージョン代表値を取得する取得ステップと、
前記フラッシュＲＯＭに書き込まれた前記複数のプログラムのそれぞれに対応するバージョン代表値を読み込む読込ステップと、
前記読込ステップで読み込まれた複数のバージョン代表値のうち、前記取得ステップで取得されたバージョン代表値と一致するバージョン代表値を抽出する抽出ステップと、
前記抽出ステップで抽出されたバージョン代表値に対応するプログラムによって前記機能を実行する実行処理ステップと
を含む装置の制御方法。
【請求項７】
請求項３に記載のプログラム書き込み方法によって複数のプログラムが書き込まれた前記マイコンを搭載した装置の制御方法であって、
前記装置において実行させたい機能の実行が許可されているバージョンのバージョン代表値を前記対応情報から抽出する抽出ステップと、
前記抽出ステップで抽出されたバージョン代表値に対応するプログラムによって前記機能を実行する実行処理ステップと
を含む装置の制御方法。
【請求項８】
請求項５から７のいずれか１項に記載の装置の制御方法を、前記装置のホストコンピュータに実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム書き込み方法、装置の制御方法、プログラム書き込みのためのプログラム、および装置の制御プログラムに関する。
【背景技術】
【０００２】
プログラムと共にそのバージョン情報がフラッシュＲＯＭに格納された組み込みマイコンを搭載した装置において、ホストコンピュータからの問合せコマンドに対して当該バージョン情報を返す技術が知られている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−２０３１１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記特許文献１の技術によれば、マイコンに格納されたプログラムのバージョンの確認は、特定範囲のアドレスのバイナリデータから計算した値を照合することにより行っている。しかし、マイコンに格納するプログラムの作成作業においては、マイコンに書き込むプログラムの元となるソースファイルを作成するだけでなく、ソースファイルに関連するメタデータ、データ構造定義ファイル、通信データファイル、ドキュメントファイルなども並行して作成し、これらを纏めてソースディレクトリとして管理することが行われる。
【０００５】
ソースファイルには変更がなくても、一つのソースディレクトリとして管理された関連するファイルに変更が生じる場合がある。特に、当該ソースファイルから生成されたプログラムが実行し得る機能のライセンス情報（どの国で利用可能か、商用利用は可能かなど）や、品質保証情報（どの程度まで確実に動作することが確認されているのか）は、プログラムそのものの変更とは関係なく、変更され得る情報である。
【０００６】
生成されたプログラムがこれらの関連するファイルと切り離されてマイコンに格納されると、当該マイコンが組み込まれた装置において、プログラムのどの機能をどのような条件で実行しても良いのか、判断ができなくなることがあった。マイコンの開発においては、開発段階や組み込み対象装置の違いなどによって、互いに異なる多数のソースディレクトリが作成されるので、できあがるマイコンの種類もそれに応じて増大する。このようなマイコンが組み込まれる装置についても、装置を制御する制御プログラムが書き換えられたりするので、制御プログラム側で、組み込まれたマイコンの利用可能な機能を予め把握しておくことも難しい。すなわち、装置の制御プログラムが、組み込まれたマイコンのプログラムの各機能を実行して良いのか、正しく判断することが困難であった。
【０００７】
本発明は、このような問題を解決するためになされたものであり、書き込まれたプログラムの機能に対してどのような制限が課せられているのかを容易に判断できるプログラム書き込み方法等を提供するものである。
【課題を解決するための手段】
【０００８】
本発明の第１の態様におけるプログラム書き込み方法は、マイコンが内蔵するフラッシュＲＯＭへプログラムを書き込むプログラム書き込み方法であって、ソースディレクトリに含まれる予め定められた種類のファイルから、ソースディレクトリのバージョンを表すバージョン代表値を生成する生成ステップと、バージョン代表値をソースディレクトリに含まれるソースファイルに追記する追記ステップと、バージョン代表値が追記されたソースファイルをコンパイルして生成した、ソースディレクトリに対応するプログラムをフラッシュＲＯＭへ書き込むプログラム書込ステップとを含む。
【０００９】
このように、ソースファイルだけでなく、ソースファイルに関連する他のファイルも含めて、ソースディレクトリに対応するバージョン代表値を生成し、これを追記したソースファイルをバイナリ化してフラッシュＲＯＭに書き込むので、作成されたマイコンがどのような素性のソースディレクトリから作成されたのかを、組み込まれた装置側で容易に照合できるようになる。
【００１０】
また、上記の書き込み方法は、互いにバージョンの異なるソースディレクトリごとに生成ステップ、追記ステップおよびプログラム書込ステップを実行して、それぞれに対応する複数のプログラムを利用可能に実装する実装ステップを含んでも良い。このようなステップを経て作成されたマイコンは、フラッシュＲＯＭに複数のプログラムを含むが、組み込まれた装置側からの要求に広く対応することができる。
【００１１】
また、上記の書き込み方法は、バージョン代表値と実行可能な機能の対応を表す対応情報をフラッシュＲＯＭに書き込む対応情報書込ステップを含んでも良い。このような対応情報までマイコン側で保持しておけば、組み込まれた装置側で対応情報を取得する手間を省くことができる。
【００１２】
本発明の第２の態様における装置の制御方法は、上記のプログラム書き込み方法によってプログラムが書き込まれたマイコンを搭載した装置の制御方法であって、装置において実行させたい機能の実行が許可されているバージョンのバージョン代表値を取得する取得ステップと、フラッシュＲＯＭに書き込まれたバージョン代表値を読み込む読込ステップと、読込ステップで読み込まれたバージョン代表値が、取得ステップで取得されたバージョン代表値と一致する場合は機能を実行し、一致しない場合は機能の実行を禁止する実行処理ステップとを含む。
【００１３】
このように、実行させたい機能の実行が許可されているバージョンのバージョン代表値を別途取得して、フラッシュＲＯＭに書き込まれたバージョン代表値と比較すれば、装置の制御プログラムが、マイコンのプログラムによって実行したい機能を実行して良いのかを正しく判断することができる。特に、マイコンが装置に搭載された後に利用許諾の条件等が変更された場合であっても、正しく判断することができる。
【００１４】
本発明の第３の態様における装置の制御方法は、上記のプログラム書き込み方法によってプログラムが書き込まれたマイコンを搭載した装置の制御方法であって、装置において実行させたい機能の実行が許可されているバージョンのバージョン代表値を取得する取得ステップと、フラッシュＲＯＭに書き込まれた複数のプログラムのそれぞれに対応するバージョン代表値を読み込む読込ステップと、読込ステップで読み込まれた複数のバージョン代表値のうち、取得ステップで取得されたバージョン代表値と一致するバージョン代表値を抽出する抽出ステップと、抽出ステップで抽出されたバージョン代表値に対応するプログラムによって機能を実行する実行処理ステップとを含む。
【００１５】
このように、複数のプログラムがフラッシュＲＯＭに書き込まれたマイコンに対しては、実行させたい機能の実行が許可されているバージョンのバージョン代表値を別途取得して、これと一致するバージョン代表値を抽出し、一致したバージョン代表値に対応するプログラムを実行するので、装置の制御プログラムの要求に対して広く応えることができる。
【００１６】
本発明の第４の態様における装置の制御方法は、上記のプログラム書き込み方法によって複数のプログラムが書き込まれたマイコンを搭載した装置の制御方法であって、装置において実行させたい機能の実行が許可されているバージョンのバージョン代表値を対応情報から抽出する抽出ステップと、抽出ステップで抽出されたバージョン代表値に対応するプログラムによって機能を実行する実行処理ステップとを含む。
【００１７】
このように、複数のプログラムと共に対応情報までがフラッシュＲＯＭに書き込まれたマイコンに対しては、実行させたい機能の実行が許可されているバージョンのバージョン代表値を別途取得するステップを省くことができるので、装置の制御プログラムが外部機器と通信等することなく、実行したい機能を迅速かつ正確に実行させることができる。
【００１８】
本発明の第５の態様におけるプログラム書き込みプログラムは、上記のプログラム書き込み方法を、マイコンに接続されたプログラム書き込み装置のコンピュータに実行させる。また、本発明の第６の態様における制御プログラムは、上記の装置の制御方法を、装置のホストコンピュータに実行させる。
【発明の効果】
【００１９】
本発明により、書き込まれたプログラムの機能に対してどのような制限が課せられているのかを容易に判断できるプログラム書き込み方法等を提供することができる。
【図面の簡単な説明】
【００２０】
【図１】本実施形態における第１実施例のプログラム書き込み方法を説明する、装置構成と処理手順を示す図である。
【図２】作成されたマイコンを組み込んだロボットの制御方法を説明する、装置構成と処理手順を示す図である。
【図３】バージョン代表値リストの例である。
【図４】本実施形態における第２実施例のプログラム書き込み方法を説明する、装置構成と処理手順を示す図である。
【図５】作成されたマイコンを組み込んだロボットの制御方法を説明する、装置構成と処理手順を示す図である。
【図６】本実施形態における第３実施例のプログラム書き込み方法を説明する、装置構成と処理手順を示す図である。
【図７】作成されたマイコンを組み込んだロボットの制御方法を説明する、装置構成と処理手順を示す図である。
【図８】作成されたマイコンを組み込んだロボットの制御方法を説明する、装置構成と処理手順を示す図である。
【発明を実施するための形態】
【００２１】
以下、発明の実施の形態を通じて本発明を説明するが、特許請求の範囲に係る発明を以下の実施形態に限定するものではない。また、実施形態で説明する構成の全てが課題を解決するための手段として必須であるとは限らない。
【００２２】
図１は、本実施形態における第１実施例のプログラム書き込み方法を説明する、装置構成と処理手順を示す図である。本実施形態にかかるプログラム書き込み方法は、マイコン２００が内蔵するフラッシュＲＯＭ２１０へプログラムを書き込む書き込み方法である。当該方法は、マイコン２００に接続されたプログラム書き込み装置としてのマイコン作成ＰＣ１００のコンピュータが、書き込みプログラムを実行することにより実現される。
【００２３】
マイコン作成ＰＣ１００は、通信インターフェイスである接続ＩＦ１９０を介して接続されているマイコン２００のフラッシュＲＯＭ２１０の記憶内容を書き換えることができる。マイコン２００は、ホストコンピュータから要求された機能に対して、フラッシュＲＯＭ２１０に書き込まれたプログラムを実行することにより、その演算結果を出力するマイクロプロセッサである。本実施例によって作成されたフラッシュＲＯＭ２１０には、一つのプログラム１０１ｃが書き込まれている。プログラム１０１ｃがフラッシュＲＯＭ２１０へ書き込まれるまでの処理について説明する。
【００２４】
マイコン作成ＰＣ１００のコンピュータは、外部の開発装置で作成されたソースディレクトリ１０１を取り込む（ステップＳ１１）。ソースディレクトリ１０１は、コンパイルすることによりバイナリ形式のプログラムに変換されるソースファイル１０１ａの他に、ソースファイル１０１ａに関連するメタデータファイル、データ構造定義ファイル、通信データファイル、ドキュメントファイル等を含む。
【００２５】
マイコン作成ＰＣ１００のコンピュータは、ソースディレクトリ１０１に含まれるファイルのうち、予め定められた種類のファイルから、ソースディレクトリ１０１に対応するバージョンを示すバージョン代表値１０１ｂを生成する（ステップＳ１２）。予め定められるファイルの種類としては、例えば、ソースファイル１０１ａの他に、メタデータファイルとデータ構造定義ファイルとが選ばれる。変更が加えられたファイルの存在によりソースディレクトリに対応するバージョン代表値が変化するので、予め定められるファイルの種類は、マイコン開発において段階的に変更されることが予想されるファイルを含めるように選ぶと良い。
【００２６】
マイコン作成ＰＣ１００のコンピュータは、ステップＳ１２において例えば、バージョン管理システムとしてＧｉｔを用い、バージョン代表値１０１ｂとしてＣｏｍｍｉｔ＿ＩＤを生成させる。Ｃｏｍｍｉｔ＿ＩＤは、コミットハッシュ値で表され、例えばＣ言語で表現されているソースファイル１０１ａの文法形式に合わせて成型される。
【００２７】
マイコン作成ＰＣ１００のコンピュータは、このように生成したバージョン代表値１０１ｂを、ソースファイル１０１ａの所定箇所に追記する。そして、バージョン代表値１０１ｂを追記したソースファイル１０１ａをコンパイルして、バイナリ形式のプログラム１０１ｃを生成する（ステップＳ１４）。
【００２８】
マイコン作成ＰＣ１００のコンピュータは、このプログラム１０１ｃを、接続ＩＦ１９０を介して、フラッシュＲＯＭ２１０へ書き込む（ステップＳ１５）。この一連の処理を経て、対象とする装置に組み込むためのマイコン２００が完成する。完成したマイコン２００は、フラッシュＲＯＭ２１０に書き込まれたプログラム１０１ｃに、ソースファイル１０１ａが含まれていたソースディレクトリ１０１に対応するバージョン代表値１０１ｂの情報が埋め込まれている。マイコン２００を組み込んだ装置のホストコンピュータやマイコン作成ＰＣ１００のコンピュータは、読み込みプログラムにより、このバージョン代表値１０１ｂを、プログラム１０１ｃのバイナリコードから抜き出して再現することができる。
【００２９】
バージョン代表値１０１ｂは、ソースファイル１０１ａ以外のファイルにも基づいて生成されるので、ある開発段階においてソースファイル１０１ａに変更が加えられなかったとしても他の関連ファイルに変更が加えられたなら、以前と異なった値になる。したがって、書き込まれたプログラムが実行できる機能が同一であっても、読み込みプログラムにより読み出されたバージョン代表値が異なれば、その元となったソースファイルが含まれていたソースディレクトリが異なることがわかる。換言すれば、バージョン代表値を確認すれば、その元となったソースファイルが含まれていたソースディレクトリを特定することができる。ソースディレクトリを特定できることは、マイコン開発を担当する開発者にとっても、その後の変更や修正の作業の効率化に資すると言える。
【００３０】
次に、このように作成されたマイコン２００を搭載した装置の制御方法について説明する。ここでは、自律移動ロボットを装置の一例として説明する。図２は、作成されたマイコン２００を制御基板上に組み込んだロボット３００の制御方法を説明する、装置構成と処理手順を示す図である。ロボット３００は、ホストコンピュータ４００を備える。ホストコンピュータ４００は、複数の機能プログラムを選択的に実行させることによりロボット３００の全体制御を行う制御プログラムを実行する。
【００３１】
ホストコンピュータ４００は、ロボット３００の制御中に特定の処理が必要となった場合に、その処理を担う機能を有する機能プログラムを選択して実行する。マイコン２００のフラッシュＲＯＭ２１０に書き込まれたプログラム１０１ｃは、このような機能プログラムのうちのひとつである。したがって、ホストコンピュータ４００は、プログラム１０１ｃが有する機能を実行したい場合に、マイコン２００へアクセスする。
【００３２】
ホストコンピュータ４００は、プログラム１０１ｃが有する機能を実行使用とする場合に、まず、外部機器や着脱式メモリ等からバージョン代表値リスト４０１を取り込む（ステップＳ４１）。なお、この取り込み作業は、ロボット３００の電源オンと同時に実行しても良いし、作業者の入力指示等により予め実行しても良い。
【００３３】
ここで、バージョン代表値リスト４０１を説明する。図３は、バージョン代表値リスト４０１の例である。バージョン代表値リスト４０１は、既に生成済みのバージョン代表値のそれぞれを、対応するプログラムが実行し得る機能ごとにライセンス情報およびテスト結果情報に関連付けるリストである。ここでは、プログラムが実行しうる機能の例として、２つの撮像部を用いて周辺環境を三次元的に認識するステレオビジョンと、周囲の人間に話しかける音声を生成する音声合成とを示している。
【００３４】
ライセンス情報は、その機能を実行する地域として、全世界で許可されているのか、日本のみで許可されているのか、いずれの国でも許可されていないのかなどに分類される。また、その機能を利用する利用形態として、商用でも許可されているのか、商用は認められないが試験であれば許可されているのか、いずれの利用も許可されていないのかなどに分類される。図示するように、例えば記号Ａ２は、実行する地域として全世界で許可され、利用形態として商用利用は不可であるが試験であれば許可されることを表す。ホストコンピュータ４００が音声合成の機能を実行しようとする場合に、ロボット３００が商用で利用されているのであれば、Ａ２と記されているバージョン代表値１０１ｂのプログラムは、実行が禁止される。
【００３５】
テスト結果情報は、その機能を実行したときの信頼性を表す品質保証情報として、テスト結果を記述したファイルへのリンク情報が示されている。リンクされたファイルには、その機能がどの程度まで確実に動作することが確認されているか、どのような条件下であれば正常に動作するかなどが記述されている。例えば、ステレオビジョンの欄に示されるｓｖｔｒ．ｔｘｔには、１ｍの距離で１ｃｍ角の物体の認識率が６０％などと記述されている。ホストコンピュータ４００がステレオビジョンの機能を実行しようとする場合に、制御プログラムが９０％以上の認識率を実行条件としているなら、ｓｖｔｒ．ｔｘｔへのリンク情報を持つバージョン代表値１０１ｂのプログラムは、実行が禁止される。なお、図でＮ／Ａは、対応するファイルが存在しないことを示す。
【００３６】
図２へ戻り、ステップＳ４１以降の説明を続ける。ステップＳ４１でバージョン代表値リスト４０１を取り込んだら、ホストコンピュータ４００は、マイコン２００のフラッシュＲＯＭ２１０にアクセスして、プログラム１０１ｃの一部として書き込まれたバージョン代表値１０１ｂを読み込む（ステップＳ４２）。そして、プログラム１０１ｃから読み込んだバージョン代表値１０１ｂが、バージョン代表値リスト４０１中の当該機能の実行が許可されているバージョン代表値に含まれているか否かを比較判断する（ステップＳ４３）。
【００３７】
例えば、ロボット３００を日本において商用で動作させており、ホストコンピュータ４００がステレオビジョンの機能をプログラム１０１ｃに実行させようとした場合を想定する。この場合、図４のバージョン代表値リスト４０１を参照すると、プログラム１０１ｃから読み込んだバージョン代表値１０１ｂが「１ｆｂ６ｃ１」か「１７ｓ２１ｃ」のいずれかと一致すれば、ステレオビジョンの機能を実行することが許可されていると判断する。なお、バージョン代表値が「１ｆｂ６ｃ１」には、ライセンス情報として記号Ａ１（全世界許可／商用利用可）が与えられており、バージョン代表値が「１７ｓ２１ｃ」には、ライセンス情報として記号Ｂ１（日本のみ許可／商用利用可）が与えられている。
【００３８】
この例では、制御プログラムに品質保証の実行条件は設定されていないが、さらに品質保証の条件も設定されている場合は、ホストコンピュータ４００は、バージョン代表値リスト４０１のテスト結果情報も確認する。すなわち、ホストコンピュータ４００は、ライセンス情報とテスト結果情報の両条件を満たすバージョン代表値を探し、プログラム１０１ｃから読み込んだバージョン代表値１０１ｂと一致するか否かを比較判断する。
【００３９】
なお、ロボット３００をどこ（国）でどのように（商用／試験）利用するかについては、予め作業者によって入力されても良いし、センサ情報を利用して自動的に設定されても良い。例えば、ホストコンピュータ４００は、ＧＰＳ情報を取得してロボット３００がショッピングセンターなどの商用スペースに位置することを認識すれば、これらを自動的に設定することができる。
【００４０】
また上記の例では、ホストコンピュータ４００がバージョン代表値リスト４０１の全体を取り込み、そこから実行させたい機能の実行が許可されているバージョン代表値を抽出して特定した。しかし、バージョン代表値リスト４０１の全体を取り込むのではなく、実行させたい機能の実行が許可されているバージョン代表値だけを取り込むようにしても構わない。すなわち、バージョン代表値リスト４０１から条件を満たすバージョン代表値を抽出する作業は、ホストコンピュータ４００が実行しても良いし、外部のコンピュータに委任しても良い。いずれにしても、ホストコンピュータ４００は、バージョン代表値リスト４０１から抽出されたバージョン代表値を取得し、取得したバージョン代表値と、プログラム１０１ｃから読み込んだバージョン代表値１０１ｂとが一致するか否かを比較判断する。
【００４１】
ホストコンピュータ４００は、ステップＳ４３の比較の結果、一致すると判断した場合は当該機能を実行し（ステップＳ４４）、一致しないと判断した場合は当該機能の実行を禁止する（ステップＳ４５）。なお、ステップＳ４４においては、ホストコンピュータ４００は、マイコン２００へ当該機能の実行指令を送り、マイコン２００は、この実行指令を受けてプログラム１０１ｃを実行する。
【００４２】
このような手順を踏んで機能の実行または禁止を処理すれば、マイコン２００がロボット３００に搭載された後に制御プログラムが更新されても、最新の制御プログラムの動作指示に合わせてマイコン２００のプログラムを利用することができる。また、マイコン２００がロボット３００に搭載された後にライセンス情報やテスト結果情報が更新されても、最新の状況に応じてマイコン２００のプログラムを利用することができる。
【００４３】
次に、本実施形態における第２実施例について説明する。図４は、第２実施例のプログラム書き込み方法を説明する、装置構成と処理手順を示す図である。図１で示す装置構成、処理手順と同様のものについては、特に言及しない限り同じ符番を付してその説明を省略する。
【００４４】
第１実施例のプログラム書き込み方法では、マイコン２００のフラッシュＲＯＭ２１０へ書き込むプログラムは１つであったが、第２実施例では複数のプログラムを書き込む。具体的には、互いにバージョンの異なるソースディレクトリ１０１、１０２、１０３…のそれぞれに対してステップＳ１１からＳ１５を繰り返し実行し、それぞれに対応するプログラム１０１ｃ、１０２ｃ、１０３ｃ…をフラッシュＲＯＭ２１０に利用可能に実装する。
【００４５】
フラッシュＲＯＭ２１０に書き込まれたプログラム１０１ｃ、１０２ｃ、１０３ｃは、それぞれ異なるバージョン代表値の情報が埋め込まれている。このようなステップを経て作成されたマイコン２００は、フラッシュＲＯＭ２１０に複数のプログラムを含むので、第１実施例におけるマイコン２００の利点に加えて、組み込まれた装置側からの要求に広く対応することができる。
【００４６】
次に、このように作成されたマイコン２００を搭載した装置の制御方法について説明する。ここでも第１実施例と同様に、自律移動ロボットを装置の一例として説明する。図５は、作成されたマイコン２００を制御基板上に組み込んだロボット３００の制御方法を説明する、装置構成と処理手順を示す図である。図２で示す装置構成、処理手順と同様のものについては、特に言及しない限り同じ符番を付してその説明を省略する。なお、本実施例においてフラッシュＲＯＭ２１０に書き込まれたプログラムの数は、複数であればいくつであっても構わないが、ここでは３つのプログラム１０１ｃ、１０２ｃ、１０３ｃが書き込まれているものとする。
【００４７】
ステップＳ４１でバージョン代表値リスト４０１を取り込んだら、ホストコンピュータ４００は、ステップＳ４２で、マイコン２００のフラッシュＲＯＭ２１０にアクセスして、プログラム１０１ｃの一部として書き込まれたバージョン代表値１０１ｂ、プログラム１０２ｃの一部として書き込まれたバージョン代表値１０２ｂ、プログラム１０３ｃの一部として書き込まれたバージョン代表値１０３ｂを読み込む。そして、読み込んだバージョン代表値１０１ｂ、１０２ｂ、１０３ｂのうちの少なくともいずれかが、バージョン代表値リスト４０１中の当該機能の実行が許可されているバージョン代表値に含まれているか否かを比較判断し、一致するものを抽出する（ステップＳ４６）。
【００４８】
ホストコンピュータ４００は、ステップＳ４６で抽出されたバージョン代表値に対応するプログラムを指定して、マイコン２００へ当該機能の実行指令を送る（ステップＳ４７）。マイコン２００は、実行指令を受けとったら、指定されたプログラムを実行する。ステップＳ４６でいずれのバージョン代表値も一致しなかった場合は、当該機能の実行を禁止する（ステップＳ４８）。なお、ステップＳ４６で一致するバージョン代表値が複数存在したら、ホストコンピュータ４００は、そのうちの一つを実行対象として選択する。例えば、テスト結果情報がより優れたものであるとか、より新しく生成されたバージョン代表値であるとかを基準として選択すると良い。
【００４９】
このような手順を踏んで機能の実行または禁止を処理すれば、第１実施例における処理の利点に加えて、マイコン２００が組み込まれた装置の制御プログラムの要求に対して当該機能を実行できる可能性が高まる。
【００５０】
次に、本実施形態における第３実施例について説明する。図６は、第３実施例のプログラム書き込み方法を説明する、装置構成と処理手順を示す図である。図１、図４で示す装置構成、処理手順と同様のものについては、特に言及しない限り同じ符番を付してその説明を省略する。
【００５１】
第２実施例のプログラム書き込み方法では、マイコン２００のフラッシュＲＯＭ２１０へ書き込むのはプログラムのみであったが、第３実施例では複数のプログラムを書き込むと共に、バージョン代表値リスト４０１もフラッシュＲＯＭ２１０へ書き込む。具体的には、マイコン作成ＰＣ１００のコンピュータは、ステップＳ１５までの繰り返し処理が完了したら、外部機器やマイコン作成ＰＣ１００の内蔵メモリ等からバージョン代表値リスト４０１を取り込む（ステップＳ１６）。そして、取り込んだバージョン代表値リスト４０１をフラッシュＲＯＭ２１０へ書き込む（ステップＳ１７）。このようなステップを経て作成されたマイコン２００は、フラッシュＲＯＭ２１０にバージョン代表値リストを対応情報としてマイコン側で保持するので、第２実施例におけるマイコン２００の利点に加えて、組み込まれた装置側でバージョン代表値リストを取得する手間を省けるという利点も得られる。
【００５２】
なお、マイコン作成ＰＣ１００のコンピュータは、ステップＳ１６で取り込んだバージョン代表値リスト４０１をそのままステップＳ１７で書き込むのではなく、再構成したバージョン代表値リストを書き込んでも良い。例えば、ステップＳ１５で書き込んだ各プログラムが実行し得る機能に対して許可されているバージョン代表値を抽出し、抽出されたバージョン代表値のみで構成されたバージョン代表値リストを作成してフラッシュＲＯＭ２１０へ書き込んでも良い。
【００５３】
次に、このように作成されたマイコン２００を搭載した装置の制御方法について説明する。ここでも第１実施例、第２実施例と同様に、自律移動ロボットを装置の一例として説明する。図７は、作成されたマイコン２００を制御基板上に組み込んだロボット３００の制御方法を説明する、装置構成と処理手順を示す図である。図２、図５で示す装置構成、処理手順と同様のものについては、特に言及しない限り同じ符番を付してその説明を省略する。  
【００５４】
本実施例においては、ホストコンピュータ４００は、バージョン代表値リスト４０１を取り込むことなくステップＳ４２を実行して、フラッシュＲＯＭ２１０からバージョン代表値１０１ｂ、１０２ｂ、１０３ｂを読み込む。続けて、フラッシュＲＯＭ２１０からバージョン代表値リスト４０１を読み込む（ステップＳ４９）。なお、ステップＳ４２とＳ４３は逆順であっても構わない。
【００５５】
ホストコンピュータ４００は、読み込んだバージョン代表値１０１ｂ、１０２ｂ、１０３ｂのうちの少なくともいずれかが、バージョン代表値リスト４０１中の当該機能の実行が許可されているバージョン代表値に含まれているか否かを比較判断し、一致するものを抽出する（ステップＳ５０）。ホストコンピュータ４００は、ステップＳ５０で抽出されたバージョン代表値に対応するプログラムを指定して、マイコン２００へ当該機能の実行指令を送る（ステップＳ５１）。マイコン２００は、実行指令を受けとったら、指定されたプログラムを実行する。
【００５６】
ステップＳ５０でいずれのバージョン代表値も一致しなかった場合は、当該機能の実行を禁止する（ステップＳ５２）。なお、ステップＳ５０で一致するバージョン代表値が複数存在したら、ホストコンピュータ４００は、そのうちの一つを実行対象として選択する。例えば、テスト結果情報がより優れたものであるとか、より新しく生成されたバージョン代表値であるとかを基準として選択すると良い。
【００５７】
このような手順を踏んで機能の実行または禁止を処理すれば、第１実施例、第２実施例における処理の利点に加えて、ホストコンピュータ４００が外部機器と通信等することなく、実行したい機能を迅速かつ正確に実行させることができる。
【００５８】
さらに第３実施例の変形例について説明する。図８は、図６で説明した処理手順を経て作成されたマイコン２００を組み込んだロボット３００の制御方法を説明する、装置構成と処理手順を示す図である。
【００５９】
図７で説明した実施例においては、フラッシュＲＯＭ２１０からバージョン代表値１０１ｂ、１０２ｂ、１０３ｂを読み込む処理と、フラッシュＲＯＭ２１０からバージョン代表値リスト４０１を読み込む処理を、ホストコンピュータ４００が実行したが、本変形例においては、マイコン２００がこれらを行う。
【００６０】
ホストコンピュータ４００は、実行したい機能を実行させる機能指令をマイコン２００へ送る（ステップＳ６１）。マイコン２００は、機能指令を受けると、フラッシュＲＯＭ２１０からバージョン代表値１０１ｂ、１０２ｂ、１０３ｂを読み込む（ステップＳ６２）。続けて、フラッシュＲＯＭ２１０からバージョン代表値リスト４０１を読み込む（ステップＳ６３）。なお、ステップＳ６２とＳ６３は逆順であっても構わない。
【００６１】
マイコン２００は、読み込んだバージョン代表値１０１ｂ、１０２ｂ、１０３ｂのうちの少なくともいずれかが、バージョン代表値リスト４０１中の当該機能の実行が許可されているバージョン代表値に含まれているか否かを比較判断し、一致するものを抽出する（ステップＳ６４）。マイコン２００は、ステップＳ６４で抽出されたバージョン代表値に対応するプログラムを展開して実行する（ステップＳ６５）。ただし、ステップＳ６４でいずれのバージョン代表値も一致しなかった場合は、当該機能が実行できなかったことをしめす実行不可フラグをホストコンピュータ４００へ返す（ステップＳ６６）。
【００６２】
このような手順を踏んで機能の実行または禁止を処理すれば、ホストコンピュータ４００の処理負担を軽減することができる。
【００６３】
以上説明した各実施例においては、マイコン２００をマイコン作成ＰＣ１００に接続してフラッシュＲＯＭ２１０への書き込み処理等を行ったが、フラッシュＲＯＭ２１０へのプログラムの書き込み処理等は、装置に組み込まれた後のマイコン２００に対しても実行し得る。例えば、装置とマイコン作成ＰＣ１００とをネットワークを介して接続すれば、接続ＩＦ１９０がネットワークと装置の通信パスに置き換わったものと捉えることができる。
【００６４】
また、バージョン代表値リスト４０１の例では、対応するプログラムが実行し得る機能ごとにライセンス情報およびテスト結果情報に関連付けるリストとして説明したが、関連づける情報は、ライセンス情報とテスト結果情報のいずれかであっても良い。また、これらに加えて、あるいは置き換えて他の情報を関連づけるリストであっても良い。いずれにしても、フラッシュＲＯＭ２１０に書き込まれたプログラムがバージョンごとに実行できる機能の制限を受ける場合に、その制限を定義する情報と関連づけるリストであれば良い。
【００６５】
また、マイコン２００が組み込まれる装置の例としてロボット３００を採用したが、もちろん他の装置であっても構わない。装置の全体を統括制御する制御プログラムが、マイコンの機能プログラムを利用する装置であれば、上記のマイコンを組み込むことができる。
【符号の説明】
【００６６】
１００  マイコン作成ＰＣ、１０１、１０２、１０３  ソースディレクトリ、１０１ａ  ソースファイル、１０１ｂ  バージョン代表値、１０１ｃ、１０２ｃ、１０３ｃ  プログラム、１９０  接続ＩＦ、２００  マイコン、２１０  フラッシュＲＯＭ、３００  ロボット、４００  ホストコンピュータ、４０１  バージョン代表値リスト
【図１】
2018106257.tif 000003
【図２】
2018106257.tif 000004
【図３】
2018106257.tif 000005
【図４】
2018106257.tif 000006
【図５】
2018106257.tif 000007
【図６】
2018106257.tif 000008
【図７】
2018106257.tif 000009
【図８】
2018106257.tif 000010