Pocket SDRハードウェア製作(第2報)

category: gnss
tags: pocketsdr sdr

はじめに

Pocket SDRハードウェアは、大きくわけて高周波受信部と、USBインターフェース部からなります。このUSBインターフェース部までの動作確認ができていたと思っていました。実は、ちょっとやらかしまして、EEPROM交換を要するかもしれません。ファームウェア回復などについて役立つと思い、公開します。

基板洗浄

前回は、USBインターフェースFX2LPのファームウェア書き込みまでを行いました。高須先生から、2022-09-05の記事にて、Windows用ドライバとしてzadigの代わりにCyUSBを利用することを教えていただきました。気がついたのが出張中でしたが、Pocket SDRのことで頭がいっぱいでした。PCのドライバを置き換えるだけですので、もうできたものと思っていました。

Unknown USB device

帰宅後、パソコンに接続した私のPocket SDRハードウェアは、白色LEDの一方が消灯のままでした。さらに、PC上のデバイスマネージャを確認したら、このUSBインターフェース部が認識されていません。「デバイス記述子要求の失敗」なんて、つらすぎます。

「何もしていないのに壊れたんです」

実は、先生方のプリント基板はきれいなのに、私のプリント基板は汚れていることが気がかりでした。その汚れである、リフロー時のクリームはんだに含まれるフラックス(はんだ付け促進剤)や、リワーク時に追加したフラックスが、絶縁や部品密着に悪影響を与えていると考えました。

そこで、ハブラシに無水エタノールをつけて、すべての表面実装部品の端子をやさしくみがき、キムワイプで拭き取って、フラックス完全除去を目指しました(参考:Aquchin工房さんYouTube 基板を洗浄する方法 ~Tips #06~)。ハブラシにもフラックスが付着しますので、時々、無水エタノールとキムワイプで歯ブラシの汚れも拭き取ります。

その過程で、今まで気づかなかった、いくつかの部品の浮きを見つけました。ひとつづつ、その部品を基板から外し、付け直しました。今まで、ハードウェア認識には30秒程度の時間を要するものと思っていました。この誤り修正により、ハードウェアがすぐにパソコンに認識されるようになりました。

しかし、依然としてこのハードウェアがパソコンに認識されませんでした。

FX2LPファームウェア回復

しかし、高須先生の記事 FX2LP書き込みに、その対処法がありました。

EEPROMジャンパを開放すれば、 FX2LP(USBコントローラマイコン)からEEPROMが切り離され、単体で起動できるそうです。FX2LPが起動できたら、そのままEEPROMジャンパを短絡してEEPROMを接続します。そして、USB Control Cenerにて、RAM領域に基本ファームウェアを読み込み、そのファームウェア一部加工して、EEPROMに転送すれば、EEPROMを初期化でき、再び新しいファームウエアを書き込めるのです。USB Control Centerの操作については、パワーオンとファームウェア書き込みをご参照ください。

RAM領域に読み込む基本ファームウェアは、Cypress(現在はInfineon)のEZ-USB Development Kit (DVK) CY3684の添付ソフトウェアの中にあります。ウェブ上のInfineon会員に登録した上で、このTools & SoftwareDOWNLOAD - CY3684Setup.exeをダウンロードしてPCにインストールすると、その中に必要なVend_Ax.hexを見つけられます。

上述の高須先生の記事内容は次のとおりです。

  1. EEPROMジャンパ端子を開放してPCに接続します。デバイスマネージャ上のユニバーサルシリアルバスコントローラーにCypress FX2LP No EEPROM Deviceが現れます。
  2. USB Control CenterのProgram -> FX2 -> RAMを選び、Vend_Ax.hexを選択します。左下にProgramming succededが表示されます。
  3. EEPROMジャンパ端子を短絡します。
  4. USB Control Centerの左側のData TransferペインからCypress FX2LP No EEPROM Device -> Configuration 1 -> Control endpoint (0x00)を選択します。
  5. Data Transferタブにて、Req typeをStandardからVendorへ、Req codeを0x00から0xA9に、それぞれ変更します。他の部分はデフォルトのままです。そして、Data to send欄にFFと入力すると、Text to sendに文字化けした1文字が表示され、Bytes to transferが1に自動変更されます。最後にTransfer Dataボタンを押します。成功すると、transfer completedの文字が表示されます。

FX2LP EEPROM clear

そのまま続けて、Pocket SDRのファームウェアファイル(pocketsdr.iic)を書き込むことができます。操作自体はとても簡単です。しかし、0xA9などのマジックパラメータや、この手順を、私には見つけられそうにありません。この手順を公開していただいて、とても助かりました。

EEPROMを壊したかも

私のハードウェアでは、Cypress USB Control Centerにてファームウェアを書き込もうとするとProgramming failedと表示されました。今まではこの操作でEEPROMにファームウェア書き込みできていたのに、できなくなり悲しいです。試しに、この書き込み失敗状態で、ハードウェアを取り外し、再び接続したら、「不明なUSBデバイス」になりました。

Cypress USB Control Center上に、ファームウエア書き込みに失敗を表すProgramming failed表示が出ても、そのまま上述のステップ4.と5.を行うことより、EEPROMクリアすることができます。USB Control CenterにProgramming succeededの文字が表示されるまで、ジャンパ線の操作をすることなく、試行錯誤できます。

ファームウェア書き込みに失敗し、そのファームウェアで起動しようとすると、一部分のみが動作しているように見えることから、EEPROMの一部が破損したと推測しています。EEPROMを多めに購入していますので、付け替えてみようと思います。きっと一回、ハードウェア作成に成功すると、作成成功率が急上昇するのでしょう。

まとめ

Pocket SDR v.0.8からは、WindowsのUSBドライバとしてCyUSBを使用します。部品の端子がきれいに見えるまで、プリント基板上のフラックスを除去します。このフラックス除去のために、無水エタノールと、ハブラシと、キムワイプを使いました。起動できなくなることに備えて、ファームウェア回復手順を知っておくことは大切です。

私は、EEPROMを壊してしまったようですので、交換してみようと思います。

Pocket SDRハードウェア完成まで、三歩進んで二歩下がってしまったような感じがしますが、あきらめません。第3報を待っていてください。


関連記事