(57)【要約】【課題】電池の充放電を制御するためのプログラムを、秘匿性、及び書き換え信頼性を向上しつつ、書き換えることができる電池制御回路、電池パック、及び電池制御用プログラムのアップデートシステムを提供する。【解決手段】二次電池の充放電を制御するマイクロコントローラ２１１と、本体機器３と接続端子Ｔ３，Ｔ４を介して通信することにより、暗号化されたプログラムを通信スレーブとして受信すると共に記憶するＥＥＰＲＯＭ２１２とを備え、マイクロコントローラ２１１は、プログラムを記憶するフラッシュＲＯＭ２２１と、ＥＥＰＲＯＭ２１２に記憶された、暗号化されたプログラムに通信マスタとしてアクセスすると共に、当該暗号化されたプログラムを復号化してフラッシュＲＯＭ２２１に記憶させ、フラッシュＲＯＭ２２１に記憶されたプログラムを実行するＣＰＵ２２４を備える。【選択図】図１
2009240055.tif 000002
【特許請求の範囲】
【請求項１】
所定のプログラムを実行することにより、二次電池の充放電を制御する制御部と、
通信マスタとして暗号化された前記プログラムを送信する本体機器に接続するための接続端子と、
前記接続端子に接続される前記本体機器と当該接続端子を介して通信することにより、当該本体機器から前記暗号化されたプログラムを通信スレーブとして受信すると共に記憶する第１記憶部とを備え、
前記制御部は、
前記プログラムを記憶する第２記憶部と、
前記第１記憶部に記憶された、前記暗号化されたプログラムに通信マスタとしてアクセスすると共に、当該暗号化されたプログラムを復号化して前記第２記憶部に記憶させる転送処理を実行する転送処理部と、
前記第２記憶部に記憶されたプログラムを実行する実行部と
を備えることを特徴とする電池制御回路。
【請求項２】
前記制御部及び第１記憶部と前記接続端子との間の信号経路を開閉するスイッチング素子をさらに備え、
前記転送処理部は、
前記転送処理の実行期間中、前記スイッチング素子をオフさせる開閉制御部を備えること
を備えることを特徴とする請求項１記載の電池制御回路。
【請求項３】
前記暗号化されたプログラムは、
前記プログラムにおけるオブジェクトコードの配列順序を所定の規則に従って入れ替えることにより、暗号化されており、
前記転送処理部は、
前記第１記憶部に記憶されたデータを通信マスタとして読み出すインターフェイス部と、
前記インターフェイス部によって、前記規則に応じた順序で前記第１記憶部から前記オブジェクトコードを読み出させることにより、前記第１記憶部に記憶されたプログラムを復号化しつつ取得して、前記第２記憶部に記憶させる復号化部とをさらに備え、
前記開閉制御部は、
前記インターフェイス部によって前記オブジェクトコードの読み出しが実行されている期間中、前記スイッチング素子をオフさせること
を特徴とする請求項２記載の電池制御回路。
【請求項４】
前記暗号化されたプログラムは、
前記プログラムにおけるオブジェクトコードの配列順序を入れ替えることにより暗号化されており、
前記本体機器は、さらに、
前記入れ替えられた配列順序を示す順序情報を前記第１記憶部へ送信して記憶させ、
前記転送処理部は、
前記第１記憶部に記憶されたデータを通信マスタとして読み出すインターフェイス部と、
前記インターフェイス部によって、前記第１記憶部から前記順序情報を読み出させ、当該読み出された順序情報で示される順序で前記第１記憶部から前記オブジェクトコードを読み出させることにより、前記第１記憶部に記憶されたプログラムを復号化しつつ取得して、前記第２記憶部に記憶させる復号化部とをさらに備え、
前記開閉制御部は、
前記インターフェイス部によって前記オブジェクトコードの読み出しが実行されている期間中、前記スイッチング素子をオフさせること
を特徴とする請求項２記載の電池制御回路。
【請求項５】
前記第１記憶部は、
前記接続端子に接続された本体機器との間でクロックラインとデータラインとを用いた同期式通信によって、前記本体機器のスレーブとして前記暗号化されたプログラムを受信する通信部と、
前記通信部によって受信された、前記暗号化されたプログラムを記憶するメモリセルとを備え、
前記スイッチング素子は、
前記クロックラインと前記データラインとのうち、データラインのみを開閉するものであること
を特徴とする請求項２〜４のいずれか１項に記載の電池制御回路。
【請求項６】
前記転送処理部は、
前記第１記憶部に記憶された、前記暗号化されたプログラムを通信マスタとして読み出すインターフェイス部と、
前記インターフェイス部によって読み出された、前記暗号化されたプログラムを復号化して前記第２記憶部に記憶させる復号化部と
を備えることを特徴とする請求項１又は２記載の電池制御回路。
【請求項７】
前記本体機器は、
前記暗号化されたプログラムの前記第１記憶部への送信を正常に終了したとき、当該送信の終了を、前記制御部に通知する通知部を備え、
前記制御部は、
前記通知部からの前記通知を受信したとき、前記転送処理部によって前記転送処理を実行させること
を特徴とする請求項１〜６のいずれか１項に記載の電池制御回路。
【請求項８】
前記通知部は、
前記暗号化されたプログラムが前記第１記憶部へ送信された後、当該第１記憶部に記憶されたプログラムを読み出すことにより正しく記憶されたか否かを確認し、前記第１記憶部へ送信されたプログラムが全て正しく記憶されたことが確認されたとき、前記暗号化されたプログラムの前記第１記憶部への送信が正常に終了したものとして、当該送信の終了を、前記制御部に通知すること
を特徴とする請求項７記載の電池制御回路。
【請求項９】
前記第１記憶部は、
Ｉ２Ｃインターフェイスを用いて前記通信を行うこと
を特徴とする請求項１〜８のいずれか１項に記載の電池制御回路。
【請求項１０】
請求項１〜９のいずれか１項に記載の電池制御回路と、
前記二次電池と
を備えることを特徴とする電池パック。
【請求項１１】
請求項１〜９のいずれか１項に記載の電池制御回路と、
前記暗号化されたプログラムを、前記接続端子を介して前記第１記憶部へ送信する本体機器と
を備えることを特徴とする電池制御用プログラムのアップデートシステム。
【請求項１２】
前記本体機器は、
前記暗号化されたプログラムを取得する暗号化プログラム取得部をさらに備えること
を特徴とする請求項１１記載の電池制御用プログラムのアップデートシステム。
【請求項１３】
請求項２〜５のいずれか１項に記載の電池制御回路と、
前記暗号化されたプログラムを、前記接続端子を介して前記第１記憶部へ送信する本体機器とを備え、
前記本体機器は、
前記プログラムにおけるオブジェクトコードの配列順序を前記規則に従って入れ替えることにより、前記暗号化されたプログラムを生成する暗号化部をさらに備えること
を特徴とする電池制御用プログラムのアップデートシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電池の充放電を制御する電池制御回路、この電池制御回路を用いた電池パック、及び電池制御回路で用いられるプログラムのアップデートシステムに関する。
【背景技術】
【０００２】
従来、携帯電話機や携帯型パーソナルコンピュータ、デジタルカメラ等の電子機器の電源として用いられる電池パックは、主に二次電池を用いて構成され、充電により繰り返し使用可能とされている。二次電池は、充放電サイクルの増加や使用、保管等に伴い劣化が進行するため寿命がある。二次電池が寿命に至った場合や、電子機器を長時間にわたって使用できるようにするために大きな電池容量を有する電池パックを使用したい場合、ユーザは電池パックを交換できるようになっている。
【０００３】
この交換時に、電子機器のメーカが認定する正規の電池パックに交換するのが原則である。このような正規の電池パックには、二次電池の劣化を低減したり二次電池の安全性を向上したりするように、二次電池の充放電を制御する制御回路が組み込まれている。このような制御回路は、通常、マイクロコンピュータを用いて、ＲＯＭ（Read Only Memory）に記憶された制御プログラムを実行することにより、上述の制御を行うようになっている。
【０００４】
ところで、このような交換用の電池パックを、正規のメーカの許可なく製造し、安価に販売する非正規の業者が存在している。そして、このような非正規業者によって製造された非正規の電池パックが電子機器の電源として用いられる場合がある。しかしながら、非正規業者によって製造された非正規の電池パックは、コストを低減するため品質が粗悪であることが多い。特に二次電池の安全に関わる品質は事故が発生しない限りユーザには判らないため、非正規の電池パックは、安全性に関わるコストが低減されて、安全品質が劣悪であることが多い。
【０００５】
そこで、安全性の観点から、非正規の電池パックの使用を排除するために、認証機能を備えた電池パックが知られている（例えば、特許文献１参照）。このような認証機能も、上述のＲＯＭに記憶された制御プログラムをマイクロコンピュータで実行することにより、実現されている。
【０００６】
一方、電池パックの機能を向上したり、障害に対応したりするため、電池パックに内蔵されている制御プログラム、いわゆるファームウェアを更新したいというニーズがある。そこで、ファームウェアを更新できる電池パックが知られている（例えば、特許文献２参照）。
【０００７】
図７は、従来のファームウェアのアップデートが可能な電池パック１０１と、電池パック１０１のアップデートを実行する携帯型パーソナルコンピュータ等の本体機器１０２とが接続されて構成された電子機器の構成を示すブロック図である。図７に示す電池パック１０１は、電池１０３と、フラッシュマイコン１０４と、充電制御用スイッチ１０５と、放電制御用スイッチ１０６と、接続端子１０７，１０８，１０９，１１０とを備えている。
【０００８】
そして、三個の電池１０３が直列接続されて組電池が構成されている。接続端子１０７，１０８，１０９，１１０は、本体機器１０２と着脱可能に接続されており、電源負極（Ｂａｔｔ−）端子である接続端子１１０が、上記組電池、放電制御用スイッチ１０６、及び充電制御用スイッチ１０５を介して電源正極（Ｂａｔｔ＋）端子である接続端子１０７に接続されている。
【０００９】
フラッシュマイコン１０４は、例えばＣＰＵ（Central Processing Unit）コア、フラッシュＲＯＭ（フラッシュメモリ）、ＲＡＭ（Random Access Memory）、及び通信Ｉ／Ｆ回路等が集積された、いわゆるマイクロコントローラである。このようなマイクロコントローラは、種々のメーカから種々の機種が市場に供給されている。
【００１０】
そして、本体機器１０２は、接続端子１０８，１０９を介してフラッシュマイコン１０４の通信Ｉ／Ｆ回路へ、シリアル通信によって新たなファームウェアを送信することで、フラッシュマイコン１０４に内蔵されているフラッシュＲＯＭのファームウェアを書き換えるようになっている。
【特許文献１】特開２００６−３３９０７０号公報
【特許文献２】特開２００１−２７５２７０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
ところで、電池パック１０１のファームウェアをアップデートするため、本体機器１０２から電池パック１０１へファームウェアを送信すると、送信されたファームウェアは、電池パック１０１の外部に露出した接続端子１０８，１０９を通るから、第三者が接続端子１０８，１０９からファームウェアを取得して、リーバースエンジニアリングを行うことが容易となり、技術情報の漏洩を招くという、不都合があった。
【００１２】
特に、電池パックが上述のような認証機能を備えている場合、認証機能はファームウェアによって実現されているから、ファームウェアが解析されることによって認証プロトコルも第三者に知られてしまい、認証で排除できない粗悪な電池パックが市場に流通するおそれがあり、問題が大きい。
【００１３】
一方、ファームウェアの秘匿性を高めるために、ファームウェアを暗号化することが考えられる。しかしながら、電池パック１０１のファームウェアをアップデートする際は、必ず本体機器１０２から電池パック１０１へアップデートの要求を行うのであるから、本体機器１０２が通信マスタとなって、ファームウェアがフラッシュマイコン１０４へ送信されることになる。このとき、フラッシュマイコン１０４は、暗号化されたファームウェアを通信スレーブとして受信しつつ、並行してファームウェアの復号化、及びフラッシュＲＯＭへの書き込みを実行することになる。
【００１４】
しかしながら、通信マスタである本体機器１０２は、本体機器１０２側のタイミングで送信を行うため、通信スレーブとして動作しているフラッシュマイコン１０４は、ファームウェアの復号化やフラッシュＲＯＭの書き込み処理が間に合わなくなっても本体機器１０２の送信を一定期間しか待たせることができない。そのため、ファームウェアの復号化やフラッシュＲＯＭの書き込み処理が間に合わなくなると、ファームウェアを正常にフラッシュＲＯＭに書き込めなくなるという不都合があった。
【００１５】
特に、フラッシュマイコン１０４はファームウェアに従って動作するのであるから、ファームウェアが正常にフラッシュＲＯＭに書き込まれないと、フラッシュマイコン１０４を正常に動作させることができず、場合によっては起動すらできなくなってフラッシュマイコン１０４を復旧させることが困難となり、問題が大きい。そのため、フラッシュマイコン１０４のファームウェアを暗号化して送信しようとすると、ファームウェアの書き換え信頼性が低下するという不都合があった。
【００１６】
本発明は、このような事情に鑑みて為された発明であり、電池の充放電を制御するためのプログラムを、秘匿性、及び書き換え信頼性を向上しつつ、書き換えることができる電池制御回路、電池パック、及び電池制御用プログラムのアップデートシステムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明に係る電池制御回路は、所定のプログラムを実行することにより、二次電池の充放電を制御する制御部と、通信マスタとして暗号化された前記プログラムを送信する本体機器に接続するための接続端子と、前記接続端子に接続される前記本体機器と当該接続端子を介して通信することにより、当該本体機器から前記暗号化されたプログラムを通信スレーブとして受信すると共に記憶する第１記憶部とを備え、前記制御部は、前記プログラムを記憶する第２記憶部と、前記第１記憶部に記憶された、前記暗号化されたプログラムに通信マスタとしてアクセスすると共に、当該暗号化されたプログラムを復号化して前記第２記憶部に記憶させる転送処理を実行する転送処理部と、前記第２記憶部に記憶されたプログラムを実行する実行部とを備える。
【００１８】
この構成によれば、通信マスタである本体機器から暗号化されたプログラムが接続端子を介して通信スレーブである第１記憶部に送信されると共に記憶される。そうすると、接続端子に現れる信号は、暗号化されたプログラムであるから、秘匿性が向上する。また、第１記憶部には、暗号化されたままプログラムが記憶されるから、プログラムの受信と復号化とを並行して実行する必要がなく、復号化が間に合わなくなってプログラムを正常に受信及び記憶できなくなることがなくなる結果、書き換え信頼性が向上する。そして、制御部は、通信マスタとして第１記憶部にアクセスすることで、当該暗号化されたプログラムを復号化して第２記憶部に記憶させるので、復号化処理の進行に応じて第１記憶部へのアクセスを行うことができる結果、復号化処理が間に合わなくなって第１記憶部から第２記憶部へのプログラム転送の信頼性が低下してしまうことがない。
【００１９】
また、前記制御部及び第１記憶部と前記接続端子との間の信号経路を開閉するスイッチング素子をさらに備え、前記転送処理部は、前記転送処理の実行期間中、前記スイッチング素子をオフさせる開閉制御部を備えることが好ましい。
【００２０】
この構成によれば、転送処理部による転送処理の実行期間中、開閉制御部によって、スイッチング素子がオフされて、制御部及び第１記憶部と接続端子との間の信号経路が開かれるので、第１記憶部から制御部へ流れる信号が、接続端子に流れることがない。これにより、プログラムの秘匿性が確保される。
【００２１】
また、前記暗号化されたプログラムは、前記プログラムにおけるオブジェクトコードの配列順序を所定の規則に従って入れ替えることにより、暗号化されており、前記転送処理部は、前記第１記憶部に記憶されたデータを通信マスタとして読み出すインターフェイス部と、前記インターフェイス部によって、前記規則に応じた順序で前記第１記憶部から前記オブジェクトコードを読み出させることにより、前記第１記憶部に記憶されたプログラムを復号化しつつ取得して、前記第２記憶部に記憶させる復号化部とをさらに備え、前記開閉制御部は、前記インターフェイス部によって前記オブジェクトコードの読み出しが実行されている期間中、前記スイッチング素子をオフさせることが好ましい。
【００２２】
この構成によれば、プログラムは、オブジェクトコードの配列順序を所定の規則に従って入れ替えることにより暗号化されており、復号化部は、インターフェイス部によって、前記規則に応じた順序で第１記憶部からオブジェクトコードを読み出させることにより第１記憶部に記憶されたプログラムを復号化した状態で読み出して第２記憶部に記憶させるので、暗号化及び復号化処理を簡素化することができる。また、復号化されたプログラムが、インターフェイス部によって読み出されている期間中、開閉制御部によって、スイッチング素子がオフされて、制御部及び第１記憶部と接続端子との間の信号経路が開かれるので、復号化されたプログラムが接続端子に流れることがない。これにより、プログラムの秘匿性が確保される。
【００２３】
また、前記暗号化されたプログラムは、前記プログラムにおけるオブジェクトコードの配列順序を入れ替えることにより暗号化されており、前記本体機器は、さらに、前記入れ替えられた配列順序を示す順序情報を前記第１記憶部へ送信して記憶させ、前記転送処理部は、前記第１記憶部に記憶されたデータを通信マスタとして読み出すインターフェイス部と、前記インターフェイス部によって、前記第１記憶部から前記順序情報を読み出させ、当該読み出された順序情報で示される順序で前記第１記憶部から前記オブジェクトコードを読み出させることにより、前記第１記憶部に記憶されたプログラムを復号化しつつ取得して、前記第２記憶部に記憶させる復号化部とをさらに備え、前記開閉制御部は、前記インターフェイス部によって前記オブジェクトコードの読み出しが実行されている期間中、前記スイッチング素子をオフさせるようにしてもよい。
【００２４】
この構成によれば、本体機器は、オブジェクトコードの配列順序を入れ替えることにより暗号化されたプログラムと、当該入れ替えられた順序を示す順序情報とを前記第１記憶部に記憶させる。一方、復号化部は、インターフェイス部によって、第１記憶部から順序情報を読み出させ、この順序情報で示される順序で第１記憶部からオブジェクトコードを読み出させることにより第１記憶部に記憶されたプログラムを復号化した状態で読み出して第２記憶部に記憶させるので、暗号化及び復号化処理を簡素化することができる。また、復号化されたプログラムが、インターフェイス部によって読み出されている期間中、開閉制御部によって、スイッチング素子がオフされて、制御部及び第１記憶部と接続端子との間の信号経路が開かれるので、復号化されたプログラムが接続端子に流れることがない。これにより、プログラムの秘匿性が確保される。
【００２５】
また、前記第１記憶部は、前記接続端子に接続された本体機器との間でクロックラインとデータラインとを用いた同期式通信によって、前記本体機器のスレーブとして前記暗号化されたプログラムを受信する通信部と、前記通信部によって受信された、前記暗号化されたプログラムを記憶するメモリセルとを備え、前記スイッチング素子は、前記クロックラインと前記データラインとのうち、データラインのみを開閉するものであることが好ましい。
【００２６】
この構成によれば、スイッチング素子は、信号経路を一つ開閉できればよいので、スイッチング素子が一つでよい。
【００２７】
また、前記転送処理部は、前記第１記憶部に記憶された、前記暗号化されたプログラムを通信マスタとして読み出すインターフェイス部と、前記インターフェイス部によって読み出された、前記暗号化されたプログラムを復号化して前記第２記憶部に記憶させる復号化部とを備えるようにしてもよい。
【００２８】
この構成によれば、第１記憶部に記憶されたプログラムは、暗号化されたまま制御部が備えるインターフェイス部によって読み出されるので、秘匿性が向上する。
【００２９】
また、前記本体機器は、前記暗号化されたプログラムの前記第１記憶部への送信を正常に終了したとき、当該送信の終了を、前記制御部に通知する通知部を備え、前記制御部は、前記通知部からの前記通知を受信したとき、前記転送処理部によって前記転送処理を実行させることが好ましい。
【００３０】
この構成によれば、暗号化されたプログラムの第１記憶部への送信が正常に終了したとき、通知部によって当該送信の終了が制御部に通知される。そして、制御部は、通知部からの通知を受信したとき、転送処理部によって転送処理を実行させるので、第１記憶部への送信が正常に終了していない不完全なプログラムが第２記憶部に記憶されてしまうおそれが低減される。
【００３１】
また、前記通知部は、前記暗号化されたプログラムが前記第１記憶部へ送信された後、当該第１記憶部に記憶されたプログラムを読み出すことにより正しく記憶されたか否かを確認し、前記第１記憶部へ送信されたプログラムが全て正しく記憶されたことが確認されたとき、前記暗号化されたプログラムの前記第１記憶部への送信が正常に終了したものとして、当該送信の終了を、前記制御部に通知することが好ましい。
【００３２】
この構成によれば、第１記憶部によって、暗号化されたプログラムが全て正しく記憶されたとき、通知部によって当該送信の終了が制御部に通知される。そして、制御部は、通知部からの通知を受信したとき、転送処理部によって転送処理を実行させるので、第１記憶部に誤ったプログラムが記憶された場合、この誤ったプログラムが第２記憶部に記憶されてしまうおそれが低減される。
【００３３】
また、前記第１記憶部は、Ｉ２Ｃインターフェイスを用いて前記通信を行うことが好ましい。
【００３４】
Ｉ２Ｃインターフェイスを用いた低コストのＥＥＰＲＯＭが、市場に広く流通しているので、このようなＥＥＰＲＯＭを第１記憶部として用いることが容易である。また、このような標準的なＩ２Ｃインターフェイスを第１記憶部と本体機器との通信に用いることで、本体機器は、制御部に対して第２記憶部の書き換えを要求する手順とは無関係に、電池制御用プログラムの更新を行うことが可能となるので、本体機器のインターフェイスを標準化することが容易となる。
【００３５】
また、本発明に係る電池パックは、上述の電池制御回路と、前記二次電池とを備える。
【００３６】
この構成によれば、電池パックにおいて、電池の充放電を制御するためのプログラムを、秘匿性、及び書き換え信頼性を向上しつつ、書き換えることができる。
【００３７】
また、本発明に係る電池制御用プログラムのアップデートシステムは、上述の電池制御回路と、前記暗号化されたプログラムを、前記接続端子を介して前記第１記憶部へ送信する本体機器とを備える。
【００３８】
この構成によれば、二次電池を用いる本体機器の電池制御用プログラムのアップデートシステムにおいて、電池の充放電を制御するためのプログラムを、秘匿性、及び書き換え信頼性を向上しつつ、書き換えることができる。
【００３９】
また、前記本体機器は、前記暗号化されたプログラムを取得する暗号化プログラム取得部をさらに備えることが好ましい。
【００４０】
この構成によれば、プログラムが暗号化された状態で、本体機器に供給されるので、プログラムを本体機器に供給する際の秘匿性が高められる。
【００４１】
また、本発明に係る電池制御用プログラムのアップデートシステムは、上述の電池制御回路と、前記暗号化されたプログラムを、前記接続端子を介して前記第１記憶部へ送信する本体機器とを備え、前記本体機器は、前記プログラムにおけるオブジェクトコードの配列順序を前記規則に従って入れ替えることにより、前記暗号化されたプログラムを生成する暗号化部をさらに備えるようにしてもよい。
【００４２】
この構成によれば、プログラムを、本体機器においてオブジェクトコードの配列順序を前記規則に従って入れ替えることにより、暗号化することができる。従って、本体機器へプログラムを供給する際の形態を問わないので、例えば配列順序の入れ替えよりも暗号強度の高い暗号化方式で暗号化してプログラムを本体機器へ供給する等、本体機器へのプログラムの供給形態の自由度を高めることが可能となる。
【発明の効果】
【００４３】
このような構成の電池制御回路、電池パック、及び電池制御用プログラムのアップデートシステムは、電池の充放電を制御するためのプログラムを、秘匿性、及び書き換え信頼性を向上しつつ、書き換えることができる。
【発明を実施するための最良の形態】
【００４４】
以下、本発明に係る実施形態を図面に基づいて説明する。なお、各図において同一の符号を付した構成は、同一の構成であることを示し、その説明を省略する。
【００４５】
（第１実施形態）
図１は、本発明の第１実施形態に係る電池制御回路、これを用いた電池パック、及び電池制御用プログラムのアップデートシステムの構成の一例を示すブロック図である。図１に示す電池制御用プログラムのアップデートシステム１は、電池パック２と、本体機器３とが接続されて構成されている。
【００４６】
電池パック２は、電池制御回路２１、電池２２，２３，２４、充電制御用スイッチ２５、放電制御用スイッチ２６、及び接続端子Ｔ１，Ｔ２を備えている。電池２２，２３，２４は、例えばリチウムイオン二次電池や、ニッケル水素二次電池等、種々の二次電池である。そして、電池２２，２３，２４は、例えば直列接続されて組電池にされている。なお、電池の数は限定されず、例えば複数の二次電池が直列、並列、あるいは直列と並列とが混在して接続された組電池にされていてもよく、あるいは単電池であってもよい。
【００４７】
接続端子Ｔ１は、充電制御用スイッチ２５，放電制御用スイッチ２６を介して電池２２の正極に接続されている。また、接続端子Ｔ２は、電池２４の負極に接続されている。これにより、本体機器３から接続端子Ｔ１，Ｔ２を介して電池２２，２３，２４へ充電電圧を供給したり、電池２２，２３，２４から接続端子Ｔ１，Ｔ２を介して本体機器３へ駆動電圧を供給したりするようになっている。
【００４８】
充電制御用スイッチ２５，放電制御用スイッチ２６としては、例えばＦＥＴ（Field Effect Transistor）等のスイッチング素子が用いられる。
【００４９】
電池制御回路２１は、マイクロコントローラ２１１（制御部）、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）２１２（第１記憶部）、及び接続端子Ｔ３，Ｔ４を備えている。接続端子Ｔ１，Ｔ２，Ｔ３，Ｔ４は、電池パック２の本体機器３からの取り外しを可能にするべく、本体機器３から着脱可能にされている。
【００５０】
なお、電池制御回路２１は、必ずしも電池パックに内蔵されている例に限られず、例えば二次電池の充電器に内蔵されていてもよい。あるいは、電池制御回路２１は、本体機器に内蔵されて、接続端子Ｔ３，Ｔ４が本体機器の制御回路に接続される構成であってもよい。この場合、接続端子Ｔ１，Ｔ２，Ｔ３，Ｔ４は、例えば電極やコネクタ、端子台等であってもよく、ランドやパッド等の配線パターンであってもよい。
【００５１】
マイクロコントローラ２１１は、例えばフラッシュＲＯＭ２２１（第２記憶部）、通信Ｉ／Ｆ部２２２（インターフェイス部）、ＲＡＭ（Random Access Memory）２２３、ＣＰＵ（Central Processing Unit）２２４（実行部、復号化部、開閉制御部）、及びＩ／Ｏポート２２５が、内部バスで互いに接続されて構成されている。
【００５２】
フラッシュＲＯＭ２２１には、ＣＰＵ２２４を動作させるためのファームウェア（プログラム）が記憶されている。また、このファームウェアには、ＣＰＵ２２４を復号化部として動作させるための復号化プログラムが含まれている。なお、第２記憶部は、フラッシュＲＯＭに限られず、ＥＥＰＲＯＭやＦｅＲＡＭ（Ferroelectric Random Access Memory）等、種々の書き換え可能な不揮発性記憶素子を用いることができる。
【００５３】
Ｉ／Ｏポート２２５は、充電制御用スイッチ２５、及び放電制御用スイッチ２６に接続されており、ＣＰＵ２２４からの制御信号に応じて、充電制御用スイッチ２５、及び放電制御用スイッチ２６をオン、オフさせるようになっている。
【００５４】
通信Ｉ／Ｆ部２２２は、例えばＩ２Ｃ（Inter-Integrated Circuit）インターフェイスの通信インターフェイス回路である。Ｉ２Ｃインターフェイスは、クロックラインＣｌｏｃｋとデータラインＤａｔａとを用いた２線式の同期式通信方式である。また、Ｉ２Ｃインターフェイスは、マスタ−スレーブ方式の通信方式である。
【００５５】
そして、通信Ｉ／Ｆ部２２２のクロックラインＣｌｏｃｋは、接続端子Ｔ３及びＥＥＰＲＯＭ２１２に接続され、通信Ｉ／Ｆ部２２２のデータラインＤａｔａは、接続端子Ｔ４及びＥＥＰＲＯＭ２１２に接続されている。
【００５６】
これにより、本体機器３と通信Ｉ／Ｆ部２２２との間で通信を行うときは、本体機器３が通信マスタ、通信Ｉ／Ｆ部２２２が通信スレーブとなることで、通信によるデータ送受信が可能にされている。また、ＥＥＰＲＯＭ２１２と通信Ｉ／Ｆ部２２２との間で通信を行うときは、通信Ｉ／Ｆ部２２２が通信マスタ、ＥＥＰＲＯＭ２１２が通信スレーブとなることで、通信によるデータ送受信が可能にされている。
【００５７】
ＥＥＰＲＯＭ２１２は、例えばＩ２Ｃインターフェイスの通信回路（通信部）と、この通信回路を介してアクセス可能にされた書き換え可能な不揮発性のメモリセルとを１チップに集積したいわゆるシリアルＥＥＰＲＯＭである。このような構成のシリアルＥＥＰＲＯＭは、数多くのメーカによって、広く市場に供給され、流通している。
【００５８】
Ｉ２Ｃインターフェイスは、極めて簡素、かつ汎用性に富む通信プロトコルを備えており、簡素な回路でインターフェイス回路を構成可能である。さらに、ＣＰＵを備えた回路であれば、Ｉ２Ｃインターフェイスを実現するために専用のインターフェイス回路を設けなくても、制御用プログラムを用いてＩ／Ｏポートを制御することで、簡便に、かつ低コストでＩ２Ｃインターフェイスを実現できる。そのため、上述のようなシリアルＥＥＰＲＯＭの通信インターフェイスとして、事実上、デファクトスタンダードとなっている。
【００５９】
なお、第１記憶部は、このようなシリアルＥＥＰＲＯＭに限られず、例えばＩ２Ｃインターフェイス等の通信回路と、この通信回路を介してアクセス可能にされたＥＥＰＲＯＭやＲＡＭ等の記憶素子とを個別に用いて第１記憶部を構成してもよい。
【００６０】
そして、ＣＰＵ２２４が、フラッシュＲＯＭ２２１に記憶されたファームウェアを実行することにより、例えば電池２２，２３，２４の端子電圧が所定の閾値を超えたときに充電制御用スイッチ２５をオフして充電を禁止して電池２２，２３，２４を過充電から保護したり、例えば放電電流が過大になったときに放電制御用スイッチ２６をオフして放電を禁止したり、例えば電池２２，２３，２４の温度が所定の閾値以上になったときに充電制御用スイッチ２５及び放電制御用スイッチ２６をオフして加熱を防止するなどして、電池２２，２３，２４の劣化を低減したり安全性を向上させたりするようになっている。
【００６１】
あるいは、ＣＰＵ２２４は、通信Ｉ／Ｆ部２２２を介して本体機器３と通信を行うことで、本体機器３による電池２２，２３，２４の充電を制御してもよい。
【００６２】
また、ＣＰＵ２２４は、フラッシュＲＯＭ２２１に記憶された復号化プログラムを実行することで、復号化部として機能する。そして、ＣＰＵ２２４は、通信Ｉ／Ｆ部２２２によって、ＥＥＰＲＯＭ２１２に記憶された暗号化されたプログラムを通信マスタとして読み出させる。そして、ＣＰＵ２２４は、通信Ｉ／Ｆ部２２２によって読み出された、暗号化されたプログラムを復号化してフラッシュＲＯＭ２２１に記憶させる。
【００６３】
この場合、通信Ｉ／Ｆ部２２２とＣＰＵ２２４とによって、転送処理部が構成される。なお、復号化部は、ハードウェア回路によって構成してもよい。
【００６４】
本体機器３は、例えば携帯型パーソナルコンピュータや携帯電話機、デジタルカメラ等の電子機器、電気自動車やハイブリッドカー等の車両、等、種々の電池駆動機器の本体である。本体機器３は、外部Ｉ／Ｆ部３０を備えている。外部Ｉ／Ｆ部３０は、例えばインターネットや電話回線等の通信回線に接続可能な通信インターフェイス回路や、例えばメモリカードを接続可能なコネクタ、ＣＤ−ＲＯＭ等の記憶媒体を読取可能な読取装置等、外部からアップデート用のファームウェアを入力可能なインターフェイス回路である。
【００６５】
そして、更新用のファームウェアは、既に暗号化された状態で、例えば外部Ｉ／Ｆ部３０に接続されたインターネットや電話回線等の通信回線を介して本体機器３に供給されてもよく、既に暗号化された状態で、例えばメモリカードやＣＤ−ＲＯＭ等の記憶媒体によって外部Ｉ／Ｆ部３０を介して本体機器３に供給されてもよい。この場合、外部Ｉ／Ｆ部３０は、暗号化プログラム取得部の一例に相当している。
【００６６】
ファームウェアの暗号化方式は、例えばＤＥＳ（Data Encryption Standard）やＡＥＳ（Advanced Encryption Standard）の他、データの送信順序を入れ替えてスクランブルする、といった方式であってもよく、データに復元可能な論理演算を加えたものであってもよく、あるいはその他の種々の方式であってもよい。
【００６７】
また、本体機器３は、所定のプログラムを実行することにより、ファームウェア送信部３１、及び通知部３２として機能する。
【００６８】
ファームウェア送信部３１は、外部Ｉ／Ｆ部３０によって取得された暗号化されたファームウェアを、Ｉ２Ｃインターフェイスの通信マスタとして接続端子Ｔ３，Ｔ４を介してＥＥＰＲＯＭ２１２へ送信し、ＥＥＰＲＯＭ２１２に記憶させる。これにより、更新用のファームウェアを本体機器３へ供給する際の秘匿性が高められる。（以下、暗号化されたファームウェアのことを、暗号化ファームウェアと称する。）。なお、ファームウェア送信部３１が、外部Ｉ／Ｆ部３０によって取得されたファームウェアを暗号化する構成としてもよい。この場合、ファームウェア送信部３１は、暗号化部の一例に相当する。
【００６９】
通知部３２は、ファームウェア送信部３１によって、暗号化ファームウェアがＥＥＰＲＯＭ２１２へ送信され記憶された後、ＥＥＰＲＯＭ２１２に記憶されたファームウェアを読み出して正しく記憶され方か否かを確認する。そして、通知部３２は、ＥＥＰＲＯＭ２１２に送信されたファームウェアが全て正しく記憶されたことが確認されたとき、Ｉ２Ｃインターフェイスを用いて接続端子Ｔ３，Ｔ４を介して通信Ｉ／Ｆ部２２２へ通知する。
【００７０】
暗号化ファームウェアが正しく記憶されたか否かの確認は、例えばファームウェア送信部３１によって１バイト分送信される都度行ってもよく、暗号化ファームウェアを全て送信し終わってから行ってもよい。また、確認方法は、送信したデータと読み出したデータとを比較するベリファイチェックによってもよく、チェックサムを用いる等、他の手段によってもよい。
【００７１】
次に、図１に示す電池制御用プログラムのアップデートシステム１の動作について説明する。図２は、図１に示す本体機器３の動作の一例を示すフローチャートである。なお、以下のフローチャートにおいて、同一の動作には同一のステップ番号を付してその説明を省略する。
【００７２】
まず、本体機器３において、アップデート用のファームウェアが、外部Ｉ／Ｆ部３０によって、暗号化された状態で取得される（ステップＳ１）。なお、ステップＳ１において、ファームウェア送信部３１によって、アップデート用のファームウェアが暗号化されるようにしてもよい。この場合、本体機器３への供給は、例えばマイクロコントローラ２１１では処理が重くて採用が困難な、暗号化強度の高い暗号方式を用い、本体機器３において一旦復号化した後、ファームウェア送信部３１によって、再び復号化処理が少なくて済む簡素な暗号化方式で暗号化するようにしてもよい。
【００７３】
そして、ファームウェア送信部３１がＩ２Ｃインターフェイスの通信マスタとして、暗号化ファームウェアを、接続端子Ｔ３，Ｔ４を介してＥＥＰＲＯＭ２１２へ送信する。そうすると、通信スレーブとして動作するＥＥＰＲＯＭ２１２によって、暗号化ファームウェアが受信され、記憶される（ステップＳ２）。
【００７４】
このとき、ファームウェアは暗号化されたまま本体機器３からＥＥＰＲＯＭ２１２へ送信されるので、もし仮に第三者が接続端子Ｔ３，Ｔ４の信号を観測したとしても、技術情報が漏洩したり、ファームウェアに含まれる認証プロトコルが知られたりするおそれが低減される。
【００７５】
また、このとき、ＥＥＰＲＯＭ２１２には、暗号化されたままのファームウェアが記憶され、ファームウェアを復号化しつつ記憶する必要がないので、復号化が間に合わなくなってファームウェアを正しく記憶できなくなるおそれが低減される。
【００７６】
また、図７に示す背景技術のように、本体機器１０２が直接フラッシュマイコン１０４にファームウェアを送信して内蔵のフラッシュＲＯＭに記憶させる場合には、本体機器１０２は、予め設定されたフラッシュＲＯＭへの書き込み指示コマンドを送信したり、予め規定された書き込み手順を実行したりする必要がある。
【００７７】
しかしながら、このような書き込み指示コマンドや書き込み手順は、フラッシュマイコン１０４の製造メーカや機種毎に異なっているため、本体機器１０２は、電池パック１０１に用いられているフラッシュマイコン１０４の機種毎に対応して、書き込み指示コマンドや書き込み手順を変える必要があり、不便である。
【００７８】
一方、図１に示す電池制御回路２１においては、ＥＥＰＲＯＭは、単なるメモリであるから、通信インターフェイスさえ共通にしておけば、製造メーカや機種によってアクセス方法に差異はなく、本体機器１０２側の処理をＥＥＰＲＯＭの機種毎に変える必要がないので利便性に優れる。また、上述のように、Ｉ２Ｃインターフェイスを備えた低コストのシリアルＥＥＰＲＯＭが、広く市場に流通しており、このようなシリアルＥＥＰＲＯＭをそのままＥＥＰＲＯＭ２１２として用いることができるので、電池制御回路２１の設計も容易である。
【００７９】
さらに、本体機器１０２は、暗号化ファームウェアをＥＥＰＲＯＭ２１２に送信すればよく、マイクロコントローラ２１１に対して書き込み指示コマンドを送信したり、所定の書き込み手順を実行したりする必要がないので、マイクロコントローラ２１１の機種が異なるメモリパックに対しても、ファームウェアのアップデート処理を変更する必要がない。一方、電池パック２側では、本体機器１０２によるアップデート処理に制約されることなく、自由にマイクロコントローラ２１１の機種を選定することができる。
【００８０】
次に、通知部３２によって、ファームウェア送信部３１による暗号化ファームウェアの送信が完了したか否かが確認される（ステップＳ３）。そして、まだ完了していなければ（ステップＳ３でＮＯ）、ステップＳ２に戻ってファームウェア送信部３１による暗号化ファームウェアの送信を継続する一方、暗号化ファームウェアが全て送信完了していれば（ステップＳ３でＹＥＳ）、ステップＳ４へ移行する。
【００８１】
次に、ステップＳ４において、通知部３２によって、ＥＥＰＲＯＭ２１２に記憶されているデータが、Ｉ２Ｃインターフェイスを用いて読み出され、ファームウェア送信部３１により送信された、暗号化ファームウェアと比較されて、いわゆるベリファイチェックが行われる（ステップＳ４）。
【００８２】
そして、ベリファイチェックの結果が正しくなければ（ステップＳ５でＮＯ）、再びステップＳ２へ戻って暗号化ファームウェアがＥＥＰＲＯＭ２１２へ再送される一方、ベリファイチェックの結果が正しければ（ステップＳ５でＹＥＳ）、通知部３２によって、ファームウェアの送信終了を通知するデータが、Ｉ２Ｃインターフェイスを用いてマイクロコントローラ２１１へ送信される（ステップＳ６）。
【００８３】
なお、送信終了の通知は、必ずしも通知部３２からマイクロコントローラ２１１へ、直接Ｉ２Ｃインターフェイスを用いて送信される例に限られず、例えば通知部３２が、ＥＥＰＲＯＭ２１２の予め設定されたアドレスに、送信終了を示すデータを書き込むことによって、通知するようにしてもよい。
【００８４】
図３は、図１に示す電池パック２の動作の一例を示すフローチャートである。まず、ＣＰＵ２２４は、ファームウェアの送信終了を通知するデータが、通信Ｉ／Ｆ部２２２によって受信されるのを待ち受けている（ステップＳ１１でＮＯ）。そして、通信Ｉ／Ｆ部２２２によって、ファームウェアの送信終了を通知するデータが受信されると（ステップＳ１１でＹＥＳ）、ＣＰＵ２２４は、フラッシュＲＯＭ２２１に記憶されているファームウェアを更新するべくステップＳ１３へ移行する。
【００８５】
この場合、ステップＳ３において、暗号化ファームウェアが全て本体機器３からＥＥＰＲＯＭ２１２へ送信され、かつステップＳ４，Ｓ５において、ＥＥＰＲＯＭ２１２に正しく暗号化ファームウェアが記憶されたことが確認されて送信終了が通知されなければ、フラッシュＲＯＭ２２１に記憶されているファームウェアが更新されない。従って、例えば本体機器３からＥＥＰＲＯＭ２１２への暗号化ファームウェアの送信中に、本体機器３が電源オフされたり、ノイズや接続端子の接触不良等の影響により通信エラーが発生したりする等して暗号化ファームウェアが不完全な状態でＥＥＰＲＯＭ２１２に記憶されている場合には、フラッシュＲＯＭ２２１に記憶されているファームウェアの更新が実行されない。
【００８６】
これにより、フラッシュＲＯＭ２２１が不完全なファームウェアに書き換えられてマイクロコントローラ２１１が正常に動作しなくなるおそれが低減される。
【００８７】
また、本体機器３と、ＥＥＰＲＯＭ２１２とは、着脱可能な接続端子Ｔ３，Ｔ４を介して接続されるので、例えば本体機器３に振動が加えられて接続端子Ｔ３，Ｔ４の接続不良が生じたり、例えば接続端子Ｔ３，Ｔ４の接触抵抗によってノイズを拾いやすくなったりする。そのため、接続端子Ｔ３，Ｔ４を介する本体機器３とＥＥＰＲＯＭ２１２との間の通信の信頼性は、着脱可能な接続端子を介さずに実行されるマイクロコントローラ２１１とＥＥＰＲＯＭ２１２との間の通信よりも信頼性が低下する。
【００８８】
しかしながら、ステップＳ４，Ｓ５のベリファイチェックによって、ＥＥＰＲＯＭ２１２に正しく暗号化ファームウェアが記憶されたことが確認された場合にのみ、本体機器３から送信終了が通知されてＣＰＵ２２４によるファームウェアの更新が実行されるので、例え本体機器３、ＥＥＰＲＯＭ２１２間の通信信頼性が低下したとしても、誤ったデータでファームウェアが更新されるおそれが低減される。
【００８９】
ところで、図７に示す背景技術に係る本体機器１０２とフラッシュマイコン１０４との間も着脱可能な接続端子１０７，１０８を介して接続されているため、上述したように本体機器１０２とフラッシュマイコン１０４との間の通信も信頼性が低下する。しかも、上述したように、通信スレーブとして動作しているフラッシュマイコン１０４は、ファームウェアの復号化やフラッシュＲＯＭの書き込み処理が間に合わなくなると、ファームウェアを正常にフラッシュＲＯＭに書き込めなくなる課題を有しており、フラッシュＲＯＭへのファームウェアの書き込み信頼性が低下する。
【００９０】
一方で、一般的には、フラッシュマイコン１０４のようなフラッシュＲＯＭを内蔵したマイクロコントローラは、セキュリティ上の必要から、内蔵されているフラッシュＲＯＭに記憶されているファームウェアを外部から読み出すことができないように、ファームウェアの読み出しを禁止する設定がされている。
【００９１】
そのため、一旦ファームウェアの読み出しを禁止する設定がされてしまうと、図７の背景技術に係る電池制御用プログラムのアップデートシステムでは、図１に示す電池制御用プログラムのアップデートシステム１よりも内蔵フラッシュＲＯＭへのファームウェアの書き込み信頼性が低いにもかかわらず、内蔵フラッシュＲＯＭに記憶されたファームウェアのベリファイチェックが実行できないという課題を有している。
【００９２】
他方、図１に示す電池制御用プログラムのアップデートシステム１では、ＥＥＰＲＯＭ２１２に一旦暗号化ファームウェアを記憶させることで、マイクロコントローラ２１１が通信スレーブとして暗号化ファームウェアを受信しつつ復号化する必要がなくなり、かつ、ＥＥＰＲＯＭ２１２に記憶された暗号化ファームウェアの本体機器３によるベリファイチェックを可能にすることで、暗号化ファームウェアの受信の信頼性を向上することができる。
【００９３】
次に、ステップＳ１３において、ＣＰＵ２２４からの制御信号に応じて、通信Ｉ／Ｆ部２２２が通信マスタとなって、ＥＥＰＲＯＭ２１２に記憶された暗号化ファームウェアが読み出され（ステップＳ１３）、この読み出された暗号化ファームウェアが、復号化部としてのＣＰＵ２２４によって復号化されて、フラッシュＲＯＭ２２１に記憶される（ステップＳ１４）。
【００９４】
このとき、復号化プログラムが一緒に消去されると、以後の復号化及びフラッシュＲＯＭ２２１へのファームウェア書き込みができなくなってしまうので、例えば、フラッシュＲＯＭ２２１において復号化プログラムが記憶されているブロックを残して他のブロックのみを消去するようにしてもよく、あるいは予め、復号化プログラムをＲＡＭ２２３に転送して、ＲＡＭ２２３上でＣＰＵ２２４に復号化プログラムを実行させるようにしてもよい。
【００９５】
また、ステップＳ１３，Ｓ１４において、暗号化ファームウェアを全て読み出してから復号化しようとすると、フラッシュＲＯＭ２２１以上の記憶容量を有するＲＡＭが必要となり、マイクロコントローラ２１１のコストが増大する。従って、ステップＳ１３とステップＳ１４とは並列的に実行されて、通信Ｉ／Ｆ部２２２によって暗号化ファームウェアの読み出しを行いつつ、ＣＰＵ２２４でこれを復号化してフラッシュＲＯＭ２２１に記憶させることとなる。
【００９６】
このとき、通信Ｉ／Ｆ部２２２は通信マスタとして動作しているから、ＣＰＵ２２４による暗号化ファームウェアの復号化に時間がかかるときは、ＣＰＵ２２４は、通信Ｉ／Ｆ部２２２による暗号化ファームウェアの読み出しを待たせることができる。これにより、図７に示す背景技術に係るフラッシュマイコン１０４のように、本体機器１０２から一方的に送信されてくるファームウェアの復号化やフラッシュＲＯＭの書き込み処理が間に合わなくなってファームウェアを正常にフラッシュＲＯＭに書き込めなくなる、といった問題は、電池パック２においては生じない。
【００９７】
以上、ステップＳ１〜Ｓ１４の処理により、電池の充放電を制御するためのファームウェアを、秘匿性、及び書き換え信頼性を向上しつつ書き換えることができる。
【００９８】
（第２実施形態）
次に、本発明の第２の実施形態に係る電池制御回路、これを用いた電池パック、及び電池制御用プログラムのアップデートシステムについて説明する。図４は、本発明の第２実施形態に係る電池制御回路２１ａ、電池パック２ａ、及び電池制御用プログラムのアップデートシステム１ａの構成の一例を示すブロック図である。
【００９９】
図４に示す電池制御用プログラムのアップデートシステム１ａと、図１に示す電池制御用プログラムのアップデートシステム１とは、本体機器３ａにおけるファームウェア送信部３１ａの暗号化方法、電池制御回路２１ａがスイッチング素子２１３をさらに備える点、及びマイクロコントローラ２１１におけるＣＰＵ２２４の復号化部及び開閉制御部としての動作、の点で異なる。
【０１００】
その他の構成は図１に示す電池制御用プログラムのアップデートシステム１と同様であるのでその説明を省略し、以下本実施形態の特徴的な点について説明する。
【０１０１】
スイッチング素子２１３は、接続端子Ｔ３，Ｔ４と、マイクロコントローラ２１１及びＥＥＰＲＯＭ２１２との間に設けられ、接続端子Ｔ３と、マイクロコントローラ２１１及びＥＥＰＲＯＭ２１２との間、及び接続端子Ｔ４と、マイクロコントローラ２１１及びＥＥＰＲＯＭ２１２との間の信号経路をそれぞれ開閉する。
【０１０２】
スイッチング素子２１３は、例えばＦＥＴ（Field Effect Transistor）や、リレースイッチ等のスイッチング素子を、二つ用いて構成される。スイッチング素子２１３は、例えばＩ／Ｏポート２２５に接続されている。これにより、ＣＰＵ２２４は、Ｉ／Ｏポート２２５を介してスイッチング素子２１３のオン、オフを制御可能にされている。
【０１０３】
ファームウェア送信部３１ａは、アップデート用のファームウェアにおけるオブジェクトコードの送信順序を予め設定された規則に従って入れ替えることにより、暗号化する。
【０１０４】
なお、オブジェクトコードの配列順序が、既に予め設定された規則に従って入れ替えられて暗号化された状態の暗号化ファームウェアを、外部Ｉ／Ｆ部３０によって取得することで、外部Ｉ／Ｆ部３０によって取得された暗号化されたファームウェアを、ファームウェア送信部３１ａの代わりにファームウェア送信部３１を用いてＥＥＰＲＯＭ２１２へ送信するようにしてもよい。しかしながら、ファームウェア送信部３１の動作については既に説明済みであるので、以下、ファームウェア送信部３１ａにおいて暗号化を行う例について説明する。
【０１０５】
フラッシュＲＯＭ２２１に記憶されているファームウェアには、ＣＰＵ２２４を、通信Ｉ／Ｆ部２２２によって、前記規則に応じた順序でＥＥＰＲＯＭ２１２からオブジェクトコードを読み出させることにより、ＥＥＰＲＯＭ２１２に記憶されたファームウェアを復号化しつつ取得して、フラッシュＲＯＭ２２１に記憶させる復号化部として機能させるための復号化プログラムが含まれている。
【０１０６】
また、フラッシュＲＯＭ２２１に記憶されているファームウェアには、ＣＰＵ２２４を、通信Ｉ／Ｆ部２２２によるＥＥＰＲＯＭ２１２からのオブジェクトコードの読み出しが実行されている期間中、スイッチング素子２１３をオフさせる開閉制御部として機能させるための開閉制御プログラムが含まれている。
【０１０７】
次に、図４に示す電池制御用プログラムのアップデートシステム１ａの動作について説明する。図５は、図４に示す本体機器３ａの動作の一例を示すフローチャートである。まず、本体機器３において、ファームウェア送信部３１ａによって、アップデート用のファームウェアにおけるオブジェクトコードの送信順序が、予め設定された規則に従って入れ替えられる（ステップＳ２１）。
【０１０８】
このとき、送信順序の並び替え規則としては、例えば、線形合同法、平方採中法、混合合同法等の、同一の乱数系列を再現可能な疑似乱数生成アルゴリズムを用いてもよく、例えば偶数アドレスのオブジェクトコードのみ、アドレスの大きいものほど若いアドレスに配置されるように並び替える、といった単純な並び替え規則であってもよい。
【０１０９】
次に、ファームウェア送信部３１が、Ｉ２Ｃインターフェイスの通信マスタとして、ファームウェアのオブジェクトコードを入れ替えられた送信順序で、接続端子Ｔ３，Ｔ４を介してＥＥＰＲＯＭ２１２へ送信する。そうすると、ファームウェアはオブジェクトコードが並び替えられて暗号化された状態で、接続端子Ｔ３，Ｔ４を介してＥＥＰＲＯＭ２１２へ送信され、通信スレーブとして動作するＥＥＰＲＯＭ２１２によって、記憶される（ステップＳ２２）。
【０１１０】
この場合、ファームウェア送信部３１は、アップデート用のファームウェアにおけるオブジェクトコードの送信順序を並び替えるだけでよいので、暗号化処理を簡素化することができる。
【０１１１】
このようにして、図１に示す電池制御用プログラムのアップデートシステム１の場合と同様に、ＥＥＰＲＯＭ２１２に、暗号化された暗号化ファームウェアが記憶される。以下、ステップＳ３〜Ｓ６は図２と同様であるのでその説明を省略する。
【０１１２】
図６は、図４に示す電池パック２ａの動作の一例を示すフローチャートである。まず、ステップＳ１１の動作は図３と同様であるのでその説明を省略する。そして、ステップＳ１１の後、開閉制御部としてのＣＰＵ２２４によって、スイッチング素子２１３がオフされて、接続端子Ｔ３，Ｔ４がマイクロコントローラ２１１及びＥＥＰＲＯＭ２１２から切り離される（ステップＳ３１）。
【０１１３】
次に、ＣＰＵ２２４からの制御信号に応じて、通信Ｉ／Ｆ部２２２が通信マスタとなって、ＥＥＰＲＯＭ２１２に記憶された暗号化ファームウェアが読み出される。このとき、復号化部としてのＣＰＵ２２４は、ファームウェア送信部３１ａがオブジェクトコードの送信順序を入れ替えるのに用いた規則と同じ規則に基づいて、入れ替え前の順番で、通信Ｉ／Ｆ部２２２によるオブジェクトコードの読み出しを実行させることで、ＥＥＰＲＯＭ２１２に記憶されたファームウェアを復号化しつつ、フラッシュＲＯＭ２２１に記憶させる（ステップＳ３２）。
【０１１４】
この場合、復号化部としてのＣＰＵ２２４は、ＥＥＰＲＯＭ２１２に記憶されたオブジェクトコードの読み出し順序を入れ替えるだけで復号化することができるので、復号化処理を簡素化することができる。
【０１１５】
また、ステップ３２においては、ＥＥＰＲＯＭ２１２からマイクロコントローラ２１１へ、復号化されたファームウェアが送信されることになるが、このとき、スイッチング素子２１３がオフされているので、第三者によって、復号化されたファームウェアが接続端子Ｔ３，Ｔ４から読み取られることがない。
【０１１６】
これにより、暗号化処理を簡素化しつつ、ファームウェアの秘匿性を向上することが可能となる。
【０１１７】
なお、スイッチング素子２１３は、接続端子Ｔ３，Ｔ４を両方ともマイクロコントローラ２１１及びＥＥＰＲＯＭ２１２から切り離す例を示したが、接続端子Ｔ３と、マイクロコントローラ２１１及びＥＥＰＲＯＭ２１２との間の信号経路のみを開閉するようにしてもよい。データラインＤａｔａを流れる信号さえ隠蔽することができれば、秘匿性は保たれるので、開閉する信号経路を一つにすることで、スイッチング素子２１３を簡素化する（例えばＦＥＴ一つにする）ことができる。
【０１１８】
そして、ファームウェアをフラッシュＲＯＭ２２１に記憶し終わると、復号化部としてのＣＰＵ２２４によってスイッチング素子２１３がオンされて、本体機器３ａと、マイクロコントローラ２１１及びＥＥＰＲＯＭ２１２との間での通信が可能な状態に設定され（ステップＳ３３）、処理を終了する。
【０１１９】
なお、ステップＳ３２において、復号化部としてのＣＰＵ２２４は、ファームウェア送信部３１ａと同じ規則に従って、入れ替え前の順番でオブジェクトコードの読み出しを行うことで復号化する例を示したが、例えば、ファームウェア送信部３１ａは、入れ替えた送信順序を示す順序情報を、ＥＥＰＲＯＭ２１２の予め設定されたアドレスに記憶させ、復号化部としてのＣＰＵ２２４は、この順序情報に基づく順番でオブジェクトコードを読み出すことで、復号化するようにしてもよい。
【０１２０】
あるいは、予め、暗号化されたファームウェアとこの順序情報とを、通信手段や記憶媒体を用いて、外部Ｉ／Ｆ部３０を介して本体機器３ａへ供給するようにしてもよい。この場合、暗号化されたファームウェアとこの順序情報とは、例えば結合されたり混在されたりして、第三者が容易に区別できないようにされていることがセキュリティ上望ましい。
【０１２１】
この場合、順序情報としては、例えばＥＥＰＲＯＭ２１２に記憶された各オブジェクトコードと、各オブジェクトコードが記憶されるべきマイクロコントローラ２１１のアドレスとを対応付けたデータテーブルを用いることができる。
【０１２２】
また、マイクロコントローラ２１１は、ＡＳＩＣ（Application Specific Integrated Circuit）であってもよく、必ずしも集積化されている必要はなく、また、マイクロコントローラ２１１の他、ＥＥＰＲＯＭ２１２やスイッチング素子２１３を含んで集積回路化されていてもよい。マイクロコントローラ２１１、ＥＥＰＲＯＭ２１２、及びスイッチング素子２１３が１パッケージに集積化されていた場合には、ＥＥＰＲＯＭ２１２からマイクロコントローラ２１１へ送信される復号化されたファームウェアを、集積回路外で観測することができないので、さらに秘匿性が向上する。
【産業上の利用可能性】
【０１２３】
本発明は、携帯型パーソナルコンピュータやデジタルカメラ、携帯電話機等の電子機器、電気自動車やハイブリッドカー等の車両、等の電源として使用される二次電池の充放電を制御する電池制御回路、これを備える電池パック、及び電池制御用プログラムのアップデートシステムとして好適に利用することができる。
【図面の簡単な説明】
【０１２４】
【図１】本発明の第１実施形態に係る電池制御回路、これを用いた電池パック、及び電池制御用プログラムのアップデートシステムの構成の一例を示すブロック図である。
【図２】図１に示す本体機器の動作の一例を示すフローチャートである。
【図３】図１に示す電池パックの動作の一例を示すフローチャートである。
【図４】本発明の第２実施形態に係る電池制御回路、電池パック、及び電池制御用プログラムのアップデートシステムの構成の一例を示すブロック図である。
【図５】図４に示す本体機器の動作の一例を示すフローチャートである。
【図６】図４に示す電池パックの動作の一例を示すフローチャートである。
【図７】従来のファームウェアのアップデートが可能な電池パックと、電池パックのアップデートを実行する携帯型パーソナルコンピュータ等の本体機器とが接続されて構成された電子機器の構成を示すブロック図である。
【符号の説明】
【０１２５】
１，１ａ  アップデートシステム
２，２ａ  電池パック
３，３ａ  本体機器
２１，２１ａ  電池制御回路
２２，２３，２４  電池
２５  充電制御用スイッチ
２６  放電制御用スイッチ
３０  外部Ｉ／Ｆ部
３１，３１ａ  ファームウェア送信部
３２  通知部
２１１  マイクロコントローラ
２１２  ＥＥＰＲＯＭ
２１３  スイッチング素子
２２１  フラッシュＲＯＭ
２２２  通信Ｉ／Ｆ部
２２３  ＲＡＭ
２２４  ＣＰＵ
２２５  Ｉ／Ｏポート
Ｃｌｏｃｋ  クロックライン
Ｄａｔａ  データライン
Ｔ１，Ｔ２，Ｔ３，Ｔ４  接続端子
【図１】
2009240055.tif 000003
【図２】
2009240055.tif 000004
【図３】
2009240055.tif 000005
【図４】
2009240055.tif 000006
【図５】
2009240055.tif 000007
【図６】
2009240055.tif 000008
【図７】
2009240055.tif 000009