(57)【要約】【課題】ターゲットシステムのハードウェアコストを増加させることなく、ターゲットシステムへのデータを圧縮して転送できるようにする。【解決手段】ターゲットシステムにデータを圧縮して転送するデータ転送方法であって、ターゲットシステムのメモリマップ情報を取得するメモリマップ情報取得ステップ３００と、転送データのメモリ配置の情報を取得するプログラムマッピング情報取得ステップ３１０と、少なくとも以上のステップで得た情報をもとに、圧縮データの上記ターゲットシステムにおけるメモリ配置を決定するステップと、を備えたデータ転送方法により、ターゲットシステムに伸張処理用のハードウェアを追加することなく、ターゲットシステムへ圧縮データを転送することができる。【選択図】図３
2010020416.tif 000002
【特許請求の範囲】
【請求項１】
圧縮データおよび前記圧縮データを伸張する伸張処理プログラムをターゲットシステムへ転送し、前記ターゲットシステム内で前記伸張処理プログラムによって前記圧縮データを伸張することにより得られた伸張データを前記ターゲットシステムのメモリへ格納するデータ転送方法であって、
前記ターゲットシステムのメモリ配置を示す情報であるメモリマップ情報を得るメモリマップ情報取得ステップと、
前記ターゲットシステムのメモリに格納される前記伸張データの配置予定位置を示す情報であるマッピング情報を得るマッピング情報取得ステップと、
少なくとも前記メモリマップ情報取得ステップおよび前記マッピング情報取得ステップで得た前記メモリマップ情報および前記マッピング情報をもとに、前記ターゲットシステムのメモリにおける前記伸張処理プログラムの格納先メモリ領域を決定する伸張処理プログラム配置領域特定ステップと、
少なくとも前記メモリマップ情報取得ステップおよび前記マッピング情報取得ステップで得た前記メモリマップ情報および前記マッピング情報をもとに、前記伸張処理プログラムの格納先メモリ領域を避けて前記ターゲットシステムのメモリにおける前記圧縮データの格納先メモリ領域を決定するバッファ領域特定ステップとを含むデータ転送方法。
【請求項２】
前記バッファ領域特定ステップでは、前記ターゲットシステムのメモリにおいて、データの格納されないメモリ領域を前記圧縮データの格納先メモリ領域として優先して決定する請求項１に記載のデータ転送方法。
【請求項３】
前記バッファ領域特定ステップでは、前記ターゲットシステムのメモリにおいて、非圧縮データの格納されるメモリ領域を前記圧縮データの格納先メモリ領域として優先して決定する請求項１に記載のデータ転送方法。
【請求項４】
前記バッファ領域特定ステップでは、前記ターゲットシステムのメモリにおいて、伸張後のデータが格納されるメモリ領域を、前記伸張データが格納されるまで、前記圧縮データの格納先メモリ領域として決定する請求項１に記載のデータ転送方法。
【請求項５】
転送するデータの優先度を決定する転送順序管理ステップをさらに含む請求項１に記載のデータ転送方法。
【請求項６】
前記転送順序管理ステップでは、圧縮データと非圧縮データとが存在する場合、圧縮データを先に転送する請求項５に記載のデータ転送方法。
【請求項７】
前記転送順序管理ステップでは、データサイズが大きい順にデータを転送する請求項６に記載のデータ転送方法。
【請求項８】
圧縮データおよび前記圧縮データを伸張する伸張処理プログラムをターゲットシステムへ転送し、前記ターゲットシステム内で前記伸張処理プログラムによって前記圧縮データを伸張することにより得られた伸張データを前記ターゲットシステムのメモリへ格納するデータ転送装置であって、
少なくとも前記ターゲットシステムのメモリの配置を示す情報であるメモリマップ情報と、前記ターゲットシステムのメモリに格納される前記伸張データの配置予定位置を示す情報であるマッピング情報とをもとに、前記ターゲットシステムのメモリにおける前記伸張処理プログラムの格納先メモリ領域を決定する伸張処理プログラム配置領域特定手段と、
少なくとも前記メモリマップ情報と、前記マッピング情報とをもとに、前記伸張処理プログラムの格納先メモリ領域を避けて前記ターゲットシステムのメモリにおける前記圧縮データの格納先メモリ領域を決定するバッファ領域特定手段を具備するデータ転送装置。
【請求項９】
前記バッファ領域特定手段は、前記ターゲットシステムのメモリにおいて、データの格納されないメモリ領域を前記圧縮データの格納先メモリ領域として優先して決定する請求項８に記載のデータ転送装置。
【請求項１０】
前記バッファ領域特定手段は、前記ターゲットシステムのメモリにおいて、非圧縮データの格納されるメモリ領域を前記圧縮データの格納先メモリ領域として優先して決定する請求項８に記載のデータ転送装置。
【請求項１１】
前記バッファ領域特定手段は、前記ターゲットシステムのメモリにおいて、伸張後のデータが格納されるメモリ領域を、前記伸張データが格納されるまで、前記圧縮データの格納先メモリ領域として決定する請求項８に記載のデータ転送装置。
【請求項１２】
転送するデータの優先度を決定する転送順序管理手段をさらに具備する請求項８に記載のデータ転送装置。
【請求項１３】
前記転送データ管理手段は、圧縮データと非圧縮データとが存在する場合、圧縮データを先に転送する請求項１２に記載のデータ転送装置。
【請求項１４】
前記転送データ管理手段は、データサイズが大きい順にデータ転送する請求項１３に記載のデータ転送装置。
【請求項１５】
前記ターゲットシステムが前記メモリとしてＲＡＭと書き換え可能な不揮発性メモリとを具備する請求項８記載のデータ転送装置。
【請求項１６】
転送するデータの優先度を決定する転送順序管理手段をさらに具備し、
前記転送順序管理手段は、伸張後に前記書き換え可能な不揮発性メモリに格納される圧縮データと、伸張後に前記ＲＡＭに格納される圧縮データとが存在する場合、伸張後に前記書き換え可能な不揮発性メモリに格納される圧縮データを先に転送する請求項１５記載のデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストコンピュータからターゲットシステムへ圧縮データを転送するデータ転送方法およびデータ転送装置に関するものである。
【背景技術】
【０００２】
組込みソフトウェアの開発においては、ホストコンピュータ上で作成したプログラムを、ターゲットシステム内のマイクロコンピュータへ転送し、ターゲットシステム上でのプログラムの動作確認を行う。近年、ターゲットシステムの複雑化に伴い、組込みソフトウェアが大規模化し、ホストコンピュータからターゲットシステムへのデータ転送時間が増大してきた。
【０００３】
従来のデータ転送方法では、データ転送時間を短縮するため、ホストコンピュータからターゲットシステムへ圧縮データを転送し、ターゲットシステムにて伸張処理プログラムを実行することにより圧縮データを伸張している（例えば、特許文献１参照）。
【０００４】
また、ホストコンピュータからターゲットシステムの一部であるエミュレータへ圧縮データを転送し、エミュレータに実装した伸張処理回路を用いて圧縮データの伸張を行っているものもある（例えば、特許文献２参照）。
【０００５】
以下、従来のデータ転送方法について説明する。
【０００６】
図１５は従来のデータ転送方法のブロック図であり（例えば、特許文献１の図５参照）、ホストコンピュータ１とターゲットシステム２とが通信手段により接続される。ターゲットシステム２は、ホストコンピュータ１と接続可能なＣＰＵ３と、ＣＰＵ３にて実行するプログラムを格納するための命令メモリ４と、プログラム内で使用するデータを格納するためのデータメモリ５と、からなる。データメモリ５は、ターゲットシステム２の起動時に初期化される初期化領域６と、それ以外の領域７とからなる。
【０００７】
データメモリ５の初期化領域６は、バス８とバス切替回路９とを経由して、命令メモリ用バス１０とデータメモリ用バス１１とに接続されている。命令メモリ４は、バス１２とバス切替回路９とを経由して、命令メモリ用バス１０とデータメモリ用バス１１とに接続されている。データメモリ５内の初期化領域を除いた領域７は、データメモリ用バス１１に接続されている。
【０００８】
以上のように構成されたデータ転送方法について、以下その手順を説明する。
【０００９】
最初に、データメモリ５の初期化領域６にはバス切替回路９を介してデータメモリ用バス１１が接続され、命令メモリ４には命令メモリ用バス１０が接続されている。ここでバス切替回路９においてバスの接続を切替えて、データメモリの初期化領域６には命令メモリ用バス１０を接続し、命令メモリ４にはデータメモリ用バス１１を接続する。
【００１０】
次に、ホストコンピュータ１からＣＰＵ３と命令メモリ用バス１０とを介して、データメモリ５の初期化領域６へ伸張処理プログラムを転送・格納する。
【００１１】
次に、ホストコンピュータ１からＣＰＵ３とデータメモリ用バス１１とを介して、データメモリ５内の初期化領域を除いた領域７へ、圧縮データを転送する。
【００１２】
次に、ＣＰＵ３にて伸張処理プログラムを実行する。データメモリ５内の初期化領域を除いた領域７からデータメモリ用バス１１を介して圧縮データを読出し、ＣＰＵ３にて圧縮データを伸張し、伸張処理により得られたプログラムをデータメモリ用バス１１とバス切替回路９とを介して命令メモリ４に格納する。
【００１３】
次に、バスの接続状態を元に戻し、データメモリ５の初期化領域６にはデータメモリ用バス１１を接続し、命令メモリ４には命令メモリ用バス１０を接続する。
【００１４】
最後に、伸張処理により得られたプログラムを実行する。このとき、データメモリ５の初期化領域６が初期化され、伸張処理後に不要となる伸張処理プログラムが破棄される。
【特許文献１】特開２００７−００４３５０号公報
【特許文献２】特開２００３−２０８３３２号公報
【特許文献３】特開平１１−３１２１０５号公報
【特許文献４】特開２００６−３３８４０９号公報
【特許文献５】特開平５−２１７００５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
従来のデータ転送方法では、ターゲットシステム２において、データメモリ５の初期化領域６に伸張処理プログラムを配置し、データメモリ５内の初期化領域を除いた領域７に圧縮データを配置することにより、圧縮データの伸張を行うことができた。
【００１６】
しかしながら、従来のデータ転送方法では、メモリをバス切替回路９に接続するために、データメモリ５の初期化領域６をバス８に接続し、データメモリ５内の初期化領域を除いた領域７をデータメモリ用バス１１に接続する必要がある。データメモリの初期化領域６とそれ以外の領域７とで異なるバスに接続するためには、データメモリを二分割して、初期化領域６とそれ以外の領域７とをそれぞれ異なる物理メモリとして実装すればよいが、この場合、データメモリ５の初期化領域６のサイズは固定されてしまう。
【００１７】
一方で、初期化領域６に格納される伸張処理プログラムのサイズは、圧縮アルゴリズムによって異なる。そのため、伸張処理プログラムのサイズが、データメモリの初期化領域６のサイズに比べて大きい場合には、伸張処理プログラムを格納することができず、伸張処理を行うことができないという問題点がある。
【００１８】
また、伸張処理プログラムのサイズが、データメモリの初期化領域６のサイズに比べて小さい場合には、データメモリの初期化領域６に伸張処理プログラムを格納できるが、初期化領域６内の伸張処理プログラム格納領域を除く領域には、圧縮データを格納することができず、メモリ資源を有効に利用できないという問題点がある。
【００１９】
また、ハードウェアにバス切替回路９を追加する必要があり、ハードウェアのコストが増加するという問題点がある。
【００２０】
本発明は、上記従来の問題点を解決するもので、初期化領域のサイズに依存せずにターゲットシステムのメモリに対して伸張処理プログラムと圧縮データとを柔軟に配置でき、圧縮データの転送回数を削減できるデータ転送方法を、ハードウェアのコストを増加させることなしに、提供することを目的とする。
【課題を解決するための手段】
【００２１】
上記課題を解決するために、本発明の第１のデータ転送方法は、圧縮データおよび圧縮データを伸張する伸張処理プログラムをターゲットシステムへ転送し、ターゲットシステム内で伸張処理プログラムによって圧縮データを伸張することにより得られた伸張データをターゲットシステムのメモリへ格納するデータ転送方法であって、ターゲットシステムのメモリ配置を示す情報であるメモリマップ情報を得るメモリマップ情報取得ステップと、ターゲットシステムのメモリに格納される伸張データの配置予定位置を示す情報であるマッピング情報を得るマッピング情報取得ステップと、少なくともメモリマップ情報取得ステップおよびマッピング情報取得ステップで得たメモリマップ情報およびマッピング情報をもとに、ターゲットシステムのメモリにおける伸張処理プログラムの格納先メモリ領域を決定する伸張処理プログラム配置領域特定ステップと、少なくともメモリマップ情報取得ステップおよびマッピング情報取得ステップで得たメモリマップ情報およびマッピング情報をもとに、伸張処理プログラムの格納先メモリ領域を避けてターゲットシステムのメモリにおける圧縮データの格納先メモリ領域を決定するバッファ領域特定ステップとを含む。
【００２２】
このような構成により、ターゲットシステムのメモリで自由に使える領域を明確にすることができ、この領域に伸張処理プログラムと圧縮データとを格納することができる。
【００２３】
また、本発明の第２のデータ転送方法は、上記第１のデータ転送方法において、バッファ領域特定ステップでは、ターゲットシステムのメモリにおいて、データの格納されないメモリ領域を圧縮データの格納先メモリ領域として優先して決定することを特徴とする。
【００２４】
このような構成により、データの格納されないメモリ領域を、ターゲットシステムのメモリで自由に使用できる領域として、使用することができる。
【００２５】
また、本発明の第３のデータ転送方法は、上記第１のデータ転送方法において、バッファ領域特定ステップでは、ターゲットシステムのメモリにおいて、非圧縮データの格納されるメモリ領域を圧縮データの格納先メモリ領域として優先して決定することを特徴とする。
【００２６】
このような構成により、非圧縮データが格納されるまでは、非圧縮データが格納されるメモリ領域を、ターゲットシステムのメモリで自由に使用できる領域として、使用することができる。
【００２７】
また、本発明の第４のデータ転送方法は、上記第１のデータ転送方法において、バッファ領域特定ステップでは、ターゲットシステムのメモリにおいて、伸張後のデータが格納されるメモリ領域を、伸張データが格納されるまで、圧縮データの格納先メモリ領域として決定することを特徴とする。
【００２８】
このような構成により、伸長後のデータが格納されるまでは、伸長後のデータが格納されるメモリ領域を、ターゲットシステムのメモリで自由に使用できる領域として、使用することができる。
【００２９】
また、本発明の第５のデータ転送方法は、上記第１のデータ転送方法において、転送するデータの優先度を決定する転送順序管理ステップをさらに含む。
【００３０】
このような構成により、データの転送順序を管理することができるため、ターゲットシステムのメモリで自由に使用できる領域を効率よく使用することができる。
【００３１】
また、本発明の第６のデータ転送方法は、上記第５のデータ転送方法において、転送順序管理ステップでは、圧縮データと非圧縮データとが存在する場合、圧縮データを先に転送することを特徴とする。
【００３２】
このような構成により、ターゲットシステムのメモリで自由に使用できる領域を効率よく使用することができる。
【００３３】
また、本発明の第７のデータ転送方法は、上記第６のデータ転送方法において、転送順序管理ステップでは、データサイズが大きい順にデータを転送することを特徴とする。
【００３４】
このような構成により、ターゲットシステムのメモリで自由に使用できる領域を効率よく使用することができる。
【００３５】
また、本発明の第１のデータ転送装置は、圧縮データおよび圧縮データを伸張する伸張処理プログラムをターゲットシステムへ転送し、ターゲットシステム内で伸張処理プログラムによって圧縮データを伸張することにより得られた伸張データをターゲットシステムのメモリへ格納するデータ転送装置であって、少なくともターゲットシステムのメモリの配置を示す情報であるメモリマップ情報と、ターゲットシステムのメモリに格納される伸張データの配置予定位置を示す情報であるマッピング情報とをもとに、ターゲットシステムのメモリにおける伸張処理プログラムの格納先メモリ領域を決定する伸張処理プログラム配置領域特定手段と、少なくともメモリマップ情報と、マッピング情報とをもとに、伸張処理プログラムの格納先メモリ領域を避けてターゲットシステムのメモリにおける圧縮データの格納先メモリ領域を決定するバッファ領域特定手段を具備する。
【００３６】
このような構成により、ターゲットシステムのメモリで自由に使える領域を明確にすることができ、この領域に伸張処理プログラムと圧縮データとを格納することができる。
【００３７】
また、本発明の第２のデータ転送装置は、上記第１のデータ転送装置において、バッファ領域特定手段は、ターゲットシステムのメモリにおいて、データの格納されないメモリ領域を圧縮データの格納先メモリ領域として優先して決定することを特徴とする。
【００３８】
このような構成により、データの格納されないメモリ領域を、ターゲットシステムのメモリで自由に使用できる領域として、使用することができる。
【００３９】
また、本発明の第３のデータ転送装置は、上記第１のデータ転送装置において、バッファ領域特定手段は、ターゲットシステムのメモリにおいて、非圧縮データの格納されるメモリ領域を圧縮データの格納先メモリ領域として優先して決定することを特徴とする。
【００４０】
このような構成により、非圧縮データが格納されるまでは、非圧縮データが格納されるメモリ領域を、ターゲットシステムのメモリで自由に使用できる領域として、使用することができる。
【００４１】
また、本発明の第４のデータ転送装置は、上記第１のデータ転送装置において、バッファ領域特定手段は、ターゲットシステムのメモリにおいて、伸張後のデータが格納されるメモリ領域を、伸張データが格納されるまで、圧縮データの格納先メモリ領域として決定することを特徴とする。
【００４２】
このような構成により、伸長後のデータが格納されるまでは、伸長後のデータが格納されるメモリ領域を、ターゲットシステムのメモリで自由に使用できる領域として、使用することができる。
【００４３】
また、本発明の第５のデータ転送装置は、上記第１のデータ転送装置において、転送するデータの優先度を決定する転送順序管理手段をさらに具備する。
【００４４】
このような構成により、データの転送順序を管理することができるため、ターゲットシステムのメモリで自由に使用できる領域を効率よく使用することができる。
【００４５】
また、本発明の第６のデータ転送装置は、上記第５のデータ転送装置において、転送データ管理手段は、圧縮データと非圧縮データとが存在する場合、圧縮データを先に転送することを特徴とする。
【００４６】
このような構成により、ターゲットシステムのメモリで自由に使用できる領域を効率よく使用することができる。
【００４７】
また、本発明の第７のデータ転送装置は、上記第６のデータ転送装置において、転送データ管理手段は、データサイズが大きい順にデータ転送することを特徴とする。
【００４８】
このような構成により、かかる構成により、ターゲットシステムのメモリで自由に使用できる領域を効率よく使用することができる。
【００４９】
また、本発明の第８のデータ転送装置は、上記第１のデータ転送装置において、ターゲットシステムがメモリとしてＲＡＭと書き換え可能な不揮発性メモリとを具備することを特徴とする。
【００５０】
このような構成により、ＲＡＭで自由に使える領域を明確にすることができ、この領域に圧縮データと伸張処理プログラムとを配置することにより、伸張処理を高速に行うことができる。
【００５１】
また、本発明の第９のデータ転送装置は、上記第８のデータ転送装置において、転送するデータの優先度を決定する転送順序管理手段をさらに具備し、転送順序管理手段は、伸張後に書き換え可能な不揮発性メモリに格納される圧縮データと、伸張後にＲＡＭに格納される圧縮データとが存在する場合、伸張後に書き換え可能な不揮発性メモリに格納される圧縮データを先に転送することを特徴とする。
【００５２】
このような構成により、書き換え可能な不揮発性メモリに格納される圧縮データを転送する際に、ＲＡＭのバッファ領域を増やすことができる。
【発明の効果】
【００５３】
本発明によるデータ転送方法によれば、事前にターゲットシステムでのメモリ配置情報等から、自由に使えるメモリ領域を明確にすることにより、その領域に対して伸張処理プログラムと圧縮データとを柔軟に配置することができ、ターゲットシステムのメモリを有効に利用することができる。また、ターゲットシステムの自由に使えるメモリ領域を増やすことより、圧縮データの転送回数を削減することができるため、圧縮データの伸長処理をより効率的に行うことができる。
【発明を実施するための最良の形態】
【００５４】
（実施の形態１）
以下、本発明の実施の形態１に関わるデータ転送方法およびデータ転送装置について、図１から図１４を用いて説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【００５５】
図１は、本発明の実施の形態１におけるデータ転送方法を実施するためのデータ転送装置の構成を示すブロック図である。
【００５６】
図１において、ホストコンピュータ１００とターゲットシステム１０１内のマイクロコンピュータ１０２とは、オンチップデバッグ装置１０３を介して接続される。ホストコンピュータ１００とオンチップデバッグ装置１０３とは、通常、無線または有線の通信手段等により接続される。マイクロコンピュータ１０２とオンチップデバッグ装置１０３とは、ＪＴＡＧ(Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ)等の通信手段により接続される。
【００５７】
オンチップデバッグ装置１０３は、ホストコンピュータ１００から送られたプログラムをターゲットシステム１０１へ転送することができる。また、オンチップデバッグ装置１０３は、ホストコンピュータ１００上から送られたコマンドに応じて、マイクロコンピュータ１０２におけるプログラム実行の開始・停止を制御したり、ＲＡＭ１０６の書き換えを行ったりすることができる。
【００５８】
さらに、オンチップデバッグ装置１０３は、マイクロコンピュータ１０２におけるプログラムの実行履歴などの情報を、マイクロコンピュータ１０２から収集し、ホストコンピュータ１００へ転送することができる。
【００５９】
マイクロコンピュータ１０２は、命令を実行するためのＣＰＵ１０４と、電気的に書き換え可能な不揮発性メモリ１０５と、揮発性メモリであるＲＡＭ１０６と、により構成されている。ＣＰＵ１０４と書き換え可能な不揮発性メモリ１０５とはＲＯＭバスにより接続され、ＣＰＵ１０４とＲＡＭ１０６とはＲＡＭバスにより接続されている。
【００６０】
図２は、ホストコンピュータ１００のソフトウェア開発環境を示すブロック図である。ホストコンピュータ１００内のソフトウェア開発環境は、ソースファイル２００の構文解析と最適化を行い、アセンブルファイルを生成するコンパイラ２０１と、コンパイラ２０１が生成したアセンブルファイルからオブジェクトファイルを生成するアセンブラ２０２と、アセンブラ２０２が生成したオブジェクトファイルとライブラリファイル２０３とをリンクして実行形式ファイル２０４とマップファイル２０５とを生成するリンカ２０６と、ターゲットシステム１０１にプログラムの実行形式ファイル２０４を転送しマイクロコンピュータ１０２の命令実行を制御するデバッガ２０７と、により構成される。
【００６１】
上記実行形式ファイル２０４は、データ種別ごとに複数のセクションに分割されて、ターゲットシステム１０１のメモリに配置される。上記マップファイル２０５には、各セクションのセクション名、初期アドレス、長さなどが記載されている。つまり、マップファイル２０５には、ターゲットシステムのメモリに格納される伸張後のデータの配置予定位置を示す情報であるマッピング情報が格納されている。
【００６２】
デバッガ２０７には、ターゲットシステム１０１内に実装されたメモリの種別と開始アドレスと終了アドレスとを示したメモリマップ情報２０８が、ホストコンピュータ１００の外部から設定される。
【００６３】
また、ホストコンピュータ１００内には、マイクロコンピュータ１０２上で実行可能な伸張処理プログラム２０９が格納されている。
【００６４】
図３は、ホストコンピュータ１００からターゲットシステム１０１に対して実行形式ファイル２０４を圧縮して転送するデータ転送方法を示すフロー図である。
【００６５】
データ転送方法は、メモリマップ情報取得ステップ３００、プログラムマッピング情報取得ステップ３１０、圧縮・非圧縮判定ステップ３２０、転送順序管理ステップ３３０、伸張処理プログラムをターゲットシステムのメモリに配置可能か判定するステップ３４０、伸張処理プログラム配置領域特定ステップ３５０、伸張処理プログラム転送ステップ３６０、圧縮データ転送ステップ３７０、非圧縮データ転送ステップ３８０、を具備する。
【００６６】
メモリマップ情報取得ステップ３００では、ホストコンピュータ１００の外部から設定されるメモリマップ情報（ターゲットシステムのメモリの配置を示す情報）２０８を取得し、ターゲットシステム１０１内に実装されたメモリの種別と開始アドレスと終了アドレスとを特定する。
【００６７】
プログラムマッピング情報取得ステップ３１０では、マップファイル２０５にもとづいて、ターゲットシステム１０１のメモリに対する実行形式ファイル２０４のメモリ配置（つまり、ターゲットシステムのメモリに格納される伸張後のデータの配置予定位置を示す情報であるマッピング情報）を特定する。
【００６８】
圧縮・非圧縮判定ステップ３２０では、各セクションのデータ種別等にもとづいて、各セクションを圧縮するか否かを判定する。
【００６９】
転送順序管理ステップ３３０では、各セクションの圧縮・非圧縮の区分、各セクションの格納先メモリの種別などにもとづいてセクションの転送順序を決定する。
【００７０】
伸張処理プログラムをターゲットシステムのメモリに配置可能か判定するステップ３４０では、メモリマップ情報取得ステップ３００で得られたマップ情報と、プログラムマッピング情報取得ステップ３１０で得られた実行形式ファイル２０４のメモリ配置とにもとづいて、自由に使用可能なメモリ領域を特定する。さらに、特定したメモリ領域と伸張処理プログラム２０９とのサイズを比較することにより、特定したメモリ領域に対して伸張処理プログラム２０９を配置できるか否かを判定する。
【００７１】
伸張処理プログラム配置領域特定ステップ３５０では、ステップ３４０において伸張処理プログラムを配置可能であると判定した場合に、伸張処理プログラム２０９を配置するためのメモリ領域を特定する。
【００７２】
伸張処理プログラム転送ステップ３６０では、ホストコンピュータ１００からターゲットシステム１０１のメモリ領域に対して、伸張処理プログラム２０９を転送する。
【００７３】
圧縮データ転送ステップ３７０では、ホストコンピュータ１００からターゲットシステム１０１へ実行形式ファイル２０４を圧縮して転送し、マイクロコンピュータ１０２において伸張する。
【００７４】
非圧縮データ転送ステップ３８０では、ホストコンピュータ１００からターゲットシステム１０１へ実行形式ファイル２０４を圧縮せずに転送する。
【００７５】
以下、本実施の形態におけるデータ転送方法の具体的な動作について説明する。
【００７６】
最初に、メモリマップ情報取得ステップ３００では、ホストコンピュータ１００の外部から設定されるメモリマップ情報２０８を取得し、ターゲットシステム１０１内に実装されたメモリの種別と開始アドレスと終了アドレスとを特定する。
【００７７】
図４は、ターゲットシステム１０１のメモリマップの例である。
【００７８】
書き換え可能な不揮発性メモリ１０５は、０ｘ４０００００００番地から終了アドレス０ｘ４００ＦＦＦＦＦ番地に配置され、ＲＡＭ１０６は、メモリ空間の開始アドレス０ｘ００００００００番地から終了アドレス０ｘ００００７ＦＦＦ番地に配置される。
【００７９】
次のプログラムマッピング情報取得ステップ３１０では、ターゲットシステム１０１のメモリに対する実行形式ファイル２０４のメモリ配置を特定する。デバッガ２０７では、マップファイル２０５にもとづいて、ターゲットシステム１０１のメモリに対する実行形式ファイル２０４の配置を特定する。
【００８０】
図５は、実行形式ファイル２０４のメモリ配置の例である。実行形式ファイル２０４は、データ種別ごとに複数のセクションに分割されて、ターゲットシステム１０１のメモリに配置される。実行形式ファイル２０４のメモリ配置は、マップファイル２０５に記載されている。
【００８１】
セクション４００は初期化データ領域であり、実行形式ファイル２０４によりターゲットシステム１０１を起動したときに、初期化されるメモリ領域である。セクション４１０は非初期化データ領域であり、実行形式ファイル２０４によりターゲットシステム１０１を起動したときに、通常は０が書き込まれるメモリ領域である。セクション４２０は、ＲＯＭ化データ領域であり、初期化データ領域４００に格納する初期値が格納されるメモリ領域である。セクション４３０は、定数データ領域であり、プログラム内で参照する文字列データなどが格納されるメモリ領域である。セクション４４０および４５０は、テキスト領域であり、プログラムの命令コードが格納されるメモリ領域である。未使用領域４６０は、実行形式ファイル２０４の配置されないメモリ領域である。
【００８２】
セクション４００および４１０および４５０は、ＲＡＭ１０６に配置され、セクション４２０および４３０および４４０は、書き換え可能な不揮発性メモリ１０５に配置されている。
【００８３】
次に、圧縮・非圧縮判定ステップ３２０では、各セクションについて、圧縮するか否かを決定する。一般には、異なるデータ種別のデータに対して、同じ圧縮アルゴリズムにより圧縮した場合、データ種別により圧縮率が異なる。命令コードは一定の規則にしたがって符号が割り当てられるため圧縮率が高い。一方、プログラム中の変数の初期値は、プログラムにより異なるため、常に高い圧縮率が得られるとは限らない。
【００８４】
ここでは、判定方法の一例として、高い圧縮率が期待できるテキスト領域を圧縮し、それ以外の領域は圧縮しない、と判定するものとする。この判定方法により、セクション４４０および４５０は圧縮し、セクション４２０および４３０は圧縮しないものと判定する。セクション４００および４１０は、マイクロコンピュータ１０２において実行形式ファイル２０４を実行するときに初期化されるメモリ領域である。そのため、これらのメモリ領域へはデータを転送しない。
【００８５】
次に、転送順序管理ステップ３３０では、各セクションの転送順序を決定する。図６は、転送順序管理ステップ３３０のフロー図である。
【００８６】
最初のステップ５００では、圧縮・非圧縮の区分により、セクションの転送順序を並び替える。先に圧縮されるセクションを転送し、次に圧縮されないセクションを転送するように、転送順序を並び替える。
【００８７】
次のステップ５１０では、圧縮されるセクションの転送順序を、格納先メモリの種別に応じて決定する。圧縮されるセクションの中で、書き換え可能な不揮発性メモリ１０５に格納されるセクションを先に転送し、次にＲＡＭ１０６に格納されるセクションを転送するように、転送順序を並び替える。
【００８８】
図５の実行形式ファイル２０４の場合では、圧縮されるセクション４４０および４５０を先に転送し、圧縮されないセクション４２０および４３０を次に転送する。
【００８９】
圧縮されるセクション４４０および４５０については、書き換え可能な不揮発性メモリ１０５に格納されるセクション４４０から先に転送し、ＲＡＭ１０６に格納されるセクション４５０を次に転送する。一方、圧縮されないセクション４２０および４３０については、転送順序は任意である。よって、転送順序は、セクション４４０、セクション４５０、圧縮されないセクション４２０および４３０の順となる。
【００９０】
伸張処理プログラムをターゲットシステムのメモリに配置可能か判定するステップ３４０では、メモリマップ情報取得ステップ３００で得られたマップ情報と、プログラムマッピング情報取得ステップ３１０で得られた実行形式ファイル２０４のメモリ配置とにもとづいて、自由に使用可能なメモリ領域を特定する。さらに、特定したメモリ領域と伸張処理プログラム２０９とのサイズを比較することにより、特定したメモリ領域に対して伸張処理プログラム２０９を配置できるか否かを判定する。
【００９１】
ステップ３４０では、最初に、実行形式ファイル２０４のメモリ配置に基づいて、ターゲットシステム１０１のメモリにおける未使用領域と初期化領域と非圧縮データ格納領域と、を特定する。ここで、未使用領域４６０は、セクションの配置されないメモリ領域である。初期化領域は、初期化データ領域のセクション４００と非初期化データ領域のセクション４１０を合わせたメモリ領域である。非圧縮データ格納領域は、圧縮・非圧縮判定ステップ３２０により圧縮しないと判定されたセクション４２０および４３０、を合わせたメモリ領域である。
【００９２】
ステップ３４０では、次に、未使用領域と初期化領域と非圧縮データ格納領域とからなる連続領域に対して、伸張処理プログラム２０９を配置可能か判定する。上記連続領域のサイズが、伸張処理プログラム２０９のサイズより大きい場合には、伸張処理プログラム２０９を配置可能と判定し、伸張処理プログラム配置領域特定ステップ３５０に進む。上記連続領域のサイズが、伸張処理プログラム２０９のサイズより小さい場合には、伸張処理プログラム２０９を配置不可能と判定し、非圧縮データ転送ステップ３８０に進む。
【００９３】
図７は、伸張処理プログラムを配置可能か否かについて判定した結果を示す。
【００９４】
セクション４００および４１０と未使用領域４６０とからなる連続領域６００と、未使用領域４６０のみからなる連続領域６１０と、セクション４２０および４３０と未使用領域４６０とからなる連続領域６２０のそれぞれについて、伸張処理プログラム２０９を配置可能か判定する。ここでは、連続領域６００と連続領域６２０とに対して、伸張処理プログラム２０９を配置可能であると判定する。
【００９５】
次に、伸張処理プログラム配置領域特定ステップ３５０では、ステップ３４０において伸張処理プログラムを配置可能であると判定した場合に、伸張処理プログラム２０９を配置するためのメモリ領域を特定する。
【００９６】
図８は、伸張処理プログラム配置領域特定ステップ３５０のフロー図である。
【００９７】
最初のステップ７００では、伸張処理プログラム２０９を配置可能なメモリ領域がＲＡＭ１０６に存在するか否かを判定する。ステップ７００においてＲＡＭ１０６に存在すると判定した場合には、ステップ７１０に進む。ステップ７００においてＲＡＭ１０６に存在しないと判定した場合には、ステップ７２０に進む。
【００９８】
ステップ７１０では、伸張処理プログラム２０９を配置可能なメモリ領域のうち、ＲＡＭ１０６に存在し、かつサイズの最も小さい領域に、伸張処理プログラム２０９を配置する。ステップ７２０では、書き換え可能な不揮発性メモリ１０５に存在し、かつサイズの最も小さい領域に、伸張処理プログラム２０９を配置する。
【００９９】
図７の場合には、ＲＡＭ１０６の連続領域６００に対して、伸張処理プログラム２０９を配置する。
【０１００】
次に、伸張処理プログラム転送ステップ３６０では、ホストコンピュータ１００からターゲットシステム１０１のメモリ領域に対して、伸張処理プログラム２０９を転送する。伸張処理プログラム２０９は、伸張処理プログラム配置領域特定ステップ３５０にて特定された連続領域６００内に格納される。
【０１０１】
次に、圧縮データ転送ステップ３７０では、ホストコンピュータ１００からターゲットシステム１０１へ実行形式ファイル２０９を圧縮して転送し、マイクロコンピュータ１０２において伸張する。
【０１０２】
図９は、圧縮データ転送ステップ３７０のフロー図である。
【０１０３】
バッファ領域特定ステップ８００では、ターゲットシステム１０１のメモリの中から、圧縮データを一時的に格納するためのバッファ領域を特定する。圧縮処理ステップ８１０では、ホストコンピュータ１００において転送するデータの圧縮を行う。転送ステップ８２０では、ホストコンピュータ１００からターゲットシステム１０１の上記バッファ領域へ圧縮データを転送する。バッファ領域にセクションの圧縮データを格納しきれない場合には、複数回にわたって圧縮データを格納する。伸張処理ステップ８３０では、ターゲットシステム１０１において圧縮データを伸張する。ステップ８４０では、すべての圧縮データを転送したか確認する。
【０１０４】
図１０は、バッファ領域特定ステップ８００のフロー図である。
【０１０５】
最初のステップ９００では、伸張処理プログラム配置領域特定ステップ３５０において特定された未使用領域と初期化領域と非圧縮データ格納領域とからなるＲＡＭ領域を特定する。次のステップ９１０では、ステップ９００で特定したＲＡＭ領域から、伸張処理プログラム配置領域と、転送済みのセクションの配置領域と、転送中のセクションの配置領域と、を除く。次のステップ９２０では、ステップ９１０で特定されたＲＡＭ領域により構成された連続領域から、サイズの最も大きな連続領域を、バッファ領域として特定する。
【０１０６】
図１１は、最初のセクション４４０の転送時に使用するバッファ領域１０００を特定した結果である。ＲＡＭ１０６から伸張処理プログラム配置領域１０１０を除いた領域をバッファ領域１０００として使用する。
【０１０７】
図１２は、最初のセクション４４０の転送後、次のセクション４５０の転送時に使用するバッファ領域１０００を特定した結果である。ＲＡＭ１０６から、伸張処理プログラム配置領域１０１０とセクション４５０の配置領域とを除いた領域を、バッファ領域１０００として使用する。
【０１０８】
図１３は、伸張処理ステップ８３０のフロー図である。
【０１０９】
最初のステップ１１００では、バッファ領域１０００の開始アドレスおよび終了アレスと、伸張データの格納領域の開始アドレスと終了アドレスとを、伸張処理プログラム内の変数領域に書き込む。
【０１１０】
次のステップ１１１０では、伸張処理終了後にマイクロコンピュータ１０２での命令実行を停止するように、伸張処理プログラム２０９に対して、強制実行停止コードを挿入する。
【０１１１】
次のステップ１１２０では、デバッガ２０７からマイクロコンピュータ１０２に対して、伸張処理プログラム２０９の実行開始を指示する。これにより、マイクロコンピュータ１０２は、バッファ領域１０００に格納されている圧縮データを伸張し、伸張後のデータを、ステップ１１００にて指定されたメモリ領域に、格納する。伸張処理後に、マイクロコンピュータ１０２は強制実行停止コードを実行する。その結果、マイクロコンピュータ１０２での命令実行を停止する。
【０１１２】
次のステップ１１３０では、マイクロコンピュータ１０２での命令実行停止を検出し、伸張処理ステップ８３０を終了する。
【０１１３】
このようにして、セクション４４０および４５０を圧縮して転送した後、非圧縮データ転送ステップ３８０に進む。
【０１１４】
非圧縮データ転送ステップ３８０では、ホストコンピュータ１００からターゲットシステム１０１へ実行形式ファイル２０４を圧縮せずに転送する。図１４は、非圧縮データ転送ステップ３８０によりセクション４２０および４３０のデータを圧縮せずに転送した後のターゲットシステム１０１のメモリ内容である。これにより、ホストコンピュータ１００からターゲットシステム１０１への実行形式ファイル２０４の転送が完了する。
【０１１５】
実行形式ファイル２０４の転送完了後、デバッガ２０７からマイクロコンピュータ１０２に対して、実行形式ファイル２０４のプログラム実行開始を指示する。これにより、マイクロコンピュータ１０２は、プログラムの実行を開始する。プログラムでは、最初に、スタートアップルーチンにより、メモリの初期化が行われる。メモリの初期化では、セクション４００には、セクション４２０に格納されている初期値がコピーされ、セクション４１０には初期値０が書き込まれる。このとき、伸張処理プログラム配置領域１０１０に初期値が上書きされるので、伸張処理プログラム２０９は破棄される。
【０１１６】
以上のように、本実施の形態によれば、伸張処理プログラム配置領域１０１０および圧縮データ格納用のバッファ領域１０００を、ターゲットシステム１０１に実装されているメモリから特定して使用するので、伸張処理を行うための特別なメモリをターゲットシステム１０１に追加する必要はない。また、伸張処理は、ターゲットシステム１０１に実装されているマイクロコンピュータ１０２により行うため、専用の伸張処理回路をターゲットシステム１０１に追加する必要はない。
【０１１７】
また、圧縮データを先に転送し、次に非圧縮データを転送することにより、非圧縮データが格納される領域を、伸張処理のためのメモリとして使用することができるため、圧縮データの転送回数を削減でき、転送時間を短縮できる。
【０１１８】
また、圧縮して転送されるデータのうち、書き換え可能な不揮発性メモリ１０５に格納されるデータから先に転送し、ＲＡＭ１０６に格納されるデータを次に転送することにより、使用可能なバッファ領域１０００を増やすことができるので、圧縮データの転送回数を削減でき、転送時間を短縮できる。
【０１１９】
また、伸張処理プログラム配置領域特定ステップ３５０において、サイズの最も小さなＲＡＭ領域に伸張処理プログラムを配置したことにより、使用可能なバッファ領域１０００を増やすことができるので、圧縮データの転送回数を削減でき、転送時間を短縮できる。
【０１２０】
また、伸張処理プログラム２０９をマイクロコンピュータ１０２内のＲＡＭに優先的に配置したことにより、伸張処理プログラムを高速に実行することができるので、転送時間を短縮できる。
【０１２１】
これらのことから、ターゲットシステム１０１のハードウェアのコストを増加させることなく、ホストコンピュータ１００からターゲットシステム１０１へのデータ転送時間を短縮することができる。
【０１２２】
なお、上記実施の形態では、マイクロコンピュータ１０２の内部にのみメモリを実装しているが、マイクロコンピュータ１０２の外部にもＲＡＭを接続してもよい。マイクロコンピュータ１０２の外部にＲＡＭを実装した場合には、このＲＡＭもバッファ領域１０００として使用することができるので、圧縮データの転送時間を削減することができ、その結果、転送時間を短縮することができる。
【０１２３】
また、上記実施の形態では、マイクロコンピュータ１０２の内部にのみメモリを実装しているが、マイクロコンピュータ１０２の外部にも書き換え可能な不揮発性メモリ１０５を接続してもよい。マイクロコンピュータ１０２の外部に書き換え可能な不揮発性メモリ１０５を実装した場合には、この不揮発性メモリに格納されるデータについても圧縮して転送することにより、転送時間を短縮することができる。
【０１２４】
また、上記実施の形態では、転送順序管理ステップ３３０において、ＲＡＭ１０６に配置されている複数のセクションを圧縮して転送する場合には、サイズの大きなセクションから順番に転送するように、転送順序を並び替えるステップを追加してもよい。これにより、サイズの大きいセクションを転送するときに、バッファ領域１０００を増やすことができる。その結果、圧縮データの転送回数を削減でき、転送時間を短縮することができる。
【０１２５】
また、上記実施の形態では、ステップ１１１０において、マイクロコンピュータ１０２内のメモリに強制実行停止コードを挿入していたが、代わりに、予め強制実行停止コードを挿入した伸張処理プログラム２０９をホストコンピュータ１００で作成してもよい。これにより、伸張処理を行うたびに強制実行停止コードを挿入する必要がなくなり、伸張処理時間を短縮できる。
【０１２６】
また、上記実施の形態では、伸張処理ステップ８３０の前に圧縮処理ステップ８１０を配置しているが、代わりに、ステップ１１２０とステップ１１３０の間に圧縮処理ステップ８１０を配置してもよい。これにより、ホストコンピュータ１００での圧縮処理とマイクロコンピュータ１０２での伸張処理とを並行して行うことができるので、データ転送時間を短縮することができる。
【０１２７】
また、上記実施の形態において、各処理（各機能）は、単一の装置（システム）によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【０１２８】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０１２９】
以上のように、本発明にかかるデータ転送方法は、ターゲットシステムのメモリ資源を有効に利用できるため、データの転送効率を向上し、ターゲットシステムでの処理時間を短縮するという効果を有し、特に、圧縮データを転送するデータ転送方法として有用である。
【図面の簡単な説明】
【０１３０】
【図１】本発明の実施の形態１におけるデータ転送方法を実施するデータ転送装置の構成を示すブロック図である。
【図２】本発明の実施の形態１におけるホストコンピュータの構成を示すブロック図である。
【図３】本発明の実施の形態１におけるデータ転送方法を示すフロー図である。
【図４】本発明の実施の形態１におけるターゲットシステムのメモリマップの例を示す図である。
【図５】本発明の実施の形態１における実行形式ファイルのメモリ配置の例を示す図である。
【図６】本発明の実施の形態１における転送順序管理ステップのフロー図である。
【図７】本発明の実施の形態１における伸張処理プログラムの配置可能性の判定結果を示す図である。
【図８】本発明の実施の形態１における伸張処理プログラム配置領域特定ステップのフロー図である。
【図９】本発明の実施の形態１における圧縮データ転送ステップのフロー図である。
【図１０】本発明の実施の形態１におけるバッファ領域特定ステップのフロー図である。
【図１１】本発明の実施の形態１におけるバッファ領域特定結果の例を示す図である。
【図１２】本発明の実施の形態１におけるバッファ領域特定結果の例を示す図である。
【図１３】本発明の実施の形態１における伸張処理ステップのフロー図である。
【図１４】本発明の実施の形態１におけるデータ転送後のターゲットシステムのメモリ内容を示した図である。
【図１５】従来のデータ転送方法を実施するデータ転送装置の構成を示すブロック図である。
【符号の説明】
【０１３１】
１００    ホストコンピュータ
１０１    ターゲットシステム
１０２    マイクロコンピュータ
１０３    オンチップデバッグ装置
１０４    ＣＰＵ
１０５    書き換え可能な不揮発性メモリ
１０６    ＲＡＭ
２００    ソースファイル
２０１    コンパイラ
２０２    アセンブラ
２０３    ライブラリファイル
２０４    実行形式ファイル
２０５    マップファイル
２０６    リンカ
２０７    デバッガ
２０８    メモリマップ情報
２０９    伸張処理プログラム
３００    メモリマップ情報取得ステップ
３１０    プログラムマッピング情報取得ステップ
３２０    圧縮・非圧縮判定ステップ
３３０    転送順序管理ステップ
３４０    伸張処理プログラムをターゲットシステムのメモリに配置可能か判定するステップ
３５０    伸張処理プログラム配置領域特定ステップ
３６０    伸張処理プログラム転送ステップ
３７０    圧縮データ転送ステップ
３８０    非圧縮データ転送ステップ
８００    バッファ領域特定ステップ
８１０    圧縮処理ステップ
８２０    転送ステップ
８３０    伸張処理ステップ
１０００    バッファ領域
１０１０    伸張処理プログラム配置領域
【図１】
2010020416.tif 000003
【図２】
2010020416.tif 000004
【図３】
2010020416.tif 000005
【図４】
2010020416.tif 000006
【図５】
2010020416.tif 000007
【図６】
2010020416.tif 000008
【図７】
2010020416.tif 000009
【図８】
2010020416.tif 000010
【図９】
2010020416.tif 000011
【図１０】
2010020416.tif 000012
【図１１】
2010020416.tif 000013
【図１２】
2010020416.tif 000014
【図１３】
2010020416.tif 000015
【図１４】
2010020416.tif 000016
【図１５】
2010020416.tif 000017