(57)【要約】      （修正有）【課題】半導体装置の制御部における、データ書き込み装置からのコマンドに基づく制御に関する部分を新たに開発しなくても、バッファメモリのサイズを異ならせた別の半導体装置を製造することが可能な半導体装置を提供する。【解決手段】半導体装置１は、バッファメモリ１ｂを有する制御部１ａにおいて、バッファメモリにおける、データ書き込み装置２から送信されるデータを格納するデータバッファ領域のサイズを計算する。半導体装置は、サイズをデータ書き込み装置から受信したコマンドの種類に基づき計算する。また、制御部は、計算したデータバッファ領域のサイズである計算サイズの通知をデータ書き込み装置に行う。制御部は、この通知の応答としてデータ書き込み装置から受信した計算サイズ以下のデータを、データバッファ領域にバッファリングする。【選択図】図１
2020135519.tif 000002
【特許請求の範囲】
【請求項１】
データ書き込み装置と接続する接続部と、
バッファメモリを有する制御部と、
を備え、
前記制御部は、前記バッファメモリにおける、前記データ書き込み装置から送信されるデータを格納するデータバッファ領域のサイズを、前記データ書き込み装置から受信したコマンドの種類に基づき計算し、計算した前記データバッファ領域のサイズである計算サイズの通知を前記データ書き込み装置に行い、前記通知の応答として前記データ書き込み装置から受信した前記計算サイズ以下のデータを、前記データバッファ領域にバッファリングする、
半導体装置。
【請求項２】
前記制御部は、前記バッファメモリにおける、前記制御部における前記コマンドに基づく制御の実行時に使用するスタック領域のサイズと前記データ書き込み装置から送信されるデータを格納するデータバッファ領域のサイズとを、前記データ書き込み装置から受信したコマンドの種類に基づき計算し、計算した前記データバッファ領域のサイズである計算サイズの通知を前記データ書き込み装置に行い、前記通知の応答として前記データ書き込み装置から受信した前記計算サイズ以下のデータを、前記データバッファ領域にバッファリングする、
請求項１に記載の半導体装置。
【請求項３】
前記制御部は、前記データ書き込み装置からのデータの書き込み先となるメモリを有する、
請求項１に記載の半導体装置。
【請求項４】
前記制御部は、前記種類に基づく計算、前記計算サイズの通知、及び前記データバッファ領域へのバッファリングを行うためのプログラムが実行可能に格納されたメモリを有し、
請求項１に記載の半導体装置。
【請求項５】
前記制御部は、前記種類に基づく計算、前記計算サイズの通知、及び前記データバッファ領域へのバッファリングを行うためのプログラムが実行可能に格納されたメモリを有し、
前記メモリは、前記データ書き込み装置からのデータの書き込み先となり、
前記制御部は、前記データバッファ領域にバッファリングされたデータを前記メモリに書き込む、
請求項１に記載の半導体装置。
【請求項６】
前記メモリは、フラッシュメモリであり、
前記プログラムは、前記フラッシュメモリへのデータ書き込みに使用するプログラムである、
請求項５に記載の半導体装置。
【請求項７】
前記制御部は、予め定められたサイズ情報に基づき、前記種類に基づく計算を行い、
前記サイズ情報は、前記制御部における前記コマンドに基づく制御の実行時における、前記種類毎に最低限必要となるスタック領域のサイズと、前記種類毎にデータアクセス先に応じて必要となるスタック領域のサイズと、を含む情報である、
請求項１に記載の半導体装置。
【請求項８】
前記データ書き込み装置から送信される書き込み対象のデータは、前記半導体装置又は前記半導体装置を備える電子機器のファームウェアを含む、
請求項１に記載の半導体装置。
【請求項９】
前記制御部は、
前記データ書き込み装置から受信したコマンドの種類が書き込みコマンド又はベリファイコマンドであった場合、前記通知の応答として前記データ書き込み装置から前記計算サイズ以下のデータの受信を行い、
前記データ書き込み装置から受信したコマンドの種類が消去コマンドであった場合、前記通知の応答として前記データ書き込み装置からデータを受信しない、
請求項１に記載の半導体装置。
【請求項１０】
データ書き込み装置と接続する接続部と、バッファメモリを有する制御部と、を備えた半導体装置を備え、
前記制御部は、前記バッファメモリにおける、前記データ書き込み装置から送信されるデータを格納するデータバッファ領域のサイズを、前記データ書き込み装置から受信したコマンドの種類に基づき計算し、計算した前記データバッファ領域のサイズである計算サイズの通知を前記データ書き込み装置に行い、前記通知の応答として前記データ書き込み装置から受信した前記計算サイズ以下のデータを、前記データバッファ領域にバッファリングする、
電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及び電子機器に関し、例えばデータ書き込み装置からの書き込みが可能な半導体装置、及びその半導体装置を備えた電子機器に関する。
【背景技術】
【０００２】
特許文献１には、一般的なマイクロコンピュータ（マイコン）では、ＲＡＭ（Random Access Memory）等のメモリにおいてスタック領域を予め確保することが開示されている。
【０００３】
また、特許文献２には、複数のデータ処理部間のデータ転送には、そのデータ処理タイミングの違いを隠蔽するため、メモリにバッファを配置し、このバッファを介してデータ転送が行われることが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１３３６４８号公報
【特許文献２】特開２００８−０８３７７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、マイコンに組み込まれたブートファームウェアにおいても、データ書き込み装置からデータ受信するタイミングとブートファームウェアがデータを取得するタイミングが異なる。よって、ブートファームウェアを起動させるためにも、特許文献２に記載の技術のように、メモリにデータバッファが配置される。
【０００６】
そして、現状のブートファームウェアはブートファームウェア開発時に使用するＲＡＭ（Random Access Memory）等のバッファメモリのサイズを決定し、それに合わせたブートファームウェアの開発を行っている。
【０００７】
しかし、バッファメモリとして使用するＲＡＭ等のメモリのサイズが異なる製品を製造するに際し、新たにブートファームウェアを開発する必要が生じ得るという問題があった。このような問題は、ブートファームウェア以外のプログラムを組み込んだ半導体装置などにおいても同様に生じ得る。なお、このような問題は、特許文献１，２に記載の技術で解決できるものではない。
【０００８】
その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一実施の形態によれば、半導体装置は、バッファメモリを有する制御部において、バッファメモリにおける、データ書き込み装置から送信されるデータを格納するデータバッファ領域のサイズを計算する。ここで、上記半導体装置は、上記サイズをデータ書き込み装置から受信したコマンドの種類に基づき計算する。また、この制御部は、計算したデータバッファ領域のサイズである計算サイズの通知をデータ書き込み装置に行う。さらに、この制御部は、この通知の応答としてデータ書き込み装置から受信した計算サイズ以下のデータを、データバッファ領域にバッファリングする。
【発明の効果】
【００１０】
前記一実施の形態によれば、半導体装置の制御部における、データ書き込み装置からのコマンドに基づく制御に関する部分を新たに開発しなくても、バッファメモリのサイズを異ならせた別の半導体装置を製造することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態１に係る半導体装置の一構成例を示すブロック図である。
【図２】実施形態２に係る半導体装置の一例であるマイクロコントローラの一構成例を示すブロック図である。
【図３】実施形態２に係るマイクロコントローラ（主にブートファームウェア）とフラッシュプログラマにおける動作の一例を説明するためのフロー図である。
【図４】図３の動作の各時点におけるＲＡＭの割り当てとして想定される領域の遷移等の例を示す模式図である。
【図５】フラッシュプログラマから送信されるコマンドパケットのうちの書き込みデータコマンドパケットの構造例を示す図である。
【図６】フラッシュプログラマから送信されるコマンドパケットのうちのステータスパケットの構造例を示す図である。
【図７】フラッシュプログラマから送信されるコマンドパケットのうちの書き込みデータパケットの構造例を示す図である。
【図８】フラッシュプログラマから送信されるコマンドパケットのうちのステータスパケットの構造例を示す図である。
【図９】図２のマイクロコントローラにおけるブートファームウェアにおいて参照されるテーブルの一例を示す概略図である。
【図１０】実施形態２に係るマイクロコントローラをＲＡＭサイズの小さな展開品に対応させる場合について説明するための概念図である。
【図１１】実施形態２に係るマイクロコントローラをＲＡＭサイズの大きな展開品に対応させる場合について説明するための概念図である。
【図１２】実施形態３に係るマイクロコントローラ（主にブートファームウェア）とフラッシュプログラマにおける動作の一例を説明するためのフロー図である。
【図１３】図１２に続くフロー図である。
【図１４】図１２及び図１３の動作の各時点におけるＲＡＭの割り当てとして想定される領域の遷移例を示す模式図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照しつつ、上記課題を解決するための手段を適用した実施形態を詳細に説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、その他の回路で構成することができる。上記各要素は、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１３】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）を含む。また、上記例は、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）を含む。さらに上記例は、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１４】
＜実施形態１＞
図１は、実施形態１に係る半導体装置の一構成例を示すブロック図である。
図１に示すように、本実施形態に係る半導体装置１は、制御部１ａ及び接続部１ｃを備え、制御部１ａはバッファメモリ１ｂを有することができる。半導体装置１は、接続部１ｃにおいてデータ書き込み装置２に接続可能となっている。半導体装置１は、例えばマイクロコンピュータとすることができる。
【００１５】
バッファメモリ１ｂは、ＲＡＭ等の揮発性メモリ、又はその一部の領域とすることができるが、不揮発性メモリ又はその一部の領域とすることもできる。接続部１ｃは、上述のようにデータ書き込み装置２に接続する部位であり、各種接続インタフェース（Ｉ／Ｆ）を有することができる。データ書き込み装置２は、接続部１ｃにデータの書き込み等のコマンドを送信することが可能に構成されている。
【００１６】
そして、制御部１ａは、バッファメモリ１ｂにおける、データ書き込み装置２から送信されるデータを格納するデータバッファ領域のサイズを、データ書き込み装置２から受信したコマンドの種類に基づき計算する。コマンドの種類とは、データの書き込み、そのベリファイ、書き込まれたデータの消去などが挙げられる。換言すれば、制御部１ａは、送信されてきたコマンドに基づき、その内容（種類等）を示すコマンド情報を読み取り、そのコマンド情報に基づき、計算を実行する。
【００１７】
また、制御部１ａは、計算したデータバッファ領域のサイズである計算サイズの通知をデータ書き込み装置２に行う。さらに、制御部１ａは、この通知の応答としてデータ書き込み装置２から受信した計算サイズ以下のデータを、データバッファ領域にバッファリングする。
【００１８】
また、制御部１ａは、データ書き込み装置２からのデータの書き込み先となるメモリを有することができる。このメモリは基本的に不揮発性とすることができる。つまり、データ書き込み装置２から送信されたコマンドが書き込みコマンドであった場合には、制御部１ａは、データバッファ領域にバッファリングされたデータを上記メモリに書き込むことができる。また、データ書き込み装置２から送信されたコマンドがベリファイコマンドであった場合には、バッファリングされたデータと上記メモリに書き込まれたデータとを比較するベリファイ処理を実行することができる。この際、上記メモリに書き込まれたデータも上記データバッファ領域にバッファリングして比較を実行することができる。
【００１９】
以上、本実施形態によれば、半導体装置１の制御部１ａにおける、データ書き込み装置２からのコマンドに基づく制御に関する部分を新たに開発しなくても、バッファメモリ１ｂのサイズを異ならせた別の半導体装置を製造することができる。また、このような半導体装置１は、様々な電子機器に搭載することができる。本実施形態は、特に、バッファメモリ１ｂの容量が小さい半導体装置について有益となる。
【００２０】
＜実施形態２＞
実施形態２に係る半導体装置について、図２〜図１１を併せて参照しながら説明する。図２は、本実施形態に係る半導体装置の一例であるマイクロコントローラの一構成例を示すブロック図である。なお、本実施形態について、主に実施形態１との相違点を中心に説明する。
【００２１】
図２に示すように、本実施形態に係るマイクロコントローラ１０は、シリアルアレイユニット１１、ＲＡＭ１２、及びＣＰＵコア１３がバスに接続される。また、ＣＰＵコア１３にはフラッシュＩ／Ｆ１４を介してＤａｔａ  Ｆｌａｓｈ１５及びＣｏｄｅ  Ｆｌａｓｈ１６が接続されている。マイクロコントローラ１０は、半導体装置１の一例である。以下、Ｄａｔａ  Ｆｌａｓｈ１５をデータ用フラッシュメモリ１５、Ｃｏｄｅ  Ｆｌａｓｈ１６をコード用フラッシュメモリ１６として説明する。
【００２２】
シリアルアレイユニット１１は、接続部１ｃの一例であり、４つのシリアルチャネルを持つ。各チャネルは、３線シリアル、ＵＡＲＴ（Universal Asynchronous Receiver/Transmitter）、簡易的なＩ２Ｃの通信機能を実現することができる。３線シリアルのＩ／Ｆは、ＣＳＩ（Clocked Serial Interface）とすることができる。シリアルアレイユニット１１は、データ書き込み装置２の一例であるフラッシュプログラマ２０に接続されている。このような構成により、フラッシュプログラマ２０とシリアルアレイユニット１１とはシリアルプログラミングインタフェース通信（ＵＡＲＴ通信）を行うことができる。
【００２３】
ＲＡＭ１２は、バッファメモリ１ｂの一例であり、これを含む構成要素１２〜１６は、制御部１ａの一例となる。ＣＰＵコア１３は、マイクロコントローラ１０の主制御部となる部位であり、制御部１ａの主な処理はＣＰＵコア１３により実行される。
【００２４】
フラッシュＩ／Ｆ１４は、各フラッシュメモリ１５，１６への書き込み、読み出し、消去など、各フラッシュメモリ１５，１６へのアクセスを制御するコントローラである。フラッシュＩ／Ｆ１４は、フラッシュコントローラと称することもできる。
【００２５】
また、フラッシュメモリ１６にはＢＦＡ（ブートファームウェア）１６ａをＣＰＵコア１３から実行可能に格納しておくことができる。フラッシュメモリ１６は、ＢＦＡ１６ａを格納するメモリの一例である。実施形態１における制御部１ａの主な処理は、本実施形態において、ＣＰＵコア１３がＢＦＡ１６ａをＲＡＭ１２に読み出して実行することでなされる。
【００２６】
データ用フラッシュメモリ１５及びコード用フラッシュメモリ１６は物理的に１つのフラッシュメモリとすることができるが、別個のフラッシュメモリとすることもできる。以下、これらが物理的に１つのフラッシュメモリ（フラッシュメモリ１５，１６）であることを前提として説明する。
【００２７】
ＣＰＵコア１３により実行されるＢＦＡ１６ａは、ＲＡＭ１２におけるスタック領域のサイズとデータバッファ領域のサイズとを、フラッシュプログラマ２０から送信され受信したコマンドの種類に基づき計算する。
【００２８】
ここで、スタック領域のサイズとは、フラッシュプログラマ２０から受信したコマンドに基づく制御の実行時に使用する領域のサイズである。データバッファ領域のサイズは、フラッシュプログラマ２０から送信されるデータを格納する領域のサイズである。スタック領域のサイズを計算することで、ＲＡＭ１２の全領域又は全領域のうちブートに使用可能な領域についての残り領域として、データバッファ領域のサイズを計算することができる。なお、ＲＡＭ１２は、製品出荷先となるユーザに公開される領域と非公開の領域とを設けておくことができ、上記使用可能な領域とは、この非公開の領域とすることができる。この場合、非公開の領域がＢＦＡ１６ａにより使用されることを意味する。
【００２９】
ＢＦＡ１６ａは、計算したデータバッファ領域のサイズ（計算サイズ）の通知をフラッシュプログラマ２０に行う。ＢＦＡ１６ａは、上記通知の応答としてフラッシュプログラマ２０から受信した計算サイズ以下のデータを、データバッファ領域にバッファリングする。ＢＦＡ１６ａは、このような、上記種類に基づく計算、計算サイズの通知、及びデータバッファ領域へのバッファリングを行うためのプログラムの一例である。
【００３０】
また、フラッシュメモリ１５，１６は、フラッシュプログラマ２０からのデータの書き込み先となるメモリの一例でもある。つまり、ＢＦＡ１６ａは、フラッシュメモリ１５，１６へのデータ書き込みに使用するプログラムの一例であり、データバッファ領域にバッファリングされたデータをフラッシュメモリ１５，１６に書き込む。バッファリングされたデータがデータとして格納されるべきものであった場合、データ用フラッシュメモリ１５に書き込まれ、コード（プログラムコード）として格納されるべきものであった場合、コード用フラッシュメモリ１５に書き込まれることになる。但し、書き込み先については、後述するようにアドレスで指定されることになる。
【００３１】
また、フラッシュプログラマ２０から送信される書き込み対象のデータは、マイクロコントローラ１０又はそれを備える電子機器のファームウェアを含むことができる。ベリファイ対象のデータや消去対象のデータについても同様である。但し、基本的に、ＢＦＡ１６ａにより書き込み等の処理を行う。よって、ここで言うフラッシュプログラマ２０から送信される書き込み対象のデータには、ＢＦＡ１６ａ自体のデータを含まないものとする。
【００３２】
次に、本実施形態に係るマイクロコントローラ１０とフラッシュプログラマ２０における動作の一例について、主に書き込みコマンドが実行される場合の動作の一例について、図３〜図８を併せて参照しながら説明する。図３は、本実施形態に係るマイクロコントローラ１０（主にＢＦＡ１６ａ）とフラッシュプログラマ２０における動作の一例を説明するためのフロー図である。図４は、図３の動作の各時点におけるＲＡＭ１２の割り当てとして想定される領域の遷移等の例を示す模式図である。
【００３３】
また、図５〜図８は、フラッシュプログラマ２０から送信されるコマンドパケットの構造例を示す図である。図５は書き込みデータコマンドパケットの構造例を、図６はステータスパケットの構造例を、図７は書き込みデータパケットの構造例を、図８はステータスパケットの構造例を、それぞれ示している。
【００３４】
図３を参照すると、まず、フラッシュプログラマ２０は、マイクロコントローラ１０に対して起動信号を送信する（ステップＳ１）。この起動信号を受けたマイクロコントローラ１０では、ＢＦＡ１６ａが起動する（ステップＳ２）。このとき、スタック領域とデータバッファ領域のサイズは未定であり、図４に示す共通領域３１は、上記使用可能な領域のサイズ（この例では１ＫＢ：１０２４ｂｙｔｅ）をもつ。この例では、ＢＦＡ１６ａは、共通領域を１ＫＢ使用することを前提として開発したブートファームウェアである。
【００３５】
フラッシュプログラマ２０は、マイクロコントローラ１０に対し、起動信号に次いでモード引き込み情報を送信し（ステップＳ３）、ボーレート（通信速度）設定コマンドの送信も行う（ステップＳ４）。ここで、モード引き込み情報とは、例えば２線ＵＡＲＴ、１線ＵＡＲＴ、及び３線ＣＳＩのいずれの通信方式で通信を行うかなどを示す通信設定情報とすることができる。ボーレート設定コマンドは、通信方式によっては、不要である場合もある。
【００３６】
ステップＳ４に次いで、ＢＦＡ１６ａは、受信したパケットの解析を行い、ボーレートの計算を行う（ステップＳ５）。ＢＦＡ１６ａは、ＯＫを示すステータスパケットをフラッシュプログラマ２０に送信する（ステップＳ６）とともに、ボーレート設定を行う（ステップＳ７）。
【００３７】
ステップＳ６で送信されたステータスパケットを受信したフラッシュプログラマ２０は、開始アドレス及び終了アドレスを示す書き込みコマンドパケットをマイクロコントローラ１０に送信する（ステップＳ８）。
【００３８】
図５で例示するように、ステップＳ８の書き込みコマンドパケット４１は、ＳＯＨ、ＬＥＮ、ＣＯＭ、ＳＡＬ〜ＳＡＨ、ＥＡＬ〜ＥＡＨ、及びＥＴＸを有することができる。ここで、ＳＯＨは、コマンドフレーム開始を示すパケットであり、１ｂｙｔｅとすることができる。ＬＥＮは、データ長を示すパケットであり、１ｂｙｔｅとすることができる。ＣＯＭは、書き込みコマンド番号を示すパケットであり、１ｂｙｔｅとすることができる。ＳＡＬ〜ＳＡＨは、開始アドレスを示すパケットであり、合計３ｂｙｔｅとすることができる。ＥＡＬ〜ＥＡＨは、終了アドレスを示すパケットであり、合計３ｂｙｔｅとすることができる。ＥＴＸは、最終フレームを示すパケットであり、１ｂｙｔｅとすることができる。
【００３９】
この書き込みコマンドパケット４１は、ＲＡＭ１２に格納される。ＢＦＡ１６ａは、この書き込みコマンドパケット４１に対して、パケット解析を行い、フラッシュメモリ１５，１６でのアドレスとのアドレスチェックなどを行う。ＢＦＡ１６ａは、その結果をフラッシュプログラマ２０に返信する。
【００４０】
さらに、ＢＦＡ１６ａは、この書き込みコマンドパケット４１のパケット解析の結果に基づき、スタック領域及びデータバッファ領域のサイズの計算を行う（ステップＳ９）。この計算は、パケット解析結果として得られたコマンドの種類に基づき実行される。より具体的には、実行するコマンド、開始／終了アドレスからコマンド実行で使用するスタック領域のサイズ（スタックサイズ）を計算し、その結果から通信で使用可能なデータバッファ領域のサイズを計算する。例えば、バッファ領域３２におけるスタック領域３２ｂのサイズが２５６ｂｙｔｅである場合、データバッファ領域３２ａのサイズは７６８ｂｙｔｅとなる。
【００４１】
次いで、ＢＦＡ１６ａは、ＯＫと通信可能なデータサイズ［７６８ｂｙｔｅ］を示すステータスパケットをフラッシュプログラマ２０に送信する（ステップＳ１０）。このステータスパケットでは、ＲＡＭ１２のデータバッファ領域３３として最大７６８ｂｙｔｅが割り当てられることを想定している。なお、図４は便宜上、領域の遷移だけでなく説明時に注目している領域も概念的に示しており、バッファ領域３２がデータバッファ領域３３に遷移していることを示しているのではない。同様に、図４ではデータバッファ領域３３がスタック領域３４に遷移していることを示しているのではなく、またスタック領域３４がバッファ領域３５に遷移していることを示しているのではない。
【００４２】
図６で例示するように、ステップＳ１０の書き込みコマンドパケット用のステータスパケット４２は、ＳＴＸ、ＬＥＮ、ＤＡＴ、ＤＬＮ、及びＥＴＸを有することができる。ここで、ＳＴＸは、データフレーム開始を示すパケットであり、１ｂｙｔｅとすることができる。ＬＥＮは、データ長を示すパケットであり、１ｂｙｔｅとすることができる。ＤＡＴは、ＯＫ又はエラーステータスを示すパケットであり、１ｂｙｔｅとすることができる。ＤＬＮは、通信可能なデータサイズを示すパケットであり、２ｂｙｔｅとすることができる。ＥＴＸは、最終フレームを示すパケットであり、１ｂｙｔｅとすることができる。
【００４３】
このステータスパケット４２を受信したフラッシュプログラマ２０は、最大７６８ｂｙｔｅの書き込みデータパケットをマイクロコントローラ１０に送信する（ステップＳ１１）。
【００４４】
図７で例示するように、ステップＳ１１の書き込みデータパケット４３は、ＳＴＸ、ＬＥＮ、ＤＡＴ、ＥＴＢ、及びＥＴＸを有することができる。ＳＴＸは、データフレーム開始を示すパケットであり、１ｂｙｔｅとすることができる。ＬＥＮは、データ長を示すパケットであり、１ｂｙｔｅとすることができる。ＤＡＴは、書き込みデータを示すパケットであり、通信可能な最大サイズは上記のＤＬＮに依存することになる。ＥＴＢは、フレーム終了を示すパケットであり、１ｂｙｔｅとすることができる。ＥＴＢは、最終フレーム送信時以外に使用するものとする。ＥＴＸは、最終フレームを示すパケットであり、１ｂｙｔｅとすることができる。ＥＴＸは、最終フレーム送信時に使用するものとする。
【００４５】
この書き込みデータパケット４３は、ＲＡＭ１２のデータバッファ領域に格納され、ＢＦＡ１６ａから読み出し可能となる。ＢＦＡ１６ａは、書き込みコマンド受信時に計算したスタック領域３４のサイズ内（２５６ｂｙｔｅ以下）で書き込み処理を実行する（ステップＳ１２）。この書き込み処理は、７６８ｂｙｔｅ以下の受信データがＲＡＭ１２にバッファリングされながら実行され、フラッシュメモリ１５，１６の対応アドレスにデータが格納されることになる。
【００４６】
次いで、ＢＦＡ１６ａは、ＯＫ又はエラーステータスを示すステータスパケットをフラッシュプログラマ２０に送信する（ステップＳ１３）。図８で例示するように、ステップＳ１３の書き込みコマンドパケット用のステータスパケット４４は、ＳＴＸ、ＬＥＮ、ＳＴ１、ＳＴ２、及びＥＴＸを有することができる。ＳＴＸは、データフレーム開始を示すパケットであり、１ｂｙｔｅとすることができる。ＬＥＮは、データ長を示すパケットであり、１ｂｙｔｅとすることができる。ＳＴ１は、通信状態［ＯＫ又はエラーステータス］を示すパケットであり、１ｂｙｔｅとすることができる。ＳＴ２は、書き込み状態［ＯＫ又はエラーステータス］を示すパケットであり、１ｂｙｔｅとすることができる。ＥＴＸは、最終フレームを示すパケットであり、１ｂｙｔｅとすることができる。
【００４７】
書き込みコマンドパケット４３で指定されたアドレス範囲だけ、データバッファ領域へのデータの格納、そのデータのフラッシュメモリ１５，１６への書き込み、並びに書き込み結果の送信がなされる。なお、データバッファ領域へのデータの格納と、フラッシュメモリ１５，１６へのデータの書き込みとは、並行処理として行うことができる。
【００４８】
この後、処理が書き込み対象のデータの送受が完了するまで繰り返され、最後の書き込みデータパケット（最大７６８ｂｙｔｅ）がフラッシュプログラマ２０からマイクロコントローラ１０に送信される（ステップＳ１４）。そして、上記書き込み処理と同様の書き込み処理がなされ（ステップＳ１５）、その書き込み処理についてのステータスパケット（ＯＫ又はエラーステータス）がフラッシュプログラマ２０に送信される（ステップＳ１６）。
【００４９】
書き込みコマンド終了時点のＲＡＭ１２の領域は、バッファ領域３５で示すように７６８ｂｙｔｅのデータバッファ領域３５ａと２５６ｂｙｔｅのスタック領域３５ｂとに割り当てられている。書き込みが終了した時点で、データバッファ領域３５ａ及びスタック領域３５ｂを開放し、共通領域３６に戻すことができる。但し、そのままの状態としておくこともできる。
【００５０】
また、上述のような動作において適用可能な好ましい例について、図９を併せて参照しながら説明する。図９は、ＢＦＡ１６ａにおいて参照されるテーブル（基礎テーブルと条件テーブル）の一例を示す概略図である。
【００５１】
ＢＦＡ１６ａは、予め定められたサイズ情報に基づき、上記種類に基づく計算を行うことができる。ここで、上記サイズ情報は、フラッシュプログラマ２０から受信したコマンドに基づく制御の実行時における、上記種類毎に最低限必要となるスタック領域のサイズを示す第１情報を含む。さらに、上記サイズ情報は、上記種類毎にデータアクセス先に応じて必要となるスタック領域のサイズを示す第２情報を含む。
【００５２】
上記の第１情報、第２情報は、それぞれ図９に示す基礎テーブル５１、条件テーブル５２として、ＢＦＡ１６ａ内に定義して含めておくこと、或いはＢＦＡ１６ａから読み出し可能に保存しておくことができる。
【００５３】
基礎テーブル５１は、上記第１情報の他に、ベリファイコマンド実行時に最低限必要となるスタック領域のサイズを示す情報などを含むことができる。なお、基礎テーブル５１は、消去コマンド実行時に最低限必要となるスタック領域のサイズを示す情報を含むことができる。但し、この情報を含めずに、基礎テーブル５１に対応する受信コマンドの種類に関する情報がない場合に処理をスキップさせるような動作を行うようにしてもよい。
【００５４】
条件テーブル５２は、第２情報の一つとして、コード用フラッシュメモリ１６の領域に対する書き込みコマンドで必要となるスタック領域のサイズを示す情報を含むことができる。条件テーブル５２は、第２情報の一つとして、データ用フラッシュメモリ１５の領域に対する書き込みコマンドで必要となるスタック領域のサイズを示す情報を含むことができる。条件テーブル５２は、第２情報の一つとして、コード用フラッシュメモリ１６の領域に対するベリファイコマンドで必要となるスタック領域のサイズを示す情報を含むことができる。条件テーブル５２は、第２情報の一つとして、データ用フラッシュメモリ１５の領域に対するベリファイコマンドで必要となるスタック領域のサイズを示す情報を含むことができる。
【００５５】
このような基礎テーブル５１及び条件テーブル５２を用いた動作の例について説明する。ここでは、図３で説明した例と同様に、フラッシュメモリ１５，１６の領域に対する書き込みコマンドを受信した場合について説明する。
【００５６】
図３のステップＳ９において、ＢＦＡ１６ａは、書き込みコマンドパケットのコマンド番号から実行するコマンドを判定する。そして、ＢＦＡ１６ａは、基礎テーブル５１から書き込みコマンド実行で最低限必要となるスタック領域のサイズを検索（サーチ）する。また、ＢＦＡ１６ａは、開始／終了アドレスからコマンドが実行されるエリアを算出し、条件テーブル５２から算出したエリアでコマンド実行する際に必要となるスタック領域のサイズを検索する。より具体的には、ＢＦＡ１６ａは、書き込みコマンドパケットの書き込みコマンド番号と開始アドレスからフラッシュメモリ１５，１６の領域に対する書き込みであることを判定する。そして、ＢＦＡ１６ａは、条件テーブル５２からフラッシュメモリ１５，１６の領域に対する書き込みで必要となるスタック領域のサイズをサーチする。
【００５７】
図３のステップＳ１０においては、ＢＦＡ１６ａは、基礎テーブル５１と条件テーブル５２から書き込みコマンド実行で必要なスタック領域のサイズを計算する。この計算は、上述したサーチ結果が示すサイズの和とすることができる。そして、ＢＦＡ１６ａは、算出したスタック領域のサイズと共通領域のサイズから通信可能なデータサイズ、つまりデータバッファ領域のサイズを算出する。
【００５８】
以上の例のように、本実施形態では、コマンドの実行毎に通信可能なデータ量を計算、通知して、通信を行う。ここで、本実施形態では、ＢＦＡが計算や通知等を行っており、フラッシュＩ／Ｆ１４等の周辺の回路や処理プログラムなどに影響を与えないで済む。
そして、本実施形態では、コマンド実行毎に通信可能なデータサイズを変動させること、つまりＢＦＡが使用するスタック領域とデータバッファ領域のサイズを可変にすることができる。よって、本実施形態では、マイクロコントローラ１０のＲＡＭ１２とは異なるＲＡＭサイズをもつようなマイクロコントローラに対応するブートファームウェアの開発が必要なくなる。そのため、本実施形態では、そのようなマイクロコントローラを早期に開発することができる。
【００５９】
図１０及び図１１を参照しながら、このような効果について説明する。図１０は、マイクロコントローラ１０をＲＡＭサイズの小さな展開品に対応させる場合について説明するための概念図である。また、図１１は、マイクロコントローラ１０をＲＡＭサイズの大きな展開品に対応させる場合について説明するための概念図である。
【００６０】
例として、図１０に示すように、以下の標準品からＲＡＭサイズが小さな以下の展開品のブートファームウェア開発を行う場合について説明する。
［標準品］ＢＦＡが使用できるＲＡＭサイズ（共通領域６１のサイズ）：２ＫＢ
［ＲＡＭサイズが異なる展開品］ＢＦＡが使用できるＲＡＭサイズ（共通領域７１のサイズ）：１ＫＢ
【００６１】
このような標準品についてのＢＦＡ（標準ＢＦＡ）を作成することで、コマンド実行時にＢＦＡが使用するデータバッファ領域とスタック領域が可変になる。例えば、標準品についてのデータバッファ領域６２ａのサイズが１ＫＢ（１０２４ｂｙｔｅ）で、スタック領域６２ｂのサイズが７６８ｂｙｔｅであった場合は次のようになる。つまり、上記展開品についてのスタック領域７２ｂが７６８ｂｙｔｅとなり、データバッファ領域７２ａが残りの２５６ｂｙｔｅとなる。よって、ＲＡＭサイズが小さな上記展開品でも標準ＢＦＡを使用することができ、ＢＦＡの再開発が不要になる。
【００６２】
次に、他の例として、以下の標準品から、ＲＡＭサイズの大きな以下の展開品のブートファームウェア開発を行う場合について説明する。
［標準品］ＢＦＡが使用できるＲＡＭサイズ：２ＫＢ
［ＲＡＭサイズが増加した展開品］ＢＦＡが使用できるＲＡＭサイズ：３ＫＢ
【００６３】
このような標準品についてのＢＦＡ（標準ＢＦＡ）を作成した後、ＲＡＭサイズが大きい上記展開品のブートファームウェア開発を行う場合、ブートファームウェアに関連する仕様変更がない。よって、上記展開品のＢＦＡの処理が標準品のそれと同じであれば、各コマンド実行時に使用するスタックサイズは変わらないため、標準ＢＦＡをそのまま使用できる。例えば、上記展開品についてのスタック領域７２ｂが７６８ｂｙｔｅとなり、データバッファ領域７２ａが元の共通領域から計算した残りの１０２４ｂｙｔｅとなる。よって、ＲＡＭサイズが大きな上記展開品でも標準ＢＦＡを使用することができ、ＢＦＡの再開発が不要になる。
【００６４】
＜実施形態３＞
実施形態３に係る半導体装置について、図１２〜図１４を併せて参照しながら説明する。図１２は、実施形態３に係るマイクロコントローラ（主にブートファームウェア）とフラッシュプログラマにおける動作の一例を説明するためのフロー図で、図１３は、図１２に続くフロー図である。また、図１４は、図１２及び図１３の動作の各時点におけるＲＡＭの割り当てとして想定される領域の遷移例を示す模式図である。なお、本実施形態に係る半導体装置の一例であるマイクロコントローラも、マイクロコントローラ１０と同様の構成を有するため、本実施形態について、主に実施形態２との相違点を中心に説明する。
【００６５】
本実施形態に係るマイクロコントローラ１０におけるＢＦＡ１６ａは、次のような動作を行う。即ち、ＢＦＡ１６ａは、フラッシュプログラマ２０から受信したコマンドの種類が書き込みコマンド又はベリファイコマンドであった場合、上記通知の応答としてフラッシュプログラマ２０から上記計算サイズ以下のデータの受信を行う。また、ＢＦＡ１６ａは、フラッシュプログラマ２０から受信したコマンドの種類が消去コマンドであった場合、上記通知の応答としてフラッシュプログラマ２０からデータを受信しない。
【００６６】
本実施形態に係るマイクロコントローラ１０とフラッシュプログラマ２０における動作の一例について説明する。ここでは、主にデータ用フラッシュメモリ１５及びコード用フラッシュメモリ１６の書き換えが実行される場合の動作の一例について説明する。ここでの書き換えは、消去処理、書き込み処理、ベリファイ処理がコード用、データ用のフラッシュメモリ１５，１６に対して実施される。
【００６７】
図１２を参照すると、まず、コード用フラッシュメモリ１６に対し、図３のステップＳ１〜Ｓ７と同様の動作がなされる（ステップＳ２１〜Ｓ２７）。その後、ステップＳ２６で送信されたステータスパケットを受信したフラッシュプログラマ２０は、ブロックの開始アドレスを示す消去コマンドパケットをマイクロコントローラ１０に送信する（ステップＳ２８）。
【００６８】
ＢＦＡ１６ａは、この消去コマンドパケットに対して、パケット解析を行い、その解析結果に基づき、消去処理を実行する（ステップＳ２９）。消去コマンドではデータバッファ領域を使用しないため、この消去処理に際し、ＢＦＡ１６ａは、スタック領域及びデータバッファ領域のサイズの計算を行わなくてよい。例えば、共通領域９１のサイズが１０２４ｂｙｔｅである場合、スタック領域９２のサイズも１０２４ｂｙｔｅとなる。次いで、ＢＦＡ１６ａは、ＯＫを示すステータスパケットをフラッシュプログラマ２０に送信する（ステップＳ３０）。
【００６９】
ステップＳ３０で送信されたステータスパケットを受信したフラッシュプログラマ２０は、ステップＳ８〜Ｓ１３と同様の処理を行う（ステップＳ３１〜Ｓ３６）。なお、図４に示す共通領域３１は、図１４に示す共通領域９３に対応する。同様に、図４のデータバッファ領域３２ａ及びスタック領域３２ｂを有するバッファ領域３２は、図１４のデータバッファ領域９４ａ及びスタック領域９４ｂを有するバッファ領域９４に対応する。書き込みが終了した時点で、データバッファ領域９４ａ及びスタック領域９４ｂを開放し、共通領域９５に戻すことができる。
【００７０】
ステップＳ３６で送信されたステータスパケットを受信したフラッシュプログラマ２０は、開始アドレスと終了アドレスを示すベリファイコマンドパケットをマイクロコントローラ１０に送信する（ステップＳ３７）。次いで、ＢＦＡ１６ａは、このベリファイコマンドパケットに対して、パケット解析を行い、フラッシュメモリ１５，１６でのアドレスとのアドレスチェックなどを行う。ＢＦＡ１６ａは、その結果をフラッシュプログラマ２０に返信する。さらに、ＢＦＡ１６ａは、このベリファイコマンドパケットのパケット解析の結果に基づき、ステップＳ９と同様にスタック領域及びデータバッファ領域のサイズの計算を行う（ステップＳ３８）。但し、ステップＳ９とはコマンドの種類が違うため、基礎テーブル５１及び条件テーブル５２で参照される情報がベリファイ処理用となる。例えば、バッファ領域９６におけるスタック領域９６ｂのサイズが２２４ｂｙｔｅである場合、データバッファ領域９６ａのサイズは８００ｂｙｔｅとなる。
【００７１】
次いで、ＢＦＡ１６ａは、ＯＫと通信可能なデータサイズ［８００ｂｙｔｅ］を示すステータスパケットをフラッシュプログラマ２０に送信する（ステップＳ３９）。このステータスパケットを受信したフラッシュプログラマ２０は、最大８００ｂｙｔｅのベリファイデータパケットをマイクロコントローラ１０に送信する（ステップＳ４０）。
【００７２】
ＢＦＡ１６ａは、ベリファイコマンド受信時に計算したスタック領域９６ｂのサイズ内（２２４ｂｙｔｅ以下）でベリファイ処理を実行する（ステップＳ４１）。このベリファイ処理は、８００ｂｙｔｅ以下の受信データがＲＡＭ１２にバッファリングされながら実行される。次いで、ＢＦＡ１６ａは、ＯＫ又はエラーステータスを示すステータスパケットをフラッシュプログラマ２０に送信する（ステップＳ４２）。
【００７３】
このステータスパケットを受信したフラッシュプログラマ２０は、ブロックの開始アドレスを示す消去コマンドパケットをマイクロコントローラ１０に送信する（ステップＳ４３）。この処理はステップＳ２８の処理と基本的に同様であるが、消去対象がコード用フラッシュメモリ１６ではなく、データ用フラッシュメモリ１５である。
【００７４】
この処理も含め、ステップＳ２８〜Ｓ４２のようなコードフラッシュメモリ１６に対してなされたものと同様の処理が、データ用フラッシュメモリ１５に対して実行される（ステップＳ４３〜Ｓ５７）。ここで、共通領域９１は共通領域９７に対応し、スタック領域９２はスタック領域９８に対応し、共通領域９３は共通領域９９に対応している。また、データバッファ領域９４ａ及びスタック領域９４ｂを有するバッファ領域９４は、そのサイズが異なるものの、データバッファ領域１００ａ及びスタック領域１００ｂを有するバッファ領域１００に対応している。共通領域９５は共通領域１０１に対応している。また、データバッファ領域９６ａ及びスタック領域９６ｂを有するバッファ領域９６は、そのサイズが異なるものの、データバッファ領域１０２ａ及びスタック領域１０２ｂを有するバッファ領域１０２に対応している。
【００７５】
サイズの違いは、コードに対する処理に使用するスタック領域とデータに対する処理に使用するスタック領域との差異から生じ得、これは条件テーブル５２に格納された情報に基づくものとなる。
以上、本実施形態によれば、実施形態１，２と同様の効果を奏する。
【００７６】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００７７】
１  半導体装置
１ａ  制御部
１ｂ  バッファメモリ
１ｃ  接続部
２  データ書き込み装置
１０  マイクロコントローラ
【図１】
2020135519.tif 000003
【図２】
2020135519.tif 000004
【図３】
2020135519.tif 000005
【図４】
2020135519.tif 000006
【図５】
2020135519.tif 000007
【図６】
2020135519.tif 000008
【図７】
2020135519.tif 000009
【図８】
2020135519.tif 000010
【図９】
2020135519.tif 000011
【図１０】
2020135519.tif 000012
【図１１】
2020135519.tif 000013
【図１２】
2020135519.tif 000014
【図１３】
2020135519.tif 000015
【図１４】
2020135519.tif 000016