"不揮発メモリに格納される製品プログラムを実行する半導体装置であって、プロセッサと、汎用メモリと、ブートプログラムを格納するブートメモリと、外部からブートローダを入力する第1のインタフェースと、外部から前記製品プログラムを入力する第2のインタフェースとを含み、前記プロセッサは、前記ブートメモリに格納されるブートプログラムを実行することによって前記不揮発メモリに前記製品プログラムが格納されているか否かを判定し、前記不揮発メモリに前記製品プログラムが格納されていない場合には、前記第1のインタフェースを介して前記ブートローダを外部から前記汎用メモリに転送し、該ブートローダを実行することによって前記第2のインタフェースの初期化を行なって、前記第2のインタフェースを介して前記製品プログラムを外部から前記不揮発メモリに転送する、半導体装置。前記プロセッサは、前記不揮発メモリの特定アドレスに特定キーワードが書き込まれているか否かによって、前記不揮発メモリに前記製品プログラムが格納されているか否かを判定する、請求項1記載の半導体装置。前記半導体装置はさらに、前記不揮発メモリに前記製品プログラムが格納されているか否かを示すフラグを格納する不揮発記憶領域を含み、前記プロセッサは、前記不揮発記録領域に格納されるフラグを参照して、前記不揮発メモリに前記製品プログラムが格納されているか否かを判定する、請求項1記載の半導体装置。前記プロセッサは、前記第2のインタフェースを介して前記製品プログラムを外部から前記不揮発メモリに転送した後に、前記不揮発メモリに前記製品プログラムが格納されていることを示すフラグを前記不揮発記憶領域に格納する、請求項3記載の半導体装置。不揮発メモリに格納される製品プログラムを実行する半導体装置であって、プロセッサと、汎用メモリと、ブートプログラムを格納するブートメモリと、外部からブートローダおよび前記製品プログラムを入力するインタフェースとを含み、前記プロセッサは、前記ブートメモリに格納されるブートプログラムを実行することによって前記不揮発メモリに前記製品プログラムが格納されているか否かを判定し、前記不揮発メモリに前記製品プログラムが格納されていない場合には、前記インタフェースの初期化を行なって、前記インタフェースを介して前記ブートローダを外部から前記汎用メモリに転送し、該ブートローダを実行することによって前記インタフェースを介して前記製品プログラムを外部から前記不揮発メモリに転送する、半導体装置。上述のように、フラッシュライタを用いてフラッシュメモリに製品プログラムを書き込む場合、フラッシュライタを多数準備しなければならないといった問題点があった。また、フラッシュメモリを基板に実装する前に製品プログラムを完成させる必要があるため、製品プログラムの開発期間が短くなってしまうといった問題点があった。また、フラッシュメモリなどの不揮発性メモリに製品プログラムを書き込むプログラムを基板上のROMに持たせた場合、そのROMの容量が大きくなってしまうといった問題点もあった。このような問題点は、上述の特許文献1~3を用いたとしても解決することはできない。本発明は、上記問題点を解決するためになされたものであり、その目的は、ブートROMの容量を増やすことなく、製品プログラムを外部メモリからフラッシュメモリに書き込むことが可能な半導体装置を提供することである。本発明の一実施例によれば、フラッシュメモリに格納される製品プログラムを実行する半導体装置が提供される。半導体装置は、CPUと、SRAMと、ブートプログラムを格納するブートROMと、ホストコンピュータからブートローダを入力するシリアルI/Fと、USBメモリから製品プログラムを入力するUSBI/Fとを含む。CPUは、ブートROMに格納されるブートプログラムを実行することによってフラッシュメモリに製品プログラムが格納されているか否かを判定する。フラッシュメモリに製品プログラムが格納されていない場合には、シリアルI/Fを介してブートローダをホストコンピュータからSRAMに転送し、ブートローダを実行することによってUSBI/Fの初期化を行なって、USBI/Fを介して製品プログラムをUSBメモリからフラッシュメモリに転送する。本発明の一実施例によれば、フラッシュメモリに製品プログラムが格納されていない場合には、CPUが、シリアルI/Fを介してブートローダをホストコンピュータからSRAMに転送し、ブートローダを実行することによってUSBI/Fの初期化を行なうので、ブートROMの容量を増やすことなく、製品プログラムをUSBメモリからフラッシュメモリに書き込むことが可能となる。第1の実施の形態図1は、本発明の第1の実施の形態における半導体装置を含んだデータ処理装置の構成例を示す図である。データ処理装置1は、USBUniversalSerialBusを介してUSBメモリ3と接続され、シリアルI/FInterfaceを介してホストコンピュータ2と接続される。データ処理装置1は、最終製品に搭載される製品セット基板などに対応しており、たとえばデジタルテレビに搭載される製品セット基板である。このデータ処理装置1は、半導体装置以下、システムLSILargeScaleIntegratedcircuitとも呼ぶ。11と、フラッシュメモリ12と、DRAMDynamicRandomAccessMemory13と、USBコネクタ14と、シリアルI/Fコネクタ15とを含む。データ処理装置1には、マルチメディア対応のためのUSBコネクタ14と、外部機器との通信ソフトウェアデバッグのためのRS-232CなどのシリアルI/Fコネクタ15とが実装されている。また、システムLSI11は、CPU21と、SRAMStaticRandomAccessMemory22と、ブートROM23と、フラッシュメモリI/F24と、USBI/F25と、シリアルI/F26と、DRAMI/F27とを含む。CPU21は、データ処理装置1の電源が投入されてシステムLSI11のリセットが解除されると、ブートROM23に格納されるブートプログラムを実行する。そして、CPU21は、フラッシュメモリ12に製品プログラムが格納されている場合、その製品プログラムをDRAM13またはSRAM22に転送して実行することにより、最終製品としての動作を実現する。また、CPU21は、フラッシュメモリ12に製品プログラムが格納されていない場合、シリアルI/F26およびシリアルI/Fコネクタ15を介して、ホストコンピュータ2からブートローダ5を読み込んでSRAM22に転送する。このブートローダ5の転送は、SRAM22の特定アドレスへのデータ転送機能を有するシリアルI/Fハードウェアによって行なうようにしてもよい。SRAM22に転送されるブートローダ5は、USBI/F25の初期化プログラムおよびフラッシュメモリ12の書き換えプログラムを含んでいる。CPU21がこのブートローダ5を実行することにより、USBコネクタ14およびUSBI/F25を介してUSBメモリ3に格納される製品プログラム4を読み込み、フラッシュメモリ12に転送する。図2は、本発明の第1の実施の形態におけるシステムLSI11の動作を説明するためのフローチャートである。以下、図1に示すデータ処理装置1の構成図を適宜参照しながら、本実施の形態におけるデータ処理装置1の動作を説明する。まず、データ処理装置1の電源が投入されてシステムLSI11のリセットが解除されると、CPU21は、ブートROM23に格納されるブートプログラムを実行することにより起動するS11、図1の1。次に、CPU21は、フラッシュメモリ12の特定番地に特定キーワードが書き込まれているか否かを確認することにより、フラッシュメモリ12に製品プログラムが格納されているか否かを判断するS12。特定キーワードが書き込まれていればS12,No、フラッシュメモリ12に格納されている製品プログラムを実行してS18、処理を終了する。また、特定キーワードが書き込まれていなければS12,Yes、CPU21は、シリアルI/F26を初期化し、シリアル通信可能な状態としてフラッシュメモリ書き換えモードへ移行するS13。なお、特定キーワードは、たとえば製品プログラムの一部としてフラッシュメモリ12に格納される。システムLSI11が通信可能な状態になったことを検出すると、CPU21は、シリアルI/F26およびシリアルI/Fコネクタ15を介してホストコンピュータ2からブートローダを読み込み、SRAM22に転送するS14、図1の2。次に、CPU21は、SRAM22に転送されたブートローダ5を実行し、USBI/F25を初期化するS15、図1の3。そして、CPU21は、USBI/F25およびUSBコネクタ14を介してUSBメモリ3から製品プログラム4を読み込み、DRAM13上に展開するS16、図1の4。そして、CPU21は、フラッシュ書き換えプログラムを実行することによりDRAM13に格納される製品プログラムをフラッシュメモリ12に書き込みS17、図1の5、処理を終了する。以上説明したように、本実施の形態における半導体装置によれば、ブートローダ5をシステムLSI11の外部からロードするようにしたので、システムLSI11内部のブートROM23の容量を増やすことなく、製品プログラムを外部メモリからフラッシュメモリ12に書き込むことが可能となった。また、未書き込みのフラッシュメモリ12をセット基板に実装した後、システムLSI11の制御により製品プログラムをフラッシュメモリ12に書き込むようにしたので、専用のフラッシュライタなどの治具が不要となった。また、未書き込みのフラッシュメモリ12をセット基板に実装した後、製品プログラムを書き込むようにしたので、セット量産の寸前まで製品プログラムの変更ができ、製品プログラムの開発期間を延ばすことが可能となった。第2の実施の形態図3は、本発明の第2の実施の形態における半導体装置を含んだデータ処理装置の構成例を示す図である。図1に示す第1の実施の形態におけるデータ処理装置1と比較して、USBメモリ3、USBコネクタ14およびUSBI/F25が削除されている点と、製品プログラム4がホストコンピュータ2に格納されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。なお、フラッシュメモリI/F24と、DRAMI/F27の記載は省略している。図4は、本発明の第2の実施の形態におけるシステムLSI11の動作を説明するためのフローチャートである。以下、図3に示すデータ処理装置1の構成図を適宜参照しながら、本実施の形態におけるデータ処理装置1の動作を説明する。まず、データ処理装置1の電源が投入されてシステムLSI11のリセットが解除されると、CPU21は、ブートROM23に格納されるブートプログラムを実行することにより起動するS21、図3の1。次に、CPU21は、フラッシュメモリ12の特定番地に特定キーワードが書き込まれているか否かを確認することにより、フラッシュメモリ12に製品プログラムが格納されているか否かを判断するS22。特定キーワードが書き込まれていればS22,No、フラッシュメモリ12に格納されている製品プログラムを実行してS28、処理を終了する。また、特定キーワードが書き込まれていなければS22,Yes、CPU21は、シリアルI/F26を初期化し、シリアル通信可能な状態としてフラッシュメモリ書き換えモードへ移行するS23。システムLSI11が通信可能な状態になったことを検出すると、CPU21は、シリアルI/F26およびシリアルI/Fコネクタ15を介してホストコンピュータ2からブートローダ5を読み込み、SRAM22に転送するS24、図3の2。次に、CPU21は、SRAM22に転送されたブートローダ5を実行しS25、図5の3、シリアルI/F26およびシリアルI/Fコネクタ15を介してホストコンピュータ2から製品プログラム4を読み込み、DRAM13上に展開するS26、図3の4。そして、CPU21は、フラッシュ書き換えプログラムを実行することによりDRAM13に格納される製品プログラムをフラッシュメモリ12に書き込みS27、図3の5、処理を終了する。以上説明したように、本実施の形態における半導体装置によれば、製品プログラムをホストコンピュータ2からフラッシュメモリ12に転送するようにしたので、第1の実施の形態において説明した効果に加えて、USBコネクタを実装していない製品にも適用することが可能となった。また、USBI/Fを初期化するプログラムが不要となるため、ホストコンピュータ2からアップロードするブートローダ5の構成を大幅に簡略化することができ、その容量を削減することが可能となった。第3の実施の形態図5は、本発明の第3の実施の形態における半導体装置を含んだデータ処理装置の構成例を示す図である。図1に示す第1の実施の形態におけるデータ処理装置1と比較して、シリアルI/Fコネクタ15およびシリアルI/F26が削除されている点と、ブートローダ5がUSBメモリ3に格納されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。なお、フラッシュメモリI/F24と、DRAMI/F27の記載は省略している。図6は、本発明の第3の実施の形態におけるシステムLSI11の動作を説明するためのフローチャートである。以下、図5に示すデータ処理装置1の構成図を適宜参照しながら、本実施の形態におけるデータ処理装置1の動作を説明する。まず、データ処理装置1の電源が投入されてシステムLSI11のリセットが解除されると、CPU21は、ブートROM23に格納されるブートプログラムを実行することにより起動するS31、図5の1。次に、CPU21は、フラッシュメモリ12の特定番地に特定キーワードが書き込まれているか否かを確認することにより、フラッシュメモリ12に製品プログラムが格納されているか否かを判断するS32。特定キーワードが書き込まれていればS32,No、フラッシュメモリ12に格納されている製品プログラムを実行してS38、処理を終了する。また、特定キーワードが書き込まれていなければS32,Yes、CPU21は、USBI/F25を初期化し、シリアル通信可能な状態としてフラッシュメモリ書き換えモードへ移行するS33。システムLSI11が通信可能な状態になったことを検出すると、CPU21は、USBI/F25およびUSBコネクタ14を介してUSBメモリ3からブートローダ5を読み込み、SRAM22に転送するS34、図5の2。次に、CPU21は、SRAM22に転送されたブートローダを実行しS35、図5の3、USBI/F25およびUSBコネクタ14を介してUSBメモリ3から製品プログラム4を読み込み、DRAM13上に展開するS36、図5の4。そして、CPU21は、フラッシュ書き換えプログラムを実行することによりDRAM13に格納される製品プログラムをフラッシュメモリ12に書き込みS37、図5の5、処理を終了する。以上説明したように、本実施の形態における半導体装置によれば、ブートローダ5をUSBメモリ3からフラッシュメモリ12に転送するようにしたので、第1の実施の形態において説明した効果に加えて、ホストコンピュータ2が不要となるため、書き換えシステムの構成を簡略化することが可能となった。また、USBメモリ3のみでオンボード書き換えを行なうことができるため、多数の製品のフラッシュメモリの書き換えを安価に、同時に行なうことが可能となった。第4の実施の形態図7は、本発明の第4の実施の形態における半導体装置を含んだデータ処理装置の構成例を示す図である。図1に示す第1の実施の形態におけるデータ処理装置1と比較して、ホストコンピュータ2、USBメモリ3、USBコネクタ14、シリアルI/Fコネクタ15、USBI/F25およびシリアルI/F26が削除されている点と、HDMIHighDefinitionMultimediaInterfaceコネクタ16およびHDMII/F28が追加され、HDMIコネクタ16を介してフラッシュ書き込み用ジグが接続されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。なお、フラッシュメモリI/F24と、DRAMI/F27の記載は省略している。フラッシュ書き込み用ジグ6は、コントローラ61と、HDMIコネクタ62と、製品プログラム64が格納されるフラッシュメモリ63とを含む。コントローラ61は、内部に図示しないCPUとメモリとを有しており、メモリに格納される制御プログラムを実行することによって、HDMIコネクタ62を介してフラッシュメモリ63に格納される製品プログラム64をシステムLSI11に転送する。図8は、本発明の第4の実施の形態におけるシステムLSI11の動作を説明するためのフローチャートである。以下、図7に示すデータ処理装置1の構成図を適宜参照しながら、本実施の形態におけるデータ処理装置1の動作を説明する。まず、データ処理装置1の電源が投入されてシステムLSI11のリセットが解除されると、CPU21は、ブートROM23に格納されるブートプログラムを実行することにより起動するS41、図7の1。次に、CPU21は、フラッシュメモリ12の特定番地に特定キーワードが書き込まれているか否かを確認することにより、フラッシュメモリ12に製品プログラムが格納されているか否かを判断するS42。特定キーワードが書き込まれていればS42,No、フラッシュメモリ12に格納されている製品プログラムを実行してS48、処理を終了する。また、特定キーワードが書き込まれていなければS42,Yes、CPU21は、HDMII/F28を初期化し、シリアル通信可能な状態としてフラッシュメモリ書き換えモードへ移行するS43。システムLSI11が通信可能な状態になったことを検出すると、CPU21は、HDMII/F28およびHDMIコネクタ16を介してフラッシュ書き込み用ジグ6からブートローダ65を読み込み、SRAM22に転送するS44、図7の2。次に、CPU21は、SRAM22に転送されたブートローダ65を実行しS45、図7の3、HDMII/F28およびHDMIコネクタ16を介してフラッシュ書き込み用ジグ6から製品プログラム64を読み込み、DRAM13上に展開するS46、図7の4。そして、CPU21は、フラッシュ書き換えプログラムを実行することによりDRAM13に格納される製品プログラムをフラッシュメモリ12に書き込みS47、図7の5、処理を終了する。なお、図8ではシリアルI/Fとして、HDMII/F28のDDCラインを一例として記載している。DDCラインを使用する代わりに、CECラインや映像データ伝送用TMDSラインを使用してもよい。以上説明したように、本実施の形態における半導体装置によれば、製品プログラムをフラッシュ書き込み用ジグ6からフラッシュメモリ12に転送するようにしたので、第1の実施の形態において説明した効果に加えて、近年テレビセットに標準的に搭載されているHDMI端子を使用することができ、製品セットの組み立て完了後にフラッシュメモリ12へのオンボード書き込みが可能となった。第5の実施の形態図9は、本発明の第5の実施の形態における半導体装置を含んだデータ処理装置の構成例を示す図である。図5に示す第3の実施の形態におけるデータ処理装置1と比較して、不揮発記憶領域29が追加されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。なお、フラッシュメモリI/F24と、DRAMI/F27の記載は省略している。不揮発記憶領域29は、フラッシュメモリなどの小容量の不揮発メモリによって構成され、フラッシュメモリ12に既に製品プログラムが書き込まれていることを示すフラッシュ書き換え動作済みフラグが書き込まれる。図10は、本発明の第5の実施の形態におけるシステムLSI11の動作を説明するためのフローチャートである。以下、図9に示すデータ処理装置1の構成図を適宜参照しながら、本実施の形態におけるデータ処理装置1の動作を説明する。まず、データ処理装置1の電源が投入されてシステムLSI11のリセットが解除されると、CPU21は、ブートROM23に格納されるブートプログラムを実行することにより起動するS51、図9の1。次に、CPU21は、不揮発記憶領域29のフラッシュ書き換え動作済みフラグを確認することにより、フラッシュメモリ12に製品プログラムが格納されているか否かを判断するS52。フラグが製品プログラムの書き込み済みであることを示していればS52,No、フラッシュメモリ12に格納されている製品プログラムを実行してS59、処理を終了する。また、フラグが製品プログラムの書き込み済みであることを示していなければS52,Yes、CPU21は、USBI/F25を初期化し、シリアル通信可能な状態としてフラッシュメモリ書き換えモードへ移行するS53。システムLSI11が通信可能な状態になったことを検出すると、CPU21は、USBI/F25およびUSBコネクタ14を介してUSBメモリ3からブートローダ5を読み込み、SRAM22に転送するS54、図9の2。次に、CPU21は、SRAM22に転送されたブートローダを実行しS55、図9の3、USBI/F25およびUSBコネクタ14を介してUSBメモリ3から製品プログラム4を読み込み、DRAM13上に展開するS56、図9の4。そして、CPU21は、フラッシュ書き換えプログラムを実行することによりDRAM13に格納される製品プログラムをフラッシュメモリ12に書き込みS57、図9の5、不揮発記憶領域29に、製品プログラムをフラッシュメモリ12に書き込み済みであることを示すフラッシュ書き換え動作済みフラグをセットしてS58、図9の6、処理を終了する。以上の説明においては、図5に示す第3の実施の形態におけるシステムLSI11に不揮発記憶領域29を追加する構成としたが、図1、図3および図7に示す第1、第2および第4の実施の形態におけるシステムLSI11に不揮発記憶領域29を追加するようにしてもよい。以上説明したように、本実施の形態における半導体装置によれば、不揮発記憶領域29に、製品プログラムをフラッシュメモリ12に書き込み済みであることを示すフラッシュ書き換え動作済みフラグをセットするようにしたので、第3の実施の形態において説明した効果に加えて、フラッシュメモリ12の特定番地に特定キーワードが書き込まれているか否かを確認する必要がなくなり、通常動作とフラッシュ書き換え動作との切り替えが容易になった。今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。"