説明

データ転送方法およびデータ転送装置

【課題】ターゲットシステムのハードウェアコストを増加させることなく、ターゲットシステムへのデータを圧縮して転送できるようにする。
【解決手段】ターゲットシステムにデータを圧縮して転送するデータ転送方法であって、ターゲットシステムのメモリマップ情報を取得するメモリマップ情報取得ステップ300と、転送データのメモリ配置の情報を取得するプログラムマッピング情報取得ステップ310と、少なくとも以上のステップで得た情報をもとに、圧縮データの上記ターゲットシステムにおけるメモリ配置を決定するステップと、を備えたデータ転送方法により、ターゲットシステムに伸張処理用のハードウェアを追加することなく、ターゲットシステムへ圧縮データを転送することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ホストコンピュータからターゲットシステムへ圧縮データを転送するデータ転送方法およびデータ転送装置に関するものである。
【背景技術】
【0002】
組込みソフトウェアの開発においては、ホストコンピュータ上で作成したプログラムを、ターゲットシステム内のマイクロコンピュータへ転送し、ターゲットシステム上でのプログラムの動作確認を行う。近年、ターゲットシステムの複雑化に伴い、組込みソフトウェアが大規模化し、ホストコンピュータからターゲットシステムへのデータ転送時間が増大してきた。
【0003】
従来のデータ転送方法では、データ転送時間を短縮するため、ホストコンピュータからターゲットシステムへ圧縮データを転送し、ターゲットシステムにて伸張処理プログラムを実行することにより圧縮データを伸張している(例えば、特許文献1参照)。
【0004】
また、ホストコンピュータからターゲットシステムの一部であるエミュレータへ圧縮データを転送し、エミュレータに実装した伸張処理回路を用いて圧縮データの伸張を行っているものもある(例えば、特許文献2参照)。
【0005】
以下、従来のデータ転送方法について説明する。
【0006】
図15は従来のデータ転送方法のブロック図であり(例えば、特許文献1の図5参照)、ホストコンピュータ1とターゲットシステム2とが通信手段により接続される。ターゲットシステム2は、ホストコンピュータ1と接続可能なCPU3と、CPU3にて実行するプログラムを格納するための命令メモリ4と、プログラム内で使用するデータを格納するためのデータメモリ5と、からなる。データメモリ5は、ターゲットシステム2の起動時に初期化される初期化領域6と、それ以外の領域7とからなる。
【0007】
データメモリ5の初期化領域6は、バス8とバス切替回路9とを経由して、命令メモリ用バス10とデータメモリ用バス11とに接続されている。命令メモリ4は、バス12とバス切替回路9とを経由して、命令メモリ用バス10とデータメモリ用バス11とに接続されている。データメモリ5内の初期化領域を除いた領域7は、データメモリ用バス11に接続されている。
【0008】
以上のように構成されたデータ転送方法について、以下その手順を説明する。
【0009】
最初に、データメモリ5の初期化領域6にはバス切替回路9を介してデータメモリ用バス11が接続され、命令メモリ4には命令メモリ用バス10が接続されている。ここでバス切替回路9においてバスの接続を切替えて、データメモリの初期化領域6には命令メモリ用バス10を接続し、命令メモリ4にはデータメモリ用バス11を接続する。
【0010】
次に、ホストコンピュータ1からCPU3と命令メモリ用バス10とを介して、データメモリ5の初期化領域6へ伸張処理プログラムを転送・格納する。
【0011】
次に、ホストコンピュータ1からCPU3とデータメモリ用バス11とを介して、データメモリ5内の初期化領域を除いた領域7へ、圧縮データを転送する。
【0012】
次に、CPU3にて伸張処理プログラムを実行する。データメモリ5内の初期化領域を除いた領域7からデータメモリ用バス11を介して圧縮データを読出し、CPU3にて圧縮データを伸張し、伸張処理により得られたプログラムをデータメモリ用バス11とバス切替回路9とを介して命令メモリ4に格納する。
【0013】
次に、バスの接続状態を元に戻し、データメモリ5の初期化領域6にはデータメモリ用バス11を接続し、命令メモリ4には命令メモリ用バス10を接続する。
【0014】
最後に、伸張処理により得られたプログラムを実行する。このとき、データメモリ5の初期化領域6が初期化され、伸張処理後に不要となる伸張処理プログラムが破棄される。
【特許文献1】特開2007−004350号公報
【特許文献2】特開2003−208332号公報
【特許文献3】特開平11−312105号公報
【特許文献4】特開2006−338409号公報
【特許文献5】特開平5−217005号公報
【発明の開示】
【発明が解決しようとする課題】
【0015】
従来のデータ転送方法では、ターゲットシステム2において、データメモリ5の初期化領域6に伸張処理プログラムを配置し、データメモリ5内の初期化領域を除いた領域7に圧縮データを配置することにより、圧縮データの伸張を行うことができた。
【0016】
しかしながら、従来のデータ転送方法では、メモリをバス切替回路9に接続するために、データメモリ5の初期化領域6をバス8に接続し、データメモリ5内の初期化領域を除いた領域7をデータメモリ用バス11に接続する必要がある。データメモリの初期化領域6とそれ以外の領域7とで異なるバスに接続するためには、データメモリを二分割して、初期化領域6とそれ以外の領域7とをそれぞれ異なる物理メモリとして実装すればよいが、この場合、データメモリ5の初期化領域6のサイズは固定されてしまう。
【0017】
一方で、初期化領域6に格納される伸張処理プログラムのサイズは、圧縮アルゴリズムによって異なる。そのため、伸張処理プログラムのサイズが、データメモリの初期化領域6のサイズに比べて大きい場合には、伸張処理プログラムを格納することができず、伸張処理を行うことができないという問題点がある。
【0018】
また、伸張処理プログラムのサイズが、データメモリの初期化領域6のサイズに比べて小さい場合には、データメモリの初期化領域6に伸張処理プログラムを格納できるが、初期化領域6内の伸張処理プログラム格納領域を除く領域には、圧縮データを格納することができず、メモリ資源を有効に利用できないという問題点がある。
【0019】
また、ハードウェアにバス切替回路9を追加する必要があり、ハードウェアのコストが増加するという問題点がある。
【0020】
本発明は、上記従来の問題点を解決するもので、初期化領域のサイズに依存せずにターゲットシステムのメモリに対して伸張処理プログラムと圧縮データとを柔軟に配置でき、圧縮データの転送回数を削減できるデータ転送方法を、ハードウェアのコストを増加させることなしに、提供することを目的とする。
【課題を解決するための手段】
【0021】
上記課題を解決するために、本発明の第1のデータ転送方法は、圧縮データおよび圧縮データを伸張する伸張処理プログラムをターゲットシステムへ転送し、ターゲットシステム内で伸張処理プログラムによって圧縮データを伸張することにより得られた伸張データをターゲットシステムのメモリへ格納するデータ転送方法であって、ターゲットシステムのメモリ配置を示す情報であるメモリマップ情報を得るメモリマップ情報取得ステップと、ターゲットシステムのメモリに格納される伸張データの配置予定位置を示す情報であるマッピング情報を得るマッピング情報取得ステップと、少なくともメモリマップ情報取得ステップおよびマッピング情報取得ステップで得たメモリマップ情報およびマッピング情報をもとに、ターゲットシステムのメモリにおける伸張処理プログラムの格納先メモリ領域を決定する伸張処理プログラム配置領域特定ステップと、少なくともメモリマップ情報取得ステップおよびマッピング情報取得ステップで得たメモリマップ情報およびマッピング情報をもとに、伸張処理プログラムの格納先メモリ領域を避けてターゲットシステムのメモリにおける圧縮データの格納先メモリ領域を決定するバッファ領域特定ステップとを含む。
【0022】
このような構成により、ターゲットシステムのメモリで自由に使える領域を明確にすることができ、この領域に伸張処理プログラムと圧縮データとを格納することができる。
【0023】
また、本発明の第2のデータ転送方法は、上記第1のデータ転送方法において、バッファ領域特定ステップでは、ターゲットシステムのメモリにおいて、データの格納されないメモリ領域を圧縮データの格納先メモリ領域として優先して決定することを特徴とする。
【0024】
このような構成により、データの格納されないメモリ領域を、ターゲットシステムのメモリで自由に使用できる領域として、使用することができる。
【0025】
また、本発明の第3のデータ転送方法は、上記第1のデータ転送方法において、バッファ領域特定ステップでは、ターゲットシステムのメモリにおいて、非圧縮データの格納されるメモリ領域を圧縮データの格納先メモリ領域として優先して決定することを特徴とする。
【0026】
このような構成により、非圧縮データが格納されるまでは、非圧縮データが格納されるメモリ領域を、ターゲットシステムのメモリで自由に使用できる領域として、使用することができる。
【0027】
また、本発明の第4のデータ転送方法は、上記第1のデータ転送方法において、バッファ領域特定ステップでは、ターゲットシステムのメモリにおいて、伸張後のデータが格納されるメモリ領域を、伸張データが格納されるまで、圧縮データの格納先メモリ領域として決定することを特徴とする。
【0028】
このような構成により、伸長後のデータが格納されるまでは、伸長後のデータが格納されるメモリ領域を、ターゲットシステムのメモリで自由に使用できる領域として、使用することができる。
【0029】
また、本発明の第5のデータ転送方法は、上記第1のデータ転送方法において、転送するデータの優先度を決定する転送順序管理ステップをさらに含む。
【0030】
このような構成により、データの転送順序を管理することができるため、ターゲットシステムのメモリで自由に使用できる領域を効率よく使用することができる。
【0031】
また、本発明の第6のデータ転送方法は、上記第5のデータ転送方法において、転送順序管理ステップでは、圧縮データと非圧縮データとが存在する場合、圧縮データを先に転送することを特徴とする。
【0032】
このような構成により、ターゲットシステムのメモリで自由に使用できる領域を効率よく使用することができる。
【0033】
また、本発明の第7のデータ転送方法は、上記第6のデータ転送方法において、転送順序管理ステップでは、データサイズが大きい順にデータを転送することを特徴とする。
【0034】
このような構成により、ターゲットシステムのメモリで自由に使用できる領域を効率よく使用することができる。
【0035】
また、本発明の第1のデータ転送装置は、圧縮データおよび圧縮データを伸張する伸張処理プログラムをターゲットシステムへ転送し、ターゲットシステム内で伸張処理プログラムによって圧縮データを伸張することにより得られた伸張データをターゲットシステムのメモリへ格納するデータ転送装置であって、少なくともターゲットシステムのメモリの配置を示す情報であるメモリマップ情報と、ターゲットシステムのメモリに格納される伸張データの配置予定位置を示す情報であるマッピング情報とをもとに、ターゲットシステムのメモリにおける伸張処理プログラムの格納先メモリ領域を決定する伸張処理プログラム配置領域特定手段と、少なくともメモリマップ情報と、マッピング情報とをもとに、伸張処理プログラムの格納先メモリ領域を避けてターゲットシステムのメモリにおける圧縮データの格納先メモリ領域を決定するバッファ領域特定手段を具備する。
【0036】
このような構成により、ターゲットシステムのメモリで自由に使える領域を明確にすることができ、この領域に伸張処理プログラムと圧縮データとを格納することができる。
【0037】
また、本発明の第2のデータ転送装置は、上記第1のデータ転送装置において、バッファ領域特定手段は、ターゲットシステムのメモリにおいて、データの格納されないメモリ領域を圧縮データの格納先メモリ領域として優先して決定することを特徴とする。
【0038】
このような構成により、データの格納されないメモリ領域を、ターゲットシステムのメモリで自由に使用できる領域として、使用することができる。
【0039】
また、本発明の第3のデータ転送装置は、上記第1のデータ転送装置において、バッファ領域特定手段は、ターゲットシステムのメモリにおいて、非圧縮データの格納されるメモリ領域を圧縮データの格納先メモリ領域として優先して決定することを特徴とする。
【0040】
このような構成により、非圧縮データが格納されるまでは、非圧縮データが格納されるメモリ領域を、ターゲットシステムのメモリで自由に使用できる領域として、使用することができる。
【0041】
また、本発明の第4のデータ転送装置は、上記第1のデータ転送装置において、バッファ領域特定手段は、ターゲットシステムのメモリにおいて、伸張後のデータが格納されるメモリ領域を、伸張データが格納されるまで、圧縮データの格納先メモリ領域として決定することを特徴とする。
【0042】
このような構成により、伸長後のデータが格納されるまでは、伸長後のデータが格納されるメモリ領域を、ターゲットシステムのメモリで自由に使用できる領域として、使用することができる。
【0043】
また、本発明の第5のデータ転送装置は、上記第1のデータ転送装置において、転送するデータの優先度を決定する転送順序管理手段をさらに具備する。
【0044】
このような構成により、データの転送順序を管理することができるため、ターゲットシステムのメモリで自由に使用できる領域を効率よく使用することができる。
【0045】
また、本発明の第6のデータ転送装置は、上記第5のデータ転送装置において、転送データ管理手段は、圧縮データと非圧縮データとが存在する場合、圧縮データを先に転送することを特徴とする。
【0046】
このような構成により、ターゲットシステムのメモリで自由に使用できる領域を効率よく使用することができる。
【0047】
また、本発明の第7のデータ転送装置は、上記第6のデータ転送装置において、転送データ管理手段は、データサイズが大きい順にデータ転送することを特徴とする。
【0048】
このような構成により、かかる構成により、ターゲットシステムのメモリで自由に使用できる領域を効率よく使用することができる。
【0049】
また、本発明の第8のデータ転送装置は、上記第1のデータ転送装置において、ターゲットシステムがメモリとしてRAMと書き換え可能な不揮発性メモリとを具備することを特徴とする。
【0050】
このような構成により、RAMで自由に使える領域を明確にすることができ、この領域に圧縮データと伸張処理プログラムとを配置することにより、伸張処理を高速に行うことができる。
【0051】
また、本発明の第9のデータ転送装置は、上記第8のデータ転送装置において、転送するデータの優先度を決定する転送順序管理手段をさらに具備し、転送順序管理手段は、伸張後に書き換え可能な不揮発性メモリに格納される圧縮データと、伸張後にRAMに格納される圧縮データとが存在する場合、伸張後に書き換え可能な不揮発性メモリに格納される圧縮データを先に転送することを特徴とする。
【0052】
このような構成により、書き換え可能な不揮発性メモリに格納される圧縮データを転送する際に、RAMのバッファ領域を増やすことができる。
【発明の効果】
【0053】
本発明によるデータ転送方法によれば、事前にターゲットシステムでのメモリ配置情報等から、自由に使えるメモリ領域を明確にすることにより、その領域に対して伸張処理プログラムと圧縮データとを柔軟に配置することができ、ターゲットシステムのメモリを有効に利用することができる。また、ターゲットシステムの自由に使えるメモリ領域を増やすことより、圧縮データの転送回数を削減することができるため、圧縮データの伸長処理をより効率的に行うことができる。
【発明を実施するための最良の形態】
【0054】
(実施の形態1)
以下、本発明の実施の形態1に関わるデータ転送方法およびデータ転送装置について、図1から図14を用いて説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【0055】
図1は、本発明の実施の形態1におけるデータ転送方法を実施するためのデータ転送装置の構成を示すブロック図である。
【0056】
図1において、ホストコンピュータ100とターゲットシステム101内のマイクロコンピュータ102とは、オンチップデバッグ装置103を介して接続される。ホストコンピュータ100とオンチップデバッグ装置103とは、通常、無線または有線の通信手段等により接続される。マイクロコンピュータ102とオンチップデバッグ装置103とは、JTAG(Joint Test Action Group)等の通信手段により接続される。
【0057】
オンチップデバッグ装置103は、ホストコンピュータ100から送られたプログラムをターゲットシステム101へ転送することができる。また、オンチップデバッグ装置103は、ホストコンピュータ100上から送られたコマンドに応じて、マイクロコンピュータ102におけるプログラム実行の開始・停止を制御したり、RAM106の書き換えを行ったりすることができる。
【0058】
さらに、オンチップデバッグ装置103は、マイクロコンピュータ102におけるプログラムの実行履歴などの情報を、マイクロコンピュータ102から収集し、ホストコンピュータ100へ転送することができる。
【0059】
マイクロコンピュータ102は、命令を実行するためのCPU104と、電気的に書き換え可能な不揮発性メモリ105と、揮発性メモリであるRAM106と、により構成されている。CPU104と書き換え可能な不揮発性メモリ105とはROMバスにより接続され、CPU104とRAM106とはRAMバスにより接続されている。
【0060】
図2は、ホストコンピュータ100のソフトウェア開発環境を示すブロック図である。ホストコンピュータ100内のソフトウェア開発環境は、ソースファイル200の構文解析と最適化を行い、アセンブルファイルを生成するコンパイラ201と、コンパイラ201が生成したアセンブルファイルからオブジェクトファイルを生成するアセンブラ202と、アセンブラ202が生成したオブジェクトファイルとライブラリファイル203とをリンクして実行形式ファイル204とマップファイル205とを生成するリンカ206と、ターゲットシステム101にプログラムの実行形式ファイル204を転送しマイクロコンピュータ102の命令実行を制御するデバッガ207と、により構成される。
【0061】
上記実行形式ファイル204は、データ種別ごとに複数のセクションに分割されて、ターゲットシステム101のメモリに配置される。上記マップファイル205には、各セクションのセクション名、初期アドレス、長さなどが記載されている。つまり、マップファイル205には、ターゲットシステムのメモリに格納される伸張後のデータの配置予定位置を示す情報であるマッピング情報が格納されている。
【0062】
デバッガ207には、ターゲットシステム101内に実装されたメモリの種別と開始アドレスと終了アドレスとを示したメモリマップ情報208が、ホストコンピュータ100の外部から設定される。
【0063】
また、ホストコンピュータ100内には、マイクロコンピュータ102上で実行可能な伸張処理プログラム209が格納されている。
【0064】
図3は、ホストコンピュータ100からターゲットシステム101に対して実行形式ファイル204を圧縮して転送するデータ転送方法を示すフロー図である。
【0065】
データ転送方法は、メモリマップ情報取得ステップ300、プログラムマッピング情報取得ステップ310、圧縮・非圧縮判定ステップ320、転送順序管理ステップ330、伸張処理プログラムをターゲットシステムのメモリに配置可能か判定するステップ340、伸張処理プログラム配置領域特定ステップ350、伸張処理プログラム転送ステップ360、圧縮データ転送ステップ370、非圧縮データ転送ステップ380、を具備する。
【0066】
メモリマップ情報取得ステップ300では、ホストコンピュータ100の外部から設定されるメモリマップ情報(ターゲットシステムのメモリの配置を示す情報)208を取得し、ターゲットシステム101内に実装されたメモリの種別と開始アドレスと終了アドレスとを特定する。
【0067】
プログラムマッピング情報取得ステップ310では、マップファイル205にもとづいて、ターゲットシステム101のメモリに対する実行形式ファイル204のメモリ配置(つまり、ターゲットシステムのメモリに格納される伸張後のデータの配置予定位置を示す情報であるマッピング情報)を特定する。
【0068】
圧縮・非圧縮判定ステップ320では、各セクションのデータ種別等にもとづいて、各セクションを圧縮するか否かを判定する。
【0069】
転送順序管理ステップ330では、各セクションの圧縮・非圧縮の区分、各セクションの格納先メモリの種別などにもとづいてセクションの転送順序を決定する。
【0070】
伸張処理プログラムをターゲットシステムのメモリに配置可能か判定するステップ340では、メモリマップ情報取得ステップ300で得られたマップ情報と、プログラムマッピング情報取得ステップ310で得られた実行形式ファイル204のメモリ配置とにもとづいて、自由に使用可能なメモリ領域を特定する。さらに、特定したメモリ領域と伸張処理プログラム209とのサイズを比較することにより、特定したメモリ領域に対して伸張処理プログラム209を配置できるか否かを判定する。
【0071】
伸張処理プログラム配置領域特定ステップ350では、ステップ340において伸張処理プログラムを配置可能であると判定した場合に、伸張処理プログラム209を配置するためのメモリ領域を特定する。
【0072】
伸張処理プログラム転送ステップ360では、ホストコンピュータ100からターゲットシステム101のメモリ領域に対して、伸張処理プログラム209を転送する。
【0073】
圧縮データ転送ステップ370では、ホストコンピュータ100からターゲットシステム101へ実行形式ファイル204を圧縮して転送し、マイクロコンピュータ102において伸張する。
【0074】
非圧縮データ転送ステップ380では、ホストコンピュータ100からターゲットシステム101へ実行形式ファイル204を圧縮せずに転送する。
【0075】
以下、本実施の形態におけるデータ転送方法の具体的な動作について説明する。
【0076】
最初に、メモリマップ情報取得ステップ300では、ホストコンピュータ100の外部から設定されるメモリマップ情報208を取得し、ターゲットシステム101内に実装されたメモリの種別と開始アドレスと終了アドレスとを特定する。
【0077】
図4は、ターゲットシステム101のメモリマップの例である。
【0078】
書き換え可能な不揮発性メモリ105は、0x40000000番地から終了アドレス0x400FFFFF番地に配置され、RAM106は、メモリ空間の開始アドレス0x00000000番地から終了アドレス0x00007FFF番地に配置される。
【0079】
次のプログラムマッピング情報取得ステップ310では、ターゲットシステム101のメモリに対する実行形式ファイル204のメモリ配置を特定する。デバッガ207では、マップファイル205にもとづいて、ターゲットシステム101のメモリに対する実行形式ファイル204の配置を特定する。
【0080】
図5は、実行形式ファイル204のメモリ配置の例である。実行形式ファイル204は、データ種別ごとに複数のセクションに分割されて、ターゲットシステム101のメモリに配置される。実行形式ファイル204のメモリ配置は、マップファイル205に記載されている。
【0081】
セクション400は初期化データ領域であり、実行形式ファイル204によりターゲットシステム101を起動したときに、初期化されるメモリ領域である。セクション410は非初期化データ領域であり、実行形式ファイル204によりターゲットシステム101を起動したときに、通常は0が書き込まれるメモリ領域である。セクション420は、ROM化データ領域であり、初期化データ領域400に格納する初期値が格納されるメモリ領域である。セクション430は、定数データ領域であり、プログラム内で参照する文字列データなどが格納されるメモリ領域である。セクション440および450は、テキスト領域であり、プログラムの命令コードが格納されるメモリ領域である。未使用領域460は、実行形式ファイル204の配置されないメモリ領域である。
【0082】
セクション400および410および450は、RAM106に配置され、セクション420および430および440は、書き換え可能な不揮発性メモリ105に配置されている。
【0083】
次に、圧縮・非圧縮判定ステップ320では、各セクションについて、圧縮するか否かを決定する。一般には、異なるデータ種別のデータに対して、同じ圧縮アルゴリズムにより圧縮した場合、データ種別により圧縮率が異なる。命令コードは一定の規則にしたがって符号が割り当てられるため圧縮率が高い。一方、プログラム中の変数の初期値は、プログラムにより異なるため、常に高い圧縮率が得られるとは限らない。
【0084】
ここでは、判定方法の一例として、高い圧縮率が期待できるテキスト領域を圧縮し、それ以外の領域は圧縮しない、と判定するものとする。この判定方法により、セクション440および450は圧縮し、セクション420および430は圧縮しないものと判定する。セクション400および410は、マイクロコンピュータ102において実行形式ファイル204を実行するときに初期化されるメモリ領域である。そのため、これらのメモリ領域へはデータを転送しない。
【0085】
次に、転送順序管理ステップ330では、各セクションの転送順序を決定する。図6は、転送順序管理ステップ330のフロー図である。
【0086】
最初のステップ500では、圧縮・非圧縮の区分により、セクションの転送順序を並び替える。先に圧縮されるセクションを転送し、次に圧縮されないセクションを転送するように、転送順序を並び替える。
【0087】
次のステップ510では、圧縮されるセクションの転送順序を、格納先メモリの種別に応じて決定する。圧縮されるセクションの中で、書き換え可能な不揮発性メモリ105に格納されるセクションを先に転送し、次にRAM106に格納されるセクションを転送するように、転送順序を並び替える。
【0088】
図5の実行形式ファイル204の場合では、圧縮されるセクション440および450を先に転送し、圧縮されないセクション420および430を次に転送する。
【0089】
圧縮されるセクション440および450については、書き換え可能な不揮発性メモリ105に格納されるセクション440から先に転送し、RAM106に格納されるセクション450を次に転送する。一方、圧縮されないセクション420および430については、転送順序は任意である。よって、転送順序は、セクション440、セクション450、圧縮されないセクション420および430の順となる。
【0090】
伸張処理プログラムをターゲットシステムのメモリに配置可能か判定するステップ340では、メモリマップ情報取得ステップ300で得られたマップ情報と、プログラムマッピング情報取得ステップ310で得られた実行形式ファイル204のメモリ配置とにもとづいて、自由に使用可能なメモリ領域を特定する。さらに、特定したメモリ領域と伸張処理プログラム209とのサイズを比較することにより、特定したメモリ領域に対して伸張処理プログラム209を配置できるか否かを判定する。
【0091】
ステップ340では、最初に、実行形式ファイル204のメモリ配置に基づいて、ターゲットシステム101のメモリにおける未使用領域と初期化領域と非圧縮データ格納領域と、を特定する。ここで、未使用領域460は、セクションの配置されないメモリ領域である。初期化領域は、初期化データ領域のセクション400と非初期化データ領域のセクション410を合わせたメモリ領域である。非圧縮データ格納領域は、圧縮・非圧縮判定ステップ320により圧縮しないと判定されたセクション420および430、を合わせたメモリ領域である。
【0092】
ステップ340では、次に、未使用領域と初期化領域と非圧縮データ格納領域とからなる連続領域に対して、伸張処理プログラム209を配置可能か判定する。上記連続領域のサイズが、伸張処理プログラム209のサイズより大きい場合には、伸張処理プログラム209を配置可能と判定し、伸張処理プログラム配置領域特定ステップ350に進む。上記連続領域のサイズが、伸張処理プログラム209のサイズより小さい場合には、伸張処理プログラム209を配置不可能と判定し、非圧縮データ転送ステップ380に進む。
【0093】
図7は、伸張処理プログラムを配置可能か否かについて判定した結果を示す。
【0094】
セクション400および410と未使用領域460とからなる連続領域600と、未使用領域460のみからなる連続領域610と、セクション420および430と未使用領域460とからなる連続領域620のそれぞれについて、伸張処理プログラム209を配置可能か判定する。ここでは、連続領域600と連続領域620とに対して、伸張処理プログラム209を配置可能であると判定する。
【0095】
次に、伸張処理プログラム配置領域特定ステップ350では、ステップ340において伸張処理プログラムを配置可能であると判定した場合に、伸張処理プログラム209を配置するためのメモリ領域を特定する。
【0096】
図8は、伸張処理プログラム配置領域特定ステップ350のフロー図である。
【0097】
最初のステップ700では、伸張処理プログラム209を配置可能なメモリ領域がRAM106に存在するか否かを判定する。ステップ700においてRAM106に存在すると判定した場合には、ステップ710に進む。ステップ700においてRAM106に存在しないと判定した場合には、ステップ720に進む。
【0098】
ステップ710では、伸張処理プログラム209を配置可能なメモリ領域のうち、RAM106に存在し、かつサイズの最も小さい領域に、伸張処理プログラム209を配置する。ステップ720では、書き換え可能な不揮発性メモリ105に存在し、かつサイズの最も小さい領域に、伸張処理プログラム209を配置する。
【0099】
図7の場合には、RAM106の連続領域600に対して、伸張処理プログラム209を配置する。
【0100】
次に、伸張処理プログラム転送ステップ360では、ホストコンピュータ100からターゲットシステム101のメモリ領域に対して、伸張処理プログラム209を転送する。伸張処理プログラム209は、伸張処理プログラム配置領域特定ステップ350にて特定された連続領域600内に格納される。
【0101】
次に、圧縮データ転送ステップ370では、ホストコンピュータ100からターゲットシステム101へ実行形式ファイル209を圧縮して転送し、マイクロコンピュータ102において伸張する。
【0102】
図9は、圧縮データ転送ステップ370のフロー図である。
【0103】
バッファ領域特定ステップ800では、ターゲットシステム101のメモリの中から、圧縮データを一時的に格納するためのバッファ領域を特定する。圧縮処理ステップ810では、ホストコンピュータ100において転送するデータの圧縮を行う。転送ステップ820では、ホストコンピュータ100からターゲットシステム101の上記バッファ領域へ圧縮データを転送する。バッファ領域にセクションの圧縮データを格納しきれない場合には、複数回にわたって圧縮データを格納する。伸張処理ステップ830では、ターゲットシステム101において圧縮データを伸張する。ステップ840では、すべての圧縮データを転送したか確認する。
【0104】
図10は、バッファ領域特定ステップ800のフロー図である。
【0105】
最初のステップ900では、伸張処理プログラム配置領域特定ステップ350において特定された未使用領域と初期化領域と非圧縮データ格納領域とからなるRAM領域を特定する。次のステップ910では、ステップ900で特定したRAM領域から、伸張処理プログラム配置領域と、転送済みのセクションの配置領域と、転送中のセクションの配置領域と、を除く。次のステップ920では、ステップ910で特定されたRAM領域により構成された連続領域から、サイズの最も大きな連続領域を、バッファ領域として特定する。
【0106】
図11は、最初のセクション440の転送時に使用するバッファ領域1000を特定した結果である。RAM106から伸張処理プログラム配置領域1010を除いた領域をバッファ領域1000として使用する。
【0107】
図12は、最初のセクション440の転送後、次のセクション450の転送時に使用するバッファ領域1000を特定した結果である。RAM106から、伸張処理プログラム配置領域1010とセクション450の配置領域とを除いた領域を、バッファ領域1000として使用する。
【0108】
図13は、伸張処理ステップ830のフロー図である。
【0109】
最初のステップ1100では、バッファ領域1000の開始アドレスおよび終了アレスと、伸張データの格納領域の開始アドレスと終了アドレスとを、伸張処理プログラム内の変数領域に書き込む。
【0110】
次のステップ1110では、伸張処理終了後にマイクロコンピュータ102での命令実行を停止するように、伸張処理プログラム209に対して、強制実行停止コードを挿入する。
【0111】
次のステップ1120では、デバッガ207からマイクロコンピュータ102に対して、伸張処理プログラム209の実行開始を指示する。これにより、マイクロコンピュータ102は、バッファ領域1000に格納されている圧縮データを伸張し、伸張後のデータを、ステップ1100にて指定されたメモリ領域に、格納する。伸張処理後に、マイクロコンピュータ102は強制実行停止コードを実行する。その結果、マイクロコンピュータ102での命令実行を停止する。
【0112】
次のステップ1130では、マイクロコンピュータ102での命令実行停止を検出し、伸張処理ステップ830を終了する。
【0113】
このようにして、セクション440および450を圧縮して転送した後、非圧縮データ転送ステップ380に進む。
【0114】
非圧縮データ転送ステップ380では、ホストコンピュータ100からターゲットシステム101へ実行形式ファイル204を圧縮せずに転送する。図14は、非圧縮データ転送ステップ380によりセクション420および430のデータを圧縮せずに転送した後のターゲットシステム101のメモリ内容である。これにより、ホストコンピュータ100からターゲットシステム101への実行形式ファイル204の転送が完了する。
【0115】
実行形式ファイル204の転送完了後、デバッガ207からマイクロコンピュータ102に対して、実行形式ファイル204のプログラム実行開始を指示する。これにより、マイクロコンピュータ102は、プログラムの実行を開始する。プログラムでは、最初に、スタートアップルーチンにより、メモリの初期化が行われる。メモリの初期化では、セクション400には、セクション420に格納されている初期値がコピーされ、セクション410には初期値0が書き込まれる。このとき、伸張処理プログラム配置領域1010に初期値が上書きされるので、伸張処理プログラム209は破棄される。
【0116】
以上のように、本実施の形態によれば、伸張処理プログラム配置領域1010および圧縮データ格納用のバッファ領域1000を、ターゲットシステム101に実装されているメモリから特定して使用するので、伸張処理を行うための特別なメモリをターゲットシステム101に追加する必要はない。また、伸張処理は、ターゲットシステム101に実装されているマイクロコンピュータ102により行うため、専用の伸張処理回路をターゲットシステム101に追加する必要はない。
【0117】
また、圧縮データを先に転送し、次に非圧縮データを転送することにより、非圧縮データが格納される領域を、伸張処理のためのメモリとして使用することができるため、圧縮データの転送回数を削減でき、転送時間を短縮できる。
【0118】
また、圧縮して転送されるデータのうち、書き換え可能な不揮発性メモリ105に格納されるデータから先に転送し、RAM106に格納されるデータを次に転送することにより、使用可能なバッファ領域1000を増やすことができるので、圧縮データの転送回数を削減でき、転送時間を短縮できる。
【0119】
また、伸張処理プログラム配置領域特定ステップ350において、サイズの最も小さなRAM領域に伸張処理プログラムを配置したことにより、使用可能なバッファ領域1000を増やすことができるので、圧縮データの転送回数を削減でき、転送時間を短縮できる。
【0120】
また、伸張処理プログラム209をマイクロコンピュータ102内のRAMに優先的に配置したことにより、伸張処理プログラムを高速に実行することができるので、転送時間を短縮できる。
【0121】
これらのことから、ターゲットシステム101のハードウェアのコストを増加させることなく、ホストコンピュータ100からターゲットシステム101へのデータ転送時間を短縮することができる。
【0122】
なお、上記実施の形態では、マイクロコンピュータ102の内部にのみメモリを実装しているが、マイクロコンピュータ102の外部にもRAMを接続してもよい。マイクロコンピュータ102の外部にRAMを実装した場合には、このRAMもバッファ領域1000として使用することができるので、圧縮データの転送時間を削減することができ、その結果、転送時間を短縮することができる。
【0123】
また、上記実施の形態では、マイクロコンピュータ102の内部にのみメモリを実装しているが、マイクロコンピュータ102の外部にも書き換え可能な不揮発性メモリ105を接続してもよい。マイクロコンピュータ102の外部に書き換え可能な不揮発性メモリ105を実装した場合には、この不揮発性メモリに格納されるデータについても圧縮して転送することにより、転送時間を短縮することができる。
【0124】
また、上記実施の形態では、転送順序管理ステップ330において、RAM106に配置されている複数のセクションを圧縮して転送する場合には、サイズの大きなセクションから順番に転送するように、転送順序を並び替えるステップを追加してもよい。これにより、サイズの大きいセクションを転送するときに、バッファ領域1000を増やすことができる。その結果、圧縮データの転送回数を削減でき、転送時間を短縮することができる。
【0125】
また、上記実施の形態では、ステップ1110において、マイクロコンピュータ102内のメモリに強制実行停止コードを挿入していたが、代わりに、予め強制実行停止コードを挿入した伸張処理プログラム209をホストコンピュータ100で作成してもよい。これにより、伸張処理を行うたびに強制実行停止コードを挿入する必要がなくなり、伸張処理時間を短縮できる。
【0126】
また、上記実施の形態では、伸張処理ステップ830の前に圧縮処理ステップ810を配置しているが、代わりに、ステップ1120とステップ1130の間に圧縮処理ステップ810を配置してもよい。これにより、ホストコンピュータ100での圧縮処理とマイクロコンピュータ102での伸張処理とを並行して行うことができるので、データ転送時間を短縮することができる。
【0127】
また、上記実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【0128】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【0129】
以上のように、本発明にかかるデータ転送方法は、ターゲットシステムのメモリ資源を有効に利用できるため、データの転送効率を向上し、ターゲットシステムでの処理時間を短縮するという効果を有し、特に、圧縮データを転送するデータ転送方法として有用である。
【図面の簡単な説明】
【0130】
【図1】本発明の実施の形態1におけるデータ転送方法を実施するデータ転送装置の構成を示すブロック図である。
【図2】本発明の実施の形態1におけるホストコンピュータの構成を示すブロック図である。
【図3】本発明の実施の形態1におけるデータ転送方法を示すフロー図である。
【図4】本発明の実施の形態1におけるターゲットシステムのメモリマップの例を示す図である。
【図5】本発明の実施の形態1における実行形式ファイルのメモリ配置の例を示す図である。
【図6】本発明の実施の形態1における転送順序管理ステップのフロー図である。
【図7】本発明の実施の形態1における伸張処理プログラムの配置可能性の判定結果を示す図である。
【図8】本発明の実施の形態1における伸張処理プログラム配置領域特定ステップのフロー図である。
【図9】本発明の実施の形態1における圧縮データ転送ステップのフロー図である。
【図10】本発明の実施の形態1におけるバッファ領域特定ステップのフロー図である。
【図11】本発明の実施の形態1におけるバッファ領域特定結果の例を示す図である。
【図12】本発明の実施の形態1におけるバッファ領域特定結果の例を示す図である。
【図13】本発明の実施の形態1における伸張処理ステップのフロー図である。
【図14】本発明の実施の形態1におけるデータ転送後のターゲットシステムのメモリ内容を示した図である。
【図15】従来のデータ転送方法を実施するデータ転送装置の構成を示すブロック図である。
【符号の説明】
【0131】
100 ホストコンピュータ
101 ターゲットシステム
102 マイクロコンピュータ
103 オンチップデバッグ装置
104 CPU
105 書き換え可能な不揮発性メモリ
106 RAM
200 ソースファイル
201 コンパイラ
202 アセンブラ
203 ライブラリファイル
204 実行形式ファイル
205 マップファイル
206 リンカ
207 デバッガ
208 メモリマップ情報
209 伸張処理プログラム
300 メモリマップ情報取得ステップ
310 プログラムマッピング情報取得ステップ
320 圧縮・非圧縮判定ステップ
330 転送順序管理ステップ
340 伸張処理プログラムをターゲットシステムのメモリに配置可能か判定するステップ
350 伸張処理プログラム配置領域特定ステップ
360 伸張処理プログラム転送ステップ
370 圧縮データ転送ステップ
380 非圧縮データ転送ステップ
800 バッファ領域特定ステップ
810 圧縮処理ステップ
820 転送ステップ
830 伸張処理ステップ
1000 バッファ領域
1010 伸張処理プログラム配置領域

【特許請求の範囲】
【請求項1】
圧縮データおよび前記圧縮データを伸張する伸張処理プログラムをターゲットシステムへ転送し、前記ターゲットシステム内で前記伸張処理プログラムによって前記圧縮データを伸張することにより得られた伸張データを前記ターゲットシステムのメモリへ格納するデータ転送方法であって、
前記ターゲットシステムのメモリ配置を示す情報であるメモリマップ情報を得るメモリマップ情報取得ステップと、
前記ターゲットシステムのメモリに格納される前記伸張データの配置予定位置を示す情報であるマッピング情報を得るマッピング情報取得ステップと、
少なくとも前記メモリマップ情報取得ステップおよび前記マッピング情報取得ステップで得た前記メモリマップ情報および前記マッピング情報をもとに、前記ターゲットシステムのメモリにおける前記伸張処理プログラムの格納先メモリ領域を決定する伸張処理プログラム配置領域特定ステップと、
少なくとも前記メモリマップ情報取得ステップおよび前記マッピング情報取得ステップで得た前記メモリマップ情報および前記マッピング情報をもとに、前記伸張処理プログラムの格納先メモリ領域を避けて前記ターゲットシステムのメモリにおける前記圧縮データの格納先メモリ領域を決定するバッファ領域特定ステップとを含むデータ転送方法。
【請求項2】
前記バッファ領域特定ステップでは、前記ターゲットシステムのメモリにおいて、データの格納されないメモリ領域を前記圧縮データの格納先メモリ領域として優先して決定する請求項1に記載のデータ転送方法。
【請求項3】
前記バッファ領域特定ステップでは、前記ターゲットシステムのメモリにおいて、非圧縮データの格納されるメモリ領域を前記圧縮データの格納先メモリ領域として優先して決定する請求項1に記載のデータ転送方法。
【請求項4】
前記バッファ領域特定ステップでは、前記ターゲットシステムのメモリにおいて、伸張後のデータが格納されるメモリ領域を、前記伸張データが格納されるまで、前記圧縮データの格納先メモリ領域として決定する請求項1に記載のデータ転送方法。
【請求項5】
転送するデータの優先度を決定する転送順序管理ステップをさらに含む請求項1に記載のデータ転送方法。
【請求項6】
前記転送順序管理ステップでは、圧縮データと非圧縮データとが存在する場合、圧縮データを先に転送する請求項5に記載のデータ転送方法。
【請求項7】
前記転送順序管理ステップでは、データサイズが大きい順にデータを転送する請求項6に記載のデータ転送方法。
【請求項8】
圧縮データおよび前記圧縮データを伸張する伸張処理プログラムをターゲットシステムへ転送し、前記ターゲットシステム内で前記伸張処理プログラムによって前記圧縮データを伸張することにより得られた伸張データを前記ターゲットシステムのメモリへ格納するデータ転送装置であって、
少なくとも前記ターゲットシステムのメモリの配置を示す情報であるメモリマップ情報と、前記ターゲットシステムのメモリに格納される前記伸張データの配置予定位置を示す情報であるマッピング情報とをもとに、前記ターゲットシステムのメモリにおける前記伸張処理プログラムの格納先メモリ領域を決定する伸張処理プログラム配置領域特定手段と、
少なくとも前記メモリマップ情報と、前記マッピング情報とをもとに、前記伸張処理プログラムの格納先メモリ領域を避けて前記ターゲットシステムのメモリにおける前記圧縮データの格納先メモリ領域を決定するバッファ領域特定手段を具備するデータ転送装置。
【請求項9】
前記バッファ領域特定手段は、前記ターゲットシステムのメモリにおいて、データの格納されないメモリ領域を前記圧縮データの格納先メモリ領域として優先して決定する請求項8に記載のデータ転送装置。
【請求項10】
前記バッファ領域特定手段は、前記ターゲットシステムのメモリにおいて、非圧縮データの格納されるメモリ領域を前記圧縮データの格納先メモリ領域として優先して決定する請求項8に記載のデータ転送装置。
【請求項11】
前記バッファ領域特定手段は、前記ターゲットシステムのメモリにおいて、伸張後のデータが格納されるメモリ領域を、前記伸張データが格納されるまで、前記圧縮データの格納先メモリ領域として決定する請求項8に記載のデータ転送装置。
【請求項12】
転送するデータの優先度を決定する転送順序管理手段をさらに具備する請求項8に記載のデータ転送装置。
【請求項13】
前記転送データ管理手段は、圧縮データと非圧縮データとが存在する場合、圧縮データを先に転送する請求項12に記載のデータ転送装置。
【請求項14】
前記転送データ管理手段は、データサイズが大きい順にデータ転送する請求項13に記載のデータ転送装置。
【請求項15】
前記ターゲットシステムが前記メモリとしてRAMと書き換え可能な不揮発性メモリとを具備する請求項8記載のデータ転送装置。
【請求項16】
転送するデータの優先度を決定する転送順序管理手段をさらに具備し、
前記転送順序管理手段は、伸張後に前記書き換え可能な不揮発性メモリに格納される圧縮データと、伸張後に前記RAMに格納される圧縮データとが存在する場合、伸張後に前記書き換え可能な不揮発性メモリに格納される圧縮データを先に転送する請求項15記載のデータ転送装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2010−20416(P2010−20416A)
【公開日】平成22年1月28日(2010.1.28)
【国際特許分類】
【出願番号】特願2008−178280(P2008−178280)
【出願日】平成20年7月8日(2008.7.8)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】