JP2006331221A - データ転送装置及びデータ転送方法 - Google Patents

データ転送装置及びデータ転送方法 Download PDF

Info

Publication number
JP2006331221A
JP2006331221A JP2005156195A JP2005156195A JP2006331221A JP 2006331221 A JP2006331221 A JP 2006331221A JP 2005156195 A JP2005156195 A JP 2005156195A JP 2005156195 A JP2005156195 A JP 2005156195A JP 2006331221 A JP2006331221 A JP 2006331221A
Authority
JP
Japan
Prior art keywords
transfer
data
parameter group
condition parameter
data transfer
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.)
Withdrawn
Application number
JP2005156195A
Other languages
English (en)
Inventor
Takeo Sakimura
岳生 崎村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2005156195A priority Critical patent/JP2006331221A/ja
Publication of JP2006331221A publication Critical patent/JP2006331221A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

【課題】 データの転送(展開)時にCPUにかかる負荷をさらに低減することが可能なデータ転送装置及びデータ転送方法を提供する。
【解決手段】 データ転送に必要なパラメータを記憶媒体に記録し、データ転送装置がその記録場所に関する情報を保持し、データ転送時に、データ転送に必要なパラメータをデータ転送装置が直接取得する。これにより、データ転送に必要なパラメータをCPUがデータ転送装置に設定する必要が無く、CPUにかかる負荷を低減することが可能となる。
【選択図】図2

Description

本発明はデータ転送装置及びデータ転送方法に関し、特に、主制御部(CPU)の負荷を低減するDMA転送を行なうデータ転送装置及びデータ転送方法に関する。
近年、多くのデータ処理装置(例えば、デジタルカメラ)はCPU(マイクロプロセッサ)を有し、CPUがファームウェアと呼ばれるその装置に特化した制御プログラムを実行することによって動作する。ファームウェアは通常、装置に搭載した不揮発性ROM(例えばフラッシュROM)等に記録されており、システムの起動時にその動作を開始する。
ファームウェアはその開発環境に応じて、様々なソフトウェア記述言語、例えばC++やPerl、FORTRAN等で記述されるが、多くのデータ処理装置において最も一般的なソフトウェア記述言語の一つはC言語である。現在C言語はその可読性や開発環境、習得環境の充実等の理由により、非常に多くのデータ処理装置用ファームウェアの作成に使用されている。
C言語で記述されたファームウェアのソースコードはコンパイラを用いて機械語に変換し、装置が搭載する不揮発ROMに書き込まれる。C言語で記述され、コンパイル及びリンクを含むビルド処理で機械語に変換されたファームウェアのバイナリコードは、テキストセグメント領域、データセグメント領域、bssセグメント領域の3つの領域で構成される。テキストセグメント領域はファームウェアの実行コードを格納する。データセグメント領域はファームウェアの実行時に用いる変数(主にグローバル変数)のうち、予め初期化されているものを格納する。bssセグメント領域はファームウェアの実行時に用いるグローバル変数のうち、初期化されていないものを格納する。
ファームウェアはそれが搭載されている装置の電源がオフの状態でもデータを保持するために、不揮発性ROMに記録される。しかし、データセグメント領域、bssセグメント領域のような変数領域はプログラム実行中に書き換えられる可能性があるため、フラッシュROMのような読み出し専用のメモリ上で利用することができない。そのため、これらのデータをデータ処理装置の起動時に書き換え可能なSDRAM等のランダムアクセスメモリに展開(コピー)しておく必要がある。
図1は、フラッシュROM2のデータセグメント領域102とbssセグメント領域103をDRAM3に展開する様子を示す図である。C言語によって作成・ビルドされたファームウェアは、テキストセグメント領域101、データセグメント領域102、bssセグメント領域103の順に、フラッシュROM2の低アドレスから配置されるように書き込まれている。
データ処理装置のシステムが起動すると、データ処理装置のCPUがテキストセグメント領域101上の転送プログラムを実行する。転送プログラムは、データセグメント領域102をDRAM3上のデータセグメント展開領域104にコピーし、また、bssセグメント領域103に相当するサイズの領域をDRAM3上にbssセグメント展開領域105として確保してその領域を0で埋める。一般的にC言語で取り扱う未初期化変数はシステムの起動時に0で初期化するからである。
システム起動後の制御プログラム(ファームウェア)は、DRAM3上にコピーしたデータセグメント展開領域104と0で初期化したbssセグメント展開領域105のデータ(変数)にアクセスすることにより、変数の値を書き換えることが可能である。
ここでテキストセグメント領域101に記録されている実行コードについてはシステム動作中に書き換えることがないためDRAM3に展開する必要は無いが、例えば動作中の命令処理のパフォーマンスを上げるためにアクセススピードの速いDRAM3へ展開して実行してもよい。ただし、この展開によりシステム起動時に時間がかかるため、テキストセグメント領域101の実行コードを展開するか否かは、システム起動時間とシステム動作中のコード処理速度とのトレードオフとなる。本実施例はデータセグメント展開領域104とbss領域105のみを初期化し、テキストセグメント領域101をDRAM3に展開しない場合を想定するが、展開する場合はテキストセグメント領域101自身に含まれる転送プログラムを利用する。この転送プログラムは後述する本発明の転送手段で実現することも可能である。
上記の展開作業はデータ処理装置のCPU資源を消費し、システム起動に時間がかかるという問題がある。特に、展開するデータサイズはそのファームウェアで取り扱う変数のデータサイズに依存するため、使用変数量が多いとそれだけシステム起動に要する時間が長くなる。この展開はC言語ベースで作成したファームウェアが変数を利用して動作するための準備として必須であり、この処理をシステムの起動時以外に予め行なうことは困難である。
一部のデータ処理装置では、電源投入後のシステム起動時間の短縮が求められている。例えば、デジタルカメラなどはユーザが撮影したいときに電源を投入して瞬時にカメラ撮影ができなければならない。
そこで、上記の問題を解決するためにDMA転送によるデータ展開方法が考えられている。この方法ではシステム起動時に専用のコントローラ(DMAコントローラ)がデータの展開を行なうため、CPUの負荷を低減できるという利点がある。
また、特許文献1は、主に電源オフ時のハイバネーション処理に際して、DMA転送を利用してシステム領域のデータを外部の記憶装置へ転送する方法を開示している。
特開平11−338640号公報
しかしながら、データの展開にDMA転送を利用する場合でも、CPUはシステム起動時に、データ転送元であるデータセグメント領域102の先頭アドレス、データセグメント領域102のサイズ、データ転送先であるデータセグメント展開領域104の先頭アドレス、等の転送条件パラメータ群をDMAコントローラに格納(設定)しなければならない。この展開作業は依然としてCPUに負荷をかけ、システムの起動時間を長くする要因となり、例えばデジタルカメラの使用時にシャッターチャンスを逃すなどの原因となりうる。
本発明はこのような状況に鑑みてなされたものであり、データの展開(転送)時にCPUにかかる負荷をさらに低減することが可能なデータ転送装置及びデータ転送方法を提供することを目的とする。
上記課題を解決するために、本発明のデータ転送装置は、第1の記憶媒体、第2の記憶媒体、及び主制御部を備えるデータ処理装置に設けられるデータ転送装置であって、少なくとも転送対象データの転送元アドレスを含む転送条件パラメータ群を記憶するための記憶手段と、前記転送条件パラメータ群を取得し、前記記憶手段に格納する格納手段と、前記転送条件パラメータ群に従って前記転送対象データを転送する転送手段と、を備えることを特徴とする。
また、本発明のデータ転送方法は、第1の記憶媒体、第2の記憶媒体、主制御部、及び少なくとも転送対象データの転送元アドレスを含む転送条件パラメータ群を記憶するための記憶部を有するデータ転送装置、を備えるデータ処理装置においてデータを転送するデータ転送方法であって、前記転送条件パラメータ群を取得し、前記記憶部に格納する格納工程と、前記転送条件パラメータ群に従って前記転送対象データを転送する転送工程と、を備えることを特徴とする。
なお、その他の本発明の特徴は、添付図面及び以下の発明を実施するための最良の形態の記載によっていっそう明らかになるものである。
以上の構成により、本発明のデータ転送装置及びデータ転送方法によれば、データの展開時にCPUにかかる負荷をさらに低減することが可能となる。
以下、添付図面を参照して、本発明の好適な実施形態を説明する。
[第1の実施形態]
本実施形態では、デジタルカメラなどのデータ処理装置に、本発明におけるデータ転送装置を搭載する形態について説明する。なお、本実施形態では主に、データ処理装置に設けられた図1のフラッシュROM2からDRAM3にデータを転送するものとして説明するが、転送元及び転送先は任意の記憶媒体における任意の領域とすることができる。また、本実施形態ではデータ処理装置の電源投入時のデータ転送処理について説明するが、本発明におけるデータ転送装置はこれ以外のタイミングでもデータ転送を行ない得る。
<システム構成>
図2は、本実施形態におけるデータ処理装置及びデータ転送装置のシステム構成を示す図である。このデータ処理装置は、CPU1、フラッシュROM2、DRAM3、データバス4、CPUバス5、データ転送装置6、電源装置16を備える。
CPU1はフラッシュROM2に保持されるファームウェアを実行することにより、データ処理装置を制御する。フラッシュROM2は前述の通り、CPU1が実行するファームウェアを保持する。DRAM3は前述の通り、ファームウェアの変数領域を展開する領域である。DRAM3はまた、データ処理装置が処理するデータ(例えば画像データ)の一時記憶領域などにも使用することができる。
データ転送装置6は、これを制御する制御部7と、制御プログラムなどを格納するROM8を備える。データ転送装置6はまた、データの転送元アドレスを格納する転送元ポインタ設定レジスタ9、転送元アドレスの変化量を格納する転送元ポインタ転送方向設定レジスタ10、転送するデータのサイズを格納する転送データサイズ設定レジスタ11、転送先アドレスを格納する転送先ポインタ設定レジスタ12、転送先アドレスの変化量を格納する転送先ポインタ転送方向設定レジスタ13を備える。データ転送装置6はさらに、データ転送の開始を示す転送開始レジスタ14、データ転送の完了を示す転送完了レジスタ15を備える。
ここで、転送元(転送先)アドレスの変化量について説明する。ある特定のアドレスAを転送元とし、そこに格納されるデータをある特定のアドレスBに転送する。通常のコピーであれば、次の転送元アドレスは(A+1)となり、転送先アドレスは(B+1)となる。この場合の「+1」(アドレスインクリメント)が転送元(転送先)アドレスの変化量である。また、例えば転送元アドレスAを固定し、そこに格納されるデータで転送先のメモリの一定の領域を埋める場合もある。この場合、転送元アドレスの変化量は固定、転送先アドレスの変化量はアドレスインクリメントとなる。
なお、以下では、転送元ポインタ設定レジスタ9乃至転送先ポインタ転送方向設定レジスタ13に格納されるべき値(パラメータ)の集合(又は集合の一部)を、「転送条件パラメータ群」と呼ぶものとする。
また、電源装置16はデータ転送装置6に接続されており、電源投入と同時にデータ転送を開始するためのトリガーとなる。
電源装置16に電源が投入されると、CPU1はCPUバス5を介してフラッシュROM2に格納されるファームウェアの実行コードをフェッチする。この段階では、変数操作を伴うコードは実行できず、変数操作を伴わない所定の初期化作業のみを行なう(詳細は後述)。CPU1の処理と並行して、データ転送装置6はフラッシュROM2の変数領域(データセグメント領域102及びbssセグメント領域103)をDRAM3に展開する(詳細は後述)。展開が完了すると、CPU1は変数操作を伴う処理を実行可能となり、実行コードの内容に応じてDRAM3からのデータ取得、書き込みを、データバス4を介して行なう。
<フラッシュROM2の構成>
図3は、フラッシュROM2に格納されるデータの構成を示す図である。フラッシュROM2のアドレス領域は予め定義されたメモリマップ上にアサインされており、CPU1やデータ転送装置6はフラッシュROM2のコントローラ(不図示)を介して自由にアクセスできる。
本実施形態において、図3に示すように、フラッシュROM2のアドレス領域はメモリマップ上でpStartAddressから連続的に始まるものとする。また、ビルド済みのファームウェアはアドレスpTextから始まるテキストセグメント領域101、pDataから始まるデータセグメント領域102、pBssで始まるbssセグメント領域103を含む。
ここで、データセグメント領域102のデータサイズSizeOfDataSegmentは、
SizeOfDataSegment = pBss - pData
で求めることができ、bssセグメント領域103のデータサイズSizeOfBssSegmentは、
SizeOfBssSegment = pEnd - pBss
で求めることができる。なお、pEndは、ファームウェアの最後尾を示すアドレスである。
ここで、それぞれのアドレスやデータサイズは、C言語等で作成したソースコードのビルド時に決定する。したがって、ビルドの構成によってこれらのパラメータは変化しうる。
また、フラッシュROM2は、データセグメント領域転送情報格納領域106及びbssセグメント領域転送情報格納領域107を有する。データセグメント領域転送情報格納領域106はアドレスpDataSegmentInfoから始まり、データセグメント領域102をDRAM3に展開するための転送条件パラメータ群を保持する。bssセグメント領域転送情報格納領域107はアドレスpBssSegmentInfoから始まり、bssセグメント領域103をDRAM3に展開するための転送条件パラメータ群を保持する。
なお、pDataSegmentInfo及びpBssSegmentInfoは、転送条件パラメータ群を格納するのに十分な領域を確保できるアドレスであれば、任意のアドレスにすることができ、システムの設計時に決定する固定のアドレスである。また、データ転送装置6がアクセス可能であれば、フラッシュROM2以外の記憶領域を示すアドレスでもよい。
<DRAM3の構成>
図4は、データが展開されるDRAM3の構成を示す図である。本実施形態において、図4に示すように、DRAM3のアドレス領域はメモリマップ上でpRamStartAddressから連続的に始まるものとする。また、データセグメント展開領域104は開始アドレスpRamDataから、bssセグメント展開領域105は開始アドレスpRamBssから、連続した領域に配置されている。pRamBssはデータセグメント領域102のサイズに依存し、
pRamBss = pRamData + SizeOfDataSegment
で得ることができる。
<転送条件パラメータ群の記録>
次に、転送条件パラメータ群の記録について説明する。このセクションで説明する処理は、データ処理装置の起動時ではなく、製造時やファームウェアのアップデート時に行なわれることに注意されたい。転送条件パラメータ群の各パラメータの値は、データ処理装置やファームウェアの設計に依存するからである。
データ処理装置においてフラッシュROM2からDRAM3へデータの展開を行なう際には、それぞれのデータが格納されているアドレスやデータサイズなどの情報を知る必要がある。これらの情報は、ファームウェアのビルド時及び、ビルド済みファームウェアをフラッシュROM2に書き込む際に確定する。ここで確定する情報は次に挙げるものである。
(データセグメント領域転送情報)
フラッシュROM2のデータセグメント領域102の開始アドレス:pData
フラッシュROM2のデータセグメント領域102のサイズ:SizeOfDataSegment
DRAM3のデータセグメント展開領域104の開始アドレス:pRamData
(bssセグメント領域転送情報)
フラッシュROM2のbssセグメント領域103のサイズ:SizeOfBssSegment
DRAM3のbssセグメント展開領域105の開始アドレス:pRamBss
ファームウェアプログラムをフラッシュROM2に書き込む際に、併せて、これらの確定した情報(転送条件パラメータ群)を、データセグメント領域転送情報格納領域106(アドレスpDataSegmentInfo)、bssセグメント領域転送情報格納領域107(アドレスpBssSegmentInfo)に書き込む。
また、併せて、データ転送装置6のROM8にpDataSegmentInfo及びpBssSegmentInfoを記録する。これにより、データ転送装置6がデータを転送する際に、pDataSegmentInfo及びpBssSegmentInfoを参照し、転送条件パラメータ群を取得することが可能となる。
なお、pDataSegmentInfo及びpBssSegmentInfoの記録場所はROM8に限定されるものではなく、データ転送装置6が転送条件パラメータ群を取得することが可能な形式であればどのような場所に記録しても構わない。
また、一般的にファームウェアはアップデートにより書き換えられる可能性のあるものである。ファームウェアはユーザがC言語などの高級言語で記述した場合には専用のコンパイラを用いて実行可能なデータ形式に変換(ビルド)する必要がある。前述のように転送条件パラメータ群はファームウェアのビルド時及び、ビルド済みファームウェアをフラッシュROM2に書き込む際に確定する。したがって、ファームウェアのアップデートにより、pDataSegmentInfo及びpBssSegmentInfoに記録されるべき転送条件パラメータ群が変化する可能性がある。そこで本実施形態では、ファームウェアプログラムを受信したデータ処理装置がそのプログラムを解析し、転送条件パラメータ群をフラッシュROM2に書き込む構成とする。
ここで、データ処理装置が転送条件パラメータ群を取得する方法を説明する。コンパイラがファームウェアをビルドする時に、シンボルファイルと呼ばれるデータを生成するが、実際のシステムとしてデバッグ情報を付加しない状態でのファームウェアを生成する際には、これらの情報はリンクによるシンボル解決後削除してしまうので、ファームウェアバイナリそのものから転送条件パラメータ群を抽出することはできない。
したがって、本実施例形態においてファームウェアをビルドする際は、中間的に生成されるデバッグ情報付きフォーマットファイルから転送パラメータ群を抽出し、最終的なファームウェアバイナリを生成後、その末尾に付加する。ファームウェアバイナリ中には転送条件パラメータ群が存在することを示すシグネチャなどを併せて付加する。
ファームウェアのアップデートを行なう際は、CPU1がシグネチャの解析を行なうことにより、pDataSegmentInfo、pBssSegmentInfo等、フラッシュROM2中の所定の領域に転送条件パラメータ群を書き込むことができる。
なお、ファームウェアプログラムバイナリの生成方法、及びアップデート方法は上記の方法に限定されるものではなく、例えば、デバッグ情報を残したままのファームウェアプログラムバイナリを生成し、CPU1が直接それを解析して転送条件パラメータ群を取得する構成とすることも可能である。
図5は、データ処理装置がファームウェア及び転送条件パラメータ群をフラッシュROM2に書き込む処理の流れを示すフローチャートである。
ステップS501でCPU1がファームウェア書き込み指示を受信すると、ステップS502で、CPU1はコンパクトフラッシュ(登録商標)などの記憶媒体などからファームウェアプログラムを受信する。
ステップS503では、CPU1は受信したファームウェアから転送条件パラメータ群を抽出する。前述のように、CPU1はファームウェアバイナリに付加された情報から転送条件パラメータ群を取得してもよいし、デバッグ情報の残ったファームウェアバイナリを使用する場合はそこから直接抽出してもよい。
ステップS504では、CPU1はメモリコントローラ(不図示)を介して、受信したファームウェアをフラッシュROM2に書き込む。
ステップS505では、CPU1はメモリコントローラ(不図示)を介して、抽出した転送条件パラメータ群をフラッシュROM2のデータセグメント領域転送情報格納領域106及びbssセグメント領域転送情報格納領域107に書き込む。それぞれの領域を示すアドレス(pDataSegmentInfo及びpBssSegmentInfo)は、例えばデータ転送装置6のROM8から取得する構成とすることが可能である。また、前述のように、転送条件パラメータ群の格納場所(pDataSegmentInfo及びpBssSegmentInfoが示すアドレス)は、データ転送装置6がアクセス可能であれば、フラッシュROM2以外の記憶領域を示すアドレスでもよい。
以上のようにして、ファームウェアの書き込みが完了する。
<データ転送(展開)処理の流れ>
図6は、データ処理装置の起動時にデータ転送装置6がフラッシュROM2からDRAM3にデータを展開する処理の流れを示すフローチャートである。
ステップS601で電源装置16に電源が投入されると、電源回路(不図示)を介してデータ転送装置6に電力が供給される。並行して、CPU1はファームウェアの実行コードにフェッチを開始する。前述のように、この段階では、CPU1は変数操作を伴うコードは実行できず、変数操作を伴わない所定の初期化作業のみを行ない、所定の初期化作業終了後はデータ転送装置6によるデータ転送の終了を待つ(詳細は図7を参照して後述)。
データ転送装置6の話に戻る。データ転送装置6が電力の供給を受けると、ステップS602で、図2のデータ転送装置6が起動する。データ転送装置6が起動すると、制御部7がROM8に格納されているデータ転送装置6の制御プログラムを実行する。以下、図6の説明において、特に断らなければ動作の主体は制御部7であるものとする。
ステップS603では、データ転送装置6はROM8から図3のデータセグメント領域転送情報格納領域106のアドレスpDataSegmentInfoを取得し、そのアドレスを参照して、データセグメント領域102の転送に関する転送条件パラメータ群を取得する。
データセグメント領域転送情報格納領域106(pDataSegmentInfo)には前述のように、以下に挙げる情報が格納されている。
(データセグメント領域転送情報)
フラッシュROM2のデータセグメント領域102の開始アドレス:pData
フラッシュROM2のデータセグメント領域102のサイズ:SizeOfDataSegment
DRAM3のデータセグメント展開領域104の開始アドレス:pRamData
データセグメント領域転送情報格納領域106から取得した転送条件パラメータ群はそれぞれ、転送元ポインタ設定レジスタ9(pData)、転送データサイズ設定レジスタ11(SizeOfDataSegment)、転送先ポインタ設定レジスタ12(pRamData)に記録される。
また、ROM8には、転送元ポインタ転送方向設定レジスタ10及び転送先ポインタ転送方向設定レジスタ13に記録されるべき値が格納されている。これらのレジスタは、データ転送を行なう上で転送元、転送先それぞれのポインタ更新をインクリメント/ディクリメント/一定(不変)に設定するためのものである。ここではテキストセグメント領域101のすべてのアドレスをデータセグメント展開領域104にコピーするため、転送元ポインタ転送方向設定レジスタ10及び転送先ポインタ転送方向設定レジスタ13は共にインクリメントになるように、ROM8に情報が格納されている。ステップS603で制御部7は、これらの値を転送元ポインタ転送方向設定レジスタ10及び転送先ポインタ転送方向設定レジスタ13に記録する。
なお、この情報はフラッシュROM2のデータセグメント領域転送情報格納領域106など、他の場所に格納してもよい。また、本実施形態において転送条件パラメータ群は主としてフラッシュROM2及びROM8に分散して格納されるように説明しているが、一方にまとめてもよいし、データ転送装置6がCPU1に負荷をかけずにアクセス可能な領域であれば、これら以外のメモリに記録してもよい。
まとめると、ステップS603における処理により、データ転送装置6の各レジスタには以下のように転送条件パラメータ群が設定された状態となる。
転送元ポインタ設定レジスタ9:pData
転送元ポインタ転送方向設定レジスタ10:アドレスインクリメント
転送データサイズ設定レジスタ11:SizeOfDataSegment
転送先ポインタ設定レジスタ12:pRamData
転送先ポインタ転送方向設定レジスタ13:アドレスインクリメント
次にステップS604で、転送開始レジスタ14をイネーブルにする。これにより、データ転送装置6はデータ転送を開始する。この転送により、データセグメント領域102の初期化済み変数がすべてフラッシュROM2のアドレスpDataから、DRAM3のpRamDataから始まる領域へ展開される。
ステップS605では、転送が完了したかを判定し、完了するとステップS606へ移行する。完了の判定は、転送データサイズ設定レジスタ11に定められる量のデータが転送されたかによって行なうことができる。
ステップS606では、転送開始レジスタ14をディスエーブルにする。これにより、データ転送装置6はデータ転送を停止する。
ステップS607では、データ転送装置6はbssセグメント領域転送情報格納領域107及びROM8を参照して、bssセグメント領域103の転送に関する転送条件パラメータ群を取得する。
bssセグメント領域転送情報格納領域107(pBssSegmentInfo)には前述のように、以下に挙げる情報が格納されている。
(bssセグメント領域転送情報)
フラッシュROM2のbssセグメント領域103のサイズ:SizeOfBssSegment
DRAM3のbssセグメント展開領域105の開始アドレス:pRamBss
bssセグメント領域転送情報格納領域107から取得した転送条件パラメータ群はそれぞれ、転送データサイズ設定レジスタ11(SizeOfBssSegment)、転送先ポインタ設定レジスタ12(pRamBss)に記録される。
また、bssセグメント展開領域105はデータのコピーではなく、領域中の全アドレスを0で埋めるため、DRAM3上の任意の空きアドレスにメモリコントローラ(不図示)を介して0を代入する。その上で、転送元ポインタ設定レジスタ9には0を代入したアドレスを記録する。bssセグメント展開領域105の全アドレスを0で埋める理由は、前述のように一般的にC言語で取り扱う未初期化変数はシステムの起動時に0で初期化するからであり、必ずしも0に限定する必要はない。
また、ROM8には、転送元ポインタ転送方向設定レジスタ10及び転送先ポインタ転送方向設定レジスタ13に記録されるべき値が格納されている。ここではbssセグメント展開領域105の全アドレスに0を代入するため、転送元ポインタ転送方向設定レジスタ10は一定(すなわち、転送元アドレスは0を代入したアドレスから変化しない)、転送先ポインタ転送方向設定レジスタ13はインクリメントになるように、ROM8に情報が格納されている。ステップS607で制御部7は、これらの値を転送元ポインタ転送方向設定レジスタ10及び転送先ポインタ転送方向設定レジスタ13に記録する。
なお、この情報はフラッシュROM2のbssセグメント領域転送情報格納領域107など、他の場所に格納してもよい。
まとめると、ステップS607における処理により、データ転送装置6の各レジスタには以下のように転送条件パラメータ群が設定された状態となる。
転送元ポインタ設定レジスタ9:0を代入したアドレス
転送元ポインタ転送方向設定レジスタ10:アドレス一定
転送データサイズ設定レジスタ11:SizeOfBssSegment
転送先ポインタ設定レジスタ12:pRamBss
転送先ポインタ転送方向設定レジスタ13:アドレスインクリメント
次にステップS608で、転送開始レジスタ14をイネーブルにする。これにより、データ転送装置6はデータ転送を開始する。この転送により、DRAM3上のbssセグメント展開領域105の全アドレスに0が代入された状態となる。
ステップS609では、転送が完了したかを判定し、完了するとステップS610へ移行する。完了の判定は、転送データサイズ設定レジスタ11に定められる量のデータが転送されたか(ここでは、0が代入されたか)によって行なうことができる。
ステップS610では、転送開始レジスタ14をディスエーブルにする。これにより、データ転送装置6はデータ転送を停止する。
ステップS611では、転送完了レジスタ15をアサートする。このとき一方で、CPU1は必要な初期化作業を行なった後、転送完了レジスタ15を監視している。CPU1が転送完了レジスタ15のアサートを確認したらシステムの起動が完了し、変数操作を伴うファームウェアの実行が可能となる。
<CPU1の処理の流れ>
図7は、電源装置16に電源が投入された際の、CPU1の処理の流れを示すフローチャートである。
ステップS701で電源装置16に電源が投入されると、ステップS702で、CPU1は変数操作を伴わない、所定の初期化作業を行なう。この作業は例えばCPU1及びその周辺デバイスのハードウェア初期化の処理である。特にデジタルカメラにおいては液晶やレンズ、その他操作部材と結線するポートの入出力値の初期化である。
初期化作業が終了するとステップS703で、転送完了レジスタ15がアサートされるのを待つ。アサートを確認するとステップS704に移行し、システムの起動処理が完了する。
<まとめ>
以上図1乃至図7を参照して説明したように、本実施形態によれば、データ転送装置6はCPU1を使用することなく転送条件パラメータ群を設定し、フラッシュROM2からDRAM3へのデータの展開を行なうことができる。すなわち、従来はDMA転送においても転送条件パラメータ群の設定のために多少なりともCPU資源を消費していたが、本実施形態によれば、データ転送装置6はCPU1と完全に独立して動作することが可能である。
これにより、データ処理装置(例えばデジタルカメラ)の電源投入時にCPU1はデータ転送に係る負担を受けずに他の初期化作業を行なうことが可能となる。その結果、システムの起動に要する時間を短縮することが可能となる。
なお、本実施形態では一例としてファームウェアを実行する最小構成からなるデータ処理装置について説明したが、マイクロコンピュータとファームウェアで実行するデータ処理装置全般に適用可能である。また、データセグメント領域転送情報、及びbssセグメント領域転送情報の格納先はフラッシュROM2に限定されることなく、その他の不揮発性外部記録装置、もしくはハードウェアに搭載の別のメモリ領域であってもよい。
さらに、データ転送装置6が展開可能な領域はデータセグメント領域102及びbssセグメント領域103に限られるものではない。すなわち、ROM8中の制御プログラムの設計を変更すれば、テキストセグメント領域101はもちろん、その他任意の領域の展開にデータ転送装置6を適用することが可能である。
[第2の実施形態]
第1の実施形態では、データ転送装置6が転送条件パラメータ群を記録するために転送元ポインタ設定レジスタ9乃至転送先ポインタ転送方向設定レジスタ13を備え、展開する領域ごと(例えばデータセグメント領域102とbssセグメント領域103)に転送条件パラメータ群を設定し、展開を行なった。第2の実施形態では、展開する領域ごとに転送条件パラメータ群を記録するために、領域の数だけレジスタ群を備えるデータ転送装置23(図8参照)について説明する。
<システム構成>
図8は、本実施形態におけるデータ処理装置及びデータ転送装置のシステム構成を示す図である。図8において、第1の実施形態と同じ構成要素には同じ符号を付して詳細な説明は省略する。
本実施形態では、データ転送装置23は、展開すべきデータセグメント領域102及びbssセグメント領域103それぞれに専用の展開装置であるデータセグメント領域展開装置17及びbssセグメント領域展開装置20を備える。また、それぞれの展開装置は、転送元ポインタ設定レジスタ9乃至転送先ポインタ転送方向設定レジスタ13に相当する、データセグメント領域転送情報設定レジスタ群18及びbssセグメント領域転送情報設定レジスタ群21を備える。さらに、それぞれの展開装置は、転送開始レジスタ14に相当する転送開始レジスタ19及び転送開始レジスタ22を備える。
このように、本実施形態では、データ転送装置23を搭載したデータ処理装置において、データ転送装置23内にフラッシュROM2の特定アドレスのデータを転送条件パラメータ群として反映するミラーレジスタ(データセグメント領域転送情報設定レジスタ群18、bssセグメント領域転送情報設定レジスタ群21)を備える。
ミラーレジスタについて詳述すると、データセグメント領域転送情報設定レジスタ群18は図3におけるデータセグメント領域転送情報格納領域106の値を反映するミラーレジスタとなっている。すなわちデータ転送装置23は電源投入時に、データセグメント領域転送情報設定レジスタ群18にデータセグメント領域転送情報格納領域106に保持される転送条件パラメータ群を代入する。同様に、bssセグメント領域転送情報設定レジスタ群21は図3におけるbssセグメント領域転送情報格納領域107に保持される転送条件パラメータ群を反映するミラーレジスタとなっている。
<データ転送(展開)処理の流れ>
図9は、データ処理装置の起動時にデータ転送装置23がフラッシュROM2からDRAM3にデータを展開する処理の流れを示すフローチャートである。なお、特に断らなければ図9のフローチャートにおける動作の主体は、制御部7である。
ステップS901で電源装置16に電源が投入されると、電源回路(不図示)を介してデータ転送装置23に電力が供給される。並行して、CPU1は図6のステップS601と同様、変数操作を伴わない所定の初期化作業を行なう。
データ転送装置23が電力の供給を受けると、ステップS902で、データ転送装置23が起動する。
次にステップS903で、データセグメント領域転送情報設定レジスタ群18及びbssセグメント領域転送情報設定レジスタ群21のミラーリングを行なう。ミラーリングとは、フラッシュROM2のデータセグメント領域転送情報格納領域106及びbssセグメント領域転送情報格納領域107から始まる領域に格納されているデータをデータセグメント領域転送情報設定レジスタ群18及びbssセグメント領域転送情報設定レジスタ群21にコピーする処理である。
なお、転送元ポインタ転送方向設定レジスタ10及び転送先ポインタ転送方向設定レジスタ13に相当するレジスタに記録されるべき値については、それぞれの展開装置に固有の値であるため、データ転送装置23製造時に予め記録しておくことができる。
次にステップS904でデータセグメント領域展開装置17を起動し、ステップS905で転送開始レジスタ19をイネーブルにする。これにより、データセグメント領域展開装置17は専用のデータセグメント領域転送情報設定レジスタ群18の設定値に従ってデータ転送を開始する。前述のようにデータセグメント領域転送情報設定レジスタ群18はデータセグメント領域転送情報格納領域106に格納される情報をミラーリングするミラーレジスタ群となっているので、各レジスタには、以下の転送条件パラメータ群が格納されている。
(データセグメント領域転送情報)
フラッシュROM2のデータセグメント領域102の開始アドレス:pData
フラッシュROM2のテキストセグメント領域101のサイズ:SizeOfDataSegment
DRAM3のデータセグメント展開領域104の開始アドレス:pRamData
また転送時の転送元ポインタ転送方向、及び転送先ポインタ転送方向はいずれもインクリメント方向である。
これにより、データセグメント領域102の初期化済み変数をすべてフラッシュROM2のpDataからDRAM3のpRamDataへ展開することができる。
ステップS906では、転送が完了したかを判定し、完了するとステップS907へ移行する。完了の判定は、SizeOfDataSegmentで定められる量のデータが転送されたかによって行なうことができる。
ステップS907では、転送開始レジスタ19をディスエーブルにする。これにより、データ転送装置23はデータ転送を停止する。
ステップS908で、データセグメント領域展開装置17はbssセグメント領域展開装置20に対してデータセグメント領域転送完了信号をアサートする。
この信号をトリガーにして、ステップS909で、bssセグメント領域展開装置20を起動する。次いでステップS910で、転送開始レジスタ22をイネーブルにする。これにより、bssセグメント領域展開装置20は専用のbssセグメント領域転送情報設定レジスタ群21の設定値に従ってデータ転送を開始する。前述したようにbssセグメント領域転送情報設定レジスタ群21はbssセグメント領域転送情報格納領域107に格納される情報をミラーリングするミラーレジスタ群となっているので、各レジスタには、以下の転送条件パラメータ群が格納されている。
(bssセグメント領域転送情報)
フラッシュROM2のbssセグメント領域103のサイズ:SizeOfBssSegment
DRAM3のbssセグメント展開領域105の開始アドレス:pRamBss
ここで、転送元ポインタには第1の実施形態と同様、DRAM3上の空きアドレスに値0を書き込み、そのアドレスを指定する。
また、転送元ポインタ転送方向設定を一定、すなわちアドレスの変更を行なわないように設定し、転送先ポインタ転送方向をインクリメント方向にする。これにより、pRamBssから始まるbssセグメント領域103の全アドレスに0を代入することができる。
ステップS911では、転送が完了したかを判定し、完了するとステップS912へ移行する。完了の判定は、SizeOfBssSegmentで定められる量のデータが転送されたか(ここでは、0が代入されたか)によって行なうことができる。
ステップS912では、転送開始レジスタ22をディスエーブルにする。これにより、データ転送装置23はデータ転送を停止する。
ステップS913で、転送完了レジスタ15をアサートする。このとき一方で、CPU1は必要な初期化作業を行なった後、転送完了レジスタ15を監視している。CPU1が転送完了レジスタ15のアサートを確認したらシステムの起動が完了し、変数操作を伴うファームウェアの実行が可能となる。なお、このときのCPU1の処理の流れは第1の実施形態と同様、図7に示すものである。
<まとめ>
以上主に図8及び図9を参照して説明したように、本実施形態によれば、特定の展開作業を行なうように設計されたデータセグメント領域展開装置17及びbssセグメント領域展開装置20が展開作業を行なう。
これにより、第1の実施形態における利点に加えて、より簡潔な処理でCPU1に負荷をかけないデータ転送を行ない、データ処理装置を起動することが可能となる。
なお、本実施形態では一例としてファームウェアを実行する最小構成からなるデータ処理装置について説明したが、第1の実施形態と同様、マイクロコンピュータとファームウェアで実行するデータ処理装置全般に適用可能である。また、データセグメント領域転送情報、及びbssセグメント領域転送情報の格納先はフラッシュROM2に限定されることなく、その他の不揮発性外部記録装置、もしくはハードウェアに搭載の別のメモリ領域であってもよい。さらに、ファームウェアのアップデートも第1の実施形態で図5を参照して説明したように、同様に行なうことができる。
[その他の実施形態]
上述した各実施の形態の処理は、各機能を具現化したソフトウェアのプログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても実現することができる。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィ(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行ない、その処理によって前述した各実施の形態の機能が実現される場合も含まれている。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行ない、その処理によって前述した各実施の形態の機能が実現される場合も含むものである。
データセグメント領域102及びbssセグメント領域103をフラッシュROM2からDRAM3に展開する様子を示す図である。 第1の実施形態におけるデータ処理装置及びデータ転送装置6のシステム構成を示す図である。 フラッシュROM2に格納されるデータの構成を示す図である。 データが展開されるDRAM3の構成を示す図である。 データ処理装置がファームウェアプログラム及び転送条件パラメータ群をフラッシュROM2に書き込む処理の流れを示すフローチャートである。 第1の実施形態において、データ処理装置の起動時にデータ転送装置6がフラッシュROM2からDRAM3にデータを展開する処理の流れを示すフローチャートである。 電源装置16に電源が投入された際の、CPU1の処理の流れを示すフローチャートである。 第2の実施形態におけるデータ処理装置及びデータ転送装置23のシステム構成を示す図である。 第2の実施形態において、データ処理装置の起動時にデータ転送装置23がフラッシュROM2からDRAM3にデータを展開する処理の流れを示すフローチャートである。
符号の説明
1 CPU
2 フラッシュROM
3 DRAM
6 データ転送装置
17 データセグメント領域展開装置
20 bssセグメント領域展開装置
23 データ転送装置

Claims (13)

  1. 第1の記憶媒体と、第2の記憶媒体と、主制御部とを備えるデータ処理装置に設けられるデータ転送装置であって、
    少なくとも転送対象データの転送元アドレスを含む転送条件パラメータ群を記憶するための記憶手段と、
    前記転送条件パラメータ群を取得し、前記記憶手段に格納する格納手段と、
    前記転送条件パラメータ群に従って前記転送対象データを転送する転送手段と、
    を備えることを特徴とする、データ転送装置。
  2. さらに、前記転送手段による転送の完了を通知する通知手段を備えることを特徴とする、請求項1に記載のデータ転送装置。
  3. 前記格納手段が前記転送条件パラメータ群を格納し、その後前記転送手段が前記転送を実行し、
    前記格納及び前記転送を複数回繰り返した後に、前記通知手段は前記転送の完了を通知することを特徴とする、請求項2に記載のデータ転送装置。
  4. 前記記憶手段は第1の記憶手段及び第2の記憶手段を含み、
    前記転送条件パラメータ群は第1の転送条件パラメータ群及び第2の転送条件パラメータ群を含み、
    前記格納手段は前記第1の転送条件パラメータ群を前記第1の記憶手段に、前記第2の転送条件パラメータ群を前記第2の記憶手段にそれぞれ格納する、
    ことを特徴とする、請求項1又は2に記載のデータ転送装置。
  5. さらに、
    前記データ処理装置に電力が供給されたことを検知する検知手段と、
    前記検知をトリガーとして、前記格納手段による前記転送条件パラメータ群の格納及び前記転送手段による前記転送を開始するように制御する制御手段と、
    を備えることを特徴とする、請求項2乃至4のいずれか1項に記載のデータ転送装置。
  6. 前記第1の記憶媒体は前記データ処理装置の前記主制御部が実行するプログラムデータを保持し、
    前記転送条件パラメータ群は、前記プログラムデータのうち可変変数データの転送を指示することを特徴とする、請求項1乃至5のいずれか1項に記載のデータ転送装置。
  7. 前記第1の記憶媒体は不揮発性ROMであり、前記第2の記憶媒体はRAMであることを特徴とする、請求項1乃至6のいずれか1項に記載のデータ転送装置。
  8. 前記転送条件パラメータ群は、転送元アドレス、前記転送元アドレスの変化量、転送先アドレス、及び前記転送先アドレスの変化量に関する情報を含み、
    前記転送条件パラメータ群は第1の転送条件パラメータ群及び第2の転送条件パラメータ群を含み、
    前記第1の転送条件パラメータ群の前記転送元アドレスの変化量はインクリメントであり、前記第2の転送条件パラメータ群の前記転送元アドレスの変化量は不変であることを特徴とする、請求項1乃至7のいずれか1項に記載のデータ転送装置。
  9. 主制御部と、データ転送装置とを備えるデータ処理装置であって、
    前記データ転送装置は、
    少なくとも転送対象データの転送元アドレスを含む転送条件パラメータ群を記憶するための記憶手段と、
    前記転送条件パラメータ群を取得し、前記記憶手段に格納する格納手段と、
    前記転送条件パラメータ群に従って前記転送対象データを転送する転送手段と、
    を備えることを特徴とする、データ処理装置。
  10. さらに、
    データを受信する受信手段と、
    前記データから前記転送条件パラメータ群を抽出する抽出手段と、
    前記転送条件パラメータ群を前記記憶手段に格納する格納手段と、
    を備えることを特徴とする、請求項9に記載のデータ処理装置。
  11. 第1の記憶媒体と、第2の記憶媒体と、主制御部と、少なくとも転送対象データの転送元アドレスを含む転送条件パラメータ群を記憶するための記憶部を有するデータ転送装置と、を備えるデータ処理装置においてデータを転送するデータ転送方法であって、
    前記転送条件パラメータ群を取得し、前記記憶部に格納する格納工程と、
    前記転送条件パラメータ群に従って前記転送対象データを転送する転送工程と、
    を備えることを特徴とする、データ転送方法。
  12. 第1の記憶媒体と、第2の記憶媒体と、主制御部と、少なくとも転送対象データの転送元アドレスを含む転送条件パラメータ群を記憶するための記憶部を有するデータ転送装置と、を備えるデータ処理装置においてデータを転送するデータ転送方法をコンピュータが実行するコンピュータプログラムであって、
    前記転送条件パラメータ群を取得し、前記記憶部に格納する格納工程を実行するプログラムコードと、
    前記転送条件パラメータ群に従って前記転送対象データを転送する転送工程を実行するプログラムコードと、
    を備えることを特徴とする、コンピュータプログラム。
  13. 請求項12に記載のプログラムを記憶したコンピュータ可読記憶媒体。
JP2005156195A 2005-05-27 2005-05-27 データ転送装置及びデータ転送方法 Withdrawn JP2006331221A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005156195A JP2006331221A (ja) 2005-05-27 2005-05-27 データ転送装置及びデータ転送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005156195A JP2006331221A (ja) 2005-05-27 2005-05-27 データ転送装置及びデータ転送方法

Publications (1)

Publication Number Publication Date
JP2006331221A true JP2006331221A (ja) 2006-12-07

Family

ID=37552825

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005156195A Withdrawn JP2006331221A (ja) 2005-05-27 2005-05-27 データ転送装置及びデータ転送方法

Country Status (1)

Country Link
JP (1) JP2006331221A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014067242A (ja) * 2012-09-26 2014-04-17 Nec Corp チャネル装置、情報処理装置、コンピュータシステム、データ転送制御方法、および、コンピュータ・プログラム
US11257556B2 (en) 2019-05-22 2022-02-22 Seiko Epson Corporation Data transfer circuit, electronic component, electronic apparatus, and vehicle

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014067242A (ja) * 2012-09-26 2014-04-17 Nec Corp チャネル装置、情報処理装置、コンピュータシステム、データ転送制御方法、および、コンピュータ・プログラム
US11257556B2 (en) 2019-05-22 2022-02-22 Seiko Epson Corporation Data transfer circuit, electronic component, electronic apparatus, and vehicle

Similar Documents

Publication Publication Date Title
JP5783809B2 (ja) 情報処理装置、起動方法およびプログラム
JP2008097105A (ja) 記憶装置及び起動方法
JP2016051925A (ja) メインシステムおよびサブシステムを備える情報処理装置等
EP2538319A1 (en) Non-volatile data processing apparatus and image forming apparatus
US20150256687A1 (en) Image processing apparatus and method for controlling the same, and storage medium
JP2005157528A (ja) メモリ装置
JP2010191818A (ja) 情報処理装置及びその制御方法
JP5578811B2 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
JP2006331221A (ja) データ転送装置及びデータ転送方法
JP2012068797A (ja) 起動高速化方法、情報処理装置及びプログラム
JP4471947B2 (ja) データ処理装置及びデータ処理方法
JP3281211B2 (ja) 同期式メモリを有する情報処理装置および同期式メモリ
JP2013182577A (ja) 情報処理装置、画像形成装置およびプログラム
JP2015215684A (ja) 情報処理装置及び情報処理プログラム
JP2001060196A (ja) 画像処理装置
JP5051881B2 (ja) 通信制御装置、画像形成装置、通信制御方法及び通信制御プログラム
JP4334312B2 (ja) 起動時間短縮演算装置およびデータロード方法
JP2006126938A (ja) データ転送システム及びそのデータ転送方法
JP2006155391A (ja) 画像形成装置
JP6966568B2 (ja) 情報処理システム及び情報処理システムによる情報処理方法
JP2006023919A (ja) 情報処理装置、メモリ管理プログラムおよびメモリ管理方法
JP2006126987A (ja) 画像処理装置
JP5971022B2 (ja) 画像形成装置
JP2016115075A (ja) 処理システム、処理システムの制御方法
JP2007241757A (ja) 情報処理装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080805