(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024065449
(43)【公開日】2024-05-15
(54)【発明の名称】周辺機器
(51)【国際特許分類】
G06F 8/60 20180101AFI20240508BHJP
G06F 13/10 20060101ALI20240508BHJP
【FI】
G06F8/60
G06F13/10 320Z
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022174311
(22)【出願日】2022-10-31
(71)【出願人】
【識別番号】000104652
【氏名又は名称】キヤノン電子株式会社
(72)【発明者】
【氏名】玉井 昌徳
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AB01
5B376AB12
5B376AB38
(57)【要約】
【課題】周辺機器の制御部、記憶容量に制限がある場合であっても、デバイスドライバをコンピュータにインストールしていない状態で制御可能な周辺機器を提供する。
【解決手段】制御部110と、制御部110が認識可能な容量以下の単位でアクセスする領域を切り替える領域切替部129と、制御部110が認識可能な容量よりも大きい容量を有する第一の保存領域130と、外部の情報処理システム100との通信を行う外部通信部107とを備え、領域切替部129によりアクセス領域を順次切り替えながら制御部110により第一の保存領域130へアクセスする順次アクセス処理を実行し、制御部110は、第一の保存領域130に保存された外部プログラム210を、外部通信部107を介して外部の情報処理システム100に提供することを特徴とする。
【選択図】
図2
【特許請求の範囲】
【請求項1】
制御部と、
前記制御部が認識可能な容量以下の単位でアクセスする領域を切り替える領域切替部と、
前記領域切替部を介して前記制御部に接続され、前記制御部が認識可能な容量よりも大きい容量を有する第一の保存領域と、
外部の情報処理システムとの通信を行う外部通信部と
を備え、
前記第一の保存領域には前記外部の情報処理システムで実行される外部プログラムが保存され、
前記領域切替部によりアクセス領域を順次切り替えながら前記制御部により前記第一の保存領域へアクセスする順次アクセス処理を実行し、
前記制御部は、前記第一の保存領域から前記外部通信部を介して前記外部の情報処理システムに前記外部プログラムを提供することを特徴とする周辺機器。
【請求項2】
前記制御部に直接接続された第二の保存領域を備え、
前記第二の保存領域には、前記制御部が前記周辺機器を制御するための制御プログラムが保存され、
前記制御部は、前記制御プログラムを前記第二の保存領域から読み出して実行し、
前記制御プログラムによって、前記順次アクセス処理が実行されることを特徴とする請求項1に記載の周辺機器。
【請求項3】
前記第一の保存領域は前記外部プログラムおよび前記制御部が前記周辺機器を制御するための制御プログラムが夫々異なるアクセス領域に保存されており、
前記領域切替部の初期状態で指定されるアクセス領域に前記制御プログラムが保存されていることを特徴とする請求項1に記載の周辺機器。
【請求項4】
前記制御部は、起動時に前記領域切替部を制御することなく前記第一の保存領域にアクセスし、前記周辺機器を制御するための制御プログラムを第三の保存領域に読み出して実行することを特徴とする請求項1に記載の周辺機器。
【請求項5】
前記第三の保存領域は前記外部の情報処理システムから読み書き可能なアクセス領域を有し、
前記アクセス領域には少なくとも前記外部の情報処理システムで実行可能な起動プログラムが保存され、
前記起動プログラムによって、前記第一の保存領域または前記第三の保存領域から前記外部プログラムを順次読み出すことを特徴とする請求項4に記載の周辺機器。
【請求項6】
請求項1から5に記載の周辺機器であって、
前記制御部は、前記領域切替部と異なる記憶領域選択機能を有することを特徴とする周辺機器。
【請求項7】
前記第一の保存領域は、パラレル接続型の不揮発性半導体メモリであることを特徴とする請求項1に記載の周辺機器。
【請求項8】
前記領域切替部は順序回路の組み合わせで構成されたことを特徴とする請求項1に記載の周辺機器
【請求項9】
前記領域切替部は前記制御部からの汎用出力信号で形成されることを特徴とする請求項1に記載の周辺機器。
【請求項10】
前記制御部は、前記領域切替部との通信を行う領域切替通信部を有することを特徴とする請求項1に記載の周辺機器。
【請求項11】
前記領域切替部は内蔵の論理回路を変更可能な集積回路で構成されることを特徴とする請求項1に記載の周辺機器。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、イメージスキャナ、プリンタまたは複合機などの周辺機器に関する。
【背景技術】
【0002】
イメージスキャナ、プリンタまたは複合機などの周辺機器が広く普及している。これらの周辺機器と、これらを制御するコンピュータに接続するインターフェイスとして、シリアルインターフェイス、パラレルインターフェイス、USB、LAN、無線LANなどが知られている。
【0003】
ところで、周辺機器をコンピュータ上で使用できるようにするためには、その周辺機器を制御可能なデバイスドライバやアプリケーションソフトウェアをコンピュータにインストールしなければならない(特許文献1)。
【0004】
しかし、デバイスドライバやアプリケーションソフトウェアをインストールすることが制限されているコンピュータが存在する。この制限はセキュリティ対策で課されることが多い。例えば、マイクロソフト(登録商標)ウィンドウズ(登録商標)等のオペレーティングシステム(OS)では、管理者権限を有しているユーザのみがデバイスドライバをインストールできる。したがって、一般ユーザはデバイスドライバやアプリケーションソフトウェアをインストールできないため、周辺機器を利用できなくなってしまう。このような状況は、外出先のコピュータを使用する場合に度々発生することが予想される。
【0005】
また、従来は、管理者権限を持つユーザであっても、画像読み取り装置を接続する前に、予め、デバイスドライバをインストールしておかなければならなかった。すなわち、従来は、デバイスドライバをコンピュータにインストールしていない状態で、周辺機器を利用することができなかった。
【0006】
さらに、デバイスドライバは、一般に、ディスクメディアにより頒布されている。よって、このディスクメディアを用意しなければ、デバイスドライバをインストールすることができなかった。例えば、ディスクメディアを紛失してしまうと、デバイスドライバをインストールすることができない。また近年ではインターネットを介してデバイスドライバを入手できるケースも一般的になっているが、その場合インターネットに接続できる環境が必要である。また、デバイスドライバを提供しているWEBサイトのURLや、周辺機器の種類や名称を正確に把握して入力しなければならず、ユーザにとっては面倒である。
【0007】
そこでデバイスドライバやソフトウェアをコンピュータにインストールすることなく、周辺機器を利用可能とする提案がなされている(特許文献2)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2004-334449号公報
【特許文献2】特許5513018号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら特許文献2の提案によればコンピュータ上で実行するソフトウェアやデバイスドライバを周辺機器内に保存しておく必要がある。一般的にコンピュータ上で実行するソフトウェアやデバイスドライバは周辺機器内部で実行されるファームウェアに比べてそのデータサイズが大きくなる。またコンピュータのOSごとに使用されるソフトウェアやデバイスドライバが異なるため複数のOSに対応した複数のソフトウェアやデバイスドライバを周辺機器内に記憶保存しておく必要がある。必然的に、特許文献2に記載の機能を持たない周辺機器に比べ、周辺機器内の保存領域には大きなサイズが要求されることになる。
【0010】
周辺機器を制御する制御部としては一般にASIC(Application Specific Integrated Circuit)やCPUなどが使用され、これらは内蔵したメモリコントローラによってソフトウェアやファームウェアを保存する記憶領域へのアクセスを制御する。しかしながら一般的にメモリコントローラは管理可能な記憶領域の種類や、管理できる記憶領域の物理的個数や、管理できる記憶領域のサイズ(メモリ空間)の制限がある。また、メモリコントローラを介さずに記憶媒体を接続可能なインターフェイス、例えばSDIOやPCIやSATAなどを有さない制御部も多く、それらに接続可能な記憶装置を設けられないものも多い。
【0011】
これらにより、複数のOSに対応した複数のソフトウェアやデバイスドライバに対応した十分な記憶領域を確保したい要求に応える事が出来ないケースが多々ある。十分な記憶領域を確保するためにASICの再設計・変更、もしくは、より上位のCPUに変更することが必要となる。
【0012】
本発明では制御部に記憶領域のサイズ(メモリ空間)の制限がある場合であっても、デバイスドライバやソフトウェアを周辺機器から提供することを可能とする。
【課題を解決するための手段】
【0013】
上記を鑑み、本発明に係る周辺機器は、
制御部と、
前記制御部が認識可能な容量以下の単位でアクセスする領域を切り替える領域切替部と、
前記領域切替部を介して前記制御部に接続され、前記制御部が認識可能な容量よりも大きい容量を有する第一の保存領域と、
外部の情報処理システムとの通信を行う通信部と
を備え、
前記第一の保存領域には前記外部の情報処理システムで実行される外部プログラムが保存され、
前記領域切替部によりアクセス領域を順次切り替えながら前記制御部により前記第一の保存領域へアクセスする順次アクセス処理を実行し、
前記制御部は、前記第一の保存領域から前記通信部を介して前記外部の情報処理システムに前記外部プログラムを提供することを特徴とする。
【発明の効果】
【0014】
本発明によれば、周辺機器の制御部、記憶容量に制限がある場合であっても、デバイスドライバをコンピュータにインストールしていない状態で制御可能な周辺機器を提供することができる。
【図面の簡単な説明】
【0015】
【
図1】本発明の第1の実施形態に係る、パーソナルコンピュータとして例示したコンピュータと画像読み取り装置としてのスキャナのソフトウェアブロック図である。
【
図2】本発明の第1の実施形態に係る、パーソナルコンピュータとして例示するコンピュータとスキャナのハードウェアブロック図である。
【
図3】本発明の第1の実施形態に係る、スキャナのハードウェアブロックの抜粋図である。
【
図4】本発明の第1の実施形態に係る、ROM130の内部アドレス概念図である。
【
図5】本発明の第1の実施形態に係る、スキャナにおけるROM130からのデータ読み出しを行うフローチャートである。
【
図6】本発明の第1の実施形態に係る、パーソナルコンピュータ100からキャプチャアプリケーション210を利用してスキャナ106で画像読み取りを行うフローのフローチャートである。
【
図7】本発明の第1の実施形態に係る、ドライブレターを割り当てられたディスクドライブ(スキャナ)をファイル管理ソフト(エクスプローラ)で開いた様子を示す図である。
【
図8】キャプチャアプリケーション210が起動したときに表示されるユーザインターフェイスの一例を示した図である。
【
図9】本発明の第2の実施形態に係る、パーソナルコンピュータと画像読み取り装置としてのスキャナのソフトウェアブロック図である。
【
図10】本発明の第2の実施形態に係る、スキャナのハードウェアブロックの抜粋図である。
【
図11】本発明の第2の実施形態に係る、ROM130の内部アドレス及びデータ配置を示す概念図である。
【
図12】本発明の第2の実施形態に係る、データ読み出しシーケンスとスタートアドレス及びデータサイズの対比表を示す図である。
【
図13】本発明の第2の実施形態に係る、パーソナルコンピュータ100からキャプチャアプリケーション210を利用してスキャナ106で画像読み取りを行うフローのフローチャートである。
【
図14】本発明の第2の実施形態に係る、スキャナにおけるROM130からのデータ読み出しを行うフローチャートである。
【
図15】本発明のスキャナ装置106での起動時のフローを示すフローチャートである。
【
図16】本発明の第3の実施形態に係る、スキャナのハードウェアブロックの抜粋図である。
【
図17】本発明の第4の実施形態に係る、スキャナのハードウェアブロックの抜粋図である
【
図18】本発明の第4の実施形態に係る、データ保持テーブルである。
【
図19】本発明の第5の実施形態に係る、ROM130の内部アドレス及びデータ配置を示す概念図である。
【
図20】本発明の第5の実施形態に係る、ドライブレターを割り当てられたディスクドライブ(スキャナ)をファイル管理ソフト(エクスプローラ)で開いた様子を示す図である。
【
図21】本発明の第5の実施形態に係る、データ書換シーケンスを示すフローチャートである。
【
図22(a)】本発明の第5の実施形態に係る、データ保持テーブルの一例。
【
図22(b)】本発明の第5の実施形態に係る、データ保持テーブルの他の例。
【
図22(c)】本発明の第5の実施形態に係る、データ保持テーブルの他の例。
【
図22(d)】本発明の第5の実施形態に係る、データ保持テーブルの他の例。
【
図22(e)】本発明の第5の実施形態に係る、データ保持テーブルの他の例。
【
図22(f)】本発明の第5の実施形態に係る、データ保持テーブルの他の例。
【発明を実施するための形態】
【0016】
以下に本発明の一実施形態を示す。本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【0017】
<第1の実施形態>
図1は、本発明の第1の実施形態に係る、周辺機器の一例である画像読み取り装置としてのスキャナのソフトウェアブロック図である。本実施形態においては、周辺機器は外部の情報処理システムと接続され、外部通信部を介して情報の送受信が実行される。以下では、パーソナルコンピュータとして例示したコンピュータ(情報処理システム)と、それに接続されるスキャナ装置とを一例として説明する。
【0018】
情報処理システムの一例であるパーソナルコンピュータ100には、オペレーティングシステム101、ファイルシステム201、マスストレージドライバ202及びUSBインターフェイスドライバであるUSBドライバ103がインストールされている。オペレーティングシステム101は、いわゆるOSのことであり、パーソナルコンピュータ100の基本ソフトウェアである。ファイルシステム201は、ハードディスクドライブなどの記憶装置にファイルを格納するためのソフトウェアである。マスストレージドライバ202は、ハードディスクドライブ、CD-ROM、DVD-ROM、CD-R、DVD-R、USBメモリなどのマスストレージを制御するためのソフトウェアである。USBドライバ103は、USBインターフェイスに接続されたUSBデバイスを制御するためのソフトウェアである。なお、これらのソフトウェアはOSの一部であってもよい。
【0019】
一方、周辺機器の一例であるスキャナ106には、パーソナルコンピュータ100にスキャナ106の制御を実行させるための外部プログラムであるキャプチャアプリケーション210、キャプチャアプリケーション210を読み出すためのキャプチャアプリケーション起動プログラム150、制御ファイル204や、ディスクドライブインターフェイス205及びUSBマスストレージクラスインターフェイス206が備えられている。本実施形態のキャプチャアプリケーション210は、ドライバプログラムを含み、パーソナルコンピュータ100で実行され、画像を読み取るための制御を行うソフトウェアである。
【0020】
キャプチャアプリケーション起動プログラム150はパーソナルコンピュータ100で実行され、キャプチャアプリケーション210を読み出し、起動するためのソフトウェアである。制御ファイル204は、キャプチャアプリケーション210やキャプチャアプリケーション起動プログラム150を実行しているパーソナルコンピュータ100からの制御コマンドなどが書き込まれるファイルである。ディスクドライブインターフェイス205は、スキャナ106に備えられているメモリ(RAM203、フラッシュメモリなどのROM127)をディスクドライブとして使用するためのソフトウェアである。USBマスストレージクラスインターフェイス206は、ディスクドライブインターフェイス205を介してメモリをUSBマスストレージとして使用するためのソフトウェアである。
【0021】
なお、市販の一般的なスキャナは、これらのソフトウェアではなく、USBスキャナクラスインターフェイスを備えている。そのため、パーソナルコンピュータ100は、キャプチャアプリケーションソフトウェアや専用のスキャナドライバを備える必要がある。本実施形態であれば、USBスキャナクラスインターフェイスは必ずしも必要ではない。また、パーソナルコンピュータ側では、キャプチャアプリケーションソフトウェアや専用のスキャナドライバが必ずしも必要ではない。
【0022】
図2は、パーソナルコンピュータ100として例示するコンピュータとスキャナ106のハードウェアブロック図である。
図2において、パーソナルコンピュータ100は、CPU121、ROM123、RAM124、ハードディスクドライブであるハードディスク122、USBインターフェイス104を備えている。USBインターフェイス104は、USBケーブル105を介してスキャナ106と接続される。また、CPU121には、キーボード/マウス125とディスプレイ126とが接続されている。
【0023】
ROM123には初期起動用のファームウェアが保存される。ハードディスク122にはマイクロソフトウィンドウズなどのオペレーティングシステム101が保存される。CPU121はROM123やハードディスク122から必要なデータをRAM124にロードして実行することで動作する。
【0024】
一方、スキャナ106は、制御部であるCPU110、制御部を制御するファームウェア(制御プログラム)を保管するROM127、領域切替部129、キャプチャアプリケーション210を保管するROM130、RAM203、画像読み取り部112、USBコントローラ128、USBインターフェイス107を備えている。
【0025】
CPU110は制御部の一例として示したが、制御部としてはASIC(Application Specific Integratd Circuit)であってもよい。またSoC(System on Chip)でもよい。
【0026】
画像読み取り部112はスキャナ106において画像を取り込むための機能である。画像を取り込むための機能としては不図示である読取センサ、読取センサからの画像データの取込部、モータを含む搬送部、原稿の検知用のセンサ部、及びそれらの制御部で構成される。ここで読取センサからの画像データの取込部や、前記構成品の制御部はCPU110で機能実装されても良い。
【0027】
制御部であるCPU110はメモリコントローラ131を内蔵する。メモリコントローラ131はメモリデバイスへのアクセス制御を司り、本実施形態では2つのNOR型のパラレルFlashROM(ROM127とROM130)およびRAM203が接続され、それぞれを読み書き制御可能である。メモリコントローラ131は接続したメモリの種類やサイズ(容量)、アクセス方法やアクセスタイミング等を制御可能であり、CPU110が接続されたメモリにアクセスする場合は、メモリコントローラ131にアクセスして、メモリコントローラ131がメモリ類のハードウェアアクセス制御を実施しデータの読み書きのアクセスを行う。メモリコントローラ131はCPU110内に複数個設けられても構わない。例えばDRAM用のメモリコントローラとその他のメモリ用のメモリコントローラに分かれていても構わない。
【0028】
ROM127は主にCPU110で実行されるスキャナ106の制御用ファームウェアを保存する。その他、スキャナ106を制御するうえで必要なデータ類も保管する。一方ROM130はパーソナルコンピュータ100で実行可能なキャプチャアプリケーション210やキャプチャアプリケーション起動プログラム150やそのデータを保管する。
【0029】
RAM203はCPU110からメモリコントローラ131を介して読み書き可能な揮発性半導体メモリである。一般的にはROM127やROM130に比べて高速なメモリアクセスが可能なDRAM(Dyanamic Random Access Memory)やSRAM(Static Random Access Memory)である。
【0030】
RAM203にはCPU110が頻繁にアクセスする制御用ファームウェアやデータ等が起動時にROM127から読み出され保管される。また後述の画像読み取り部112から転送される画像データを一次保管するためにも使用される。そのためRAM203はROM127に保管される制御用ファームウェアやデータより十分大きなメモリ空間を有する必要がある。
【0031】
次に
図3を用いてROM127およびROM130の接続の詳細を説明する。ROM127はメモリコントローラ131の選択信号(イネーブル信号)であるCS0(Chip Slect:選択信号)に接続され、CPU110からメモリコントローラ131を介して読み書き可能な不揮発性半導体メモリである。一方、ROM130はメモリコントローラ131の選択信号CS1に接続され、CPU110からメモリコントローラ131を介して読み書き可能な不揮発性半導体メモリである。本実施形態ではいずれのROMもNOR型のパラレルFlashROMとする。ただし、NOR型のFlashROMに限定される物ではなく、メモリコントローラ131で制御可能な不揮発のメモリであればよい。また、ROM130とROM131は同種類の不揮発のメモリでなくともよく、異種の不揮発の半導体メモリの組み合わせでも良い。このように、CPU110は、選択信号CS0とCS1を選択することによってアクセス先をROM127とROM130とで切り替える記憶領域選択機能を有している。
【0032】
ところで、前述のようにメモリコントローラ131には制御可能なメモリのメモリ領域(サイズ)の制限がある。本実施形態ではROM127は1MByte、ROM130は1MByte、RAM203は32MByte以下のサイズでないとメモリコントローラ131がアクセス制御できない。つまりROM130に2MByteのメモリを接続してもメモリコントローラ131単体では1MByteのメモリとしてしか認識できず、1MByteのメモリ空間にしか読み書きが行えず、残りの1MByteのメモリ空間にはアクセスすら出来ない。これによりメモリコントローラ131は、比較的大規模なデータサイズとなるパーソナルコンピュータ100で実行可能な後述のアプリケーションデータやキャプチャアプリケーション起動プログラム150を複数のOSに対応して保存することが可能な容量を有するメモリデバイスを接続できないという問題が発生する。そこで、本実施形態においては、領域切替部129を用いてメモリコントローラ131で制御(アクセス)できない大容量のメモリ空間を有するメモリを接続可能とする。
【0033】
本実施形態では領域切替部129としてカウンタ140を用いる。ROM130は前述のメモリコントローラ131が制御可能なサイズの制限により、メモリコントローラ131からは1MByteのメモリとしてしか認識されない。つまりパラレルバスのアドレス制御線0~19までの範囲でしかメモリへのアクセスを行うことができない。ここでROM130が1MByteでは十分でなく、8MByteの記憶容量が必要であった場合、ROM130自体はアドレス制御線0~22までを有することになる。しかしメモリコントローラ131は前述したようにROM130に対してはアドレス制御線0~19までしか制御することができないため、ROM130のアドレス制御線20~22を制御することができない。そこで領域切替部129(カウンタ140)を使用し、アドレス制御線20~22を制御しROM130へのアクセスを可能とする。
【0034】
次に領域切替部129の構成について説明する。領域切替部129はカウンタ140によって構成される。カウンタ140は入力としてCPU110からのリセット信号とクロック信号を有する。カウンタ140は出力としてROM130に接続されるアドレス制御線20から22までを有する。カウンタ140はCPU110からのリセット信号でアドレス制御線20から22までを全て0にセット([0,0,0])し、CPU110からのクロック信号のネガティブエッジが1回入る度に、カウンタ出力であるアドレス制御線20~22を順次1カウントアップする順序回路の組み合わせによって構成される。
【0035】
詳細にはCPU110はROM130のバンク0部のアドレスにアクセスする場合は、カウンタ140にリセット信号を入力してアドレス制御線22~20を[0,0,0]にしてから、メモリコントローラ131でアクセスする。次にバンク1部のアドレスにアクセスする場合は、クロック信号を一度High状態からLow状態にしてカウンタ140をカウントアップさせ、アドレス制御線22~20を[0,0,1]にしてからメモリコントローラ131でアクセスする。これによりメモリコントローラ131でROM130のアドレス制御線の上位3本が制御不可であってもCPU110が領域切替部129(カウンタ140)を制御することでROM130の全領域へアクセスすることが可能となる。
【0036】
次に
図4を使ってROM130のデータ配置について説明する。CPU110から見た時、ROM130は領域切替部129であるカウンタ140を使用することで仮想的に1MByteのROMが8個連なった形に見える。つまりROM130をバンク0からバンク7までの8個のバンク構成であるように認識する。一方メモリコントローラ131は1MByteのROMが1つだけ接続されているように見えている。つまりバンクの切り替えをカウンタ140で、バンク内のアドレス制御をメモリコントローラ131で実施する形となる。このように、メモリコントローラ131が認識可能な容量以下の単位ごとにROM130へアクセス可能なように、領域切替部129によってアクセス領域を切り替えている。
【0037】
ROM130にはパーソナルコンピュータ100で実行するためのキャプチャアプリケーション210等が保存される。このときこれらのアプリケーションは複数の分割されたデータとしてROM130内に保存されても良い。ここで、これらのデータは後述するCPU110がパーソナルコンピュータ100から読み出しを指示された時に読み出す順番に配置されており、バンクを跨いでアトランダムにデータが配置されているのではなく、そのアドレスをインクリメントする形で順次アクセスできるように配置されていることが特徴である。つまり、上述した領域切替部129によってメモリコントローラ131からのアクセス領域を順次切り替える順次アクセス処理をすることで、必要なデータを順番に読み出すことが可能となっている。
【0038】
<スキャナの起動動作>
図15を使用してスキャナ106の起動動作を説明する。スキャナ106の電源が投入されると、CPU110はブートを実行するための初期化プログラムをROM127から順次読み出しながら実行する(ステップS2001)。ここでROM127はCPU110のメモリコントローラ131に直接接続されているため領域切替部129であるカウンタ140を制御することなく読み出しが可能である。
【0039】
次に、初期化プログラムに含まれるコードによって、RAM203をメモリコントローラ131で制御できるように設定を行う(ステップS2002)。これによりCPU110はRAM203への読み書きが可能となる。
【0040】
次にCPU110はROM127から制御ファームウェアや制御に使用するデータ類をRAM203に展開・配置する(ステップS2003)。これによりCPU110はRAM203に展開された制御ファームウェアを読み出し実行することが可能となる(ステップS2004)。このときCPU110はRAM203に制御ファームウェアや制御に使用するデータ類を展開せずに、ROM127からファームウェアを読み出しながら実行しても良いが、一度これらを全部もしくは一部をRAM203に展開してからRAM203からファームウェアを実行する方がROM127から読み出す場合に比べて高速に読み出しが行えるため、制御動作が高速に行えることは自明である。このことからRAM203はファームウェアをROM127から読み出すために十分大きな容量である必要がある。
【0041】
次にRAM203上の特定の領域にスキャナ106を制御するための制御ファイル204と、接続されるパーソナルコンピュータ100で認識可能かつ実行可能なキャプチャアプリケーション起動プログラム150(Launher)を展開・配置する(ステップSS2005)。このときパーソナルコンピュータ100に実装されるOS(Operating System)に応じて実行できるように複数の特定領域に異なる制御ファイル204(例えば、ウィンドウズ用の制御ファイル204aとMacOS(登録商標)用の制御ファイル204b)、異なるキャプチャアプリケーション起動プログラム150(例えば、ウィンドウズ用のキャプチャアプリケーション起動プログラム150aとMacOS用のキャプチャアプリケーション起動プログラム150b)をRAM203に展開しても良い。ここでは制御ファイル204とキャプチャアプリケーション起動プログラム150をROM127からRAM203上に展開・配置することとしたが、RAM203に展開せずROM127上に配置しておいても構わない。また、いずれか一方だけRAM203に展開しても良い。一般的にはRAM203上に展開配置する方がアクセス速度の点から有利であることは自明である。
【0042】
次にCPU110はカウンタ140に対してリセット信号を送出し、カウンタ140の出力であるアドレス制御線22~20を[0,0,0]になるようにする(ステップS2006)。これによりCPU110はROM130のバンク0にアクセスできる状態になる。これによってスキャナ106は起動完了となる。
【0043】
<コンピュータの接続動作>
次に、パーソナルコンピュータ100から見たスキャナ106の接続動作を説明する。パーソナルコンピュータ100上のオペレーティングシステム101(CPU121)は、USBインターフェイス104にUSBケーブル105を介して何らかの周辺デバイスが接続されると、スキャナ106の外部通信部であるUSBインターフェイス107にアクセスする。これによって周辺デバイスがスキャナであることを確定する。ここで、スキャナ106には、オペレーティングシステム101にマスストレージデバイスクラスとして認識される。マスストレージデバイスクラスデバイスを制御するためのマスストレージドライバ202は、パーソナルコンピュータに備えられており、新たにインストールする必要がないからである。それゆえ、本実施形態のスキャナ106は、USBマスストレージクラスインターフェイス206を有している。USB用マスストレージドライバ202を利用して、USBインターフェイスドライバであるUSBドライバ103とUSBインターフェイス104からUSBケーブル105を介してスキャナ106にアクセス可能になる。
【0044】
このように、マイクロソフトウィンドウズのオペレーティングシステム101などは、標準で、マスストレージクラスのUSBデバイスをサポートしている。CPU121がマスストレージクラスのUSBデバイスにアクセスする際、オペレーティングシステム101がマスストレージクラスのUSBドライバ(USB用のマスストレージドライバ202)を含んでいるため、パーソナルコンピュータ100への特別なデバイスドライバ等のインストールを必要としない。また、マスストレージクラスデバイスへの標準的なアクセスは、オペレーティングシステム101を使用して、管理者権限なしに実行されることが可能である。
【0045】
これによりスキャナ106は、オペレーティングシステム101に、マスストレージクラスデバイスとして認識されている。そのため、パーソナルコンピュータ100は、スキャナ106のUSBインターフェイス107、USBマスストレージクラスインターフェイス206、USBディスクドライブインターフェイス205を介して、管理者権限の有無に依存しないアクセス方法でスキャナ106にアクセスできる。ただし、パーソナルコンピュータ100は直接的に画像読み取り部112を制御することはできず、あくまで記憶装置としてスキャナ106にアクセスできるにすぎない。
【0046】
よって、パーソナルコンピュータ100にスキャナ106が接続されると、CPU121は、予めインストールされているUSB用のマスストレージドライバ202を起動する。また、スキャナ106が、USBマスストレージクラスインターフェイス206を有しているため、パーソナルコンピュータ100にスキャナ106を接続すると、CPU121及びオペレーティングシステム101は、スキャナ106をマスストレージデバイスとして認識する。さらに、CPU121及びオペレーティングシステム101は、スキャナ106のROM127やRAM203の特定の領域を外部記憶装置としてアクセスする。
【0047】
また、スキャナ106には、キャプチャアプリケーション起動プログラム150、スキャナ106を制御するための制御ファイル204を予めROM127またはRAM203の特定の領域に保存または展開し保持している。キャプチャアプリケーション210はROM130に保存されている。キャプチャアプリケーション210は
図4にあるように再結合可能な複数の分割されたデータの形式でROM130に保存されても良い。このとき分割されたデータの各々のデータサイズは、メモリコントローラ131で認識可能なサイズ以下である事が望ましく、また、領域切替部129で領域切替を行わずにROM130にアクセス可能なサイズ以下であることが、分割されたデータへのアクセス中に領域切替制御を行わずにすむため、より望ましい。キャプチャアプリケーション起動プログラム150はキャプチャアプリケーション210を起動させるためのソフトウェアであり、オペレーティングシステム101上で動作する。キャプチャアプリケーション210は、パーソナルコンピュータ100からの指令のもとにスキャナ106で画像読み取りを行うためのソフトウェアであり、オペレーティングシステム101上で動作する。
【0048】
パーソナルコンピュータ100は、ファイルシステム201に関連付けたファイルフォルダ内に、スキャナ106内に保存してある制御ファイル204とキャプチャアプリケーション起動プログラム150に対応するテーブルを形成する。
【0049】
パーソナルコンピュータ100でキャプチャアプリケーション起動プログラム150が実行されると、キャプチャアプリケーション起動プログラム150はあらかじめ決められた手順に従い、スキャナ106からキャプチャアプリケーション210を構成するための複数の分割されたデータを読み出し、パーソナルコンピュータ100上でそれらを結合し、キャプチャアプリケーション210として再構成し、パーソナルコンピュータ100のRAM124上で実行する。キャプチャアプリケーション起動プログラム150はキャプチャアプリケーション210を構成する分割されたデータがROM130内のどのオフセットアドレスから配置されているか、およびそれぞれのデータのサイズ、また分割されたデータの個数をあらかじめ知っている。
【0050】
スキャナ106からキャプチャアプリケーション210の分割されたデータを読み出す手段は、パーソナルコンピュータ100で実行されているキャプチャアプリケーション起動プログラム150がファイルシステム201に関連付けられたファイルフォルダ内に制御ファイル204を書き込む事でなされる。この制御ファイル204にはデータの読み出しであることと、読み出したい分割されたデータが保存されているROM130のオフセットアドレス、読み出すデータサイズが記載されている。
【0051】
一方、スキャナ112のCPU110は制御ファイル204を監視しており、このファイルに変更が加えられると、その内容を解釈し、該当する領域のデータをROM130から読み出しRAM203の特定の領域にデータファイルとして保管する。パーソナルコンピュータ100は生成されたデータファイルを一時保存ファイルとしてRAM124ないしハードディスク122に読み出し保管する。
【0052】
同様に、次の分割されたデータを読み出すためにキャプチャアプリケーション起動プログラム150は制御ファイル204に次のデータの読み出し情報であるROM130内のオフセットアドレス番地、読み出すデータサイズを書き込む。このようにしてキャプチャアプリケーション210を再結合するために必要な複数の分割されたデータをROM130から順次シーケンシャルに決められた個数分読み出す。すべての分割されたデータの読み出しが完了したら、キャプチャアプリケーション起動プログラム150はこれらを再結合し、キャプチャアプリケーション210として一時保存し、このキャプチャアプリケーション210を起動してスキャナ106の画像読み取りの指示を行う。
【0053】
ここではキャプチャアプリケーション起動プログラム150が分割されたデータのそれぞれのROM130内のオフセットアドレスと、データサイズと、分割された個数を事前に知っており、それらを順番に読み出す指示を制御ファイル204に書き込んでデータを読み出す例を示したが、この方法である必要はない。例えばキャプチャアプリケーション起動プログラム150は分割されたデータの個数のみを知っており、制御ファイル204にデータ読み出しである事と、何番目のデータを読み出すかを指示するだけでも良い。この場合スキャナ106のCPU110は分割された夫々のデータがROM130内のどの番地に配置されたかと、そのデータサイズを知っているため、データ読み出しである事と、読み出し開始のアドレスと読み出しのサイズをCPU110が特定することが可能な情報であれば何れの形式であっても構わない。
【0054】
<スキャナにおけるアプリケーションデータのROM130からの読み出し動作>
次に、スキャナ106でのアプリケーションデータの読み出し動作の概略を説明する。パーソナルコンピュータ100によって書き込まれた制御ファイル204をCPU110が解釈する。前述のように制御ファイル204にはデータの読み出しであることと、読み出す必要のある分割されたデータが保存されているROM130の先頭のオフセットアドレスが記載されている。ここでCPU110はメモリコントローラ131及び領域切替部129であるカウンタ140を使用して、ROM130内の該当するメモリアドレスからRAM203上に要求されたデータを展開する。このデータが展開されたRAM203上の領域はスキャナ106に接続されるパーソナルコンピュータ100で認識可能な領域である。このとき制御ファイル204にCPU110がデータ読み出しを完了させたことを示すデータを追記して、パーソナルコンピュータ100に通知しても良い。
【0055】
図5のフローチャートを用いてCPU110でのROM130からのアプリケーションデータ読み出しの詳細を示す。ここでは一例として制御ファイル204にて指定されたデータの読み出し開始アドレスが0x10_1000だった場合で説明する。
【0056】
CPU110は制御ファイル204を読み込み、指定されたデータの読み出し開始アドレスにおけるbit22から20を確認し、読み出すデータが保存されているROM130のバンクの番号を計算する(ステップS1001)。例えばbit22から20が[0,0,0]ならバンク0、[0,0,1]ならバンク1といったように計算する。ここでは0x10_1000が指定されていた場合、bit22から20が[0,0,1]となる。よってバンク番号は1となる。
【0057】
次に、計算によって求められたバンクの番号が領域切替部であるカウンタ140の出力と一致しているかを確認する(ステップS1002)。ここではカウンタ140の出力であるアドレス制御線22~20が[0,0,1]と一致しているかを確認する。もし一致していない場合は計算によって求められたバンクの番号に一致するようにカウンタ140を前述のように制御する(ステップS1003)。また、現在のカウンタ140の状態が不明な場合はステップS1003に行き、カウンタ140を一度リセットしてから指定されたバンク番号に一致するようにカウンタ140を制御する。ここではステップS1002で一致を確認したが、一致確認を行わずにステップS1003を実行してもよい。この場合、確認のために必要な処理や回路構成は不要となる。
【0058】
次に、指定されたデータの読み出し開始アドレスの下位20ビットを取り出す(ステップS1004)。つまり指定されたバンク内の先頭アドレスからのオフセットアドレスを初期アドレスとして計算する。ここでは指定されたデータの読み出し開始アドレスが0x10_1000であるため、初期アドレスは0x0_1000となる。
【0059】
次にCPU110およびメモリコントローラ131共通で認識しているROM130の先頭アドレスに先ほど計算した初期アドレスを足す。次に制御ファイル204にて指定されたデータの読み出しサイズを確認する。ここでは0x10_0000(1MByte)が指定されたと仮定している。指定されたバンク1の最終アドレスは0x1F_FFFFであるため、指定されたデータの読み出し開始アドレス0x10_1000と、読み出しサイズ1MByteからデータの最終アドレスは0x20_0FFFとなりバンク1の最終アドレスを超えてしまう。この場合はYesに進みステップS1010を実行する。
【0060】
ステップS1006でNo、つまり読取るデータの最終アドレスがバンクの境界を超えない場合について説明する。仮にデータの読み出し量が512kByteであったとして説明する。CPU110はROM130内のオフセットアドレス0x0_1000からデータを読み出す(ステップS1007)。このとき読み出したデータはRAM203に読み出され保管される。次に指定されたデータ読み出しサイズを読み出したかを確認し(ステップS1008)、読み出し完了していない場合はアドレスをインクリメントしてデータを読み出す(ステップS1007)。もし、指定されたデータの読み出しサイズ、ここでは512kByteを読み出した場合はステップS1008のYesに進みデータの読み出し処理は完了する。
【0061】
再びステップS1006の処理部での判断がYesだった場合、つまり読取るデータの最終アドレスがバンクの境界を超える場合に戻り説明する。ここではデータの読み出し開始アドレスが0x10_1000で読み出し最終アドレスが0x20_0FFFである。開始アドレスの属するバンクの境界までのデータサイズを計算する。つまりバンク1の最終アドレス0x1F_FFFFまでのデータサイズ(0x1F_FFFF-0x10_1000+1=0xF_F000(1020kByte))を計算する。
【0062】
次に、0x10_1000から順次アドレスをインクリメントしながら、バンクの境界まで1020kByte読み出すまでステップS1011~S1013を実行する。バンクの境界=1020kByteの読み出しが完了したら、ステップS1014に進む。
【0063】
S1014では制御ファイル204で指定されたデータの読み出しサイズまでデータを読み出したかを確認する。ここでは指定されたデータの読み出しサイズ1MByte=1024kByteに対して、これまでに読み出したデータ量が1020kByteのため全て読み出しておらず、NoでステップS1015に進む。ステップS1015では次に読み出すべきアドレスがバンクの境界を超えるため、領域切替部であるカウンタ140を制御してアドレス制御線22~20を切り替える。ここでは次にアクセスすべきアドレスが0x20_0000になるため、カウンタ140の出力が[0,1,0]になるようにCPU110はカウンタ140を制御する。
【0064】
次にアドレス更新に入る。S1011で最後に読み出したアドレスをインクリメントする。ここの例ではバンク2を示す0x20_0000に設定される。次に読み出しデータサイズを計算する(S1010)。ここではデータの最終読み出しアドレスが0x20_0FFFで現在のバンクであるバンク2の最終アドレス0x2F_FFFFを超えていないため、0x20_0FFF-0x20_0000+1=0x1000=4kByteが読み出しデータサイズとなる。以下前述のようにメモリリード処理S1011~S1014を実行しデータ読み出し処理を終了する。
【0065】
前述したようにROM130に配置されたデータは事前に読み出す順番に従ってアドレスインクリメントすることで読み出せるように配置されている。よって読み出し中に頻繁に領域切替部129であるカウンタ140を切り替える制御が不要なため、切り替えのためのオーバヘッド作業を減らすことが可能である。また、ここでは指定された読取りデータの最終アドレスがバンクの境界を超える例を例示したが、読取りアドレスがバンクの境界を超えないように、バンクの先頭アドレスから読み取りデータを配置し、読取データの最終アドレスが同一バンクの最終アドレスになるように読み出しサイズを設定することが、領域切替の実施回数を減らせ最も効率的になる。
【0066】
<コンピュータでの画像読み取り>
図6は、パーソナルコンピュータ100からの指令のもとにキャプチャアプリケーション210を利用してスキャナ106で画像読み取りを行うフローのフローチャートである。前述の接続動作に記載の内容に関しては簡略化して説明する。
【0067】
パーソナルコンピュータ100のCPU121は、スキャナ106が接続されたか否かを判断する(ステップS301)。CPU121は、周辺デバイス(スキャナ106)のインターフェイスに接続する(ステップS302)。
【0068】
CPU121は、周辺デバイスのインターフェイスクラスの情報をスキャナ106から取得する(ステップS303)。この情報により接続された周辺機器の種類が認識できる。
【0069】
上述したようにスキャナ106はUSBマスストレージインターフェイスを有している。そのため、パーソナルコンピュータ100にスキャナ106が接続されたとき、パーソナルコンピュータ100のCPU121は、USBマスストレージデバイスが接続されたと認識する(ステップS304)。また、スキャナ106は、USBマスストレージクラスインターフェイス206のサブクラスとして、USBディスクドライブインターフェイス205を有している。そのため、CPU121は、接続されたスキャナ106をディスクドライブとして認識する。
【0070】
オペレーティングシステム101は、スキャナ106内に保存してある制御ファイル204とキャプチャアプリケーション起動プログラム150に対応するテーブルを、ファイルシステム201に関連付けたファイルフォルダ内に形成する。このことによりCPU121は、スキャナ106内に格納してある制御ファイル204とキャプチャアプリケーション起動プログラム150を、ドライブレターを割り当てたディスクドライブ上のファイルとして扱うことができる(ステップS305)。これは、スキャナ106が、OSによってドライブレターを割り当てたディスクドライブとして認識されているからである。このときデータをやり取りするためのバッファファイルをファイルシステム201に関連づけたファイルフォルダ内に形成しても良い。
【0071】
ここで、
図7は、ドライブレターを割り当てられたディスクドライブ(スキャナ)をファイル管理ソフト(エクスプローラ)で開いた様子を示す図である。スキャナ106が内蔵するメモリは、フォルダ300に対応している。フォルダ300は、パーソナルコンピュータ100に接続されたキーボード/マウス125を使用して開くことができる。フォルダ300には、キャプチャアプリケーション起動プログラム150(ファイル名:Launcher.exe)と制御ファイル204(ファイル名:Control.dat)とが格納されている。
【0072】
図6に戻り、CPU121は、フォルダ300内のキャプチャアプリケーション起動プログラム150を起動するための指示が入力されたか否かを判定する(ステップS320)。この指示は、キーボード/マウス125からユーザによって入力されてもよいし、フォルダ300に格納されている不図示のautorun.inf等の自動実行情報ファイルによって指示されてもよい。例えば、マイクロソフトウィンドウズオペレーティングシステムにおいては、CDドライブ内にCD-ROMが挿入されると、オペレーティングシステムは「autorun.inf」と呼ばれる、CD-ROM上の自動実行情報ファイルを検出し、「autorun.inf」内で自動実行することが指定された実行ファイルを実行する。また、マイクロソフトウィンドウズオペレーティングシステムのあるバージョンにおいては、USBディスクドライブ内に、「autorun.inf」、という名称のファイルが存在すると、その内部に記述されたコマンドを自動実行する。すなわち、「autorun.inf」内に自動実行させたい実行ファイル名を記述しておけば、利用者にキーボード/マウス125を操作させることなく自動的に起動させることも可能である。よって、実行ファイルとして上述のLauncher.exeがautorun.inf内で記述されていることになる。
【0073】
キャプチャアプリケーション起動プログラム150を起動するための指示が入力されると、キャプチャアプリケーション起動プログラム150(CPU121)は、スキャナ106内の制御ファイル204にデータ読み出しコマンドを書き込む(ステップS322)。このとき、CPU121は、合わせて読み出し開始アドレスや読み出しサイズ等を制御ファイル204に同時に書き込んでも良い。ここで読み出すデータはキャプチャアプリケーション210を構成するためのデータである。キャプチャアプリケーション210は1個のデータであっても良いし、複数の再結合可能な複数のデータであっても良い。
【0074】
前述したようにスキャナ106のCPU110は、制御ファイル204を監視している。CPU110は、データ読み出し開始コマンドデータが制御ファイル204に書かれたことを検出すると、必要なデータをROM130からRAM203に読み出す。読み出したデータはRAM203上の制御ファイル204に書き込む。この制御ファイルはデータ読み出しコマンドを書き込んだ制御ファイルと同一であっても良いし、異なっても良い。
【0075】
パーソナルコンピュータ100のCPU121は、キャプチャアプリケーション210を構成するデータが制御ファイル204に書き込まれたか否かを監視する(ステップS323)。キャプチャアプリケーション210を構成するデータが制御ファイル204に書き込まれたことを検出すると、制御ファイル204からキャプチャアプリケーション210を構成するデータを読み出す。CPU121は、一時ファイルとしてこのデータをRAM124またはハードディスクドライブ122に保存する。
【0076】
キャプチャアプリケーション起動プログラム150(CPU121)はキャプチャアプリケーション210を構成するデータを全て読み出すまで、ステップS322に戻ってデータの読み出しを繰り返す(ステップS324)。キャプチャアプリケーション起動プログラム150(CPU121)はキャプチャアプリケーション210を構成する全てのデータを取得したら、必要に応じて再結合処理を行い、キャプチャアプリケーション210(CaptureApplication.exe)をRAM124またはハードディスクドライブ122に保存し、キャプチャアプリケーション210を起動する(ステップS325)。
【0077】
パーソナルコンピュータ100は、ディスプレイ126が接続されており、各種ユーザインターフェイス画面をディスプレイ126に表示する。すなわち、パーソナルコンピュータ100は、実際には、ソフトウェアの実行により、
図8に示すようなユーザインターフェイスを表示可能であり、ユーザは、このユーザインターフェイスによりスキャナ106の制御条件を適宜指定できるようになっている。
図8は、キャプチャアプリケーション210が起動したときに表示されるユーザインターフェイスの一例を示した図である。
【0078】
図8に示すようなキャプチャアプリケーション210のインターフェイスが表示されると、ユーザは、キーボード/マウス125を操作して、スキャン設定を実行する。例えば、読み取りモード(本実施形態では、白黒)、用紙サイズ(本実施形態では、A4)、解像度(本実施形態では、300dpi)、読み取り面(本実施形態では、両面)がキーボード/マウス125を使用して選択される。さらに、読み取った画像を保存するための画像ファイルのファイル名(本実施形態では、test1)もキーボード/マウス125を操作して入力される。最後に、スキャンボタン301がキーボード/マウス125を使用してクリックされる。
【0079】
図6の説明に戻り、スキャンボタン301がキーボード/マウス125によりクリックされると、キャプチャアプリケーション210(CPU121)は、スキャン設定を受け付け、スキャナ106内の制御ファイル204にスキャン設定(指示情報)を書き込む。さらに、CPU121は、スキャン開始コマンドデータ(指示情報)も制御ファイル204に書き込む(ステップS308)。
【0080】
スキャナ106のCPU110は、前述のように継続して制御ファイル204を監視している。CPU110は、スキャン設定およびスキャン開始コマンドデータが制御ファイル204に書かれたことを検出すると、制御ファイル204を読み込んで、そこに書かれているスキャン設定にしたがって画像読み取り部112を制御し、スキャンを開始する。以上のように、情報処理システムが接続されて所定の処理が実行される本スキャナは、スキャナを利用可能とするプログラムを格納すると共にスキャナを制御するための指示情報が書き込み可能なメモリと、情報処理システムに対してメモリからプログラムを送信する通信手段と、情報処理システムの前記プログラムの実行によりメモリに書き込まれた前記指示情報に基づいてスキャナを制御する制御手段とを備えていることを特徴としている。
【0081】
スキャナ106はスキャンを開始すると、画像読み取り部112で読み取った画像データをCPU110は制御ファイルに書き込む。この制御ファイルは、スキャン設定を可能としている制御ファイルや前述のデータ読み出しを可能とする制御ファイルと同一であってもよいし、異なってもよい。
【0082】
パーソナルコンピュータ100のCPU121は、画像データが制御ファイル204に書き込まれたか否かを監視する(ステップS309)。画像データが制御ファイル204に書き込まれたことを検出すると、制御ファイル204から画像データを読み出す(ステップS310)。CPU121は、指定された画像ファイル(本実施形態では、ファイル名「test1」)を作成し、ハードディスクドライブ122に記憶する(ステップ311)。
【0083】
以上説明した本実施形態においては、周辺機器としてスキャナを例に説明したが、本発明に係る周辺機器は、プリンタや複合機等の画像形成機能を有する装置でもよい。CaptureApplication.exeやautorun.exe等の制御ソフトウェアは、USBメモリとして認識されるRAM上のファイルの受け渡しで画像読取及び画像形成の少なくとも一方に関するコマンドの送出と、画像データのスキャナからの移動やプリンタ等への移動を可能とするドライバ機能を有するものであってもよい。またはドライバ機能を有するDLL(Dynamic Link Library)モジュール等の他のプログラムとリンクして、USBメモリとして認識されるRAM上のファイルの受け渡しを行うことによって、画像読取や画像形成に関するコマンドの送出と、画像データのスキャナからの移動やプリンタ等への移動を可能とするようにしてもよい。
【0084】
本実施形態ではキャプチャアプリケーション210を取得するためのキャプチャアプリケーション起動プログラム150がある構成を示したが、キャプチャアプリケーション起動プログラム150は必ず必要なわけではなく、キャプチャアプリケーション210と制御ファイル204がファイルシステムに関連付けられ、直接パーソナルコンピュータ100が直接アクセスできるようになっていても良い。
【0085】
また、本実施形態ではROM130は直接パーソナルコンピュータ100からアクセスできない前提で必ずRAM203へキャプチャアプリケーション210を構成するデータが読み出される構成としたが、ROM130に保存されたキャプチャアプリケーション210に直接パーソナルコンピュータ100からアクセスできるようにしても良い。この場合は前述のようにキャプチャアプリケーション起動プログラム150は不要となる。
【0086】
また、RAM203がCPU110で実行されるファームウェアを全て格納でき、且つ画像読み取りの為のワークスペースを確保できるときに、ROM130に保存されたキャプチャアプリケーション210がRAM203に全て展開可能であれば、スキャナ106の起動時にCPU110がROM130から領域切替部129とメモリコントローラ131を使用して順次データ読み出しを実行し、キャプチャアプリケーション210をRAM203に展開しても良い。
【0087】
以上説明したように、本実施形態によれば、パーソナルコンピュータ100にデバイスドライバやアプリケーションなどのソフトウェアをインストールすることなく、スキャナ106で画像読み取りを行う事を可能とするアプリケーションがスキャナ206のメモリコントローラ131で認識可能なサイズを超える場合であっても、領域切替部129を介してROM130を接続することで、メモリコントローラ131が認識可能なサイズを超えて保存可能で、読み出しも可能となる。また、ROM130からアプリケーション210を読み出す際はアプリケーション210を構成するデータを読み出し順に従って、メモリアドレスを順次インクリメントして読み出しできるようにデータ配置することで、領域切替部129でのアドレス切り替え回数を極力減らすことが可能で、ROM130に対するランダムアクセスである場合に比べて圧倒的に効率的に読み出すことが可能となる。
【0088】
<第2の実施形態>
第1の実施形態ではスキャナ内にROMが2つあり、一方にスキャナ106のCPU110で実行されるファームウェアを含むプログラムが保存され、他方にパーソナルコンピュータ100で実行されるキャプチャアプリケーション210に関するデータが保存されている形態を示した。本実施形態は1つのROMに全てのプログラム類が保存される例を示す。すでに説明した箇所に同一の参照符号を付与し、説明を簡潔にする。
【0089】
図9および
図10は第2の実施形態におけるハードウェアブロックを説明する図である。本図においてパーソナルコンピュータ100は第1の実施形態と同じである。一方スキャナ106はCPU110、ファームウェアやキャプチャアプリケーション210を保管するROM130、RAM203、読取部112、USBコントローラ128、USBインターフェイス107、リセット信号発生部142を備えている。ここでROM130はパラレルFlashROMである。
【0090】
制御部であるCPU110はメモリコントローラ131を内蔵し、メモリコントローラ131はROM130やRAM203の読み書きの制御を行う。ROM130はメモリコントローラ131を介してCS0(Chip Select:選択信号)で接続される読み書き可能な不揮発の半導体メモリである。
【0091】
ROM130はCPU110で実行されるスキャナ106の制御用ファームウェアやその他スキャナ106を制御するうえで必要なデータ類、およびパーソナルコンピュータ100で実行可能なキャプチャアプリケーション210等を保存する。よってROM130は十分に大きな保存領域である必要があり、メモリコントローラ131が管理可能なメモリサイズを超えるROMとなっている。
【0092】
RAM203はCPU110からメモリコントローラ131を介して読み書き可能な揮発性半導体メモリである。ここではメモリコントローラはROM130を制御するメモリコントローラ131と同一のものである形態としたが、別のRAM203専用のメモリコントローラを別途設けても良い。RAM203は制御用ファームウェアやデータを展開し、また画像読み取り部112から転送される画像データを一次保管するため等に使用され、かつパーソナルコンピュータ100からアクセスするための特別な領域を確保する必要がある。よってこれらを展開して保持可能なサイズのRAMである必要がある。
【0093】
ここでROM130のデータ保存構成について
図11を使用して説明する。ROM130はメモリコントローラ131が管理可能なサイズよりも大きなメモリ容量となっている。従ってCPU110はROM130をメモリコントローラ131が管理可能なメモリサイズ以下に分割して管理する。この分割された領域をバンクとして定義する。CPU110で実行される制御用ファームウェア(制御プログラム)はROM130内のバンク0に配置される。なお、制御用ファームウェアがバンク0に収まらない場合は別のバンクにあっても良い。いずれの場合であっても少なくともバンク0に保存される制御用ファームウェアは後述の領域切替部129を制御可能な機能を有していなくてはならない。且つ、バンク0は起動時に後述の領域切替部129の状態が初期状態である時に指定されている領域(バンク)でなくてはならない。つまり本実施形態ではバンク0が領域切替部129の初期状態での出力であると仮定している。つまりここではバンク0に制御用ファームウェアを保存する例を示しているが、領域切替部129が初期状態である時に指定している領域(バンク)に、少なくともCPU110が動作を開始するための初期化プログラムを含む制御用ファームウェアを保存している必要があり、その制御用ファームウェアは必ず領域切替部129を制御可能な機能を有していなくてはならない。
【0094】
ROM130のバンク1にはパーソナルコンピュータ100が使用するキャプチャアプリ起動プログラム150と制御ファイル204が保管される。ここで、制御用ファームウェアとキャプチャアプリ起動プログラム150及び制御ファイル204が別のバンクに保管される例を示しているが、例えばこれらをまとめてバンク0に配置しても良い。またバンク0だけで配置できない場合は前述のように配置できなかった部分をバンク1やバンク6といった別のバンクに保存しても良い。この場合でも、前述したように少なくとも領域切替部129を制御可能な機能は、領域切替部129が初期状態の時に示しているバンクに配置されていなくてはならない。
【0095】
ROM130のバンク2からバンク5までにパーソナルコンピュータ100が使用するキャプチャアプリケーション210が再結合可能な分割されたデータとして各バンク内に収まるサイズで分割保存される。つまりキャプチャアプリケーション210のそれぞれの分割データは複数のバンクに分割され且つアトランダムに配置されるのではなく、読み出し処理を実施するときにアドレスインクリメントで順次読み出せるように連続したアドレスに配置されている。また、分割データはバンクを跨がずに同一バンク内に配置されている。これによって分割データを読み出す時に一度領域切替部129を設定すると読み出し終わるまで領域切替部129の制御が不要となる。なお、ROM130に保存される内容は一部を除いて圧縮保存されても良い。
【0096】
つぎに領域切替部129について説明する。領域切替部129はROM130のバンクを切り替える為の機能を有する。本実施形態では領域切替部129はFPGA141とリセット信号発生部142で構成される。FPGA141はCPU110の通信部143と通信可能なように設定される。
【0097】
ここでFPGA141と通信部143との間の通信方式は調歩同期(UART:Universal Asynchronous Receiver/Transmitter)やSPI(Serial Peripheral Interface)といった汎用的な通信方式が考えられる。ここでは通信の方式に特に制限を掛けるものではなく、少なくともCPU110からFPGA141に対してデータを送信できる方式であればどのような方式でも良い。CPU110がアドレス制御線を切り替えたければ通信部143(領域切替通信部)を介して切り替えの指示をFPGA141に送信することで、FPGA141はアドレス制御線22~20をCPU110から指示されたように出力する。
【0098】
また、FPGA141にはリセット信号発生部142からリセット信号が入力される。リセット信号の発生タイミングはスキャナ106の起動時やCPU110の再起動時等である。リセット信号が入力されるとFPGA141は少なくともアドレス制御線22~20を既定の初期値にセットする。ここでは初期値はバンク0を表す[0,0,0]であるものとする。ここでアドレス制御線22~20は第1の実施形態同様にROM130のバンク番号を表している。またFPGA141においてこれらの機能を構成する方法に制限は無く、通信部143から指示された内容を解釈してアドレス制御線20~22の出力制御を行え、リセット信号発生部142からのリセット信号で状態を初期化できれば、その実現方法は特に問わない。
【0099】
また、FPGA141はリセット信号発生部142からのリセット信号で初期状態にリセットできるようにしたが、そのほかにもCPU110からのリセット信号を直接受信することでリセットできるようにしても良いし、通信部143からのリセット指示を元にリセットできるようにしても良いし、CPU110からの制御信号をリセット信号発生部142に入力してリセット信号発生部142からリセット信号をFPGA141に対して出力してFPGA141がリセットできるようにしても良い。
【0100】
また、本実施形態ではFPGA141のアドレス制御線20~22出力の初期値はバンク0を表す値にセットするようにしたが、別のバンクを示す値にセットしても良い。ただし、この場合、前述したように初期値が示すバンクにCPU110が起動時に最初に実行するべき制御用ファームウェアと領域切替部129を制御可能なファームウェアが少なくとも保存されていなくてはならない。
【0101】
ここでは領域切替129がFPGAによって構成される例を示したが、これはFPGAに限らず、内部の論理回路を書き換え可能なデバイスであるPLD(Programable Logic Device)であっても良く、またマイクロコントローラ、いわゆるマイコンなど、内部の論理回路を変更可能な集積回路などの電装部品であればよい。
【0102】
<スキャナの起動動作>
スキャナ106の電源が投入されると、リセット信号発生部142は、装置への電源供給状態を監視しており、リセット信号をCPU110、FPGA141、及びその他接続された各部に対して出力する。一定時間リセット状態を維持した後、リセット信号発生部142はリセットを解除する。これによりCPU110は起動動作を開始する。CPU110はROM130から制御ファームウェアを読み出し、実行する。このときFPGA141の出力は[0,0,0]でバンク0を表しているので、ROM130のバンク0から読み出しがなされる。
【0103】
ところでCPU110が最初に実行する制御ファームウェアに含まれる初期化プログラム部分はROM130から順次読み出されながらCU110にて実行されるが、この初期化プログラム内でRAM203へのアクセスが可能となるように制御を行う。これにより、CPU110はROM130の制御ファームウェアを全てRAM203上に読み出し展開する。展開が完了したところでCPU110は制御ファームウェアの読み出し先をRAM203に変更してRAM203上に展開された制御ファームウェアを読み出しながら動作する。これによってROM130から制御ファームウェアを逐次読み出しながら実行するよりも、より高速に読み出しが可能となり、効率的に動作可能となる。
【0104】
一方、FPGA141はリセット信号が解除されると不図示のコンフィギュレーションROMからデータを読み出し、あらかじめ決められた機能を実現できるように内部回路構成を設定する。これによって通信部143との通信や、その通信内容の解釈によるアドレス制御線20~22の制御が可能となる。FPGA141はこれらが完了すると初期状態にセットされており、アドレス制御線20~22の出力は[0,0,0]となっている。つまり制御用ファームウェアが配置されるROM130のバンク0部分を指している。よって前述したようにCPU110は通信部143を制御することなく、制御用ファームウェアを保存したROM130のバンク0へアクセスすることが可能であり、ROM130から制御用ファームウェアを読み出し、実行することが可能である。
【0105】
ここで再度CPU110の起動プロセスに戻る。制御用ファームウェアには通信部143を使用してFPGA141と通信するプログラムが含まれており、正常にCPU110が起動すると通信部143を使用してバンクを切り替えることが可能となる。前述のように全ての制御用ファームウェアをRAM203に読み出したら、通信部143を使用してFPGA141に対してバンクを切り替える指示を出す。ここではバンク1([0,0,1])に切り替えるように指示を出す。これによってROM130のアドレス制御線20~22は[0,0,1]になるため、CPU110がメモリコントローラ131を介してROM130にアクセスすると、ROM130のバンク1の部分にアクセスすることとなる。
【0106】
つまりCPU110が0x0_0000にアクセスするとROM130では0x10_0000にアクセスすることができるようになる。これにより、バンク1に保存されたキャプチャアプリケーション起動プログラム150(Luncher.exe)と制御ファイル204(Control.dat)を読み出し、RAM203上の特定の領域に展開する。このときパーソナルコンピュータ100に実装されるOS(Operating System)に応じて複数の特定領域に異なる制御ファイル、異なるキャプチャアプリケーション起動プログラムをRAM203に展開しても良い。
【0107】
ここでは制御ファイル204とキャプチャアプリケーション起動プログラム150をROM130からRAM203上に展開配置することとしたが、RAM203に展開せずROM130上に配置したままであっても構わない。
【0108】
また、キャプチャアプリケーション起動プログラム150と制御ファイル204のいずれか一方だけRAM203に展開しても良い。しかしながら一般的にはRAM203上に展開し配置する方がCPU110からのアクセスを高速に行えることから動作速度上有利であることは自明である。
【0109】
<コンピュータの動作>
次にパーソナルコンピュータ100の動作を
図13のフローチャートを用いて説明する。キャプチャアプリケーション起動プログラム150の起動(ステップS321)からデータファイルを結合してキャプチャアプリケーションを起動(ステップS325)、までの処理以外は
図6に示した第1の実施形態と同じため説明を割愛する。
【0110】
パーソナルコンピュータ100はキャプチャアプリケーション起動プログラム150を起動する(ステップS321)。パーソナルコンピュータ100のCPU121はスキャナ106内の制御ファイル204にデータ読み出しコマンドを書き込む(ステップS322)。このとき、CPU121は、データ読み出しコマンドに合わせてシーケンス番号0を制御ファイル204に書き込む。ここで読み出すデータはキャプチャアプリケーション210を構成するための分割されたデータである。キャプチャアプリケーション210は複数の再結合可能な複数のデータであることを想定しているが、分割されていないキャプチャアプリケーション210であっても良い。
【0111】
スキャナ106のCPU110は、制御ファイル204を監視しており、CPU110は、データ読み出しコマンドが制御ファイル204に書かれたことを検出すると、データ読み出しコマンドが書き込まれていた場合は、合わせて書き込まれたシーケンス番号から、読み出す必要のある分割されたデータをROM130からRAM203に読み出す。読み出したデータはRAM203上の制御ファイルに書き込む。この制御ファイルはデータ読み出しコマンドを書き込んだ制御ファイル204と同一であっても良いし、異なるファイルであっても良い。また、このときこのデータファイルがキャプチャアプリケーション210を構成するデータの最終データであるか否かを示す情報を制御ファイルに付与する。もしくは別の制御ファイルに同様の内容を書き込んでも良い。
【0112】
パーソナルコンピュータ100のCPU121は、キャプチャアプリケーション210を構成するデータが制御ファイルに書き込まれたか否かを監視する(ステップS323)。ここではデータは制御ファイル204に書き込まれるものとする。キャプチャアプリケーション210を構成するデータが制御ファイル204に書き込まれたことを検出すると、制御ファイル204からキャプチャアプリケーション210を構成するデータを読み出す(ステップS350)。CPU121は、一時ファイルとしてこのデータをRAM124またはハードディスクドライブ122に保存する。キャプチャアプリケーション起動プログラム150(CPU121)は制御ファイルに最終データを示す情報が付記されているかを確認する(ステップS351)。最終データであった場合ステップS325へ進み処理を継続する。一方、最終データではなかった場合は、ステップS322に戻ってデータ読み出しコマンドとシーケンス番号を1インクリメントして制御ファイル204に書き込み、データの読み出しを繰り返す(ステップS350)。
【0113】
<スキャナでのアプリケーションデータの読み出し動作>
次に、スキャナ106での動作の詳細について
図12と
図14を用いて説明する。パーソナルコンピュータ100によって書き込まれた制御ファイル204に対し、CPU110がその内容を解釈する。前述のように制御ファイル204にはデータの読み出しであることと、読み出しのシーケンス番号が記載されており、CPU110は読み出し手順におけるシーケンス番号を取得する。
【0114】
取得したシーケンス番号に対応するデータのバンク番号、開始アドレスとサイズを
図12のあらかじめ決められたテーブルから取得する(ステップS1101)。バンク番号は開始アドレスの上位アドレス20~22から計算によって求めても良い。シーケンス0番の場合、バンクが2、開始アドレスが0x20_0000、サイズが0x10_0000(1MByte)の様にシーケンス0番の情報をテーブルから取得する。
【0115】
次に取得したバンクの番号が領域切替部であるFPGA141の出力と一致しているかを確認する(ステップS1102)。ここでは通信部143を用いてFPGA141の出力であるアドレス制御線20~22が[0,1,0]と一致しているかを確認する。もし一致していない場合は設定すべきバンクの番号に一致するように通信部143を用いてFPGA141に[0,1,0]を出力するように指示する(ステップS1102)。ここではFPGA141の出力が[0,1,0]であるかFPGAに通信によって問い合わせる例を示したが、FPGA141の出力を確認せずに[0,1,0]を出力するように通信部143を用いて指示を出しても良い。
【0116】
次に、指定されたデータの読み出し開始アドレスの下位20ビットを取り出す(ステップS1104)。つまりバンク内の先頭アドレスからのオフセットアドレスを計算し初期アドレスとする。ここでは指定されたデータの読み出し開始アドレスが0x20_0000であったため、初期アドレスは0x0_0000となる。
【0117】
次にCPU110のメモリマップにマッピングするためにCPU110およびメモリコントローラ131共通で認識しているROM130の先頭アドレスに先ほど計算した初期アドレスを足し、CPU110はROM130内のオフセットアドレス0x0_0000からデータを読み出す(ステップS1105)。このとき読み出したデータはRAM203の制御ファイル204に保管される。
【0118】
次に指定されたデータ読み出し量を読み出したかを確認し(ステップS1106)、読み出し完了していない場合はアドレスをインクリメントしてデータを読み出す(ステップS1107)。もし、指定されたデータの読み出し量である1MByteを読み出した場合はステップS1108に進む。
【0119】
ここで、今回読み出したデータがキャプチャアプリケーションの分割されたデータの最終データであるか否かを
図12のテーブルの最終データ列から確認し(ステップS1108)、最終データであった場合Yesに進み、制御ファイル204に最終データを示す情報を付加し(ステップS1109)、データの読み出し処理は完了する。ステップS1108において最終データで無かった場合はNoに進みデータの読み出し処理は完了する。ステップS1108でNoであった場合でも制御ファイル204に最終データでないことを示す情報を付加しても良い。
【0120】
以上のように、領域切替部129に接続されたROM130にCPU110で実行するファームウェアと外部の制御機器であるパーソナルコンピュータ100で実行されるアプリケーションや制御ファイルおよびデータをROM130に保管し、かつ領域切替部129の初期値が示すバンクにCPU110で起動時に実行する制御ファームウェアと領域切替部129の制御ファームウェアを配置することで、より複数のROMが不要なため簡易で安価な構成とすることが可能となる。また、パーソナルコンピュータ100で実行されるアプリケーションや、制御ファイル及びキャプチャアプリケーションの分割されたデータは、読み出される順番となるようにROM130内に配置されており、領域切替部129の切替制御が頻繁に入らないため、非常に効率的に動作可能となる。
<第3の実施形態>
【0121】
ここでは領域切替部129が汎用出力ポートで構成される例を示す。前述の実施形態と同様な箇所に関しては説明を省略する。
【0122】
図16を使用して本実施形態のROM130と領域切替部129の構成を説明する。CPU110は汎用出力ポート301を有している。汎用出力ポート301はCPU110が出力レベルを任意に設定可能な出力端子である。本実施形態では汎用出力ポート301を領域切替部129として使用する。汎用出力ポート301は複数あり、本実施形態では3個備えられている。この3個の汎用出力ポート301を夫々アドレス制御線22~20に割り当てている。ROM130の領域(バンク)切り替えはCPU110が汎用出力ポートから出力される汎用出力信号の出力レベルを設定することでなされる。CPU110はROM130から読取を実施する場合は、汎用出力ポート301を制御してアドレス制御線22~20を設定してからメモリコントローラ131を介して読取動作を実施する。
【0123】
以上のように本実施形態では、外付けの回路要素が不要となるため、他の実施形態に比べより安価に機能実装が可能となる。
<第4の実施形態>
【0124】
第4の実施形態はスキャナ106における領域切替部129およびROMの構成が異なる形態である。ここでは異なる部分の構成の説明と制御動作の違いのみを説明し、その他の部分は他の実施形態で説明した内容の組み合わせとなるため説明を省略する。
【0125】
図17は第4の実施形態におけるスキャナ106のハードウェアブロックの抜粋図である。本実施形態ではROM1(311)からROM8(318)まで8個のROMで構成されている。それぞれのROMはメモリコントローラ131が制御可能な容量以下のパラレルFlashROMである。それぞれのROMは同じ容量であっても良いし、それぞれ異なる容量であっても良い。なお、図中各ROMに接続されるアドレス制御線やData線その他制御線は簡略化の為、不図示とした。
【0126】
ラッチ回路319はメモリコントローラ131の選択信号であるCS1とData線、書き込み許可信号であるWEと、リセット信号発生部142からのリセット信号が接続される。ここではData線はData2から0の3本が接続されるとする。ラッチ回路319は選択信号CS1で選択された時に、書き込み許可信号であるWEが指示されると接続されたData線3本の状態をラッチする。このラッチ回路319の出力信号330(LT02~LT00)は次にData線3本をラッチするまで、もしくはリセット信号発生部142からリセット信号が入力されるまで保持され続ける。またリセット信号142からリセット信号が入力されるとラッチ回路319はDecoder320への出力信号330(LT02~LT00)を[0,0,0]とする。
【0127】
次にDecoder320について説明する。Decoder320にはラッチ回路319から入力される3本の入力信号(LT02~LT00)とメモリコントローラ131からの選択信号CS0が入力される。Decoder320は8本の出力を有しており、それぞれがROM1(311)からROM8(318)までの選択信号であり、ROM1(311)からROM8(318)に接続される。ROM1(311)には選択信号CSE1を、ROM2(312)には選択信号CSE2のように出力し接続している。
【0128】
Decoder320はラッチ回路319からの出力信号330(LT02~LT00)をデコードし、メモリコントローラ131からの選択信号CS0が選択されている期間において、そのデコード結果に基づいて出力である選択信号CSE1からCSE8までのいずれかを選択するように動作する。つまり選択信号CS0が選択されている期間において、ラッチ回路319の出力信号330(LT02~LT00)が[0,0,0]であった場合、CSE1のみ選択するように出力する。同様に、出力信号330(LT02~LT00)が[0,0,1]であった場合、CSE2のみを選択するように出力し、出力信号330が[1,1,1]であった場合はCSE8のみが選択されるように出力する。このように入力の値と選択信号CSE1から8を1対1で対応付けて選択出力する。
【0129】
次にCPU110からの、ROM1(311)からROM8(318)までのアクセス方法について説明する。CPU110がROM1にアクセスしたい場合は、まずDecoder320からの出力のCSE1が選択されるようにラッチ回路を選択する。メモリコントローラ131に対して選択信号CS1が接続されたラッチ回路319に対してData2から0が[0,0,0]になるようにし、書き込み許可信号WEを発行する。このときアドレス制御線の設定は特に問わない。これによりラッチ回路319は接続されたData線2から0をラッチし、Decoder320対して出力信号330(LT02~LT00)に[0,0,0]を出力する。
【0130】
次にCPU110はROM1(311)の特定のアドレスに対する書き込みもしくは読み出し動作をメモリコントローラ131を介して実施する。メモリコントローラ131はROMへのアクセスを開始すると、選択信号であるCS0を選択する。これによってDecoder320は、選択信号CS0が選択されている期間において、ラッチ回路319から出力される出力信号330(LT02~LT00)、ここでは[0,0,0]、から選択信号CSE1のみを出力する。これによってROM1(311)が選択された状態となり、メモリコントローラ131はROM1(311)へアクセスが出来る。
【0131】
同様に、ROM8(318)へのアクセス時は、まずラッチ回路319に対してData2から0が[1,1,1]の書き込み動作を実施し、つぎにメモリコントローラ131でのROMへのアクセスを実施するとラッチ回路319とDocoder320の動作により選択信号CSE8が選択され、ROM8(318)へのアクセスが実施される。
【0132】
次に、ROM1(311)からROM8(318)の保存内容について説明する。ROM1(311)にはCPU110で実行され起動時に実行される初期化プログラムを含む制御用ファームウェアが保存されている。少なくともこの制御用ファームウェアはラッチ回路319とデコーダ320を使用した領域切替機能を実行可能な機能が備えられている必要がある。
【0133】
なお、ここではROM1(311)にこれらが保管されることとしたが、これは別のROMであっても良い。ただし、リセット信号発生部142がリセット信号を発生した直後にラッチ回路319が出力するデータに対応した選択信号CSEが接続されているROMであればよい。以下はROM1(311)に制御用ファームウェアが入っているとして説明を進める。
【0134】
パーソナルコンピュータ100が使用するキャプチャアプリケーション起動プログラム150と制御ファイル204はROM2(312)に保管される。ここではROM2(312)に保管することとしたがROM1(311)に制御用ファームウェアと共に保管可能であればROM1(311)に保管しても良い。
【0135】
ROM3(313)からROM8(318)にはパーソナルコンピュータ100が使用するキャプチャアプリケーション210が、再結合可能な分割されたデータとして各ROMに収まるサイズで分割保存される。キャプチャアプリケーション210の分割された夫々のデータは複数のROMに分割保存され、読み出し処理を実行する場合に同一ROM内で、アドレスインクリメントすることにより順次読み出し可能なように連続したアドレスに配置されている。これによって分割されたデータを読み出す時に、領域切替部129であるラッチ回路319へのアクセスを1度実行すれば、その読み出しが完了するまでラッチ回路319へアクセスしてROMを切り替える必要が無い。
【0136】
次にスキャナの起動動作を説明する。スキャナ106の電源が投入されると、リセット信号発生部142はリセット信号をCPU110、ラッチ回路319およびその他接続された各部に対して出力する。一定時間リセット状態を維持した後、リセット信号発生部142はリセットを解除する。これによりCPU110は起動動作を開始する。CPU110はROM1(311)から初期化プログラムを含む制御ファームウェアを読み出し、実行する。
【0137】
ここでCPU110が最初に実行する制御用ファームウェアに含まれる初期化プログラム部はROM1(311)から順次読み出しがなされ、CPU110で実行される。初期化プログラムではRAM203へのアクセスが可能となるように制御がなされる。これによってRAM203に対してROM1(311)から制御ファームウェアが展開され、展開後、CPU110はRAM203から制御ファームウェアを読み出しながら実行することが可能となる。
【0138】
次にスキャナ106におけるパーソナルコンピュータ100からキャプチャプリケーション210のデータの読み出し動作を説明する。パーソナルコンピュータ100によって書き込まれた制御ファイル204に対し、CPU110がその内容を解釈する。制御ファイル204にはデータの読み出しであることと、読み出しのシーケンス番号が記載されている。
【0139】
CPU110は
図18のデータ保持テーブルを参照して、シーケンス番号に記載のデータが、どのROMに配置されているかと、そのデータが保存されているスタートアドレスのROM内のオフセットアドレス、およびデータのサイズを取得する。これに応じてCPU110はラッチ回路部319に対して選択すべきROMの選択信号が出力されるように書き込み指示をメモリコントローラ131に出力する。次にCPU110はメモリコントローラ131を使用してROM内のスタートアドレスからデータサイズ分のデータを読み出しRAM203の制御ファイル204に書き込む。
【0140】
以上によれば、複数のROMで保存領域を容易に増大する事が可能となり、また、データの配置が連続しており、且つ読み出しのデータは同一のROM内部に保存されるので、読み出し中に領域切替部129を制御する必要が無いため効率よく読み出しが可能となる。
【0141】
<第5の実施形態>
第5の実施形態はパーソナルコンピュータ100に実装されうる複数のOSに対応する場合について説明する。なお、簡略化の為、他の実施形態で説明した箇所との差分のみを説明する。
【0142】
スキャナ106は領域切替部として
図10に記載の第2の実施形態における領域切替部129(FPGA141及びリセット信号発生部142)を持つものとする。ただし本実施形態ではFPGA141の出力のアドレス制御線が22~20ではなく23~20としてなる。以下はアドレス制御線23~20を持っているものとして説明する。
【0143】
ROM130の内部アドレスの状態を
図19を用いて説明する。本実施例ではスキャナ106に接続されるパーソナルコンピュータ100のOSが複数である場合の実施形態である。ROM130はバンク0から15までの領域を有している。バンク0にはCPU110で実行される制御用ファームウェアが配置される。バンク1にはキャプチャアプリケーション起動プログラム150と制御ファイル204が保存される。
【0144】
ここで、キャプチャアプリケーション起動プログラム150は複数のOSに対応するために、OS毎で異なるアプリケーション起動プログラムを複数保存している。ここではOS1用のLauncher_w.exe、OS2用のLauncher_w64.exe、OS3用のLauncher_.app等である。
【0145】
バンク2から4にはパーソナルコンピュータ100のOS、仮にOS1とする、OS1用のキャプチャアプリケーションの分割データが保存される。バンク5から7には別のOS、仮にOS2とする、で動作するパーソナルコンピュータ100で使用するOS2用のキャプチャアプリケーションの分割データが保存される。バンク8から10には、さらに別のOS、仮にOS3とする、で動作するパーソナルコンピュータ100で使用するOS3用のキャプチャアプリケーションの分割データが保存される。
【0146】
CPU110は
図22(a)に示されるROM130のバンク2から15までの状態を示すテーブルを保持している。このテーブルにはバンク毎の、有効情報、シーケンス番号、対応するOS、最終データ情報、キャプチャアプリケーションの分割データ番号、スタートアドレス、データサイズが記載されている。有効情報はアプリケーション起動プログラム150の分割された有効なデータが書き込まれているか否かを示している。
【0147】
本実施形態においてパーソナルコンピュータ100にスキャナ106が接続され、ドライブレターを割り当てられたディスクドライブ(スキャナ)としてファイル管理ソフトで開くと
図20のように表示される。前述のようにスキャナ106は複数のOSに対応したキャプチャアプリケーション起動プログラム150を有しており、ここではOS1用のLauncher_w.exe(150A)、OS2用のLauncher_w64.exe(150B)、OS3用のLauncher_m.app(150C)をファイルとして表示している。
【0148】
なお、
図20においては複数のOSに対応したキャプチャアプリケーション起動プログラムが全て表示されているが、スキャナ106を複数のファイルシステムに対応させ、パーソナルコンピュータ100のOSによって認識可能なファイルシステムが異なることを利用して上記キャプチャアプリケーション起動プログラム150Aから150Cを適切なファイルシステム上に配置することも可能である。換言すると、パーソナルコンピュータ100のOSによって認識可能なファイルシステムに対応した(実行可能な)キャプチャアプリケーション起動プログラムのみが表示されるように構成されていてもよい。
【0149】
パーソナルコンピュータ100のOSに応じた適切なキャプチャアプリケーション起動プログラム150のいずれかが実行されるとキャプチャアプリケーション210の分割されたデータをスキャナ106から繰り返し読み出して再結合してキャプチャアプリケーション210を実行する動作を行う。このとき、キャプチャアプリケーション起動プログラム150は制御ファイル204にデータ読み出しコマンドと合わせて、読み出しのシーケンス番号、及びパーソナルコンピュータ100のOSの情報を書き込む。ここで書き込まれるパーソナルコンピュータ100のOS情報は実行されているキャプチャアプリケーション起動プログラム150を示す情報であっても、キャプチャアプリケーション起動プログラム150がOSから取得したOSの情報であっても良い。つまりスキャナ106に保存されているOS毎に異なるキャプチャアプリケーション210のどれを読み出すべきかが特定できる情報であればよい。
【0150】
次にパーソナルコンピュータ100からスキャナ106がキャプチャアプリケーション210の分割されたデータを要求された時の動作を説明する。パーソナルコンピュータ100によって書き込まれた制御ファイル204に対し、CPU110がその内容を解釈する。前述のように制御ファイル204にはデータの読み出しであることと、読み出しのシーケンス番号、およびパーソナルコンピュータ100のOS情報が記載されている。
【0151】
CPU110は
図22(a)に示したテーブルを参照し、対応OSとシーケンス番号から読み出すデータが保存されているバンク番号とスタートアドレス、データサイズ、それから最終データであるか否かを示す情報を取得する。例えば制御ファイル204にシーケンス番号0で対応OSがOS2であることが記載されていた場合は
図22(a)のテーブルよりバンク番号が5でスタートアドレスが0x50_0000、データサイズが0x10_0000、かつ最終データではないことを取得する。
【0152】
これらの情報から、前述したようにROM130と領域切替部129であるFPGA141の出力を制御して読み出すべきデータをRAM203上の制御ファイル204に書き出す。仮に制御ファイル204に記載のコンピュータ100のOS情報が
図22(a)のテーブルに記載の対応OSに無い場合は、制御ファイル204に非対応OSであることを記載してパーソナルコンピュータ100に通知し、パーソナルコンピュータ100上で非対応である旨の警告を明示しても良い。
【0153】
以上によりスキャナ106に接続されるパーソナルコンピュータ100のOSが異なる場合であっても、OSに対応した適切なキャプチャアプリケーション210の分割データをキャプチャアプリケーション起動プログラム150が読み出すことが可能となり、スキャナ106は複数OSでのスキャン動作が可能となる。
【0154】
次にスキャナ106のROM130に書き込まれているキャプチャアプリケーション210の分割データを書き換える場合について説明する。ここでは接続されたパーソナルコンピュータ100上で実行される書換アプリケーションによって書き込まれるものとする。書換アプリケーションはパーソナルコンピュータ100に別途インストールされても良いし、スキャナ106に保管されるキャプチャアプリケーション210やキャプチャアプリケーション起動プログラム150の一機能として実現されても良い。またこれとは別のアプリケーションをスキャナ106に保存し、キャプチャアプリケーション起動プログラム150やキャプチャアプリケーション210の様にパーソナルコンピュータ100に提供しても良い。
【0155】
スキャナ106におけるキャプチャアプリケーション210の分割データの書換シーケンスを
図21と
図22を使用して説明する。スキャナ106のCPU110は書き換えが必要なデータの書換処理を指示されると、同時に書き込むデータの容量や対応するOSの情報を通知され、その書き込むデータの容量からROM130における必要なバンク数を計算する(ステップS2101)。
【0156】
次に、CPU110は
図22(a)にあるテーブルの有効フラグ部を確認して無効(=空き)であるバンク数を確認し、要求されているバンク数より空きであるバンク数が多いかを確認する(ステップS2102)。このとき空きであるバンク数が要求されているバンク数より少ない場合はNoに進み、必要な領域が確保できなかったとして書き込みを実施せずに終了する。空きであるバンク数が十分あった場合はYesに進み、CPU110の書き込みデータとして受け取ったデータを順次、空きであるバンクに書き込んでいく(ステップS2103)。
【0157】
全書き込みデータが書き込まれるまで書き込みを繰り返す。書き込みが完了すると、テーブルに対し書き込んだ内容を反映させる。このとき有効フラグに関しては無効のままとする(ステップS2105)。例えばOS1用の新しいデータを追加する場合は
図22(c)のようなテーブルとなる。またこれまで書き込まれていなかったOS4用の新しいデータを追加する場合は
図22(e)のようなテーブルとなる。
【0158】
次にテーブルの有効フラグが有効のバンクにおいて、パーソナルコンピュータ100から書き込み実施時に指定された対応するOSと同じOSが対応OS部に記載されているかを確認する(ステップS2106)。
【0159】
Noであった場合、つまり
図22(e)のような状態のテーブルになっている場合は、ステップS2108に進み、新しいOS用のキャプチャアプリケーション210の分割データとしてテーブルの有効フラグを有効に変える。これによってテーブルは
図22(f)のようになり、新たにOS4用のデータが追加される。
【0160】
一方ステップS2106でYesであった場合、つまり
図22(c)のような状態のテーブルになっていた場合、ステップS2107に進む。この場合は古いOS用のキャプチャアプリケーション210の分割データを今回書き込んだ新しい分割データに差し替えることとなる。ここでは今回書き込んだデータの有効フラグを有効にすると同時に古いOS用の分割データが保存されているバンクの有効フラグを無効にする。つまり
図22(d)のように、これまでOS1用として書き込まれていたバンク2から4の有効フラグが無効になり、新たにOS1用として書き込まれたバンク11から13が有効となる。これによって書換処理が完了する。
【0161】
以上により、キャプチャアプリケーション210の分割データの書き込みが可能となり、新しいOSに対応するキャプチャアプリケーション210をROM130に書き込むことが可能となる。またキャプチャアプリケーション210の更新も可能となる。この方式であれば、書換途中に不用意にスキャナ106の電源が切られる等で書換作業が中断せざるを得なかった場合であっても、キャプチャアプリケーション210のデータは常に保持されているため、データを失うことが無い。また、ここでは書換作業について説明したが、消去作業も可能で、消去すべきキャプチャアプリケーション210の分割データを保存するバンクの有効フラグを無効にするだけで実施可能である(
図22(b)参照)。
【0162】
実施形態1では領域切替部129がカウンタで構成され、かつ制御用ファームウェアを保存するROM127とパーソナルコンピュータ100で実行されるアプリケーション210を保存するROM130が別である形態を示した。一方、実施形態2では領域切替部129がFPGAで構成され、制御用ファームウェアとパーソナルコンピュータ100で実行されるアプリケーション210が領域切替部129を介して接続されるROM130にある形態を示した。また他の実施形態でも様々な構成を示した。これらの構成は組み合わせ自由であり、実施形態1に記載の領域切替部129と実施形態2に記載のように制御用ファームウェアとパーソナルコンピュータ100で実行されるアプリケーション210が領域切替部129を介して接続されるROM130に配置されている組み合わせでも良い。逆に実施形態2に記載の領域切替部129と実施形態1に記載のように制御用ファームウェア用のROM127とパーソナルコンピュータ100で実行されるアプリケーション210が領域切替部129を介して接続されるROM130に別々に配置されている組み合わせでも良い。
【0163】
つまり本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形(各実施例の有機的な組合せを含む)が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。また、上述した各種処理や構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されていてもよい。
【符号の説明】
【0164】
100 パーソナルコンピュータ
106 スキャナ
107 USBインターフェイス
110 CPU
112 画像読み取り部
127、130 ROM
128 USBコントローラ
129 領域切替部
131 メモリコントローラ
150 キャプチャアプリケーション起動プログラム
203 RAM
204 制御ファイル
210 キャプチャアプリケーション