PSoC3の書き込み

2010/12/29

PSoC3

PSoC3で開発を行っていたところ、デバイス(CY8C3866PVI-021ES3)に書き込めなくなる、というトラブルに遭遇したので、その原因を探ってみました。
  1. 原因となる操作
  2. 原因
  3. 解決策
の順に書いていきます。

原因となる操作

CY8C3866PVI-021は48ピンのデバイスで、合計31本のIOを搭載しています。
このうち、1ポートに8本のGPIOがまとまっているのは、ポート0とポート1の2つのみです。
PSoC Creatorのデフォルト設定では、ポート1にはデバッグ用のピンが割り当てられており、たとえば8ビット×2として16ビットのバスを構成しようと思うと、デバッグ用のピンの割り当てを解除しなくてはなりません。

そのためには、PSoC Creator上でDebug ports disableの設定を行い、Use Optional XRES Pinのチェックを外す必要があります。
それに応じて、Require XRES Pinのチェックも外すことになります。




XRES関係の2つの項目には、あまりいじらないほうがいいよ、という注意書きがあり、詳しい情報がPSoC CreatorのHelpから得られます。
それによると、Power Cycle Modeでしか書き込みができなくなるので、Power Cycle Modeが使えない場合には、再書き込みが不可能になる、とあります。

今回使ったテストボードは変換基板程度の小規模なものだったということもあり、Power Cycle Modeでも問題は起こらないだろうと思ってプログラムを書き込んでしまいましたが、これが間違いだったようです。

原因

話はPSoC Programmerに移ります。
PSoC Programmer 3.12.2のリリースノートにあるKnown Issuesには、現在のMiniProg3のファームウエアでは、Power Cycle Modeでの書き込み時でもリセットを使用するとあります。
したがって、一度XRESを無効にする設定で書き込んでまうと、再書き込み不能になってしまうと考えられます。

MiniProg3を使ったPower Cycle Modeでの書き込みには、いろいろ問題があった(ある?)らしく、CypressのKnowledge Baseにもいくつか関連する項目があります。
参考までに、関連項目のリンクを貼っておきます。
デバイスを持っていないのでテストをしたわけではないのですが、これは独立したXRESピンを持たない48ピンデバイス特有の問題かと思います。
PSoC3のテストによく使われるCY8CKIT-001CY8CKIT-003に載っているCY8C3866AXI-040は100ピンデバイスで独立したXRES端子を持っているので、このような問題とは無縁かもしれません。

対策

現在のところ、この問題の有効な対策はないと思います。

MiniProg3の新しいファームウエアがリリースされれば、Resetピンを使わずにPower Cycle Modeで書き込めるようになると思うので、それを待ちたいと思います。


(2011年1月26日追記)
Cypress社と連絡を取って問題は解決しました。
詳細をPSoC3の書き込み(解決編)にまとめました。