(57)【要約】【課題】組み立て機器において少ない容量のメモリで速やかに組み立て機器を立ち上げることを可能とする圧縮プログラム、圧縮方法、解凍プログラムおよび解凍方法を得ること。【解決手段】組み込み機器において実行されるプログラムを圧縮する圧縮プログラムであって、前記組み込み機器において実行されるプログラムのうち、前記組み込み機器の通常動作に必要不可欠なプログラムを一括圧縮する第１の圧縮ステップと、前記プログラムのうち、前記組み込み機器の通常動作に必要不可欠なプログラム以外のプログラムを前記組み込み機器の機能毎に分割・圧縮する第２の圧縮ステップと、をコンピュータに実行させることを特徴とする。【選択図】        図６
2005228272.tif 000002
【特許請求の範囲】
【請求項１】
組み込み機器において実行されるプログラムを圧縮する圧縮プログラムであって、
前記組み込み機器において実行されるプログラムのうち、前記組み込み機器の通常動作に必要不可欠なプログラムを一括圧縮する第１の圧縮ステップと、
前記プログラムのうち、前記組み込み機器の通常動作に必要不可欠なプログラム以外のプログラムを前記組み込み機器の機能毎に分割・圧縮する第２の圧縮ステップと、
をコンピュータに実行させること
を特徴とする圧縮プログラム。
【請求項２】
組み込み機器において実行されるプログラムを圧縮する圧縮方法であって、
前記組み込み機器において実行されるプログラムのうち、前記組み込み機器の通常動作に必要不可欠なプログラムを一括圧縮する第１の圧縮工程と、
前記プログラムのうち、前記組み込み機器の通常動作に必要不可欠なプログラム以外のプログラムを前記組み込み機器の機能毎に分割・圧縮する第２の圧縮工程と、
を有することを特徴とする圧縮方法。
【請求項３】
組み込み機器において不揮発性メモリに格納されたプログラムを揮発性メモリ上に展開して実行するプログラムであって、
前記組み込み機器の通常動作に必要不可欠なプログラムが一括して圧縮された第１のプログラム群と、前記組み込み機器の機能毎に分割・圧縮された前記第１のプログラム群以外の第２のプログラム群と、を前記不揮発性メモリに格納する格納ステップと、
前記組み込み機器のイニシャル時に、前記不揮発性メモリに格納された前記第１のプログラム群のみを解凍して前記揮発性メモリに展開する第１の解凍ステップと、
前記不揮発性メモリに格納された前記第２のプログラム群の一部を解凍して前記揮発性メモリに展開する第２の解凍ステップと、
を前記組み込み機器内のコンピュータに実行させること
を特徴とする解凍プログラム。
【請求項４】
前記第２の解凍ステップにおいて、前記不揮発性メモリに格納された前記第２のプログラム群のうち優先順位の低いプログラムを前記揮発性メモリから削除すること
を特徴とする請求項３に記載の解凍プログラム。
【請求項５】
組み込み機器において不揮発性メモリに格納されたプログラムを揮発性メモリ上に展開して実行する解凍方法であって、
前記組み込み機器の通常動作に必要不可欠なプログラムが一括して圧縮された第１のプログラム群と、前記組み込み機器の機能毎に分割・圧縮された前記第１のプログラム群以外の第２のプログラム群と、を前記不揮発性メモリに格納する格納ステップと、
前記組み込み機器のイニシャル時に、前記不揮発性メモリに格納された前記第１のプログラム群のみを解凍して前記揮発性メモリに展開する第１の解凍ステップと、
前記不揮発性メモリに格納された前記第２のプログラム群の一部を解凍して前記揮発性メモリに展開する第２の解凍工程と、
を有することを特徴とする解凍方法。
【請求項６】
前記第２の解凍工程において、前記不揮発性メモリに格納された前記第２のプログラム群のうち優先順位の低いプログラムを前記揮発性メモリから削除すること
を特徴とする請求項５に記載の解凍方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組み込み機器において実行されるアプリケーションプログラムを圧縮する圧縮プログラムおよび圧縮方法、並びに該圧縮プログラム、圧縮方法により圧縮されたプログラムを効率的に解凍する解凍プログラムおよび解凍方法に関するものである。
【背景技術】
【０００２】
従来、組み込み機器がさまざまな分野で用いられている。そして、近年、組み込み機器においては種々の機能を実現可能とするために高機能化を求められる傾向がある。例えば自動販売機においても同様の要求があり、さらに低コスト化も要求されている。このような組み込み機器においては高機能を実現するために大容量の不揮発性メモリが必要となってきているが、自動販売機の場合にはその使用環境やコスト面などからハードディスク等の大容量メモリを実装することは不可能である。そこで、自動販売機においては、通常はフラッシュメモリ等の不揮発性メモリを実装し、これにプログラムを格納している。
【０００３】
このような背景の元に、フラッシュメモリに格納するプログラムを、データ圧縮した状態で該フラッシュメモリに格納し、ＳＤＲＡＭ等の揮発性メモリ上にこのプログラム全体を解凍して処理を行うシステムや、システムの立ち上がりに必要なプログラムのみを優先的に解凍して、その後他のプログラム全体を順次解凍して処理を行うシステムが提案されている（例えば、特許文献１参照）。
【０００４】
【特許文献１】特開平８−２９２８９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来の技術によれば、前者すなわちフラッシュメモリにデータ圧縮した状態で格納したプログラム全体をＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリ上に全体解凍して処理を行うシステムにおいては、イニシャル時、すなわち電源投入後やリセット後から通常運転状態への移行時間（以降、立ち上がり時間と称する）が非常に長くなるという問題がある。例えば自動販売機などにおいては、この立ち上がり時間が長くなる（遅くなる）という問題は、自動販売機の性能を重視する飲料メーカー等の自動販売機購入業者に対する販売機械の減少へとつながる。
【０００６】
また、上述した従来の技術のうち後者、すなわちフラッシュメモリにデータ圧縮した状態で格納したプログラムのうち、システムの立ち上がりに必要なプログラムのみを優先的に解凍して、その後他のプログラム全体を順次解凍して処理を行うシステムにおいては、立ち上がりの時間が遅くなることはないが、最終的には処理プログラム全体を解凍した状態で格納できる容量の揮発性メモリが必要となる。これはコストアップの要因となり、コスト競争の激しい自動販売機業界において問題となっている。
【０００７】
本発明は、上記に鑑みてなされたものであって、組み立て機器において少ない容量のメモリで速やかに組み立て機器を立ち上げることを可能とする圧縮プログラム、圧縮方法、解凍プログラムおよび解凍方法を得ることを目的とする。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために、本発明の請求項１にかかる圧縮プログラムは、組み込み機器において実行されるプログラムを圧縮する圧縮プログラムであって、組み込み機器において実行されるプログラムのうち、組み込み機器の通常動作に必要不可欠なプログラムを一括圧縮する第１の圧縮ステップと、プログラムのうち、組み込み機器の通常動作に必要不可欠なプログラム以外のプログラムを組み込み機器の機能毎に分割・圧縮する第２の圧縮ステップと、をコンピュータに実行させることを特徴とする。
【０００９】
また、本発明の請求項２にかかる圧縮方法は、組み込み機器において実行されるプログラムを圧縮する圧縮方法であって、組み込み機器において実行されるプログラムのうち、組み込み機器の通常動作に必要不可欠なプログラムを一括圧縮する第１の圧縮工程と、プログラムのうち、組み込み機器の通常動作に必要不可欠なプログラム以外のプログラムを組み込み機器の機能毎に分割・圧縮する第２の圧縮工程と、を有することを特徴とする。
【００１０】
また、本発明の請求項３にかかる解凍プログラムは、組み込み機器において不揮発性メモリに格納されたプログラムを揮発性メモリ上に展開して実行するプログラムであって、組み込み機器の通常動作に必要不可欠なプログラムが一括して圧縮された第１のプログラム群と、組み込み機器の機能毎に分割・圧縮された前記第１のプログラム群以外の第２のプログラム群と、を不揮発性メモリに格納する格納ステップと、組み込み機器のイニシャル時に、不揮発性メモリに格納された第１のプログラム群のみを解凍して揮発性メモリに展開する第１の解凍ステップと、不揮発性メモリに格納された第２のプログラム群の一部を解凍して揮発性メモリに展開する第２の解凍ステップと、を組み込み機器内のコンピュータに実行させることを特徴とする。
【００１１】
また、本発明の請求項４にかかる解凍プログラムは、上記請求項３において、第２の解凍ステップにおいて、不揮発性メモリに格納された第２のプログラム群のうち優先順位の低いプログラムを前記揮発性メモリから削除することを特徴とする。
【００１２】
また、本発明の請求項５にかかる解凍方法は、組み込み機器において不揮発性メモリに格納されたプログラムを揮発性メモリ上に展開して実行する解凍方法であって、組み込み機器の通常動作に必要不可欠なプログラムが一括して圧縮された第１のプログラム群と、組み込み機器の機能毎に分割・圧縮された第１のプログラム群以外の第２のプログラム群と、を不揮発性メモリに格納する格納ステップと、組み込み機器のイニシャル時に、不揮発性メモリに格納された第１のプログラム群のみを解凍して揮発性メモリに展開する第１の解凍ステップと、不揮発性メモリに格納された第２のプログラム群の一部を解凍して揮発性メモリに展開する第２の解凍工程と、を有することを特徴とする。
【００１３】
また、本発明の請求項６にかかる解凍プログラムは、上記請求項５において、第２の解凍工程において、不揮発性メモリに格納された第２のプログラム群のうち優先順位の低いプログラムを前記揮発性メモリから削除することを特徴とする。
【発明の効果】
【００１４】
請求項１にかかる圧縮プログラムによれば、組み込み機器において実行されるプログラムのうち、組み込み機器の通常動作に必要不可欠なプログラムを一括圧縮する第１の圧縮ステップと、前記のプログラムのうち、組み込み機器の通常動作に必要不可欠なプログラム以外のプログラムを組み込み機器の機能毎に分割・圧縮する第２の圧縮ステップと、をコンピュータに実行させる。
【００１５】
すなわち、この圧縮プログラムによれば、組み込み機器の通常動作に必要不可欠なプログラムと、その他のプログラムとが分割されて圧縮され、さらに前者のプログラムが一括圧縮される。これにより、圧縮されたプログラムを解凍する際に、組み込み機器の通常動作に必要不可欠なプログラムとその他のプログラムとを容易に識別し、所望の圧縮プログラムのみを速やかに解凍することができるという効果を奏する。
【００１６】
請求項２にかかる圧縮方法によれば、組み込み機器において実行されるプログラムを圧縮する圧縮方法であって、組み込み機器において実行されるプログラムのうち、組み込み機器の通常動作に必要不可欠なプログラムを一括圧縮する第１の圧縮工程と、前記のプログラムのうち、組み込み機器の通常動作に必要不可欠なプログラム以外のプログラムを組み込み機器の機能毎に分割・圧縮する第２の圧縮工程と、を有する。
【００１７】
すなわち、この圧縮方法によれば、組み込み機器の通常動作に必要不可欠なプログラムと、その他のプログラムとが分割されて圧縮され、さらに前者のプログラムが一括圧縮される。これにより、圧縮されたプログラムを解凍する際に、組み込み機器の通常動作に必要不可欠なプログラムとその他のプログラムとを容易に識別し、所望の圧縮プログラムのみを速やかに解凍することができるという効果を奏する。
【００１８】
請求項３にかかる解凍プログラムによれば、組み込み機器において不揮発性メモリに格納されたプログラムを揮発性メモリ上に展開して実行するプログラムであって、組み込み機器の通常動作に必要不可欠なプログラムが一括して圧縮された第１のプログラム群と、組み込み機器の機能毎に分割・圧縮された前記の第１のプログラム群以外の第２のプログラム群と、を不揮発性メモリに格納する格納ステップと、組み込み機器のイニシャル時に、不揮発性メモリに格納された第１のプログラム群のみを解凍して揮発性メモリに展開する第１の解凍ステップと、不揮発性メモリに格納された第２のプログラム群の一部を解凍して揮発性メモリに展開する第２の解凍ステップと、を組み込み機器内のコンピュータに実行させる。
【００１９】
すなわち、この解凍プログラムによれば、組み込み機器のイニシャル時には組み込み機器の通常動作に必要不可欠なプログラムが一括して圧縮された第１のプログラム群のみを解凍し、その他のプログラム群は解凍処理を行わないため、短時間で効率的に組み込み機器の立ち上げを行うことができるという効果を奏する。そして、組み込み機器のイニシャル時には第１のプログラム群のみを解凍して揮発性メモリ上に格納するため、全ての処理プログラム全体を解凍した状態で揮発性メモリ上に格納する必要が無くなる。また、第２のプログラム群は、必要に応じて組み込み機器の機能単位毎に部分解凍することができる。その結果、組み込み機器内に備える揮発性メモリの容量を大幅に削減でき、少ない容量に抑えることができるため、高機能な組み込み機器を低コストで実現することができるという効果を奏する。
【００２０】
請求項４にかかる解凍プログラムによれば、請求項３の解凍プログラムの第２の解凍ステップにおいて、揮発性メモリに格納された第２のプログラム群のうち優先順位の低いプログラムを揮発性メモリから削除する。これにより、必要性の高いプログラムのみを解凍した状態で揮発性メモリ上に格納するため、揮発性メモリの容量を大幅に削減でき、少ない容量で効率的に揮発性メモリを使用することが可能となる。その結果、高機能な自動販売機を低コストで実現することができるという効果を奏する。
【００２１】
請求項５にかかる解凍方法によれば、組み込み機器において不揮発性メモリに格納されたプログラムを揮発性メモリ上に展開して実行する解凍方法であって、組み込み機器の通常動作に必要不可欠なプログラムが一括して圧縮された第１のプログラム群と、組み込み機器の機能毎に分割・圧縮された第１のプログラム群以外の第２のプログラム群と、を不揮発性メモリに格納する格納ステップと、組み込み機器のイニシャル時に、不揮発性メモリに格納された前記の第１のプログラム群のみを解凍して揮発性メモリに展開する第１の解凍ステップと、不揮発性メモリに格納された第２のプログラム群の一部を解凍して揮発性メモリに展開する第２の解凍工程と、を有する。
【００２２】
すなわち、この解凍方法によれば、組み込み機器のイニシャル時には組み込み機器の通常動作に必要不可欠なプログラムが一括して圧縮された第１のプログラム群のみを解凍し、その他のプログラム群は解凍処理を行わないため、短時間で効率的に組み込み機器の立ち上げを行うことができるという効果を奏する。そして、組み込み機器のイニシャル時には第１のプログラム群のみを解凍して揮発性メモリ上に格納するため、全ての処理プログラム全体を解凍した状態で揮発性メモリ上に格納する必要が無くなる。また、第２のプログラム群は、必要に応じて組み込み機器の機能単位毎に部分解凍することができる。その結果、組み込み機器内に備える揮発性メモリの容量を大幅に削減でき、少ない容量に抑えることができるため、高機能な組み込み機器を低コストで実現することができるという効果を奏する。
【００２３】
請求項６にかかる解凍方法によれば、請求項５の解凍方法の第２の解凍工程において、不揮発性メモリに格納された第２のプログラム群のうち優先順位の低いプログラムを揮発性メモリから削除する。これにより、必要性の高いプログラムのみを解凍した状態で揮発性メモリ上に格納するため、揮発性メモリの容量を大幅に削減でき、少ない容量で効率的に揮発性メモリを使用することが可能となる。その結果、高機能な自動販売機を低コストで実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２４】
以下に、本発明にかかる圧縮プログラム、圧縮方法、解凍プログラムおよび解凍方法の実施例を、自動販売機を例に図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。すなわち、本発明は以下の記述に限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【実施例】
【００２５】
図１および図２は、自動販売機で実行されるアプリケーションプログラムの圧縮処理、解凍処理の流れを示す図である。まず、本発明の概要を説明する。本発明においては、たとえば、商品販売業者や自販機製造業者が、汎用計算機を用いてアプリケーションプログラム１を生成する。次いで、本実施例にかかる圧縮プログラムを実行することにより図１に示すようにアプリケーションプログラム１のうちの一部（プログラム領域２）に対して圧縮処理を行う。そして、圧縮後のアプリケーションプログラム（プログラム領域２）をメモリカードに書き込む。また、アプリケーションプログラム１のうち他の部分（プログラム領域３）に対して圧縮処理を行う。そして、圧縮後のアプリケーションプログラム（プログラム領域３）をメモリカードに書き込む。
【００２６】
ここで、プログラム領域２のプログラムは、アプリケーションプログラム１のうち自動販売機の立ち上がり動作（通常動作）に必要不可欠なプログラム（以降、基本プログラムと称する）が対象となる。また、プログラム３のプログラムは、アプリケーションプログラム１のうち基本プログラム以外のプログラムである自動販売機の立ち上がり動作（通常動作）に通常使用しない、または使用頻度の低いプログラム（以降、サブプログラムと称する）が対象となる。
【００２７】
一方、自動販売機側では、メモリカードに書き込まれたアプリケーションプログラム１、すなわち基本プログラムおよびサブプログラムを内部の不揮発性メモリであるＲＯＭに書き込む。そして、図２に示すように自動販売機の立ち上げ時に、本実施例の解凍プログラムを実行することにより、基本プログラムが一括圧縮されたプログラム群のみを読み出し、解凍処理を行う。そして、解凍処理を行った基本プログラムのプログラム群を高速動作可能な揮発性メモリであるＲＡＭ上にロード（展開）し、その後、実行する。また、自動販売機の立ち上げ後、基本プログラムのプログラム群以外のプログラムであって機能単位毎に圧縮されているサブプログラムのプログラム群を必要に応じて部分解凍処理を行って、ＲＡＭ上にロード（展開）して実行する。
【００２８】
以上のように、自動販売機の立ち上げ時に、アプリケーションプログラム１のうち自動販売機の立ち上がり動作（通常動作）に必要不可欠な基本プログラムのプログラム群のみを解凍して揮発性メモリ上に展開し、自動販売機の立ち上げ時に不要なアプリケーションプログラムの解凍、展開を行わないことにより、立ち上がり時間を短縮することができる。
【００２９】
以下、本発明をより詳細に説明する。まず、上記圧縮処理を行う汎用計算機の構成および上記解凍処理を行う自動販売機の構成を、図面を用いて説明する。
【００３０】
図３は、圧縮プログラムを実行する汎用計算機の概略構成を示す図である。この汎用計算機は、たとえば、ＣＰＵを含む制御ユニット１０１と、メモリユニット１０２と、表示ユニット１０３と、入力ユニット１０４と、ＣＤ−ＲＯＭドライブユニット１０５と、ディスクユニット（ハードディスク）１０６と、外部Ｉ／Ｆユニット１０７と、を備え、これらの各ユニットは、それぞれシステムバスＡを介して接続されている。そして、制御ユニット１０１は、後述する圧縮処理を実行する。メモリユニット１０２は、ＲＡＭ、ＲＯＭ等のメモリを含み、制御ユニット１０１が実行すべきプログラム処理の過程で得られたデータ等を記憶する。表示ユニット１０３は、ＣＲＴやＬＣＤ（液晶表示パネル）等で構成され、汎用計算機の使用者に対して各種画面を表示する。入力ユニット１０４は、キーボード、マウス等で構成され、汎用計算機の使用者が各種情報の入力を行うために使用する。また、図示のＣＤ−ＲＯＭ２００には、圧縮処理を記述したプログラムが格納されている。
【００３１】
上記のように構成される汎用計算機では、まず、ＣＤ−ＲＯＭ２００に記録された圧縮プログラムをディスクユニット１０６にインストールする。そして、汎用計算機を立ち上げるときにディスクユニット１０６から読み出された圧縮プログラムが、メモリユニット１０２に格納される。この状態で、制御ユニット１０１（ＣＰＵ）では後述する圧縮処理を行うことができる。
【００３２】
なお、本実施例においては、ＣＤ−ＲＯＭ２００にて圧縮処理を記述したプログラムを提供しているが、このプログラムの記録媒体は、これに限定されることなく、システムを構成するコンピュータに応じて、たとえば、フロッピー（登録商標）ディスク、光磁気ディスク、磁気テープ等の他の記録媒体を用いることも可能である。
【００３３】
図４は、解凍プログラムを実行する自動販売機を制御するボード（以降、マスタボードと称する）の概略構成を示す図である。この自動販売機は、たとえば、いわゆる組込型ＭＰＵを用いた制御ユニット１１１と、ＲＡＭ１１２と、フラッシュＲＯＭ１１３と、内部・外部Ｉ／Ｆユニット１１４と、を備え、これらの各構成は、それぞれシステムバスＢを介して接続されている。また、周辺回路のＬＳＩ、表示用ＬＥＤなども備える。なお、ＲＡＭ１１２は、制御ユニット１１１が実行すべき解凍プログラム、および処理の過程で得られたデータ等を記憶する。また、フラッシュＲＯＭ１１３には、本実施例の解凍プログラムが格納されている。そして、内部・外部Ｉ／Ｆユニット１１４には、通信制御部や表示ユニット（ディスプレイ）や入力ユニット（キーボード，マウス等）やＣＤ−ＲＯＭドライブユニットやＦＤドライブユニットやＭＯドライブユニット等の周辺機器が接続可能である。
【００３４】
ここで、マスタボードの制御プログラム（アプリケーションプログラム）は、図５および図６に示すように自動販売機の立ち上がり動作（通常動作）に必要不可欠なプログラム（基本プログラム）１２１と、通常使用しない、または使用頻度の低いプログラム（サブプログラム）１２２と、に分類されている。基本プログラム１２１としては、例えば図５に示すように出入金プログラム、ＬＥＤ制御プログラム、在庫監視プログラム、温度監視プログラムなどがある。また、サブプログラムとしては、例えば図５に示すように、つり銭切れプログラム、製品切れプログラム、売り上げ情報管理プログラム、蛍光灯制御プログラムなどがある。
【００３５】
基本プログラム１２１は、図６に示すように一つの固まりに一括圧縮されてフラッシュＲＯＭ１１３上に格納されている。また、サブプログラム１２２は、図６に示すように単機能毎に分割・圧縮された形でフラッシュＲＯＭ１１３上に格納されている。
【００３６】
上記のように構成される自動販売機では、電源が投入されると、フラッシュＲＯＭ１１３から読み出された解凍プログラムがＲＡＭ１１２に格納される。この状態で、制御ユニット１１１では後述する解凍処理を行うことができる。
【００３７】
なお、本実施例においては、フラッシュＲＯＭ１１３に格納された解凍プログラムを用いて解凍処理を行っているが、これに限らず、たとえば、ＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク、光磁気ディスク、磁気テープ等の記録媒体に格納された解凍プログラムを用いることとしてもよい。
【００３８】
つぎに、本実施例の圧縮プログラムを実行した場合の汎用計算機の動作を、図１および図７を用いて説明する。図７は、汎用計算機内の制御ユニット１０１の動作を示すフローチャートである。まず、制御ユニット１０１では、ＣＤ−ＲＯＭ２００に格納された、圧縮処理を記述した圧縮プログラムを呼び出し、自動販売機の立ち上がり動作（通常動作）に必要不可欠なプログラム（基本プログラム）を認識して、これらをひとまとまりに圧縮し、メモリカードに書き込む（ステップ１）。次に、制御ユニット１０１は、基本プログラム以外のプログラム、すなわちサブプログラムを認識し、該サブプログラム部を自動販売機の機能毎に分割、圧縮し、メモリカードに書き込む（ステップ２）。
【００３９】
以上のように、本実施例の圧縮プログラムを実行することにより、立ち上がり処理において必要不可欠な基本プログラム部分はひとまとまりとして一括圧縮し、メモリカードに書き込み、通常使用しない、または使用頻度の低いサブプログラム部分は自動販売機の機能毎に分割、圧縮してメモリカードに書き込む。
【００４０】
つぎに、本実施例の解凍プログラムを実行した場合の自動販売機の動作を、図６および図８を用いて詳細に説明する。図８は、自動販売機内の制御ユニット１１１の動作を示すフローチャートである。
【００４１】
まず、自動販売機のイニシャル時、すなわち自動販売機の電源がＯＮされる、またはリセットがかけられると（ステップ１１）、立ち上がり処理によってフラッシュＲＯＭ１１３上で制御プログラムのロードプログラムを起動する（ステップ１２）。次に、圧縮プログラムデータの解凍処理を記述した解凍プログラムをフラッシュＲＯＭ１１３からＲＡＭ１１２へロードして起動する（ステップ１３）。そして、この解凍プログラムにより基本プログラム１２１のみをフラッシュＲＯＭ１１３から読み出し、解凍した後、ＲＡＭ１１２上の基本プログラム領域１３１にロード（展開）して実行する（ステップ１４）。
【００４２】
一方、その他のプログラム、すなわちサブプログラム１２２は、立ち上がり処理においてはフラッシュＲＯＭ１１３から読み出し・解凍を行わずに、フラッシュＲＯＭ１１３に残しておく。そして、これらのサブプログラム１２２は、必要に応じて機能単位毎に部分解凍して、ＲＡＭ１１２上のサブプログラム領域１３２にロードして実行する。
【００４３】
このように、立ち上がり処理において、サブプログラム１２２はフラッシュＲＯＭ１１３から読み出し・解凍を行わずに、基本プログラム１２１のみをフラッシュＲＯＭ１１３から読み出し・解凍して、ＲＡＭ１１２上にロードすることにより、立ち上がり時間、すなわち電源投入後から通常運転状態への移行時間を短縮することができる。
【００４４】
つぎに、サブプログラム１２２をＲＡＭ１１２上にロードする方法、また不要なサブプログラム１２２を削除する方法を図６、図９および図１０を参照しながら説明する。図９は、イベントが発生した場合のユーザコールプログラムでの処理を示すフローチャートである。また、図１０は、イベントが発生した場合の基本プログラムでの処理を示すフローチャートである。イベントが発生した場合、基本プログラム１２１はイベントの発生を認識する（ステップ２１）。基本プログラム１２１はさらにそのイベントを識別し、サブプログラム１２２に対応付けされるパラメータを設定する（ステップ２２）。そして、そのパラメータを共通のユーザコールプログラムに渡す（ステップ２３）。
【００４５】
ユーザコールプログラムでは、まず、渡されたパラメータにより該当サブプログラムを特定する（ステップ３１）。そして、そのプログラムが既にＲＡＭ１１２上のサブプログラム領域１３２にロードされているか否かをチェックする（ステップ３２）。チェックの結果、該当するサブプログラムがＲＡＭ１１２上のサブプログラム領域１３２にロード済みである場合には、新たにサブプログラムをロードすることはせずに、そのサブプログラムを実行し（ステップ３５）、後述する実行回数カウンタを更新する（ステップ３６）。
【００４６】
一方、チェックの結果、該当するサブプログラムがＲＡＭ１１２上のサブプログラム領域１３２にロードされていない場合は、該当するサブプログラムをフラッシュＲＯＭ１１３から読み出し、解凍した後、ＲＡＭ１１２上のサブプログラム領域１３２にロードする。この際、下記に示すようなバッファ管理を行う。
【００４７】
本実施例においては、ＲＡＭ１１２上のサブプログラム領域は、図６に示すように第１バッファ１３３、第２バッファ１３４および第３バッファ１３５の３つのバッファから構成されている。そして、本発明においては、プログラムの解凍・ロード処理の処理回数を減らすために、プログラムの優先順位の考え方を導入する。
【００４８】
上述したチェックの結果、該当するサブプログラムがＲＡＭ１１２上のサブプログラム領域１３２にロードされていない場合は、まず、ＲＡＭ１１２上のサブプログラム領域に空きバッファが有るか否かをチェックする（ステップ３３）。ここで、空きバッファが有る場合には（ステップ３３肯定）、サブプログラム１２２の優先順位に基づいて空きバッファにサブプログラム１２２をロードする（ステップ３４）。
【００４９】
３つのバッファの全てが未使用状態である場合には、優先順位が高いサブプログラムが第１バッファ１３３に格納される。また、優先順位が普通のサブプログラムは、第２バッファ１３４に格納される。そして、優先順位が低いサブプログラムは、第３バッファ１３５に格納される。このサブプログラムの優先順位は所定の基準に基づいて決定され、例えばフラッシュＲＯＭ１１３内において図１１に示すようなサブプログラムテーブルに格納されてあらかじめ用意されている。例えば、図１１に示すサブプログラムテーブルによれば、「つり銭切れプログラム」および「製品切れプログラム」は、優先順位は、「低い」と格付けとされている。また、「売り上げ情報管理プログラム」は、優先順位は、「高い」と格付けとされている。そして、「蛍光灯制御プログラム」は、優先順位は、「普通」と格付けされている。
【００５０】
サブプログラム１２２をバッファにロード後、そのサブプログラムを実行し（ステップ３５）、そして、図１１に示したサブプログラムテーブルに含まれ、サブプログラムの実行回数をカウントする実行回数カウンタを更新する（ステップ３６）。
【００５１】
一方、空きバッファが無い場合には（ステップ３３否定）、優先順位が一番低いサブプログラム１２２が入っているバッファに解凍したサブプログラム１２２が上書き、格納される（ステップ３７）。このように、一度解凍を行い、高速な揮発性メモリであるＲＡＭ１１２上に展開したサブプログラム１２２のうち、実行頻度の低いものはＲＡＭ１１２上から削除する。これにより、必要性の高いプログラムのみを解凍した状態でＲＡＭ１１２上に格納することとなり、全ての処理プログラム全体を解凍した状態でＲＡＭ１１２上に格納する必要が無くなる。その結果、自動販売機内に備える揮発性メモリであるＲＡＭ１１２の容量を大幅に削減でき、少ない容量に抑えることが可能となる。
【００５２】
ここで、高速動作可能な揮発性メモリであるＲＡＭは高価な部品であるため、ＲＡＭの容量を大きくすると自動販売機自体のコストアップにつながる。一方、ＲＡＭの容量をあまり少なくすると、格納できるプログラム数が極端に少なくなり、自動販売機の高機能化を実現することができなくなる。しかしながら、上述したように一度解凍を行い、高速な揮発性メモリであるＲＡＭ１１２上に展開したサブプログラム１２２のうち、実行頻度の低いものはＲＡＭ１１２上から削除することで、必要性の高いプログラムのみを解凍した状態でＲＡＭ１１２上に格納するため、ＲＡＭの容量を大幅に削減でき、少ない容量で効率的にＲＡＭを使用することが可能となる。その結果、高機能な自動販売機を低コストで実現することができる。
【００５３】
そして、サブプログラム１２２をバッファにロード後、そのサブプログラムを実行し（ステップ３５）、そして、図１１に示したサブプログラムテーブルに含まれ、サブプログラムの実行回数をカウントする実行回数カウンタを更新する（ステップ３６）。
【００５４】
また、サブプログラムの優先順位は、サブプログラムテーブルのデータを用いて定期的に見直しを行う。すなわち、実行回数カウンタにおけるカウント数、すなわちサブプログラムの実行回数を基準として、定期的にサブプログラムの優先順位の見直しを行う。優先順位の見直しをする際の基準は、例えば次のようにすることができる。
【００５５】
「実行回数カウンタにおけるカウント数の最大値をベースに新しい優先順位を次のように割り当てる。」
（基準１）
カウント数が、全サブプログラムのカウント数の最大値の５０％以下であるサブプログラムの優先順位は、「低い」とする。
（基準２）
カウント数が、全サブプログラムのカウント数の最大値の５０％〜８０％であるサブプログラムの優先順位は、「普通」とする。
（基準３）
カウント数が、全サブプログラムのカウント数の最大値の８０％〜１００％であるサブプログラムの優先順位は、「高い」とする。
【００５６】
そして、上記の基準に基づいて、サブプログラムテーブルの各サブプログラムの優先順位を割当て直す。図１２は、ある時点でのサブプログラムテーブルの状態を示しており、各サブプログラムの優先順位および実行回数を示している。上記の基準に基づいて図１２に示したサブプログラムテーブルのサブプログラムの優先順位を割当て直す場合、「実行回数カウンタにおけるカウント数の最大値」は、「売り上げ情報管理プログラム」の実行回数となり、「２００（カウント）」となる。
【００５７】
ここで、「つり銭切れプログラム」の優先順位について考えると、該「つり銭切れプログラム」のカウント数は、「１０（カウント）」である。そして、このカウント数は、「実行回数カウンタにおけるカウント数の最大値」である「２００（カウント）」の５０％以下である。したがって、この場合は上記の（基準１）に従って「つり銭切れプログラム」の優先順位は「低い」とする。
【００５８】
また、「製品切れプログラム」の優先順位について考えると、該「製品切れプログラム」のカウント数は、「１２０（カウント）」である。そして、このカウント数は、「実行回数カウンタにおけるカウント数の最大値」である「２００（カウント）」の５０％〜８０％である。したがって、この場合は上記の（基準２）に従って「製品切れプログラム」の優先順位は「普通」とする。
【００５９】
そして、「売り上げ情報管理プログラム」の優先順位について考えると、該「売り上げ情報管理プログラム」のカウント数は、「２００（カウント）」である。そして、このカウント数は、「実行回数カウンタにおけるカウント数の最大値」である「２００（カウント）」の８０％〜１００％である。したがって、この場合は上記の（基準３）に従って「売り上げ情報管理プログラム」の優先順位は「高い」とする。
【００６０】
最後に、「蛍光灯制御プログラム」の優先順位について考えると、該「蛍光灯制御プログラム」のカウント数は、「２０（カウント）」である。そして、このカウント数は、「実行回数カウンタにおけるカウント数の最大値」である「２００（カウント）」の５０％以下である。したがって、この場合は上記の（基準１）に従って「蛍光灯制御プログラム」の優先順位は「低い」とする。
【００６１】
上記のように、各サブプログラムの優先順位を割当て直した後、さらに図１２に示したサブプログラムテーブルを実行回数の降順に並べ替える処理を行う。このような優先順位の見直し処理を行った後のサブプログラムテーブルは図１３のようになる。このように最初に設定した優先順位を実機の稼働状況によって自動修正を行う。これにより、自動販売機の稼働状況に即したサブプログラム１２２がＲＡＭ上に格納されることとなり、使用頻度の高いサブプログラム１２２を必要時に早急に動作させることが可能となる。最後に、実行結果を呼び出し元である基本プログラムに渡す。
【００６２】
なお、上記においては優先順位の見直しを実行回数のカウンタ基づいて行う場合について説明したが、優先順位の見直しを行う際の基準はこれに限定されるものではなく、適宜変更可能である。
【００６３】
以上において説明したように、本実施例では、自動販売機の立ち上がり処理において基本プログラム部分のみをＲＡＭ上に解凍・ロードすることにより、イニシャル時の自動販売機の立ち上がり時間を短縮することができる。さらに、使用頻度の低いサブプログラムをＲＡＭ上から削除することによって、高速動作可能な揮発性メモリとして自動販売機内に備えるＲＡＭの容量を大幅に削減でき、少ない容量に抑えることができる。したがって、コストの高い揮発性メモリの容量を少なくしつつ高機能を実現することができ、高機能な自動販売機を安価に実現することが可能である。
【産業上の利用可能性】
【００６４】
以上のように、本発明にかかる圧縮プログラムは、組み込み機器において実行されるプログラムの圧縮に有用であり、特に、自動販売機のように使用環境やコスト面などからハードディスク等の大容量メモリを実装することが不可能な組み込み機器に適している。
【図面の簡単な説明】
【００６５】
【図１】自動販売機で実行されるアプリケーションプログラムの圧縮処理の流れを示す図である。
【図２】自動販売機で実行されるアプリケーションプログラムの解凍処理の流れを示す図である。
【図３】圧縮プログラムを実行する汎用計算機の概略構成を示す図である。
【図４】解凍プログラムを実行する自動販売機を制御するマスタボードの概略構成を示す図である。
【図５】自動販売機の立ち上がり動作通常動作に必要不可欠な基本プログラムと、通常使用しない、または使用頻度の低いサブプログラムと、の一例を分類して示す図である。
【図６】フラッシュＲＯＭとＲＡＭとにおけるプログラムの格納領域を示す図である。
【図７】汎用計算機内の制御ユニットの動作を示すフローチャートである。
【図８】自動販売機内の制御ユニットの動作を示すフローチャートである。
【図９】イベントが発生した場合のユーザコールプログラムでの処理を示すフローチャートである。
【図１０】イベントが発生した場合の基本プログラムでの処理を示すフローチャートである。
【図１１】サブプログラムテーブルの一例を示す図である。
【図１２】ある時点でのサブプログラムテーブルの状態を示す図である。
【図１３】優先順位の見直し処理を行った後のサブプログラムテーブルを示す図である。
【符号の説明】
【００６６】
１  アプリケーションプログラム
２  プログラム領域
３  プログラム領域
１０１  制御ユニット
１０２  メモリユニット
１０３  表示ユニット
１０４  入力ユニット
１０５  ＣＤ−ＲＯＭドライブユニット
１０６  ディスクユニット
１０７  外部Ｉ／Ｆユニット
１１１  制御ユニット
１１２  ＲＡＭ
１１３  フラッシュＲＯＭ
１１４  内部・外部Ｉ／Ｆユニット
１２１  基本プログラム
１２２  サブプログラム
１３３  第１バッファ
１３４  第２バッファ
１３５  第３バッファ
２００  ＣＤ−ＲＯＭ
【図１】
2005228272.tif 000003
【図２】
2005228272.tif 000004
【図３】
2005228272.tif 000005
【図４】
2005228272.tif 000006
【図５】
2005228272.tif 000007
【図６】
2005228272.tif 000008
【図７】
2005228272.tif 000009
【図８】
2005228272.tif 000010
【図９】
2005228272.tif 000011
【図１０】
2005228272.tif 000012
【図１１】
2005228272.tif 000013
【図１２】
2005228272.tif 000014
【図１３】
2005228272.tif 000015