2015年5月30日土曜日

FRDM-KL25Z と Olimex ケーブル

FRDM-KL25Z 評価基板で OpenSDA を(これは CMSIS-DAP とは言葉的に違うのでしょうか?)
評価基板内部に OpenSDA 機能が組み込まれており、親切なことにアダプタとして機能させることができます。FPGA の評価基板も見習ってほしいものです。

USB シリアルデバッグ アダプタ用のプロセッサ K20 が 1つ、評価対象のターゲットのプロセッサ KL25 が 1つ搭載されています。普通に利用する前に、こういう投稿をして申し訳ありません。すぐ書かないと忘れるので。

Freescale FRDM-KL25Z 評価基板、2個あると機能を確認できて面白いです。
Olimex の変換君 ARM-JTAG-20-10 のケーブル。ストロベリーリナックスさんもおっしゃるよう、この変換君は、ハーフピッチ IDC 10 way ケーブル単体で探すより安いです。
2.54 mm 2 way ピンヘッダとジャンパ
1.25 1.27 mm 5x2 10 way ピンヘッダ。もし買えるようでしたら 50 way とか長いのを買ってそれをカットして利用するのもよいかも。





  • FRDMーKL25Z を OpenSDA として利用する場合
J11 の裏側のパターンをカットします。OpenSDA のSWD クロック信号をオンボードターゲットから切り離す形で基板上の SDA コネクタ J6 を OpenSDA の SWD インターフェースとして利用します。J8 も似た形状で SWD と書かれていますが、こちらは JTAG 信号が配線されていますので、J11 をカットし J6 を利用します。


  1. J11の裏側のパターンをカット、次の層がどのくらいの深さにあるか分からないので、できるだけ基板にダメージの無いよう浅く、でも確実に切り離します。近いと半田ブリッジの原因にもなります。
  2. J11 に 2.54 mm 2 way ピンヘッダーを半田付けします。OpenSDA アダプタとして利用するときは、Open の状態で使います、ボード上のターゲットを切り離して使います。ジャンパでつなぐと出荷状態、オンボードの KL25Z につながります。
  3. J6 に 1.27 mm 5x2 10way ピンヘッダーを半田付けします。非常に間隔が狭いので半田付けには細心の注意と、ブリッジしていないか必ず確認をします。
  4. Olimex のケーブルで接続します。ケチってキーの無いピンヘッダを使いましたが、人に貸すような可能性がある場合は、極性キーのあるコネクタにします。1番ピン側にフラットケーブルの赤ラインがくるように接続します。

  • FRDMーKL25Z を純粋なターゲットとして利用する場合
ターゲットとして利用する場合、オンボードの OpenSDA の機能を停止させます。そのためには、SDA 側の USB から電源を供給してはいけません。電源は USB KL25Z と書かれている USB ポートかその他オプション電源入力方法で供給します(SDAケーブルによる電源供給も手段の一つです)。 OpenSDA 用の CPU K20 は他からの電源が入力されますが USB SDA 側の 5 V が無い場合は常時リセット状態になります。また内部 SDA の信号は 74125 タイプの 3 state buffer で hi-Z 外部アダプタの信号出力と衝突しないようになっています。接続図の 125 のシンボル間違ってますね、まったくもう。

  1. J6 に 1.27 mm 5x2 10way ピンヘッダーを半田付けします。非常に間隔が狭いので半田付けには細心の注意と、ブリッジしていないか必ず確認をします。
  2. Olimex のケーブルで接続します。ケチってキーの無いピンヘッダを使いましたが、人に貸すような可能性がある場合は、極性キーのあるコネクタにします。1番ピン側にフラットケーブルの赤ラインがくるように接続します。

  • 接続してみます
くどいですが
  1. OpenSDA 側 J 11 のパターンを切り、かつジャンパでも接続しない。オンボード CPU を切り離します。
  2. ターゲット側 USB SDA 側から電源を接続しない。オンボードの SDA 機能を停止させます。
  3. OpenSDA 側 J 6 と ターゲット J 6 同士を接続する。1番ピン側にフラットケーブルの赤。シリアルデバッグ信号を接続します。

この写真でも、ちゃっちゃと結果を出すのにターゲット側の電源を SDA 側から供給していますが、これは本当はよくありません、だめです!たまたまこの評価基板ではできるので、またネットでも良く見かけるのですが、これは憂慮されるパターンです。SWD プローブによる電源供給に慣れて、これが普通だと思うのはとても危険です。

本来は、双方に運用する電源を供給し、アダプターにはレベル変換用のバッファー IC があって、ターゲットの電圧を検出し、レベル変換 IC の 電源  Vcc A だか Vcc B だかに接続して運用するものです。それが数百ドルなんですかそうですかとも思いますが、ともあれ本来はそういうものなのです。節約するのは大事ですが、なぜ節約できているか?を理解する必要もあります。

機能的に、OpenSDAは、これ単体で PC からは USB Flash ドライブのように認識され、そのドライブにファイルをコピーするとターゲットに書き込めるようです。機能はこれから試します。



Lattice Diamond programmer でデバイスへの書き込み

評価基板デフォルトのプログラム内容を上書きします。設計済みの同じ機能を書き込むだけです。
Lattice MachXO2-7000HE Breakout Board
Lattice Diamond Programmer

  1. MachXO2-7000HE Breakout Board 製品ページから設計データをダウンロードします。製品の Web ページ、Documentation, Downloads,  MachXO2 7000HE Breakout Board Demo Design Source 1.0 をダウンロードし圧縮ファイルを展開します
  2. 評価基板を USB 接続し、Laiitce Diamond Programmer を起動します。
  3. 自動検出されたデバイスを LCMXO2-7000HE と指定します。黄色に、ハイライトされている Device 自動認識だけでは分からない種別をマニュアルで指定します。
  4. デバイスプロパティで書き込むファイルを指定します。検出されたデバイスを右クリックする、もしくは、デバイスのチェックボックスにチェックを入れて IC アイコンのボタン Device Properties をクリックする。Programming file で1.で展開したフォルダ、 bitstream にある Default_pattern_w_standby_impl1.jed を選びます
  5. デバイスに書き込む。IC アイコンに 下矢印のボタンをクリックする。書き込みを完了するまでしばらくかかります。プログレスバーとか Output ウインドウに進捗が表示dされます。点滅している LED がデバイスを消去したあたりで一度消灯します。書き込みが成功すると LED が再び点滅します。
  6. 以前と同じ動作をしていることを確認します。



2015年5月29日金曜日

ColinkEX と Olimex ケーブル

CooCox の JTAG/SWD ケーブル ColinkEx  と Olimex の変換君 ARM-JTAG-20-10


ColinlkEX だけでも 2 mm 10 pin, 2.54 mm 10 pin /20 pin 対応です、これに
Olimex の変換君で 1.27 mm 10 pin にも対応できるようになります。

ColinkEX は、CooCox 上(Win で 特定 サプライヤ用)上では JTAG ケーブルになります。 またそのほかの条件には CMSIS-DAP ファームがあります、これだけのコネクタを備えて、ここまで安いのは珍しいです、残念ですがシリアルポートは無しです。

ドライバが 2種ありまして。

  • ColinkEx_firmware_V0.4.bin: CooCox (Win のみ) で サポートされるデバイスに対しては JTAG デバッガになります。
  • colinkex_cmsis-dap.bin: オープンな CMSIS-DAP アダプタになります SWD シリアルワイア デバッガになります。(サポート対象外)

ファームの変更。
JP1 は通常オープンで使いますが、ジャンパでつないで USB ポートに接続すると USB Flash drive みたいになりますので、目的の .bin をコピーして終わり、ほかの .bin ファイルは消す。

使うときは、JP1 を オープンにする。

この便利なアダプタに、Olimex ARM-JTAG-20-10 を買うと 1.27 mm 5x2 10 way にも対応でき、ますます便利になります。

2015年5月28日木曜日

Quartus2 の導入

Quartus II のインストールとプログラミングソフトウェアがターゲットを認識するまで
  1. FTDI から最新の D2xx ドライバーをダウンロードします。実行形式の .exe ファイルですから実行します。 
  2. Altera から各種ファイルをダウンロードするために、アカウントを作ります。メイルアドレスとログイン用パスワードを設定し、アカウントを作ります。
  3. DVD から Quartus II web edition をインストールします。 私の手元にあったのは 7.2 でした。
  4. インストールされた Quartus II 7.2 Web Edition を実行します。ライセンスファイルが無い旨が表示されます。
  5. Altera にライセンスファイルの発行を依頼します。180 日有効のライセンスが適当だと思います。所定のライセンス請求のページに 利用する PC の ネットワークインターフェースの Mac アドレスを送ります。 cmd 実行、ipconfig /all  で表示される 物理アドレス. . の - を抜いた 12桁の文字列を入力します。
  6. メイルで .dat という拡張子のライセンスファイルが送られてきます。
  7. C:\altera 直下あたりにコピーします。好みの場所でよいです。
  8. Quartus2 の tools. License setup で、ライセンスファイルのあるフォルダーの位置を明示します。
  9. Quartus2 が正常に起動することを確認します。
  10. ターゲットボード  Cyclone II FPGA Starter Development Kit を接続します。
  11. ドライバーは C:\altera\72\quartus\drivers\usb-blaster\x64 この辺にあります。
  12. Programmer を実行します。QuatusII を起動し tools, programmer を実行。
  13. 左ボタン、Auto Detect で Device が正しく表示されれば成功。 
これで、開発ツール Quartus II がターゲットボードのFPGAを正しく認識したことになります。

Lattice の Diamond をインストール後に Quartus II をインストールしたところ、Diamond 側が一時 USB ケーブルというかライター機能を認識しなくなりましたが、これは、ともにオンボードのライターに FTDI のチップを使っているせいでしょう。Lattice Diamond 側のドライバーをマニュアルで再インストールしたところ、(今のところ)Lattice Diamond / Altera QuartusII 両方の環境が共存できています。




Lattice Diamond の導入

Lattice Diamond のインストールとプログラミングソフトウェアがターゲットを認識するまで
  1. FTDI から最新の D2xx ドライバーをダウンロードします。実行形式の .exe ファイルですから実行します。 
  2. Lattice から各種ファイルをダウンロードするために、アカウントを作ります。メイルアドレスとログイン用パスワードを設定し、アカウントを作ります。
  3. Lattice Diamond 開発ツールをダウンロードします。 3.4.0.80_Diamond_x64.zip をダウンロードしました。ファイルサイズの小さい 3.4.1.213_Diamond_x64.zip はなぜかうまくインストールできず、前のバージョンがおいてあるのも、そのあたりの事情かもしれません。
  4. Lattice Diamond をセットアップします。3.4.0.80_Diamond_x64.exe を実行します。
  5. インストールされた Lattice Diamond を実行します。ライセンスファイルが無い旨が表示されます。
  6. Lattice にライセンスファイルの発行を依頼します。所定のライセンス請求のページに 利用する PC の ネットワークインターフェースの Mac アドレスを送ります。 cmd 実行、ipconfig /all  で表示される 物理アドレス. . の - を抜いた 12桁の文字列を入力します。
  7. メイルで .dat という拡張子のライセンスファイルが送られてきます。
  8. C:\lscc\diamond\3.4_x64\license というそれ風のフォルダがあるのでそこにコピーします。
  9. Lattice Diamond の Help LicenseDebug というツールで、ライセンスファイルのフォルダーの位置を明示します。自動的に認識されていればこの作業は不要です。
  10. Lattice Diamond が起動することを確認します。
  11. ターゲットボード Lattice MachXO2-7000HE Breakout Board を接続します。ドライバーがインストールされます。失敗した場合は Windows, すべてのプログラム, Lattice Diamond 3.4 (64-bit), Accessories, Install&Uninstall cable drivers で FTID ドライバーをインストールします。
  12. Diamond programmer を実行します。Windows, すべてのプログラム, Lattice Diamond 3.4 (64-bit), Accessories, Diamond Programmer
  13. Create a new project from a scan で cable を HW-USBN-2B(FTDI)で OK
  14. Device で LCMXO2-7000ZE (黄色)を ▼ で 7000HE に変更、自動検出ではここまで判定できないらしい。
これで、開発ツールがターゲットボードのFPGAを正しく認識したことになります。

Diamond programmer が書き込みケーブル(この場合評価基板の組み込み FTDI ライター部分)をうまく認識しない場合。また、一度うまく動いていたのに、動かなくなった場合は、Help にもありますがドライバーの再インストールを試します。 Windows, すべてのプログラム, Lattice Diamond 3.4 (64-bit), Accessories, Install&Uninstall cable drivers でドライバーを再インストールします。

コツは、 Uninstall をくどいほど繰り返します。そんなドライバ入っていませんと言い出すまで。必要なドライバーは FTDI windows driver ですが、再インストールを試みているはずなのに、インストールが終わりましたと、スパッとダイアログが出るときは、怪しいです。きちんとアンインストールができれば、次のUSBケーブルを接続した時点で、WindowsUpdate にはこんなドライバーありませんと、ドライバーのインストールに失敗します。そこで改めて  Install&Uninstall cable drivers にてマニュアルでドライバーをインストールします。このドライバーは信用できませんだとか、警告が出れば安心です。



2015年5月27日水曜日

FPGA の利用

FPGA を利用するための記事もはじめます。

Windows XP のサポートも終了しました。 個人的に Windows 7 - 64 Bit なので、この環境を前提に進めます。開発と言わず利用と言う理由は、自前の基板を作って開発するのでは無く、売っている評価基板を買って使うだけだからです。

安く済ませるための Lattice の MachXO2-7000HE Breakout Board (MachXO2-7000HE) と、リッチに行く Altera の Cyclone II FPGA Starter Development Kit (EP2C20F484C7N) をターゲットに進めます。

Lattice は Diamond、 Altera は Quatus 2 web  edition ともにフリーの開発環境を整備します。

コスト的に問題になる JTAGプログラマ ライターは、ボードの組み込み機能を利用する方針です。仕事で本気の開発をするときには、正規品を会社に買ってもらうという前提です。

2012年12月19日水曜日

解析編スタートと今後

解析編のスタートを考えています。ビジュアライゼーション、Matlab 互換程度を目指します。が、早く実現するために、最小限必要なモジュールの有効化とその具体的利用方法の報告を優先します。

解析編のコンディション(ズ<笑)
Python3
ipython
numpy
matplotlib

で行こうと思います。
R と Wx は、やめました。

そのはるか先に
SQLite データベース
Qt GUIが来るかもしれません。気長に。

 PyVisa が Python3  に対応したら、前の記事「制御編」を  Python3 対応で書き直すべきだと考えています。

OS は、XP ですが、Debian Ubuntu Win7/8 も会社の環境に流されながらフォローしたいと思います。