JPH1083342A - 情報処理装置およびその方法、オペレーティングシステム、記憶媒体 - Google Patents
情報処理装置およびその方法、オペレーティングシステム、記憶媒体Info
- Publication number
- JPH1083342A JPH1083342A JP9189734A JP18973497A JPH1083342A JP H1083342 A JPH1083342 A JP H1083342A JP 9189734 A JP9189734 A JP 9189734A JP 18973497 A JP18973497 A JP 18973497A JP H1083342 A JPH1083342 A JP H1083342A
- Authority
- JP
- Japan
- Prior art keywords
- information processing
- processing apparatus
- memory
- file
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
- Memory System (AREA)
Abstract
張することが可能な情報処理装置、さらに、ファームウ
エアのバージョンに依存しない追加ソフトウエアの開発
を可能にするソフトウエアの構造を提供する。 【解決手段】 メモリの断片化問題を解決するメモリ管
理、ファイル管理等の改良により目的を実現する。
Description
ら追加可能な情報処理装置およびその方法に関するもの
である。
用目的とアドレスの関係はコンパイル&リンク時に決定
するのが一般的である。したがって、メモリマネージャそ
のものが搭載されていなかった。メモリマネージャを搭
載して、ダイナミックにアロケーションするカメラシス
テムと従来のシステムを比較すると以下の様な特徴があ
る。
プログラムが利用するメモリは、あらかじめ予約してお
く必要がある。カメラのROMのバージョンとメモリの
配置が強く依存しているので、互換性を確保する為には
追加プログラム用の予約領域は少なめに設定する必要が
ある。一方、メモリマネージャを利用する場合は、同時に
利用するメモリの最大量が物理的なメモリ容量を越えな
い様に注意するだけで良いので、メモリを最大限利用可
能である。仮想記憶のシステムが無い場合のメモリマネ
ージメント手法は、大別してビットマップを利用したも
の、メモリ管理ブロックによって可変長のメモリを分割
して利用するものがある。ビットマップを利用する方法
は、要求されたサイズの空きメモリを検索するのに時間
がかかる為、実際のコンピュータシステムでもあまり利
用されていない。可変長のメモリを分割して利用する場
合はさらに、Best Fit法,First Fit法,Next Fit法の3つ
が良く知られている。Best Fit法は大きな連続領域がい
つも確保されるという特徴があるが、メモリブロックの
数に比例してアロケーションスピードが遅くなる。First
Fit法も同様の性質がある。Next Fit法は、ブロックの数
に依存せず、常に高速にアロケーションを行う事が可能
であるが、ストレスをかけると空きメモリが断片化して
いくという欠点がある。デジタルカメラで画像処理を行
う場合1画面分の画像を千ブロック程度に分割して処理
を行う為、アロケーション速度が遅ければカメラの処理
スピードに致命的な結果を及ぼす。また、デジタルカメラ
は従来のフィルムを使ったカメラと違い、大容量ハード
ディスクとAC電源を使えばシャッターの耐久回数であ
る数万ショットを連続撮影する事が可能なのでメモリの
断片化によるアロケーションの失敗は許されない。Next
Fit法のアロケーションのしくみとメモリの断片化(fr
agmentation)についてさらに説明を加える。
図2ははNext Fitメモリマネージャの初期状態であ
る。主記憶は1つの空きメモリブロックとして管理し、ア
ロケーションポインタがその先頭にセットされている。
ここでいうブロックとは図4の様な情報を含む。ブロッ
クの大きさと、そのブロックが空きメモリか使用中かを
示すフラグとユーザアプリケーションが利用する部分で
ある。すべてのメモリを4バイトアライメント上に配置
しようとした場合ブロックサイズは4の倍数で良いので
余った最下位ビットを使用中フラグとして利用出来る。
次のブロックの先頭位置を知る為にもブロックサイズは
利用される。ブロックサイズや使用中フラグなどの情報
を格納している部分はMCB(メモリーコントロールブ
ロック)と呼ばれる。
され、割り当てた状態である。1つの空きブロックと1つ
の使用中メモリの2ブロックに分割され、アロケーション
ポインタは分割された空きメモリの先頭にセットされ
る。図2のはさらにアプリケーションからメモリBを
要求され、割り当てた状態である。空きメモリをさらにメ
モリBの為に分割し、主記憶は3つのブロックに分割さ
れた。図2のでメモリAが不要になり開放を行った。メ
モリAは空きブロックに変わったが、アロケーションポ
インタの位置は更新されない。図2のでメモリCを要
求されるが、メモリAが以前存在していた位置は利用し
ない。要求されたメモリサイズがアロケーションポイン
タが示している空きメモリより大きい場合に限ってアロ
ケーションポインタの位置から空きメモリの検索が始ま
る。要求されたサイズより大きな空きメモリを発見した
ら、そのブロックを分割して割り当てる。その様にメモリ
のアロケーションと開放を繰り返し続けると、図2の
のような状態になる。図2のは空きメモリの総量は要
求されたメモリBの大きさより大きいが最大連続領域サ
イズがメモリBよりも小さくなってしまった為に割り当
てに失敗してしまう様子である。この事から、Nest Fit法
を利用する場合は無限にアロケーションと開放を繰り返
す様なアプリケーションでの利用は困難であった。
ジャは、この様な問題を著しく軽減するファンクション
を定義し、アプリケーションがそのファンクションを利
用する事でデジタルカメラの様な分野で利用する事を可
能にする。断片化が発生した後でメモリの再配置を行え
ば再び最大連続領域サイズは増える。しかし、稼動中のシ
ステムでメモリの再配置を行えばメモリ転送に多くのC
PU時間を費やす事になる。カメラシステムを構成する
うえで断片化を回避するとすれば、一定期間ごとに必ず
システムをリスタートするという手段をとる事も可能で
ある。しかし、前途の様に連続動作はデジタルカメラの重
要なスペックである。システムをリスタートする事をあ
きらめたとしても、システムとしては、メモリの消費量が
極端に少なくなるタイミングがあり、それを利用する事
が可能である。必ずあるタイミングでメモリの消費量が
極端に少なくなるのであればそのタイミングでアロケー
ションポインタを主記憶の先頭へ移動させる事でメモリ
マネージャのリスタートに限りなく近い状態をつくりだ
す事が可能である有があるが、パーソナルコンピュータ
の技術革新サイクルは早く、新しい画像フォーマットが
次々に登場している。デジタルカメラの内部構造もコン
ピュータ化が進み、ソフトウェアによる処理の範囲も広
がってきている。そこで、デジタルカメラもパーソナルコ
ンピュータの様にソフトウェアを追加し、拡張していく
事でハードウェア開発の投資を押さえて早い技術革新サ
イクルに追従していく事が可能である。しかし、デジタル
カメラのソフトウェアは通信やファイルシステムなど多
岐にわたっており、どの機能が将来必要になるのか、どの
技術が陳腐化するのかをあらかじめ予測する事は難し
い。また、さまざまなロットのデジタルカメラが市場に出
るが、追加拡張ソフトウェアはどのロットの内部ソフト
ウェアとも共存する様に設計する必要がある。本発明は
デジタルカメラの任意の機能を後から追加するソフトウ
ェアによって置き換え、拡張する技術に関するものであ
る。
決するために、Next Fit法によりメモリを管理し、且
つ、メモリの断片化問題を軽減する為のファンクション
を備えることを特徴とする情報処理装置を提供する。
に、電気的書き込み可能なフラッシュROMと、前記フラ
ッシュROMの論理構造をマネージメントするマネージメ
ントソフトウエアモジュールを備え、前記マネージメン
トソフトウエアモジュールが実行可能なソフトウエアモ
ジュールを前記フラッシュROMの任意のアドレスへマッ
ピングし、書き込む機能と、前記フラッシュROM中にあ
る任意のモジュールを検索し実行する機能を有すること
を特徴とする情報処理装置提供する。
に、実行可能なプログラムファイルの中から実行可能な
レコードを選択し、ロードするプログラムローダを備え
ることを特徴とする情報処理装置を提供する。
に、プロセス間で共有データのバインディングを行う情
報処理装置であって、共有データの検索の結果、目的の
共有データが登録されていない場合に、検索タスクを休
眠状態へと移行させ、目的の共有データが登録された時
に検索タスクを実行可能状態へ移すことを特徴とする情
報処理装置を提供する。
に、IOポートの特定の入力端子の状態によってスタート
アップさせるタスクを切り替えるスタートアップルーチ
ンを備えることを特徴とする情報処理装置を提供する。
に、内蔵メモリの特定のファイル名の実行可能ファイル
をスタートアップ時にロードし実行することを特徴とす
る情報処理装置を提供する。
に、外部記憶媒体の挿入時に、特定のファイル名のファ
イルが外部記憶媒体に存在すれば該ファイルを内蔵メモ
リへコピーし、前記外部記憶媒体の脱着に対応してコピ
ーされたファイルを消去することを特徴とする情報処理
装置を提供する。
に、抽象化されたIOポートのサポートソフトウエアとそ
れをコントロールするドライバーソフトウエアに論理的
に分離設計されていることを特徴とする情報処理装置を
提供する。
に、特定のイベントに対応した処理ルーチンとパラメー
タとを動的に複数登録可能なフック管理ソフトウエアを
備え、イベント発生時に登録されたサブルーチンへパラ
メータを引き渡し実行することを特徴とする情報処理装
置を提供する。
に、主電源を使用しているプログラムの数をカウント
し、該カウントが0になってから任意の時間経過した後
に主電源をオフすることを特徴とする情報処理装置を提
供する。
に、シャットダウンの処理を少なくとも3つ以上の複数
のレイアに分離して管理し、順次実行していくことを特
徴とする情報処理装置を提供する。
に、複数のエラーを検出した場合に最初に検出したエラ
ーの番号を優先的に表示することを特徴とする情報処理
装置を提供する。
に、複数のエラーを検出した場合に最も致命的なエラー
に対するリカバリーを優先して実行することを特徴とす
る情報処理装置を提供する。
に、Next Fit法によりメモリを管理し、且つ、メモリの
断片化問題を軽減する為のファンクションを備えること
を特徴とする情報処理方法を提供する。
に、実行可能なプログラムファイルの中から実行可能な
レコードを選択し、ロードすることを特徴とする情報処
理方法を提供する。
に、プロセス間で共有データのバインディングを行う情
報処理装置の情報処理方法であって、共有データの検索
の結果、目的の共有データが登録されていない場合に、
検索タスクを休眠状態へと移行させ、目的の共有データ
が登録された時に検索タスクを実行可能状態へ移すこと
を特徴とする情報処理方法を提供する。
に、IOポートの特定の入力端子の状態によってスタート
アップさせるタスクを切り替えるスタートアップルーチ
ンを備えることを特徴とする情報処理方法を提供する。
に、内蔵メモリの特定のファイル名の実行可能ファイル
をスタートアップ時にロードし実行することを特徴とす
る情報処理方法を提供する。
に、外部記憶媒体の挿入時に、特定のファイル名のファ
イルが外部記憶媒体に存在すれば該ファイルを内蔵メモ
リへコピーし、前記外部記憶媒体の脱着に対応してコピ
ーされたファイルを消去することを特徴とする情報処理
方法を提供する。
に、抽象化されたIOポートのサポートソフトウエアとそ
れをコントロールするドライバーソフトウエアに論理的
に分離設計されていることを特徴とする情報処理方法を
提供する。
に、特定のイベントに対応した処理ルーチンとパラメー
タとを動的に複数登録可能なフック管理ソフトウエアを
備え、イベント発生時に登録されたサブルーチンへパラ
メータを引き渡し実行することを特徴とする情報処理方
法を提供する。
に、主電源を使用しているプログラムの数をカウント
し、該カウントが0になってから任意の時間経過した後
に主電源をオフすることを特徴とする情報処理方法を提
供する。
に、シャットダウンの処理を少なくとも3つ以上の複数
のレイアに分離して管理し、順次実行していくことを特
徴とする情報処理方法を提供する。
に、複数のエラーを検出した場合に最初に検出したエラ
ーの番号を優先的に表示することを特徴とする情報処理
方法を提供する。
に、複数のエラーを検出した場合に最も致命的なエラー
に対するリカバリーを優先して実行することを特徴とす
る情報処理方法を提供する。
に、Next Fit法によりメモリを管理し、且つ、メモリの
断片化問題を軽減する為のファンクションを備えること
を特徴とするオペレーティングシステムを提供する。
に、主電源を使用しているプログラムの数をカウント
し、該カウントが0になってから任意の時間経過した後
に主電源をオフすることを特徴とするオペレーティング
システムを提供する。
に、Next Fit法によりメモリを管理し、且つ、メモリの
断片化問題を軽減する為のファンクションを有すること
を特徴とする記憶媒体を提供する。
に、主電源を使用しているプログラムの数をカウント
し、該カウントが0になってから任意の時間経過した後
に主電源をオフする工程を有することを特徴とする記憶
媒体を提供する。
ロック図である。1はレンズ、2はレンズを通った光を
電気信号として出力するCCDユニットである。3はC
CDからのアナログ信号をデジタル信号へ変換するA/
Dコンバータ、4はCCDとA/D変換器に同期信号を
供給するSSGユニット、5はカメラシステムの中央演
算器、6は信号処理を高速に実現するためのアクセラレ
ータ、7は電池、8はシステム全体へ電源を供給するた
めのDC/DCコンバータ、9はDC/DCコンバータ
をコントロールする電源コントローラユニット、10は
パネル操作・表示装置・電源のコントロールを行うマイ
クロコンピュータ、11はユーザーへ情報を表示する表
示装置、12はユーザーが直接操作するレリーズSWを
含むコントロールパネル、13はOS等システムプログ
ラムが記憶され、具体的には、図面に記述し、また後述
する動作手順を中央演算器5により読み込まれ実行され
るプログラムが記憶されている記憶媒体のROM、14
はカメラシステムの主記憶で、データや後述する動作手
順が記憶され、中央演算器5により手順が読み込まれ実
行されるプログラムも記憶される記憶装置のDRAM、
15は内臓記憶媒体として使用し、データや動作手順が
記憶され中央演算器5により読み込まれ実行されるフラ
ッシュROM、16はPCMCIAカードのインターフ
ェース部、17はATAハードディスクなどの外部記録
媒体、18は拡張バスインターフェース、19はPC通
信インターフェース、20はDMAコントローラ、21
はストロボ、22はパーソナルコンピュータである。
る。図1のコントロールパネル12のレリーズスイッチ
をユーザが押したら、図1のCPU5がその事を検出し
て撮影シーケンスを開始する。以下の動作はすべて図1
のCPU5によるコントロールで行われる事を前提と
し、その説明を省略する。図1のSSG4が図1のCC
D2を駆動する。図1のCCD2から出力されるアナロ
グ信号は、図1のA/Dコンバータ3でデジタル信号へ
変換される。図1のDMAコントローラ20によって図
1のA/Dコンバータ3の出力は、図1のDRAM4へ
DMA転送される。1フレーム分のDMA転送が終了し
た時点でCPU5は、信号処理シーケンスを開始する。
図1のフラッシュROM15から信号処理プログラムを
主記憶上に記憶して、それを逐次読みだして実行する。
主記憶上のデータを信号処理アクセラレータ6へ転送し
信号処理をおこなう。信号処理アクセラレータ6は信号
処理のすべてをおこなうわけではなく図1のCPU5で
行う処理の特に時間のかかる処理などを助ける演算回路
であり、図1のCPU5の処理ソフトウェアと連携して
動作する。信号処理の一部または全部が終了すると画像
ファイルとして外部記憶媒体17へ記録する。また、カー
ドインターフェースに外部記憶媒体17が接続されてい
ない場合、フラッシュROM15へ記録する。この時記
録するファイルフォーマットが圧縮処理を必要とするの
であれば圧縮も行う。第一の実施例は、以上のように撮
影画像を外部記憶媒体、もしくはフラッシュROMへフ
ァイルする電子カメラである。
ンポインタを主記憶の先頭へ移動させるファンクション
ResetAllocationPointerを実装している。アプリケーシ
ョンがResetAllocationPointerファンクションを頻繁に
呼び出せば、呼び出すほどメモリマネージャはFirst Fit
法に近い動きをする事になる。毎回アロケーションの前
にResetAllocationPointerファンクションを呼び出すと
もはやNext Fit法ではなく完全なFirst Fit法となり、ア
ロケーションにかかる時間はメモリの消費量に比例して
増加してしまう。ResetAllocationPointerファンクショ
ンの目的はあまでもメモリマネージャをリスタート後に
近い状態にする事である。デジタルカメラのシステムは
このファンクションを一回の撮影動作直後、録音動作直
後、モード設定直後などのタイミングで呼び出す。上記の
様に構成する事で高速なアロケーションと連続動作耐久
性の両方の特徴を備えたシステムを構築する事が可能で
ある。
ション動作のフローチャートである。このフローチャー
トにしたがって、アロケーション動作を説明する。ステッ
プ301で要求サイズを切り上げる。アプリケーション
プログラムが要求するメモリサイズの単位は1バイト単
位だが、メモリマネージャが管理する単位はそれよりも
大きい。メモリマネージャがMCBと呼ばれる管理情報
を先頭に作成する為、に4バイトアライメント単位に乗
せる必要があるからである。ステップ302でメモリマ
ネージャのセマフォを獲得する。あるタスクがアロケー
ションや開放動作をしている時に別のタスクがアロケー
ションなどをすると二重アロケーションやMCBの破壊
を引き起こす結果となるからである。かといって割り込
みを禁止してしまえば、ストロボやシャッターを制御す
るデジタルカメラとしての制御のレスポンスに影響を与
えてしまう為、セマフォによって排他制御を行う。この様
な方法で排他制御をする事によってメモリマネージャの
動作が他のプライオリティの高いタスクの動作に影響を
与える心配がなくなる。ステップ303で現在のアロケ
ーションポインタの位置をアロケーションスタート位置
として記憶する。このポインタの働きは後で説明する。ス
テップ304で現在のアロケーションポインタ位置の空
きブロックのサイズと比較する。要求サイズの方が大き
い場合ステップ305へ、要求サイズと空きブロックサ
イズが一致すればステップ303へ、要求さサイズの方
が小さい場合ステップ312へと制御を移す。ステップ
305へ進んだ場合それが最終ブロックかどうかを判断
する。最終ブロックならステップ307へ、そうでなけれ
ばステップ306へ分岐する。ステップ306では次の
メモリブロックへアロケーションポインタを進める。ス
テップ307ではアロケーションポインタを主記憶の先
頭のブロックへセットする。ステップ306と307は
どちらも次のブロックへ進めるという効果がある。ステ
ップ308ではステップ303で記憶したアロケーショ
ンスタート位置とアロケーションポインタを比較してい
る。もし、一致すればすべてのメモリブロックをスキャン
した事の証明となるので、アロケーションに失敗したこ
とになる。その場合ステップ316でセマフォを開放し、
ステップ317でメモリ獲得に失敗した事を告げるエラ
ー値を返却してアプリケーションへ制御を戻す。ステッ
プ308でアロケーションスタート位置と一致しない場
合はステップ309でアロケーションポインタ位置のブ
ロックが空きブロックかどうか判断する。
戻る。そうでないならステップ311へ進む。ステップ3
11では次のブロックが空きブロックかどうかを判断す
る。もし、空きブロックならステップ310へ分岐。次の
ブロックが空きブロックでないならステップ304へ戻
り、再び要求サイズとの比較を試みる。ステップ310で
は次のブロックと現在のアロケーションポインタ位置の
ブロックの2つのブロックをマージして1つの大きなメ
モリにする。そして再びステップ311へ戻る。この動作
を繰り返す事で連続した空きブロックをすべてマージす
る。ステップ304で要求ブロックサイズと現在のアロ
ケーションポインタ位置のメモリサイズが一致したらス
テップ313で現在のアロケーションポインタ位置のブ
ロックを使用中メモリに変更し、それを今回の獲得メモ
リとし、アロケーションポインタを次のブロックへ進め
る。ステップ304で要求サイズより現在のアロケーシ
ョンポインタ位置の空きブロックサイズのほうが大きい
場合はステップ312で要求サイズの空きブロックと残
ったサイズの空きメモリの2つの空きメモリへ分割し、
ステップ313へ進む。ステップ314でセマフォを開
放し、ステップ315で獲得したメモリの先頭番地をア
プリケーションプログラムへ返却して制御を戻す。図5
はメモリマネージャのメモリ開放動作のフローチャート
である。ステップ501でメモリマネージャのセマフォ
を獲得し、ステップ502で指定されたブロックが使用
中かどうかを判断する。もし、使用中でなければステップ
504でセマフォを開放し、ステップ506で開放が失
敗したというエラーコードを返却してアプリケーション
へ制御を戻す。ステップ502で指定されたブロックが
使用中なら、ステップ503で、そのブロックを空きブロ
ックへ変更し、ステップ504でセマフォを開放して、ス
テップ505で開放に成功したというリターンコードを
返却してアプリケーションへ制御を戻す。図6はResetAl
locationPointer動作のフローチャートである。ステップ
601でセマフォを獲得し、ステップ602でアロケー
ションポインタを主記憶の先頭のブロックへ移動。ステ
ップ603でセマフォを開放する。
来るファイル形式で格納する。一方、コンピュータの画像
ファイルの種類は非常に多くすべてをサポートする事は
不可能であり、新しい画像フォーマットが次々に登場し
ている。この様な状況で、カメラ内部のソフトウェアに後
から機能を追加したり、変更を加える技術が重要になっ
てきている。
デジタルカメラのファームウェアを格納するために利用
する。プログラムの一部を修正したり、追加する事が可能
であれば、ファームウェア開発や、カメラファームウェア
のバージョンアップに便利である。これから説明するプ
ログラムROMマネージャはこの様なフラッシュROM
に書き込まれたプログラムを管理する機能である。
プログラムの形式を図にしたものである。
位で管理され、モジュールの先頭にはMH(モジュール
ヘッダ)と呼ばれる管理ブロックがある。モジュールヘ
ッダにはモジュール名やプログラムのエントリーポイン
トなどの情報が格納されている。フラッシュROMはバ
イト単位での消去が出来ないので、一部のモジュールの
変更を行う場合も追加書き込みをするしかない。
込まれる。モジュールの消去は、そのモジュールを無効
にする事によって実現している。モジュールの置き換え
は、一旦モジュールを消去して新しくモジュールを書き
込む事で実現している。図8の左は、フラッシュROM
に複数のモジュールが存在する様子である。図8の右
は、モジュールAを新しく書き換えた後の状態である。
元のモジュールAが使用済みモジュールとなり新しいモ
ジュールAが未使用領域だった場所へ書き込まれてい
る。
以下の様になる。 1) モジュール名を指定してその番地を得る。 2) ファイル名を指定して追加書き込みを行う。 3) モジュール名を指定してそのモジュールを無効にす
る。 4) フラッシュROMのすべてのプログラムを物理的に
イレースする。
ステムとしてOSのプログラムローダの機能を利用す
る。追加書き込みの時にプログラムのコードとリロケー
ションテーブルをを主記憶へ一旦読み込み書き込むフラ
ッシュROMの番地へマッピングするのである。プログ
ラムの実行可能ファイルにコードとリロケーション情報
を格納しておき、実行時に主記憶でマッピングする技術
は、パーソナルコンピュータなどの分野では一般的だ、し
かし、フラッシュROMの場合マッピング先のアドレス
とプログラムがロードされた主記憶のアドレスが違うの
でAPIでその情報を引き渡す必要がある点が異なる。
本実施例のプログラムローダはプログラムを読み込んだ
主記憶のアドレス以外のターゲット番地に対するマッピ
ングをサポートしている。フラッシュROMへの物理的
書き込みを行うプログラムに限ってはフラッシュROM
に配置する事が出来ない。なぜなら、フラッシュROMの
書き込みシーケンスにデータポーリングという技術が使
われている為、書き込み途中ではフラッシュROMのど
のアドレスも同一のポーリング情報しか読めないので、
もし、実行中のプログラムがフラッシュROMに配置さ
れているものなら、書き込みが始まったとたんに次の命
令が狂ってしまう。又、デジタルカメラのソフトウェアの
ほとんどはこのフラッシュROMに納まっているので書
き込み中にタスクスイッチがかかったら上記の様な問題
が発生してしまう。この様な問題を解決するために本発
明のプログラムROMマネージャは書き込みのプログラ
ムをいつも主記憶で実行し、1書き込み単位(バイトま
たはワードまたはダブルワード)が始まってからデータ
ポーリングが終了するまでの間、タスクSWと割り込み
を禁止するように構成した。この様に構成する事で稼動
中のシステムを停止せずにプログラムの追加が可能とな
った。
き込みを行うデバイスドライバー部は追加プログラムと
一緒に外部記録媒体へ格納しておき、プログラムの追加
書き込みの時に主記憶へロードして実行する。
ムファイルがどのような形式で格納されているかを説明
する。
一般形は、図10のようになっている。
る。レコードは、サイズフィールド・タイプフィールド
・ボディーフィールドから構成される。
よって定義される。1バイトのモジュールタイプによっ
てそのレコードの性質が定義される。ボディーフィール
ドに実際のデータが格納されている。ファイル中に存在
するレコードの数には、制約が無い。プログラムローダ
は、ファイル中のレコードの中から実行に必要な情報を
主記憶に読みだし実行をする。プログラムの実行に必要
ないレコードは、認識せずに読み飛ばす。レコードタイ
プには、図11の様な種類がある。各タイプ別に解説を
行う。TYPE_OBJECT_INFO(省略不可)
までのすべてのレコードの性質をテキストで表現したも
のである。
スのテーブルである。
サポートしていない場合のみ存在するレコードである。
図9の様に絶対アドレッシングのアドレスフィールドを
格納したテーブルである。前提条件としてCPUが絶対
アドレッシングする場合のアドレス幅が32bitであ
る事を仮定している。テーブルの値は、プログラムの先
頭番地を原点とした相対番地である。ローダプログラム
は、バイナリプログラムの該当する番地の値を書き換え
る。書き換えるルールは、以下の通りである。
の番地に格納されていた値
応が可能である。右の図の様に複数のプラットホームの
データを一つのファイルへまとめる事で、単一ファイル
による実行ファイルのマルチプラットホーム化が可能で
ある。システムは、ファイル中から自システムで実行可
能なモジュールを検索して実行する事が出来る。特定の
CPUを想定した実行可能プログラムファイルを採用し
た場合、CPU種類を変更する事ができなくなってしま
う。CPU種別を自己記述してある実行可能プログラム
ファイルを採用している場合、生産コスト削減などの理
由でCPUを変更する事が可能となる。
納したファイルの様子を現している。
分割され、モジュールのアドレスが変更されるシステム
では他のモジュールのファンクションの存在するアドレ
スを知る手段が必要となる。サブルーチンのアドレスを
実行時に決定する技術はレートバインディングやダイナ
ミックリンクと呼ばれている。この様な技術を用いる事
でモジュール間のインターフェース設計を柔軟に行う事
が可能になる。パーソナルコンピュータにおけるダイナ
ミックリンクは、ライブラリ(サブルーチン群)の共有
化が主な目的である。目的のライブラリが主記憶中に存
在すれば、即座にリンクは完了するが、目的のライブラリ
が主記憶中に存在しなければ記憶媒体から主記憶にロー
ドし、リンクを行う。
ROMに格納されており、共有データもダイナミックア
ロケーションによって作成している為、共有データをダ
イナミックにバインディングする必要がある。図14は
主記憶にローディングされた共有ライブラリの様子であ
る。ファンクションAは共有データに対してアクセスを
行っている。ファンクションAをコールすればどのタス
クからでも共有データにアクセス出来る。共有データと
ライブラリが主記憶にある場合、共有データとファンク
ションAは、マッピングされた絶対アドレッシングか、相
対アドレッシングで目的のデータをアクセス可能なので
ある。図15はフラッシュROMへ書き込まれた共有ラ
イブラリと、主記憶にアロケーションされた共有データ
の様子である。この場合、共有データを作成した時点でア
ドレスが決定されるが、フラッシュROMのプログラム
はもうマッピングが済んでしまっているのでそのアドレ
スへ対応出来ない。
を行う場合、データを用意して公開す(登録)るタスク
と公開(登録)された共有データを検索するタスクの間
のタイミングが重要となる。パーソナルコンピュータの
ダイナミックリンクの場合、共有ライブラリが主記憶に
存在しなければ記録媒体から主記憶にロードすれば良い
が、共有データが存在しない場合はそうはいかない。一定
時間CPUを別のタスクに明け渡した後で再び検索を行
う様にシステムを構築すると、大変なCPU時間を無駄
な検索に費やす事になる事が予想出来る。この様なバイ
ンディングの問題を解決する為に、本発明では検索の結
果、目的の共有データが存在しない場合、そのタスクが休
眠状態になり、目的の共有データが別のタスクによって
公開(登録)される事で検索側タスクが再び実行可能状
態へ戻る様に構成した。特定のタスクが共有データを初
期化する場合のタイミングに関しては上記の様に構成す
る事で解決出来る事が分かった。しかし、共有データを初
期化するタスクが不特定の場合には共有データを初期化
する事そのものに対する排他制御が必要である。具体的
に詳しく述べると、例えば、タスクAが共有データの初期
化を含むAPIを呼び出したとする。タスクAによって
呼び出されたAPIは初期化済みの共有データが存在す
るかを調べる。存在しなかった場合には共有データを作
成、初期化し、公開(登録)するが、公開(登録)直前に
タスクスイッチがかかり、タスクBに切り替わる。そし
て、タスクBもタスクAが呼び出したAPIと同一のA
PIを呼び出す。まだ共有データは公開(登録)されて
いないので、タスクBも共有データを作成、初期化し、公
開(登録)する。そして、APIは共有データを利用する
事が可能となり、サービスを開始する。再びタスクスイッ
チがかかると、タスクAがさらに共有データを公開(登
録)するので、タスクBが作成した共有データは失われ
てしまう。この様な不具合をさけるために共有データの
検索から登録までの期間を不可分な動作として行える様
に構成した。
PIは以下の様なシンボル管理サービスである。 1) AddSymbol シンボルの登録 2) FindSymbol シンボルの検索 3) LockAndFindSymbol シンボルシステムのロックと検索 4) UnlockAndAddSymbol シンボルシステムのアンロックと登録 5) UnlockSymbol シンボルシステムのアンロック
の名前でアドレスを登録、検索するというシンプルなシ
ステムである。
データ構造を示している。シンボルを指定してAddSymbol
やFindSymbolを実行するとシンボル管理システムはま
ず、シンボルのセマフォを獲得し、指定されたシンボルを
ハッシュ関数にかけてハッシュ値を計算する。ハッシュ
値は、たとえば文字列の文字コードの合計などで良い。そ
して得られたハッシュ値でインデックスしてテーブルを
引く。テーブルには最初のデータへのポインタが格納さ
れている。END_OF_LISTが格納されていた場合はまだその
ハッシュ値を持つシンボルが1つも登録されていない事
になる。シンボルのデータはそのポインタを先頭にして
リンクドリストとして登録されている。リスト上のIT
EMを1つ1つ指定されたシンボルと比較して検索す
る。図17の場合、LCD_INSTANCEとAF_INSTANCEというシ
ンボルが登録されている。AddSymbolでシンボルがすでに
存在していれば、アドレスのフィールドを書き換える。存
在していなければ新しいITEMを作成し、リンクドリスト
に追加する。そして、シンボルシステムのセマフォを開放
し、アプリケーションへ復帰する。FindSymbolですでに
シンボルが存在している場合はシンボルのセマフォを開
放し、アドレスをアプリケーションへ返却して即時復帰
出来る。FindSymbolの検索結果、シンボルが存在しなかっ
た場合はまだ有効なデータが格納されていない事を示す
フラグを立てたITEMと待ち状態タスクの情報を格納
したWAITITEMを作成し、ITEMへ登録する。W
AITITEMのセマフォはあらかじめ0に初期化、タ
イムアウトフラグはTRUEに初期化しておく。その状態を
図18のに示した。図18の場合は、2つのタスクがLCD_
INSTANCEの登録を待っている。そして、シンボルのセマフ
ォを開放し、FindSymbolのパラメータで指定されたタイ
ムアウト時間を指定しWAITITEMのセマフォを獲
得する。WAITITEMのセマフォはあらかじめ0に
初期化してあるので、獲得に失敗し、タスクは休眠状態に
なる。次にそのタスクが実行可能状態へ復帰する為には、
タイムアウトが発生するか、セマフォにシグナルが行わ
れるかのどちらかである。その様にしてシンボル待ちタ
スクが休眠してるシンボルを別のタスクがAddSymbolし
た場合、WAITITEMのアドレスに値を代入し、タイ
ムアウトフラグをFLASEにしてから、セマフォにシグナル
操作を行う。セマフォ待ち関数の戻り値のタイムアウト
を利用しないのは、シグナルとほぼ同時にタイムアウト
を起こす場合があるからである。そして、WAITITE
MのリストからWAITITEMを外す。AddSymbolはW
AITITEMが無くなるまでこれを繰り返す。実行可
能状態へなったFindSymbolタスクは最初にシンボルのセ
マフォを獲得するのでAddSymbolがセマフォを離すまで
の間、再び休眠状態となる。FindSymbolはセマフォを獲得
した後でタイムアウトフラグを確認し、タイムアウトで
ないならセマフォを開放し、WAITITEMのアドレ
スフィールドを返却し、アプリケーションへ復帰する。タ
イムアウトなら、セマフォを開放し、エラーコードを返却
してアプリケーションへ復帰する。
ymbolは、検索と登録までの期間の排他制御を実現するフ
ァンクションである。
ndAddSymbolまたはUnlockSymbolを実行するまでの期間
シンボルのシステムを独占し、他のタスクによるシンボ
ル操作(検索、登録)が行われない事を保証する。図19
は、このファンクションを使って共有データの初期化を
行うプログラムの動作をフローチャートにしたものであ
る。ステップ1901でLockAndFindSymbolを実行し、シ
ンボルシステムのロックと検索を行う。検索の結果、シン
ボルが発見されれば、ステップ1902へ分岐し、シンボ
ルが無ければ1993へ分岐する。LockAndFindSymbolは
現時点でのシンボルの存在を確認し、シンボルが登録さ
れていない場合は即時復帰する。待ち状態にならないの
で、タイムアウト時間を指定するパラメータは無い。ステ
ップ1901でLockAndFindSymbolを実行し、検索の結
果、シンボルが発見されれば、ステップ1902へ分岐
し、1902でシンボルシステムのロックを解除する。ス
テップ1901でLockAndFindSymbolを実行し、検索の結
果、シンボルが発見されなかった場合、ステップ1903
で共有データ用のメモリをアロケーションする。そして
ステップ1904でセマフォを0に初期化する。そして、
ステップ1905でUnlockAndAddSymbolファンクション
を使い、シンボルのアンロックと共有データの公開を行
う。共有データの初期化はまだ不完全だが、セマフォを0
に初期化しているので、別のタスクがセマフォを獲得し
ようとしても待ち状態に遷移するので問題ない。共有デ
ータの初期化すべてを行うまでシンボルシステムをロッ
クしてしまうと、自タスクよりプライオリティの高い他
タスクのバインディングの遅延につながる。したがって、
シンボルのロック期間は短ければ短いほど良い。図19
の点線で囲んである部分はシンボルのシステムを独占し
ている期間である。ステップ1906で共有データの初
期化を済ませ、ステップ1907で共有データのセマフ
ォを開放する。この時点で他のタスクからこの共有デー
タが利用可能になる。LockAndFindSymbolの動作はFindSy
mbolの動作に非常に良く似ている。FindSymbolとの違い
は、シンボルが存在しない場合に即時復帰する事とシン
ボルのセマフォを返却せずに復帰する点である。UnlockS
ymbolはシンボルシステムのセマフォを返却するだけの
ファンクションである。UnlockAndAddSymbolもAddSymbol
と良く似ている。シンボルシステムのセマフォを獲得し
ている事を前提にしているので、セマフォの獲得をしな
い点でAddSymbolと異なる。
明する。
Uの電源が投入され、リセットが解除されると、図1の5
のCPUは図1の13のROMのリセット後のエントリ
ポイントから実行を始める。図1の13のROMにはリ
アルタイムオペレーティングシステムなどの基本機能だ
けが搭載されている。オペレーティングシステムそのも
のをバージョンアップする事を可能にする為に図1の1
3のROMのプログラムはオペレーティングシステムを
スタートする前に図1の15のフラッシュROMへジャ
ンプするようになっている。図1の15のフラッシュR
OMが手違いや事故によって書き換わってしまった場合
に暴走してしまう危険があるので、図1の15のフラッ
シュROMの別の特定番地にはキーワードが格納されて
おり、キーワードが一致した場合のみフラッシュROM
へジャンプする。キーワードが一致するが、フラッシュR
OMのプログラムにバグがあったり、事故で一部の書き
込みに失敗した場合も、やはり暴走する。書き込みの失敗
に関しては、プログラムの書き込みとベリファイが終了
してからキーワードを書く様に構成する事で回避可能で
あるが、プログラムのバグによって暴走する場合は防ぎ
ようがない。この様な問題は主に開発段階で発生するの
で、特別なハードウェアを使って回避するのが、実装もデ
バッグもはるかに簡単である。特別なハードウェアとい
ってもIOポートの特定のビットを電源側へプルアップ
したり、グランドへプルダウンするだけで良い。本実施例
では図1の19のPCインターフェースの製品ではプル
アップされているポートをグランドへショートする事で
メンテナンスモードである事をカメラへ伝える。もし、ス
タートアップ時にメンテナンスモードである事を検出す
ると、たとえキーワードが一致してもフラッシュROM
のプログラムは一切実行せず、図1の13のROMのプ
ログラムだけで動作し、フラッシュROMのオペレーシ
ョンなどを行うモードとなる。特定のハードウェアを用
意する必要があるので、この機能が市場でトラブルを起
こす心配はまったくない。図20は本実施例のスタート
アップシーケンスのフローチャートである。ステップ2
001でリセットが解除されると、CPUはROMの特
定番地を読み出して、そこから実行を始める。ステップ2
002でBUSのタイミングなど必要最低限のハードウ
ェアの設定を済ませる。ステップ2004で、メンテナン
スモードかどうかを判断する。本実施例では図1の19
のPCインターフェースの製品ではプルアップされてい
るポートがグランドへショートされているかどうかを判
断する。もし、メンテナンスモードならステップ2006
へ分岐する。ステップ2006ではリアルタイムOSの
カーネル、メモリマネージャ、シンボル管理、プログラム
ROMマネージャを初期化しスタートさせる。そして、ス
テップ2007でフラッシュROMオペレーション用の
プログラムのスタートアップタスクを実行する。スター
トアップタスクは、必要なタスク類のテーブルをもって
おり、順次タスクを作成し、実行させる。
なかった場合、ステップ2004へ分岐する。ステップ2
004でフラッシュROMの特定番地のキーワードをチ
ェックする。キーワードは、プログラムROMマネージャ
が管理していない領域を予約する方法もあるが、フラッ
シュROMの最後の番地にしておけば、この機能を使わ
ない時に通常のプログラムを格納する事も可能となる。
そして、キーワードチェックの結果キーワードが一致す
ればステップ2005へ分岐する。ステップ2005で
は、フラッシュROMへジャンプしてしまうので、オペレ
ーティングシステムそのものを置き換える様なプログラ
ムやハードウェア設定の追加などのプログラムを用意す
る事が可能である。ステップ2004でキーワードが一
致しなかったらステップ2008へ分岐する。ステップ
2008の処理内容はステップ2006とまったく同じ
である。そしてステップ2009ではプログラムROM
マネージャの機能を使って、デジタルカメラのスタート
アップタスクを検索し、実行する。
でスタートする。図20のステップ2009のスタート
アップタスクの動作を図1のフローチャートで示した。
スタートアップタスクはモジュール名のテーブルをもっ
ており、そのテーブルにしたがって、プログラムROMマ
ネージャ経由でモジュールを検索し、順次タスクを作成
していく。図21はそのテーブルの順番をおおざっぱに
グループわけして表現している。
ムをスタートする。ウォッチドッグやイリーガルオペコ
ードトラップなどの製品としての異常検出を目的とした
ものからログ(経歴)サービスなどの開発時のみに利用
するものも含む。ステップ2102ではハードウェアの
初期化を行う。仮想化されたハードウェアのドライバを
用意するのもこの時点で行う。また、ローバッテリー例外
処理や、シャットダウンのフックもステップ2102で
初期化し、公開する。
期化と内蔵フラッシュROMDISKドライバーの初期
化とファイルシステムのマウントを行う。
ータベースサービスをスタートとカメラステータスデー
タベースをスタートする。この時、ステップ2103で初
期化したファイルシステムを用いて内蔵フラッシュRO
MDISKの工場調整値データのファイルをオープン
し、工場の調整値データを読み出す。カメラステータス情
報のデータファイルも同様にオープンし、データを読み
出す。カメラステータスデータとは、現在の圧縮率やスト
ロボ使用のON・OFF、DISKの残り空き容量など
の情報が格納されている。
イバーの公開(登録)をするだけのタスクを起動する。
デジタルカメラのデバイスドライバは、パーソナルコン
ピュータでよく知られているもの以外に、CCDデバイ
ス、JPEGデバイス、信号処理アクセラレータデバイ
ス、測光デバイス、測色デバイス、フォーカスコントロー
ルデバイス、などデジタルカメラのハードウェアに依存
した特徴を隠蔽するためのものが多数含まれる。この時
点ではデバイスドライバのエントリーポイントをシンボ
ルとして公開するだけである。ステップ2106で内蔵
ROMDISKの中に特定のファイル名を持った実行可
能ファイルが存在していれば主記憶にロードして実行す
る。内蔵ROMDISKの中のプログラムを実行可能に
しておく事で、プログラムROMマネージャの管理する
フラッシュROMへの書き込みをする事なくカメラの機
能を拡張する事が出来る。内蔵ROMDISKのプログ
ラムがステップ2105で公開されたデバイスドライバ
ーと同じ名前のドライバーを公開する事で、その機能を
完全に置き換える事が可能になる。ステップ2108で
バッテリーチェックシステムをスタートさせ、2108
でパワーロックのサービスをスタートさせる。ステップ
2109でコントロールパネルをスタートさせる。コン
トロールパネルによってボタンが押された情報はこの時
点で伝達され、撮影などの動作にはいる。デバイスドライ
バがバインディングされるのはステップ2109の後で
ある。シンボルの書き換えによるモジュールの置き換え
はステップ2109よりも前でなければならない。
追加書き込みをする未使用領域が無くなってしまうと、
一旦すべてのプログラムを消去しなければならない。よ
り多くのアプリケーションに対応する為に、外部記憶媒
体に追加プログラムを書き込む様にしたい。
カメラがスタートアップ時に読み出す様に構成した場
合、デジタルカメラのスタートアップ時間が外部記憶媒
体のスタートアップ時間に大きく依存してしまう。デジ
タルカメラのスタートアップはユーザが操作部のキーへ
触れた時から始まる。ユーザが操作部のキーへ触れてか
ら約200ミリ秒ほどの期間はコントロールパネル部で
チャタリングの除去の為のタイムラグがある。その時間
の間にスタートアップが終了しなければ、ユーザーから
の操作に対しての反応が遅くなり、操作感が悪くなる。そ
れに対しハードディスクのスタートアップは7秒〜十数
秒かかる。その事から外部記憶媒体から直接追加プログ
ラムをロードする事は不可能である。本発明では、外部記
憶媒体をデジタルカメラへ挿入したタイミングで自動実
行ファイルが外部記憶媒体に存在すれば、それを内蔵R
OMDISKへコピーし、外部記憶媒体がデジタルカメ
ラから脱着されたタイミングで内蔵ROMDISKの中
の自動実行ファイルを消去する様に構成する事で、外部
記憶媒体の中の自動実行ファイルをスタートアップ時に
高速にロードし、実行する事を可能としている。スタート
アップ時に自動実行ファイルをロードするタイミングは
図21のステップ2106で説明した。
われている。カスタムのデバイスをより安く生産できれ
ば、デジタルカメラも安く生産出来る。周辺カスタムデバ
イスのコストを下げる為に、出来るだけゲート数の少な
い回路で沢山の機能を搭載したい。1つのアドレスデコ
ード回路でいくつかの機能のコントロールを行う事や、
コントロール用レジスタを書き込み機能だけ(CPUか
ら読めない)にする事で周辺カスタムデバイスのゲート
数をかなり下げる事が出来るが、コントロールするソフ
トウェアの設計が困難になってしまう。本実施例では、読
み書き可能なバッファーを備えた仮想のIOポートを構
成し、ソフトウェアモジュール間で共有する事で、周辺カ
スタムICのコントロールポートへ読み出し機能がある
場合と同等のソフトウェアの構成を可能としている。
している。アプリケーションはデバイスハンドルとレジ
スタIDナンバーをつかってコントロールを行う。AP
Iはデバイスハンドルで指定されたバッファーの配列に
対してリードモディファイライトを行い、その内容をバ
ッファーと対で格納されているIO番地情報を使って周
辺デバイスへ書き込みを行う。このデバイスハンドルは、
スタートアップ時の図21のステップ2102で初期化
し、ハンドルをシンボル登録する。
セットファンクションのフローチャートである。ステッ
プ2301でステータスレジスタの内容を待避する。ス
テップ2302で割り込みを禁止する。ステップ230
3でハンドルとレジスタIDからバッファーとIO番地
のアドレスを計算する。レジスタIDは、あらかじめ図2
2のテーブルのインデックス値を定義しておく。ステッ
プ2304でバッファーのデータとセットするビットパ
ターンのORをとり、バッファーへ格納し、IOポートへ
も出力(書き込み)を行う。ステップ2305でステー
タスレジスタを復帰する。もし、ステップ2302を実行
するより以前が割り込み許可状態だったなら割り込み許
可状態へ戻る事になる。
以外にビットクリア、ビット幅を指定した書き込みと読
み出しがあればコントロールプログラムは作成可能であ
る。
て、仮想デバイスAPIを変更してIOの経歴をとるな
どのデバッグ用の用途に利用出来る点が上げられる。ま
た、ハードウェアの設計変更によって周辺デバイスのア
ドレスに変更があった場合に、変更が及ぶ範囲がテーブ
ルの値だけなので管理も変更もしやすい。別の言い方を
すれば開発期間とコストを軽減する効果がある。
ある。コールバックの依頼主が不特定多数である場合に
はそれらを管理するAPIがあると便利である。デジタ
ルカメラの場合、そのような不特定多数が利用するコー
ルバックサービスがいくつか必要である。ローバッテリ
ー発生の例外処理、シャットダウンの処理などは、制御プ
ログラムのほとんどに例外処理が必要になるからであ
る。本発明ではそれらのフックを管理するAPIをオペ
レーティングシステムのサービスとして用意している。
フックのAPIは以下の様なサービスである。 1) フックハンドルの作成 2) フックハンドルの抹消 3) ファンクションとインスタンスの登録 4) ファンクションの登録解除(リストから削除) 5) フックの実行
メモリをアロケーションし、セマフォを1で初期化、最初
のファンクションへEND_OF_LISTを代入し、
そのメモリのポインタをフックハンドルとしてアプリケ
ーションへ引き渡す。ファンクションとインスタンスの
登録は、フックハンドル、ファンクションアドレス、イン
スタンスアドレスを指定して呼び出し、ファンクション
とインスタンスを登録し、ファンクションのハンドルを
返却する。ファンクションのハンドルは後で削除する時
に使用する。図24はフック管理のデータ構造を示して
いる。フックハンドルに対し、2つのファンクションが登
録されている。
し、リストをたどりながら順次ファンクションを実行し
ていく。フックを利用したアプリケーションの例を図2
5のフローチャートで説明する。図25の例はフォーカ
スモータをコントロールプログラムである。ステップ2
501でフォーカスコントロールを開始する。ステップ
2502でローバッテリー例外処理のフックへコールバ
ック関数を登録する。この時登録する関数は図26のフ
ローチャートで示した関数である。インスタンスとして
フォーカスシステムのコントロール時間待ち用のセマフ
ォを登録する。このセマフォはコールバックファンクシ
ョンの中で使用する。ステップ2503で1ステップだ
け駆動する。ステップ2504では、ステップ2502で
コールバックファンクションのインスタンスとして指定
したセマフォに対してタイムアウト指定で獲得を試み
る。このセマフォは0で初期化しているので通常は獲得
に失敗し、タイムアウトが発生する。ステップ2505で
タイムアウトが発生したかどうかを判定する。タイムア
ウトならステップ2506へ、タイムアウトが発生して
いない場合は2509へ分岐する。ステップ2506で
は駆動すべき全ステップの駆動が終了したか判断し、ま
だ終了していないなら、ステップ2503へ戻り、終了し
ていればステップ2507へ分岐する。ステップ250
7ではステップ2502で登録したファンクションをフ
ックから削除する。ステップ2508で正常に終了する。
もし、ステップ2505でタイムアウトが発生していな
ければステップ2509でローバッテリ例外処理フック
からステップ2502で登録したファンクションを削除
し、ステップ2510で異常終了のエラーコードを返却
して呼び出し元へ復帰する。図26はステップ2502
で登録したコールバックファンクションのフローチャー
トである。ステップ2601でフォーカスモータの電源
を落とし、ステップ2602でセマフォへシグナルし、ス
テップ2603で復帰する。このコールバックファンク
ションがステップ2602でセマフォをシグナルしなけ
れば必ず図25のステップ2505でタイムアウトにな
る。この様な構成でローバッテリ時の例外処理を行う事
で検出から対応までのレスポンスが早く、CPUタイム
を無駄遣いしない制御が可能となる。
ロールパネルからの操作イベントに対応した処理であ
る。コントロールパネル部がメインCPUへ送るイベン
トはどのキーが押された、又は離されたという情報であ
る。2つボタン押しや2つボタン押しなどの操作をいろ
んな機能に割り当てる事で少ないキーで多くの機能を持
たせる事が可能になる。そこで押されたキーのイベント
はキーの操作を理解するモジュールへと伝達される。そ
して、そのモジュールでキー操作の内容を理解した結果、
それに対応したデジタルカメラの機能を起動する。ここ
でいうデジタルカメラの機能は、EraseSingleとかSetMac
roModeといった単機能の動作である。これらの機能はイ
ベントが起こった時にそれに対応して呼び出されるサブ
ルーチンのテーブルとして管理しており、イベントプロ
シージャと呼んでいる。名前とファンクションを対にし
て記憶しているテーブルであり、パーソナルコンピュー
タではマクロ言語をサポートしたEmacsなどのテキ
ストエディタなどでもこの様なテーブルを実装してい
る。本発明のデジタルカメラは、イベントプロシージャの
テーブルをスタートアップ時に作成する。したがって、自
動実行ファイルが特定のイベントプロシージャを置き換
える事でデジタルカメラの機能の一部を変更する事が可
能である。
からのイベントに対応して、制御が行われる。撮影や録音
の処理が終了すれば、必ず電源を落とすシステムにした
場合、スタートアップとシャットダウンの時間のタイム
ラグや、DISKキャッシュのフラッシュなどの処理を
毎回行う事になり、連続的な操作に対するレスポンスが
悪くなってしまう。また、DISKキャッシュやEFのチ
ャージのシステムは録音などのアプリケーションとは分
離して設計する事が望ましい。しかし、電源を落とす為に
はその様なサブシステムの動作状態を管理しなければな
らない。さらに、自動実行ファイルなどでカメラの機能を
拡張したり、パソコンからのリモートコントロールで録
音や撮影の動作を行う事も考慮しなければならない。こ
の様なシステムの電源を落とすプログラムをメインシー
ケンスの流れの中で設計するのは非常に困難である。
とす為のしくみを用意する事で、上記の問題点を解決し
ている。
ログラムは、メインパワーマネージャに対して電源のロ
ックを行う。例えば、DISKキャッシュや、EFチャー
ジも独立したアプリケーションとして設計する為、主電
源のロックは行う。主電源がロックされている期間は必
ず主電源が供給される事をメインパワーマネージャが保
証する。メインパワーマネージャは、ロックの数をカウン
トし、ロックの数が0になったタイミングからオートシ
ャットダウンタイムの時間を計測する。ロックの数が0
になっている時間が連続Nミリ秒に達するとシャットダ
ウンシーケンスに突入する。ロックの数が0になってか
らNミリ秒以内にロックカウンタが0以外になれば再び
主電源の供給が保証される。ただし、ローバッテリー検出
システムがローバッテリを検出した場合は例外的に主電
源が切断される。
ャットダウンタイマーの様子を示したタイムチャートで
ある。一番上のラインは撮影のアプリケーションがパワ
ーをロックしている期間を現している。撮影の点線は露
光のタイミングである。それ以前はAFやAEを行いな
がら待機している期間である。露光時にストロボを使用
したので、EFチャージが始まり、EFチャージプログラ
ムが主電源をロックした。一番下の行にロックカウンタ
の数字を記載している。このとき、撮影プログラムとEF
チャージが主電源をロックしているので、ロックカウン
タは2になっている。しばらくすると露光された画像が
処理され、画像ファイルとして記憶媒体に格納されるの
でDISKキャッシュが稼動しはじめ、主電源をロック
する。この時のロックカウンタは3になる。次に撮影プロ
グラムが処理のすべてを終了するが、DISKキャッシ
ュとEFチャージはまだ稼動中なのでロックカウンタは
2である。DISKキャッシュが保留していたデータの
すべてをDISKへ書きおわり、EFチャージが次の撮
影に十分な電力を主電源からストロボ部へ充電し終える
とロックカウンタが0になり、オートシャットダウンタ
イマーが時間計測を開始する。しかし、十分な時間が経過
していないうちに再び撮影準備にはいってしまった為、
シャットダウンは起こらずに、ロックカウンタが1へ変
化する。ロックカウンタはその後1→2→3→2→1→
0と変化し、オートシャットダウンタイマーが動作し、N
ミリ秒が経過した後にシャットダウンが始まる。
ーションによって異なる。又、追加プログラムなどがある
場合の処理も異なる。したがって、処理そのものをフック
の実行によって行うのが良い。しかし、他のシャットダウ
ン処理との順序関係が重要になる場合がある。データベ
ースのシャットダウン処理はファイルをクローズする事
だが、すでにファイルシステムがシャットダウンを終え
てしまっていたらファイルのクローズすら出来ない事に
なるからである。本発明のデジタルカメラではシャット
ダウンをフックの実行で行い、シャットダウン処理を3
っつのレイアに分けて順番に実行を行う事で上記の問題
点を解決している。
ックハンドルを用意して公開している。1のアプリケー
ションレイアでは、データベースやリモートコントロー
ル用の通信プログラムなどがシャットダウンを行う。す
なわち、ファイルに対してデータを書いたり、パーソナル
コンピュータへ終了メッセージを送ったりといった処理
である。2のシステムレイアでは、ファイルシステムや通
信のデータリンクレイアの部分などのシャットダウン処
理が行われる。3のデバイスレイアで、PCMCIAのカ
ードへの電源供給を落としたり、コントロールパネルと
の通信のシャットダウン処理などを行う。上記の順にす
べてのフックを実行した後で、主電源を落とす。シャット
ダウンの処理にファイルシステムも含まれる為、DIS
Kキャッシュサイズにも依存するが数十ミリ秒から数百
ミリ秒の時間が必要である。ローバッテリーが発生した
場合速やかにシャットダウンを行うが、急激な電圧降下
により、システムの動作が数ミリ秒程度しか保証されな
い場合には、3のデバイスレイアの処理だけを行う。カメ
ラのローバッテリー検出は、数段階のランクがあり、通常
の動作禁止の電圧を検出する事が出来ない程の質の悪い
電池の場合に限って、3のデバイスレイアだけのシャッ
トダウンの処理になる。その場合ファイルシステムなど
に破壊が生じる可能性があるが、電流のリークなどのよ
り致命的な障害を避ける事が出来る。
ルカメラはエラーを表示して、システムを停止させる必
要がある。システムはモジュールごとに分離設計をして
いる為、障害の検出の後の処理を設計時に定義するのが
難しい。又、仮に障害検出後の処理を定義したとしても、
自動実行ファイルなどのプログラムが追加されている場
合に問題を起こす可能性がある。本発明では、この様な問
題を解決する為にエラー処理を受け持つ専門のモジュー
ルを定義し、処理内容を抽象化した。エラーが発生した後
のリカバリー方法に関して大まかに分類し、エラーコー
ドでその種類を伝達する。エラーコードにダブルワード
を定義した場合、4ギガ種類のエラーに対応出来るが、そ
れほどの種類のエラーが必要になる事は無い。したがっ
てエラーの種類を特定するコードはせいぜい512種類
程度である。本実施例では、エラーコードの上位ワードを
エラーの分類とし、下位ワードを表示用に利用する。図2
8はFATALERRORの分類を表にまとめたもので
ある。
内部イベントとして、イベントプロシージャに定義され
る。ABORTのエラーは、主にシャッターやフォーカス
モータなどのメカ部品に障害がある場合に使う。シャッ
ターやフォーカスモータの障害の場合、システムとして
は安全に継続稼動できるので、エラー表示を行い、再び次
のオペレーションを受け付けるモードへ戻る。例えばス
トロボに障害がある場合に日中撮影は可能なので、すぐ
サービスに持っていくかストロボを使わずに撮影を続け
るかはユーザが選択出来るべきである。可能な限り動作
を行う。INIT_DBは撮影した画像をディスクへ書
き込んでいる途中で障害が起こった場合など、記憶媒体
の空き容量やディレクトリ情報に間違いが混入する可能
性があるタイミングでの障害を検出した場合や記憶媒体
の空き容量やディレクトリ情報に間違いを検出した場合
に用いる。FATALERRORモジュールが、この種類
のエラーコードを受け取った場合、記憶媒体の空き容量
やディレクトリー情報などの収集をやり直す。INIT
_SYSのエラーコードは内蔵DISKの論理構造を破
壊する可能性のある障害が発生した場合や内蔵DISK
の論理構造の破壊を検出した場合である。内蔵DISK
へはデジタルカメラのステータス情報など重要な情報が
納まっており、この情報に誤りがあるとデジタルカメラ
を安全に稼動させる事が出来ない。しかも、さらに内蔵D
ISKへの書き込みを続けるとDISKの論理構造の破
壊を悪化させる可能性があり、撮影済みの画像ファイル
まで失ってしまう可能性がある。したがって、デジタルカ
メラは内蔵DISKの画像・音声データ読み出しとDI
SKフォーマットしか出来ないモードになり、完全な初
期化をユーザの手で実行してもらうしかない。ASSE
RTは主に開発中に内部エラーや発狂検出でひっかかっ
た場合の為にある。FATALERRORモジュールが
このコードを受け取った場合、デバッグ情報のログを吐
き出し、解析モードへ入る。システムとしては、複数のモ
ジュールが連携して動作しているので、1つのモジュー
ルがエラーを検出した場合に別のエラーを誘発する事が
よくある。しかし、きっかけとなるエラーは最初にレポー
トされる事が多い。そこで、FATALエラーのモジュー
ルは必ず最初にレポートされたエラーだけを表示する。
しかし、リカバリー手段はそうはいかない。最も致命的な
エラーを優先してリカバリーを行う。図の分類は下にな
るほど致命的なエラーになる順番で記述してある。
テムの稼動に必要な重要なファイルが存在する。デジタ
ルカメラの動作はそのファイルにしたがって決定され
る。しかし、内蔵ROMDISKに障害がある場合には、
そうはいかない。内蔵ROMDISKに障害が発生した
場合の処理を特別に設計するのは、基本設計を二重化し
なければならない事を意味する。本発明では内蔵ROM
DISKに障害がある場合、プログラムROMの一部を
読み出し専用ファイルとして利用し、内蔵ROMDIS
Kに障害がある場合の動作を決定出来るように構成し
た。さらに、内蔵ROMDISKのフォーマット直後にプ
ログラムROMからそのファイルをコピーして継続的な
動作が可能になるよう構成した。図29はプログラムR
OMの一部をファイルの代替えとして利用している様子
である。C言語でファイルを読む場合read関数を使うが
フラッシュROMからの読み出しは代りにmemcpyを使っ
て読み出す。
ymbol<シンボルの登録> ここではAddSymbolファンクションとUnlo
ckAndAddSymbolを同時に説明する。Un
lockAndAddSymbolは図19のSTEP
1905で仕様されているOSコールであり、その存在
意義はすでに説明済みのものであるが、UnlockA
ndAddSymbolはAddSymbolファンク
ションの一部として実装されている。したがってAdd
SymbolとUnlockAndAddSymbol
を同時に説明するのが効率が良い。まず、図30がAd
dSymbolのフローチャートである。STEP30
01でAddSymbolが始まる。STEP3002
でバイナリセマフォを用いてシンボルのデータベースの
排他ロックを行う。STEP3003でUnlockA
ndAddSymbolへジャンプする。AddSym
bolはシンボルのデータベースをロックする事以外は
すべてUnlockAndAddSymbolと共通な
のである。図31はUnlockAndAddSymb
olのフローチャートである。STEP3101でUn
lockAndAddSymbolは始まる。次にST
EP3002で該当シンボルの検索を行う。もし、該当
シンボル項目が見つからなかったらSTEP3104で
新規シンボル項目を作成して、データベースへ追加す
る。STEP3102で該当シンボル項目が見つかった
らSTEP3103へ分岐する。STEP3103でそ
の項目が、有効なデータを持っているのか、待ちタスク
のハンドルを持っているのかを判断する。もし待ちタス
クの行列を持っているのであればSTEP3105で待
ち行列のタスクをすべてウェークアップさせる。STE
P3104、STEP3103STEP3105の次に
STEP3106で新規項目へデータを格納し、STE
P3107でシンボルテーブルデータベースをアンロッ
ク(セマフォの開放)する。
索> 図32はシンボル検索ファンクションFindSymb
olのフローチャートである。STEP3201でFi
ndSymbolが始まる。STEP3202でセマフ
ォなどの手法を用いてシンボルのデータベースをロック
する。STEP3203で該当シンボル項目の検索を行
う。検索の結果シンボルが存在しなかった場合はSTE
P3211で新規シンボルを作成してデータベースへ加
える。STEP3203で該当シンボル項目が見つかっ
た場合はSTEP3204へ分岐する。STEP320
4でその項目に有効なデータが含まれているのか、待ち
タスクのハンドルが含まれているかを判断する。もし、
待ちタスクのハンドルを持っているのであればSTEP
3205へ分岐する。STEP3211の後もまた32
05へ移行する。STEP3205ではシンボルデータ
ベースをアンロックして休眠状態になる。そして、タイ
ムアウト時間か、AddSymbol/UnlockA
ndAddSymbolによってウェークアップするま
でSTEP3205で休眠状態となる。STEP320
4で有効なデータを持っていた場合はSTEP3206
でシンボルデータベースのアンロックを行い、STEP
3210で登録データを返却して復帰する。STEP3
205からウェークアップしたらSTEP3207へ移
行する。STEP3207ではそれがタイムアウトによ
るウェークアップかどうか判断する。データが登録され
た事によるウェークアップならばSTEP3210へ分
岐し、登録データを返却して復帰する。STEP320
7でタイムアウトによるウェークアップだったならST
EP3208で他に待ちタスクがなければシンボル項目
を削除し、STEP3209でタイムアウトエラーを返
却して復帰する。
STEP3102の該当シンボル項目の検索を少し詳し
くしたものである。STEP3301で該当シンボル項
目の検索を開始する。STEP3302でシンボル文字
列からハッシュ値の算出を行う。STEP3303でハ
ッシュ値に該当するデータのリストを検索する。もし、
該当項目がなければSTEP3305へ分岐しSTEP
3305でデータ不在コードを返却して復帰する。ST
EP3303で該当する項目があればSTEP3304
へ分岐し、STEP3304では項目へのポインタを返
却し、復帰する。
シンボルシステムのロックと検索図34はLockA
ndFindSymbolファンクションのフローチャ
ートである。STEP3401でLockAndFin
dSymbolが開始される。STEP3402でシン
ボルデータベースの排他ロックを行う。STEP340
3で該当シンボルの検索を行うこれは、図33で説明し
た関数である。もし、該当項目がなければSTEP34
06へ分岐し、STEP3006でデータ無しのエラー
コードを返却して復帰する。STEP3403で該当シ
ンボルがあった場合はSTEP3404で有効なデータ
が格納されているのか、待ちタスクのハンドルが格納さ
れているのかを判断する。もし、STEP3404で有
効なデータが格納されてなければ、STEP3406で
データ無しを示すエラーコードと共に即時復帰する。S
TEP3404で有効なデータがある場合はSTEP3
405でデータを返却して復帰する。
をフローチャートを使って説明する。アプリケーション
は電源の保証が必要になる直前にLockMainPo
werファンクションを呼び電源が落ちても良くなった
らUnLockMainPowerファンクションを呼
び出す。
のロック) 図35はLockMainPowerのフローチャート
である。STEP4001でLockMainPowe
rを開始する。STEP4001でセマフォを用いて共
有データの排他ロックを行う。ここでいう共有データと
はロックカウンタやカウントストップフラッグなどのメ
インパワーマネージャが内部で利用するデータの事であ
る。STEP4003でロックカウンタが0かどうかを
確かめる。もし、0ならオートシャットダウンタイムの
カウントをストップさせる。具体的にはカウントストッ
プフラグをTRUEにする。STEP4005でロック
カウンタをインクリメントする。STEP4006で共
有データのアンロックを行い、STEP4007で復帰
する。
ートである。STEP4101でUnLockMain
Powerを開始する。STEP4102でセマフォを
用いて共有データの排他ロックを行う。STEP410
3でロックカウンタが1ならSTEP4104へ分岐す
る。STEP4104でオートシャットダウンタイムの
カウントを0にクリアしてカウントをスタートさせる。
具体的にはカウントストップフラグをFALSEにす
る。STEP4105でロックカウンタのディクリメン
トを行い、STEP4106で共有データをアンロック
する。STEP4107で復帰する。
ト 図37はオートシャットダウンタイムをカウントするタ
スクのフローチャートである。STEP4201でタス
クを開始する。STEP4202で共有データの排他ロ
ックを行う。STEP4203でカウントストップフラ
グのチェックを行い、もしTRUEならばカウント動作
をスキップしてSTEP4206へジャンプする。もし
FALSEならSTEP4204でカウンタをインクリ
メントする。STEP4205でタイムアウト時間の設
定値と比較し、もし、タイムアウト時間と一致したらS
TEP4207へ分岐する。STEP4207ではシャ
ットダウンシーケンスを起動する。もしSTEP420
5でタイムアウト時間と比較した結果が不一致ならST
EP4206へ進む。STEP4206では共有データ
をアンロックする。STEP4208で一定時間タスク
を休眠状態にした後STEP4202へ戻る。以後ST
EP4202からSTEP4208の間を繰り返す。
ーチャートを用いて説明する事にする。
る 図38はモジュール名からモジュールの番地を得る為の
ファンクションFindModuleのフローチャート
である。STEP5001でFindModuleを開
始し、STEP5002でモジュール検索の排他ロック
を行う。排他ロックにはセマフォなどを用いる。このタ
スクがモジュールを検索中に他のタスクがモジュールを
無効にしたり、追加すると動作に不具合が発生する為に
排他ロックを行うのである。STEP5003でモジュ
ールを検索する。STEP5003は図51でさらに詳
しく解説を加える。STEP5004でモジュール検索
の排他ロックを解除し、STEP5005でSTEP5
003のリターン値である番地又はエラー値を返却す
る。
検索の手順を図39を使って説明する。STEP510
1でモジュール検索を開始する。STEP5102でフ
ラッシュROMの先頭番地へポインタをセットする。こ
のポインタを進めながらモジュールを検索していくので
ある。次にSTEP5103で、ポインタがポイントし
ているモジュールの使用済みフラグをチェックする。も
し、使用済みフラグがTRUEならSTEP5107へ
分岐し、FALSEならSTEP5104へ移行する。
STEP5104ではモジュール名が検索している名前
と一致するかどうかと同時に未使用領域かどうかを確か
める。もし、名前が不一致ならSTEP5107へ分岐
する。つまり、使用済みフラグがTRUEか名前が不一
致ならSTEP5107が実行される。STEP510
7では次のモジュールの先頭番地を算出し、再び510
3へ戻る。こうして名前が不一致するか使用済みフラグ
がTRUEの間検索を続ける。STEP5104で名前
が一致したらSTEP5105でその番地を返却し、呼
び出し元へ復帰する。STEP5104で未使用領域を
検出したら、STEP5106へ分岐し、エラーを呼び
出し元へ返却して復帰する。
行う 図40はファイル名を指定して追加書き込みを行うWr
iteMduleのフローチャートである。STEP5
201でWriteMduleを開始する。STEP5
202でモジュール検索の排他ロックを行う。STEP
5203でモジュールの検索を行う。ここでのモジュー
ル検索は図39で説明したサブルーチンをそのまま用い
る。もし、モジュールを発見する事ができればSTEP
5204へ分岐し、図7の使用済みフラグへTRUEを
書き込む。そして、STEP5203でモジュールを発
見出来なかった場合とSTEP5204の後もSTEP
5206へ分岐する。STEP5206で空き領域の番
地を検索する。空き領域検索は、モジュールの検索と大
変類似しているので説明を省略する。もし、STEP5
206で空き領域が不足している事が検出されたら、S
TEP6210へ分岐し、モジュール検索の排他ロック
を解除してSTEP6211で空き領域不足のエラーを
返却し復帰する。STEP6202で空き領域番地が分
かった後にSTEP5206でモジュールのロードとマ
ッピングを行う。STEP5206でモジュールが書き
込まれる番地が確定するので、ファイルからプログラム
を主記憶へ取り込み、絶対アドレッシングされている部
分を実際の番地へ書き換え、実行可能な状態にする。そ
して、STEP5207でそのプログラムを実際にフラ
ッシュROMへ書き込む。そして、STEP5208で
モジュール検索の排他ロックを解除してSTEP520
9でエラー無しのコードを返却して復帰する。
ルを無効にする 図41はモジュール名を指定してモジュールを無効にす
るKillModuleファンクションのフローチャー
トである。STEP5301でKillModuleを
開始する。STEP5302でモジュール検索の排他ロ
ックを行い、STEP5303でモジュールの検索を行
う。これは図51で説明したルーチンである。モジュー
ルが発見されたらSTEP5304へ分岐し、そのモジ
ュールの使用済みフラグ(図7参照)をTRUEにす
る。STEP5303でモジュールが存在しなかった場
合と5304の後はSTEP5305を実行する。ST
EP5305はモジュール検索の排他ロックの解除を行
い、STEP5306で復帰する。
を実現するソフトウエアのプログラムコードを記録した
記憶媒体を、システムあるいは装置に供給し、そのシス
テムあるいは装置のコンピュータ(またはCPUやMPU)が
記憶媒体に格納されたプログラムコードを読み出し実行
することによっても、達成されることは言うまでもな
い。
グラムコード自体が本発明の新規な機能を実現すること
になり、そのプログラムコードを記憶した記憶媒体は本
発明を構成することになる。
体としては、例えば、フロッピーディスク、ハードディ
スク、光ディスク、光磁気ディスク、CD―ROM、CD―R、
磁気テープ、不揮発性のメモリカード、ROMなどに用い
ることができる。
ラムコードが、コンピュータに挿入された機能拡張ボー
ドやコンピュータに接続された機能拡張ユニットに備わ
るメモリに書き込まれた後、そのプログラムコードの指
示に基づき、その機能拡張ボードや機能拡張ユニットに
備わるCPUなどが実際の処理の一部または全部を行い、
その処理によっても前述した実施形態の機能が実現され
得る。
実現するソフトウエアのプログラムコードを記録した記
憶媒体からそのプログラムをパソコン通信等通信インフ
ラを介して要求者にそのプログラムを配信する場合にも
適用できることは言うまでもない。
ウエアによって拡張することが可能となり、さらに、フ
ァームウエアのバージョンに依存しない追加ソフトウエ
アの開発が可能になった。
を説明する図
図
図
ライブラリの説明図
図
図
説明する図
する図
図
明する図
する図
す図
タスクの処理手順を示す図
ユニット 5 カメラシステムの中央演算器 6 信号処理を高速に実現するためのアクセラレータ 7 電池 8 システム全体へ電源を供給するためのDC/DCコ
ンバータ 9 DC/DCコンバータをコントロールする電源コン
トローラユニット 10 パネル操作・表示装置・電源のコントロールを行
うマイクロコンピュータ 11 ユーザーへ情報を表示する表示装置 12 ユーザーが直接操作するレリーズSWを含むコン
トロールパネル 13 OS等システムプログラムが入ったROM 14 カメラシステムの主記憶であるDRAM 15 内臓記憶媒体として使用するフラッシュROM 16 PCMCIAカードのインターフェース部 17 ATAハードディスクなどの外部記録媒体 18 拡張バスインターフェース 19 PC通信インターフェース 20 DMAコントローラ 21 ストロボ 22 パーソナルコンピュータ
Claims (48)
- 【請求項1】Next Fit法によりメモリを管理し、且つ、
メモリの断片化問題を軽減する為のファンクションを備
えることを特徴とする情報処理装置。 - 【請求項2】 前記メモリの断片化問題を軽減する為の
ファンクションを少なくとも撮影動作前後に実行するこ
とを特徴とする特許請求の範囲第1項に記載の情報処理
装置。 - 【請求項3】 前記メモリの断片化問題を軽減する為の
ファンクションを少なくとも録音動作前後に実行するこ
とを特徴とする特許請求の範囲第1項に記載の情報処理
装置。 - 【請求項4】 前記メモリの断片化問題を軽減する為の
ファンクションを少なくとも消去動作前後に実行するこ
とを特徴とする特許請求の範囲第1項に記載の情報処理
装置。 - 【請求項5】 電気的書き込み可能なフラッシュROM
と、前記フラッシュROMの論理構造をマネージメントす
るマネージメントソフトウエアモジュールを備え、前記
マネージメントソフトウエアモジュールが実行可能なソ
フトウエアモジュールを前記フラッシュROMの任意のア
ドレスへマッピングし、書き込む機能と、前記フラッシ
ュROM中にある任意のモジュールを検索し実行する機能
を有することを特徴とする情報処理装置。 - 【請求項6】 書き込まれたアドレスとは異なるアドレ
スへのマッピングが可能なプログラムローダを有するこ
とを特徴とする特許請求の範囲第5項に記載の情報処理
装置。 - 【請求項7】 実行可能なプログラムファイルの中から
実行可能なレコードを選択し、ロードするプログラムロ
ーダを備えることを特徴とする情報処理装置。 - 【請求項8】 複数の異なるCPU或いは複数のプラット
ホームに対して有効なレコードを有することを特徴とす
る特許請求の範囲第7項に記載の情報処理装置。 - 【請求項9】 プロセス間で共有データのバインディン
グを行う情報処理装置であって、共有データの検索の結
果、目的の共有データが登録されていない場合に、検索
タスクを休眠状態へと移行させ、目的の共有データが登
録された時に検索タスクを実行可能状態へ移すことを特
徴とする情報処理装置。 - 【請求項10】 前記検索タスクが休眠状態に移行して
から所定時間経過しても目的の共有データが登録されな
かった場合にタイムアウトし、実行可能状態へ戻ること
を特徴とする特許請求の範囲第9項に記載の情報処理装
置。 - 【請求項11】 共有データの検索と登録を不可分な動
作として行うことが可能なようにロック機構を有するこ
とを特徴とする特許請求の範囲第9項に記載の情報処理
装置。 - 【請求項12】 IOポートの特定の入力端子の状態によ
ってスタートアップさせるタスクを切り替えるスタート
アップルーチンを備えることを特徴とする情報処理装
置。 - 【請求項13】 内蔵メモリの特定のファイル名の実行
可能ファイルをスタートアップ時にロードし実行するこ
とを特徴とする情報処理装置。 - 【請求項14】 前記実行可能ファイルの実行が終了し
てから外部イベントに対応した動作を開始することを特
徴とする特許請求の範囲第13項に記載の情報処理装
置。 - 【請求項15】 外部記憶媒体の挿入時に、特定のファ
イル名のファイルが外部記憶媒体に存在すれば該ファイ
ルを内蔵メモリへコピーし、前記外部記憶媒体の脱着に
対応してコピーされたファイルを消去することを特徴と
する情報処理装置。 - 【請求項16】 抽象化されたIOポートのサポートソフ
トウエアとそれをコントロールするドライバーソフトウ
エアに論理的に分離設計されていることを特徴とする情
報処理装置。 - 【請求項17】 特定のイベントに対応した処理ルーチ
ンとパラメータとを動的に複数登録可能なフック管理ソ
フトウエアを備え、イベント発生時に登録されたサブル
ーチンへパラメータを引き渡し実行することを特徴とす
る情報処理装置。 - 【請求項18】 前記フック管理ソフトウエアを利用し
たローバッテリー例外処理とシャットダウン処理を行う
ことを特徴とする特許請求の範囲第17項に記載の情報
処理装置。 - 【請求項19】主電源を使用しているプログラムの数を
カウントし、該カウントが0になってから任意の時間経
過した後に主電源をオフすることを特徴とする情報処理
装置。 - 【請求項20】 前記時間を動的に設定可能であること
を特徴とする特許請求の範囲第19項に記載の情報処理
装置。 - 【請求項21】 シャットダウンの処理を少なくとも3
つ以上の複数のレイアに分離して管理し、順次実行して
いくことを特徴とする情報処理装置。 - 【請求項22】 複数のエラーを検出した場合に最初に
検出したエラーの番号を優先的に表示することを特徴と
する情報処理装置。 - 【請求項23】 複数のエラーを検出した場合に最も致
命的なエラーに対するリカバリーを優先して実行するこ
とを特徴とする情報処理装置。 - 【請求項24】 Next Fit法によりメモリを管理し、且
つ、メモリの断片化問題を軽減する為のファンクション
を備えることを特徴とする情報処理方法。 - 【請求項25】 前記メモリの断片化問題を軽減する為
のファンクションを少なくとも撮影動作前後に実行する
ことを特徴とする特許請求の範囲第24項に記載の情報
処理方法。 - 【請求項26】 前記メモリの断片化問題を軽減する為
のファンクションを少なくとも録音動作前後に実行する
ことを特徴とする特許請求の範囲第24項に記載の情報
処理方法。 - 【請求項27】前記メモリの断片化問題を軽減する為の
ファンクションを少なくとも消去動作前後に実行するこ
とを特徴とする特許請求の範囲第24項に記載の情報処
理方法。 - 【請求項28】 実行可能なプログラムファイルの中か
ら実行可能なレコードを選択し、ロードすることを特徴
とする情報処理方法。 - 【請求項29】 複数の異なるCPU或いは複数のプラッ
トホームに対して有効なレコードを有することを特徴と
する特許請求の範囲第28項に記載の情報処理方法。 - 【請求項30】 プロセス間で共有データのバインディ
ングを行う情報処理装置の情報処理方法であって、共有
データの検索の結果、目的の共有データが登録されてい
ない場合に、検索タスクを休眠状態へと移行させ、目的
の共有データが登録された時に検索タスクを実行可能状
態へ移すことを特徴とする情報処理方法。 - 【請求項31】 前記検索タスクが休眠状態に移行して
から所定時間経過しても目的の共有データが登録されな
かった場合にタイムアウトし、実行可能状態へ戻ること
を特徴とする特許請求の範囲第30項に記載の情報処理
方法。 - 【請求項32】 共有データの検索と登録を不可分な動
作として行うことが可能なようにロック機構を有するこ
とを特徴とする特許請求の範囲第30項に記載の情報処
理方法。 - 【請求項33】 IOポートの特定の入力端子の状態によ
ってスタートアップさせるタスクを切り替えるスタート
アップルーチンを備えることを特徴とする情報処理方
法。 - 【請求項34】 内蔵メモリの特定のファイル名の実行
可能ファイルをスタートアップ時にロードし実行するこ
とを特徴とする情報処理方法。 - 【請求項35】 前記実行可能ファイルの実行が終了し
てから外部イベントに対応した動作を開始することを特
徴とする特許請求の範囲第34項に記載の情報処理方
法。 - 【請求項36】 外部記憶媒体の挿入時に、特定のファ
イル名のファイルが外部記憶媒体に存在すれば該ファイ
ルを内蔵メモリへコピーし、前記外部記憶媒体の脱着に
対応してコピーされたファイルを消去することを特徴と
する情報処理方法。 - 【請求項37】 抽象化されたIOポートのサポートソフ
トウエアとそれをコントロールするドライバーソフトウ
エアに論理的に分離設計されていることを特徴とする情
報処理方法。 - 【請求項38】 特定のイベントに対応した処理ルーチ
ンとパラメータとを動的に複数登録可能なフック管理ソ
フトウエアを備え、イベント発生時に登録されたサブル
ーチンへパラメータを引き渡し実行することを特徴とす
る情報処理方法。 - 【請求項39】 前記フック管理ソフトウエアを利用し
たローバッテリー例外処理とシャットダウン処理を行う
ことを特徴とする特許請求の範囲第38項に記載の情報
処理方法。 - 【請求項40】 主電源を使用しているプログラムの数
をカウントし、該カウントが0になってから任意の時間
経過した後に主電源をオフすることを特徴とする情報処
理方法。 - 【請求項41】 前記時間を動的に設定可能であること
を特徴とする特許請求の範囲第40項に記載の情報処理
方法。 - 【請求項42】 シャットダウンの処理を少なくとも3
つ以上の複数のレイアに分離して管理し、順次実行して
いくことを特徴とする情報処理方法。 - 【請求項43】 複数のエラーを検出した場合に最初に
検出したエラーの番号を優先的に表示することを特徴と
する情報処理方法。 - 【請求項44】 複数のエラーを検出した場合に最も致
命的なエラーに対するリカバリーを優先して実行するこ
とを特徴とする情報処理方法。 - 【請求項45】 Next Fit法によりメモリを管理し、且
つ、メモリの断片化問題を軽減する為のファンクション
を備えることを特徴とするオペレーティングシステム。 - 【請求項46】 主電源を使用しているプログラムの数
をカウントし、該カウントが0になってから任意の時間
経過した後に主電源をオフすることを特徴とするオペレ
ーティングシステム。 - 【請求項47】 Next Fit法によりメモリを管理し、且
つ、メモリの断片化問題を軽減する為のファンクション
を有することを特徴とする記憶媒体。 - 【請求項48】 主電源を使用しているプログラムの数
をカウントし、該カウントが0になってから任意の時間
経過した後に主電源をオフする工程を有することを特徴
とする記憶媒体。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP18973497A JP3832933B2 (ja) | 1996-07-19 | 1997-07-15 | 情報処理装置およびその方法、オペレーティングシステム、記憶媒体 |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP19080896 | 1996-07-19 | ||
| JP8-190808 | 1996-07-19 | ||
| JP18973497A JP3832933B2 (ja) | 1996-07-19 | 1997-07-15 | 情報処理装置およびその方法、オペレーティングシステム、記憶媒体 |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JPH1083342A true JPH1083342A (ja) | 1998-03-31 |
| JPH1083342A5 JPH1083342A5 (ja) | 2005-05-19 |
| JP3832933B2 JP3832933B2 (ja) | 2006-10-11 |
Family
ID=26505652
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP18973497A Expired - Fee Related JP3832933B2 (ja) | 1996-07-19 | 1997-07-15 | 情報処理装置およびその方法、オペレーティングシステム、記憶媒体 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3832933B2 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1072055C (zh) * | 1997-03-18 | 2001-10-03 | 三菱重工业株式会社 | 双滚筒式连续铸造方法 |
| EP0884681A3 (en) * | 1997-06-10 | 2001-11-14 | Sanyo Electric Co., Ltd. | Digital camera |
-
1997
- 1997-07-15 JP JP18973497A patent/JP3832933B2/ja not_active Expired - Fee Related
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1072055C (zh) * | 1997-03-18 | 2001-10-03 | 三菱重工业株式会社 | 双滚筒式连续铸造方法 |
| EP0884681A3 (en) * | 1997-06-10 | 2001-11-14 | Sanyo Electric Co., Ltd. | Digital camera |
| US6603509B1 (en) * | 1997-06-10 | 2003-08-05 | Sanyo Electric Co., Ltd. | Digital camera controllable by a program |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3832933B2 (ja) | 2006-10-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6470413B1 (en) | Information processing apparatus and method in which an executable file in an incorporated memory is loaded and executed at startup | |
| US6604168B2 (en) | Flash eeprom management using ratio of used to unused sectors | |
| JP3593241B2 (ja) | 計算機の再起動方法 | |
| KR100924497B1 (ko) | 비-휘발성 어플리케이션 및 화일 저장 디바이스로부터부팅시키기 위한 시스템 및 방법 | |
| US7702894B2 (en) | System and method for loading programs from HDD independent of operating system | |
| US6401198B1 (en) | Storing system-level mass storage configuration data in non-volatile memory on each mass storage device to allow for reboot/power-on reconfiguration of all installed mass storage devices to the same configuration as last use | |
| US9158628B2 (en) | Bios failover update with service processor having direct serial peripheral interface (SPI) access | |
| US5022077A (en) | Apparatus and method for preventing unauthorized access to BIOS in a personal computer system | |
| EP0811905B1 (en) | Storage control and computer system using the same | |
| US8296521B2 (en) | Method of configuring non-volatile memory for a hybrid disk drive | |
| US9448889B2 (en) | BIOS failover update with service processor | |
| KR100233178B1 (ko) | 대용량 저장장치 구성 레코드들을 갱신하기 위한 방법 및 시스템 | |
| US20040076043A1 (en) | Reliable and secure updating and recovery of firmware from a mass storage device | |
| US9448808B2 (en) | BIOS update with service processor without serial peripheral interface (SPI) access | |
| TWI813869B (zh) | 資料儲存裝置及維持資料儲存裝置正常開機運作的方法 | |
| US8677084B2 (en) | Method of configuring non-volatile memory for a hybrid disk drive | |
| US7620994B2 (en) | Data recording system and data access method | |
| CN120066598B (zh) | 操作系统启动项的分类方法、计算机程序产品和服务器 | |
| JP3832933B2 (ja) | 情報処理装置およびその方法、オペレーティングシステム、記憶媒体 | |
| CN114020308A (zh) | 一种摄像设备升级方法、装置、设备及介质 | |
| JP4351328B2 (ja) | 情報処理装置及びシステム起動管理方法 | |
| US20230152998A1 (en) | Embedded system and method for updating firmware | |
| JPH1050084A (ja) | メモリ制御装置およびメモリアクセス方法 | |
| CN121764397A (zh) | 用于存储控制芯片的BootROM架构 | |
| TW202420081A (zh) | 存儲控制器的驅動管理方法及相關設備 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040715 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040715 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060417 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060425 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060626 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060711 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060718 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090728 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100728 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100728 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110728 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120728 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120728 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130728 Year of fee payment: 7 |
|
| LAPS | Cancellation because of no payment of annual fees |