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 も会社の環境に流されながらフォローしたいと思います。

2009年3月3日火曜日

NI DAQmx を Agilent の後に。Visa.dll その2

Agilent Connection Expert 15 が既にインストールされている PC に、 NI DAQmx 8.7.1 を後からインストールします。Windows XP。

NI DAQmx のインストール時に、 Agilent がインストールした visa32.dll を上書きします。でも、もとのファイルは、名前を替えて自動的にバックアップがコピーされます。PyVISA(win32) は Agivisa32.dll を使うので影響受けていません。

NI DAQ インストール後、つまり visa32.dll が NI版に上書きされても、Agilent の Connection Expert 15 は機能しました。私の環境では、GPIB バスにつながった測定器の認識等、みてる限り問題なく動いています。動いているようです。


NIの製品については詳しく無いのですが、 NI DAQmx のCDには、3つの大物がいるようです。
  • NI DAQmx 8.7.1
  • NI Labview Signal Express 2.5.1
  • NI Measurement & Automation Explorer 4.4.1
インストール時の注意は、特になく、ほとんどデフォルトの選択で進めて問題ありませんが、「自分でプログラムを作る」のは、デフォルトの選択肢ではありません。サンプルのソースを展開するには、インストールオプションで、「サンプル」を選んでおく必要があります。よく分かってないので「サンプル」と書かれたプログラム(項目?)に一通りチェックを追加しました。
  • VC++ 2003 Measurement Studio サンプル
  • VC++ 2005 Measurement Studio サンプル
  • labwindows CVI サポート サンプル <このへんが Python + ctypes には合うのかも
  • .NET Freamwork 1.1 サンプル
  • .NET Freamwork 2.0 サンプル
  • MS Visual C サンプル
  • MS Visual Basic サンプル
インストールすると、デスクトップに Measurement & Automation というプログラムのショートカットがありました。そこで NI USB-6009 を接続すると、認識され、テストパネルとか言うので個々の信号を制御できました。この段階で、「ハード的に」問題ないレベルにセットアップが出来た、ですね。


では、Python と ctypes を使って NI USB-6009 の制御を試します。
すでに賢い人が作ったコードがありますので、それをもらって自分用に改造します。
SciPy の Cookbook にいいのがありますので Google検索 もらいます。
Numpy 、Python のバージョンに合う、自分のOS用のをインストールします。

Idle で実行して、コンソールで data と入力すると電圧値がアレイに入っています。びっくりです。プログラムでは、Numpy をインポートしてます。これは、アレイデータの初期化に使っているだけです。この人、多分 Matlab 使いですね。


NI DAQmx のAPI は、Help ファイルというかたちで、PC にインストールされます。
無い場合は、インストーラでなにか適当な場所にチェックしてみる。とか。

Cookbook のソースは、アナログディファレンシャル入力、デフォルト int32(-1)なので、それをシングルエンド(10****とか)に、と改造しようとしましたが、その int32(10****) の数字をさがしたり、USB-6009固有の、この設定はできないとか、ひっかかりました。
  • Measurement & Automation のテストパネルを使いましょう。
  • API の Help ファイルを見つけましょう。Docs? Documents? の下。
  • NI のディベロッパースフォーラムにも情報がたくさんあります。
  • 人に聞く時や、セミナー等では、「Pythonで」と言わない方がいいと思います。
慣れた人なら、NI DAQmx インストール時に言語は、日本語ではなく英語のほうがいいかもしれません。最近の Matlab もそうですが、全てのドキュメントが日本語に訳されていれば、問題ないのでしょうが、「英語のドキュメント日本語化されたメニューの項目」の対応がとりにくい等、いろいろ問題があります。ディベロッパーゾーンで見つかる情報も、やはり英語ですし。

先のシングルエンドの設定にも 2種類あって、USB-6009 に出来る方と、出来ない方、基準シングルエンドとか基準無しシングルエンド、とか、そういう日本語の表示と、API 説明文の中の略語の対応を、考えないといけない、とか。ちょっと、つまづくネタが増えます。

USB-6009 のドキュメントを探すときには、USB-6008 のドキュメントのほうが充実してますので、こちらも同時に検索するといいと思います。

コードは、その、いまのところ本当に「ちょっと」改造しただけなので、公開するのが恥ずかしいのでやめときます。





2009年2月27日金曜日

Python Tuner

Python で beep を制御する。だけ。
440Hz を 0.5秒 (500mSec)
デモなので 0.5 秒と短い時間ですが、楽器のチューニングするときには、もっと時間を長めに。winsound のマニュアルには、もっといろいろなことが書いてあります。

# Win32(XP)
# Python 2.5

import winsound
winsound.Beep(440,500)