2015年6月27日土曜日

Bluetooth の実験をするハードウェアを準備する

Bluetooth の実験をするために、相互接続が可能なハードウェアと確認用のアプリケーションソフトを準備します。
Windows PC、Android 携帯、Bluetooth-TTLシリアル通信モジュールを SPP モードで相互通信できる環境を用意します。
自分でアプリケーションを作る前に、まずは用意したハード同士の互換性があることを既存のアプリで確認します。

Bluetooth ペアリングメモ
先に起動したほうをサーチ可能と設定し、後に起動したほうがサーチを実行する。互いのリストに出現したあとにペアリングをリクエストする、リクエストした側から暗証番号を設定、リクエストされた側が暗証番号を回答。
BT module 等キーボードを持たない機器は、あらかじめ回答する番号 0000 や 1234 を持っているようなので、それにあわせて暗証番号を発行する?
一度ペアリングすると Mac アドレスから Aveilable リストに出現するが、それは、相手の 電源、Bluetooth ON か否かを示すものではない。
エラーメッセージは、そもそも接続エラーの原因が多すぎるのであまり当てにならない。
タイムアウトあり?
機能が同じシリアルでも、SPPとダイヤルアップ、GPS等、目的でプロファイル名(ID)が違うと接続できない。 iOS による SPP 利用はあきらめる。
WindowsPhone8 には SPP 利用の可能性あり。

  • Windows7-64 setup
  1. USB-Bluetooth ドングルを接続、動作確認
    パソコンショップか通販などで、できれば Bluetooth 4.0 規格のものを購入しドライバをセットアップします。手元にある携帯電話などを接続し、どういう感じでペアリングをするかなど、少し慣れておくとよいと思います。 実際にリモコンやオーディオ関連のアプリなどで動作することを確認します。
  2. Terminal Software のインストール
    特に好みが無ければ、Tera Term がよいと思います。
    この実験の範囲では、COM ポートは適宜選びますが、設定はデフォルト 9600,n,8,1 で大丈夫です。
  • BT 通信モジュール setup
    ここでは、USB-BT 一体型ではなく USB-TTL Serial(UART)モジュールと TTL-Serial Bluetooth モジュールで構成します。ARM 評価ボードの TTL Serial UART の Rx Tx を使う前の段階です。
  1. USB-TTL Serial ドライバのセットアップ(WindowsPC)
    接続すれば一発認識されますが、この手のものを始めて接続するのであれば、FTDI の最新ドライバを事前にインストールしておけば問題ないはずです。
    JY-MCU usb-uart からは、3.3V も出力されており便利です。
  2. 接続
    JY-MCU usb-uart、USB-TTL Serial 変換君 と JY-MCU BT-Board TTL Serial - Bluetooth (SPP)モジュールを接続します。
    USBUSRT BT_Boad
    3.3V ----- Vcc →
    TXD ----- RXD →
    RXD ----- TXD ←
    GND ----- GND
  • Android 4.1.1 携帯 Alcatel onetouch 5020x setup
  1. Bluetooth Terminal アプリインストール(TBD)
    今は Bluetooth Terminal をインストールしていますが、このアプリ選びが大変です。類似のアプリが山ほどある上に、評判が良くても接続できなかったりします。Bluetoothにはまだ詳しくないので、どの機能が私の環境に適している、不適であるかが分かりません。ただ、いまのころ、このアプリでなら我慢できる程度に接続の確認ができています。これからもっと良いアプリ探しをするか。ともあれハードウェア OSレベルでの接続性を確認するという目的には使えています。

  • Android 携帯 と Bluetooth module のシリアル接続 connection
    モジュール側からは、電源リセット以外何もできないので、Android 側からすべて操作します。周囲の余計な BT機器は、できればすべて OFF にすると楽です。
  1. Bluetooth module を USB ポートに接続
    リセット状態です。うまくいかない時はここまで戻ります。
  2. Windows PC でターミナルソフトを起動
    TeraTerm を起動し Serial: USB-TTL serial アダプタの COM を開きます
  3. Android 側、Bluetooth ON
    Bluetooth Terminal アプリが起動していないことを確認します。
    Settings, Bluetooth [ON] ,Bluetooth をタップ
  4. デバイスサーチ search for devices
    念のため paired リストに載っているデバイスをすべて unpair した後、画面一番下の SEARCH FOR DEVICES を実行。
    Available list に HC-06 などモジュール名が出ることを確認
  5. ペアリング Pairing
    デバイス名をタップします
    PIN を要求されます、ここでは デフォルトの 1234 を入力します
    HC-06 が Paired devices に上がって来たことを確認します
  6. アプリケーションを起動
    Bluetooth Terminal アプリをタップし起動します
    右上 メニュー、Connect a device - Secure
    Paired deceives から HC-06 をタップ
    Connected: HC-06 と表示されれば成功
  7. 互いのターミナルウィンドウにタイプした文字が表示されることを確認。
  8. Connect: HC-06 と表示されない not connected と表示される場合。
    Bluetooth Terminal アプリの停止。
    Settings, Bluetooth, Paired devices から HC-06 を Unpair
    Bluetooth [OFF]
    Windows TeraTerm 閉じる
    Bluetooth Module を USBポートから抜いて 1から再試行
ちょっとこの、失敗した後の再試行のあたりも何とかできるアプリがあればよいのですが、いまのところ、こんなことをしています。が、これで ハードウェア、OSとドライバレベルで SPP 接続に問題が無いことが確認されました。あとはきちんとしたアプリケーション。
  • Windows7-64 と Bluetooth module のシリアル接続 connection
    モジュール側からは、電源リセット以外何もできないので、Windows 側からすべて操作します。ドングルと USB-BTモジュールが同じ PC と同じターミナルソフトで確認しますが、PCが2台あったほうが手順を把握しやすいと思います。
    周囲の余計な BT機器は、できればすべて OFF にすると楽です。
  1. Windows PC の USB-BT ドングル接続
    USB-BT ドングル、写真では白い小さいほう以外は外す。
  2. Bluetooth module を USB ポートに接続
    リセット状態です。うまくいかない時はここまで戻ります。
  3. Windows側 Bluetooth 管理ソフトで BT module をサーチ
    管理ソフトもしくはBluetooth の場所、ですでに status pairedに表示、paired リストに載っていたら Unpair もしくは Disconnect し改めてサーチをかける。アイコンを削除して再度デバイスの検索をかけても良い。何かうまくいかない場合はお勧め。
  4. ペアリングする Pairing
    HC-06 をペアリングする。 passkey は 1234 を入力する
  5. BT管理ソフトで HC-06 のCOM ポートサービスを開始する
    管理ソフト上の HC-06 のアイコンをクリックすると COM ポートのアイコンがあるのでクリックする、PC のCOM ポートが割り当てられる。
  6. Windows 側ターミナルソフトを起動
    BT 管理ソフトの HC-06 デバイスのプロパティ、アイコン右クリックなどで COM番号を確認し、そのポートをTeraTerm で開く。これが PC側
  7. BT module 側ターミナルソフトを起動
    TeraTerm を起動し、USB-TTL Serial アダプタに割り当てられているポートを開く。
    これが Bluetooth module 側
  8. 互いのターミナルウィンドウにタイプした文字が表示されることを確認。
  9. うまくいかない場合
    デスクトップ上のすべてのBTおよびターミナル関連アプリケーションを正しく停止する
    BT管理ソフトで、モジュールを Un-pair、 Disconnedt する
    BT管理ソフト上で モジュールのアイコンを削除する。あとで再検索をかける
    タスクトレイの BTアイコンを使って Bluetooth を off にする (T)
    なにか詰まって反応しないアプリケーションに覚えがあれば、ログオフ、再起動する。
Windows の場合もなにせ、パーミッションを奪ったまま落ちたアプリなどがあるとすべて詰まってしまいますし、Fail の状態のデータも残っているとそれを使おうとするので、ディスコネクト、削除、停止、Bluetooth 通信機能自体の OFF を含む再起動が近道です。ちょっと製品として納入するのは怖くなるレベルです。
  • Windows7-64 と Android 携帯のSPPシリアル接続 connection
    BT モジュールは、デフォルトで周囲のデバイスから検索可能になっていますが、その他のちょっとスマートデバイスは、隠れるようになっています、なっていることがあります、ので、スマートなもの同士を探すときは、探される側が自身を検索可能にし、検出される準備が必要です。
    BTモジュールは、PIN を 1234 と自動で回答しますが、スマートなデバイスはペアリング時に同じPIN(任意)の入力を両方の端末で求められます。
    ペアリングができれば、どちらからでもシリアル接続のリクエストができそうなものですが、Windows 側の BT 管理ソフトは android の場合 BT通信モジュールのときのように SPP サービスを自動で検出できません。オーディオやらヘッドセットサービスは見つかりますが、SPPは検出されません。そのためペアリングした後に、Android 携帯の Bluetooth tarminal App 側からシリアル通信サービスの要求をします。
    周囲の余計な BT機器は、できればすべて OFF にすると楽です。
  1. Windows PC に BT-USB ドングルを接続
    すっきり試したい場合は、BT管理ソフトから Android 携帯のペアリング情報、アイコン自体も削除して始めるとよいと思います。
  2. Android 携帯の検索にかかるよう可視化
    Settings, Bluetooth [ON],Bluetooth, Cellphone name (Visoble to all nearby Bluetooth devices)にする。(windows が被検索側でもよいです)
  3. Windows PC から Android 携帯を検索 
  4. タスクトレイ、Bluetooth アイコンから、BT接続管理ソフトを起動しデバイスの検索をかけます。ここで見つかると、デバイスの検出、名前の更新が行われます。
  5. Windows PC から Android 携帯をペアリング
    BT接続管理ソフトの Android 携帯のアイコンをクリックし「ペア」します
    PC (リクエスト側)で 4桁の数字の PIN 入力(任意)を求められます。
    Android (被呼側)で 4桁の数字の PIN 入力 (リクエスト時に入力した任意の数字)します。
    Windows 側で Android 携帯の BTサービスの検索を行っても、Android にシリアル SPP が有効とは出ません
  6. Android 側 Bluetooth Tarminal を起動 SPP 通信をリクエスト
  7. アイコンをタップ、右上 menu, Connect a device - Secure, Select Windows PC, で PC を選ぶ。Windows PC 側に シリアル通信サービス許可をも求める Window が開くので許可する。このときの COM ポート番号を記録
  8. Windows PC ターミナルソフト TeraTerm で SPPの COMポートを開く
    前項の COM ポート 画像では COM15 を TeraTerm で開く
  9. 通信の確認
    双方のターミナルウィンドウにタイプした文字が表示されることを確認します。
  10. うまくいかない場合
    いつものように、どんどんディスコネクト、削除再検索して再接続します。
私の Bluetooth ドングルを接続すると、COMポートが 2つあるのですが、それがなぜか受信専用で、こちらに Android からの通信が割り当てられると、PC からの送信ができません。ここのところをもう少しはっきりさせたい、新しい双方向のポートに確実にアサインされる設定が欲しい、のですが、私が買ったドングル固有の問題かもしれませんし BTの問題とはちがうので、も少し一人でごにょごにょするつもりです。


Bluetooth 感想
いままでほとんど無視してきた Bluetooth ですが、もう枯れた技術だろう、ペアリングとか言うのをしてターミナルソフト起動すればシリアル通信できるんでしょ?とか思っていましたが、けっこう大変でした。
SPP というプロファイルを使えば、とか、だから、プロファイルって何?そもそもホスト-デバイスみたいな定義があるのか、検索?ペアリングの手順? 30秒タイムアウト、思わぬディスコネクトからの復旧、またユーザーによるローレベルな手順の制御が必要で、いろいろおどろきました。
いまだに USB からモジュールを引き抜いたり ディスコネクトボタン連打、アプリの再起動、BT ON/OFF の繰り返しです。慣れるまでまだしばらくかかりそうです。どっちを先に電源入れてとか、今どっちがサーバ?とかまだはっきり自信がありません 笑
いまだ(私の知識不足により)不安定ではありますが、ハードウェア、OS、ドライバレベルでは、相互に接続が可能な物がそろったところです。






2015年6月22日月曜日

Android studio に実機の携帯電話 Alcatel を接続する

PCに Android studio をインストールし、ターゲットの Android 携帯電話を USB 接続する。

Windows7-64bit PCに必要な Android studio 開発環境を整え、ターゲット携帯電話 Alcatel One Touch M'pop 5020X (詳細仕様) を USB で接続し、PC でビルドしたアプリケーションを実機に転送し、実行します。root 化とやらは必要ありません。

PC側では Java のインストール、Android studio のインストール、携帯電話ドライバーのインストール。携帯電話側は、開発者モードの有効化、USB デバッグモードの有効化。PC側で Android studio を実行し、デバッグモードの携帯電話をUSBで接続、サンプルコードをビルドし携帯電話に転送して実行するという手順です。

x768 ディスプレイ Tips
Android studio の minimum requirements にディスプレイ要件があります。
1280 x 800 minimum screen resolution 
これを満たさないと絶対使えないわけではありませんが不自由があります、開いた Window の枠が 表示エリア外に出てしまいます。ですが対策すればなんとかなります。
  1. Window を 矢印キー Arrow key で動かす
    ディスプレイよりも大きいウィンドが現れたら Window を動かそうにもマウスで枠をポイントできませんのでキーボードショートカットを使います。
    Alt + space , M (移動), キー (Arrow key、 矢印キー)
  2. タスクバーを移動もしくは隠す、下の表示面積をかせぐ。
    タスクバーの場所を左にするか、タスクバーを自動的に隠すオプションを選択します。
  3. シミュレータの絵を 50% 等に縮小します
    AVD manager でスケールを設定します。
     



  • PC 環境整備
  1. Java JDK7 をインストールします
    JDK7 jdk-7u79 の windows 64 版をインストールします。JDK8 はまだ早いかも?という意見が多いようですのでそれに従い 7にします。
  2. Android studio をインストールします
    Android studio をダウンロードしインストールします。手順はネット上にたくさんありますので先達の教えに従います。私がダウンロードした版は android-studio-bundle-141.1980579-windows.exe でした。この段階でサンプルコードがシミュレータ上で実行できるはずです。
  3. スマートフォンの android USB driver を PCにインストールします。
    携帯電話を製造している各会社が提供しているようです。 Alcatel は FAQ にありました。
     .rar で圧縮されていましたので lhaz64 で展開しました
  • Android 携帯電話設定
  1. USB debugging を有効にします
    開発者モードにする方法は、ファームウェア バージョン番号を 7回押すとかあるらしいですが、4.1.1 ではその操作は不要でした。
    Settings, About phone, Advanced settings, Advanced settings [ON], USB debugging[V]
  • 実機を接続してアプリケーションを実行します
  1. Android studio を起動し、New project を作成します。
    File, New, New Project, Blank activity このとき、ファームウェアの互換性バージョンを 4.0 とか低いものにすると、低機能ですが、コアな構成、不必要にたくさんの階層にならず私のような初心者には、とっつきやすいのではないでしょうか?ためしに最新の 5.1 と 4.0 で新しいプロジェクトを作ってみてください。
  2. サンプルプロジェクトの実行(シミュレータ)
    この時点で、Hello world のサンプルコードが入っていますのでシミュレータ上で動作を確認できます。
  3. 実機 Alcatel を接続しサンプルプロジェクトを実行します
    携帯電話 Alcatel を USB ケーブルで接続し run で実行します。
    今度は、シミュレータだけでなく実機も選択できるようになっています。
    もちろん実機を選択します。

  4. ソースを変更し再度ビルド、実行するとその変更が実機で反映されていることを確認します。
    strings.xml を書き換えただけです。
    アプリケーションのアイコンが2個ありました。あれ?えーっと?どういう?
ともあれこれで、自分の Android 携帯に俺様アプリをインストールして実行できるようになりました。ケーブルをはずしても大丈夫です。アプリケーションのアイコンをタップすると実行されますし、停止も普通のアプリと同様にできます。削除も、普通のアプリと同じ手順で削除できます。


2015年6月11日木曜日

NUCLEO の mbed プロジェクトを Keil uVison5 で Build Debug

ST micro から発売されている評価基板 NUCLEO-F072RB 、オンボード ST-Link/V2-1 デバッグアダプタ込み、を PCに接続し、ARMmbed で作ったプロジェクトを、フリーの開発がサポートされている Keil MDK-ARM for STM32F0 and STM32L0 に Export し、ソースコードをコンパイル、ビルドし、デバッガが利用できることを確認します。

ARM mbed で Export したプロジェクトを展開し Keil uVison5 で開き、コンパイル、リビルド、デバッグまで行うには、Options for target の 2箇所をマニュアルで調整しなくてはいけませんでした。

Migrate ARMmbed project to Keil uVison5

  • Options for target - Linker - Misc controls
    文字数制限超え
    mbed output over "maximum number of letters" limitation
  • Options for target - Utilities - Configure flash menu command - Settings - Programming Algorithm
    未設定なので STM32F0xx 128kB Flash に設定
    Flash download - need to configure programming algorithm 

mbed で Export したプロジェクトは、Project Open で開き、Version 5形式に変換します。上のボタンで取り込む。

  • Options for target - Linker - Misc controls
    mbed output over "maximum number of letters" limitation

    Misc controls の中身をコピーし、エディタで余計な Space を削除し文字数を減らした後書き戻す。
  1. Options for target - Linker - Misc controls の中身をすべて選択しエディタにコピー
    Select all, copy to text editor.
    Ctrl-A will not work in this text box.
  2. エディタ上で、タブ埋めのスペースを削除する
    Remove extra tab filling spaces to reduce the number of letters
  3. Misc controls にコピーする
    Select all and copy to misc controls text box
    これで、Keil 側の文字数制限にひっかからなくなりました。
この時点で、コンパイルは正常に終了し、 .bin  ファイルが \build フォルダに生成されます。この .bin ファイルをデバッガのフラッシュドライブに転送するとターゲットの書き換えができます。
この状態ではまだ、デバッガの開始に失敗しました。デバッガを正しく動かすには、Flash download tool を正しく設定する必要がありました。
  • Options for target - Utilities - Configure flash menu command
    プログラミングアルゴリズムを追加します。
  1. Options for target - Utilities - Configure flash menu command-setting ボタン。
  2. アルゴリズムを追加します。
  3. ターゲットのアルゴリズムを選択し追加します。
  4. これでデバッガが正しく起動し、Run Stop Step 実行など行えます。
    It works!

念のため、ソースを編集し、リビルド、デバッグ、Run 等行い変更が正しく機能に反映されていることを確認します。



NUCLEO-F072RB を Keil MDK-ARM for STM32F0 and STM32L0, Version 5 uVison5 で

ST micro から発売されている NUCLEO-F072RB という評価基板、オンボード ST-Link/V2 デバッグアダプタ込み、を PCに接続し、フリーの開発がサポートされている Keil MDK-ARM for STM32F0 and STM32L0 で利用します。Keil MDK Version 5 のインストールと NUCLEO-F072RB 用 Example コードをコンパイル、ビルドし デバッガが利用できることを確認。


  • Keil MDK-ARM for STM32F0 and STM32L0 のインストール
    基本的に、準備されているインストラクションガイドどおりに進めれば問題なく、インストール、アクティベイト、サンプルコード (Example)の入手を滞りなく進められます。
  1. 実行型インストーラをダウンロードしてインストールします。
    評価版を利用者情報を記入しダウンロードし実行します。
    インストラクション Pack Installer 左右のペインがデフォルトと逆なので戸惑うくらいです。
  2. アクティベイション ガイドに従います
  3. サンプルプロジェクト Example project の入手 ガイドに従います。
    インストラクション Pack Installer 左右のペインがデフォルトと逆です。
    [v] Show examples from installed packs only  ボックスのチェックをはずします。
    すると NUCLEO-F072RB 用の Example Project がリストに現れます。


  • Example コードのコンパイルとデバッガの機能確認
  1. Example project を開く
    Example には、まさにターゲットの NUCLEO-F072RB 用の Example Project がありますので、展開した C:\Users\user\Documents\Boards\ST\NUCLEO-F072RB\Blinky にあるプロジェクトを開き、コンパイル、ビルドすると、デバッグモードで Run Stop ステップ実行まで滞りなく行えます。
  2. Example の Blinky.c ソースを編集し、リビルドし、機能が変更されていることを確認します。
これで、Keil uVison5 の開発環境、PCのドライバ類、ST-link/V2-1 組み込みデバッグアダプタを含む NUCLEO 評価基板、が正しく動いていることになります。

2015年6月10日水曜日

NUCLEO-F072RB の接続

ST micro から発売されている NUCLEO-F072RB という評価基板、オンボード ST-Link/V2 デバッグアダプタ込み、を PCに接続し、PC側のドライバと、オンボードの ST-Link/V2 デバッグアダプタのファームウェアを更新します。 mbed のサンプルプロジェクトを Em::blocks へ流し Debug モードで実行するところまで確認。


  • PC側 ドライバ自動セットアップ
    同梱の説明書どおりに USB 接続するだけで、ドライバが組み込まれますが、2つだけ自動では発見できませんでした。デバッグアダプタ ST-LINK/V2 の デバッグアダプタと仮想COM ポートドライバが見つかりません。
  • PC側ドライバ マニュアルインストール
    NUCLEO-F072RB のリンク先にある、ST-LINK/V2-1 USB Driver on Windows XP ここでは STSW-LINK009 をダウンロードし展開します。ちゃんと AMD64 Windows7-64Bit のドライバもあります。

NUCLEO-F072RB のリンク先にある Software リスト

Related Tools and Software

Related Tools and Software

製品型名Description
STSW-STM32132STM32F0xx internal RC oscillators calibration (AN4067)
MBED-F072RBOnline IDE for NUCLEO-F072RB at ARM mbed
STSW-LINK007ST-LINK/V2-1 firmware upgrade
STSW-LINK009ST-LINK/V2-1 USB driver on Windows XP (including WinUSB coinstallers)
STM32CubeF0Embedded software for STM32 F0 series (HAL low level drivers, USB, File system, RTOS, Touch Sensing - coming with examples running on ST boards: STM32 Nucleo, Discovery kits and Evaluation boards)
X-CUBE-NFC1STM32Cube expansion software for X-NUCLEO-NFC01A1

  • ST-LINK/V2 ファームウェア アップグレード
    上のリストにあるように、STSW-LINK007 をダウンロード展開すると、アダプタのファームウェアのアップグレードを自動実行する .exe がありますので実行します。
ST-LINK/V2 は完成度が高いようです。Freescale P&Emicro 版では、デバッグアダプタ、仮想 COMポート、フラッシュドライブ型のダウンローダ、3 つの機能を同時に実現するアダプタ用のファームウェアはありませんでしたが、ST-LINK/V2 はこのひとつのファームで、3機能を同時に実現しています。便利そうです。

当然であるかのように ARMmbed にて NUCLEO-F072RB プラットフォームを追加し、サンプルのNucleo_blink_led プロジェクトをコンパイル、生成された .bin ファイルを フラッシュドライブイメージにコピーするだけで動き出します。
そして、このプロジェクトは Em::Blocks に Export することができ、Em::Blocks では、ST-Link/V2 を標準でサポートしますので、デバッグアダプタ経由、デバッグモードでの Run Stop Step実行 デバッグを実行できます。

この、mbed で標準ニモニックに定義された名称(LED とか)、同じライブラリを利用するので、ソースコードは、Freescale FRDM-KL25Z で実験した main.cpp とまったく同じと言ってよいものになります。
CPU の違い、ピンの違い、クロック周波数の違いなど意識させずこのレベルに持ち込めるのは、正直すごいと思いました。
そして、自動生成された、ヘッダファイル類もろとも、各種商用・フリーの IDE に Export できるのですから、まさに Rapid prototyping すばらしい環境です。

追記:すいみません、この記事に書いたようなことは、すべて mbed の個別プラットフォームサポートのページにすべて書いてあります。









2015年6月8日月曜日

NUCLEO-F072RB で ARM 開発環境を試す

ST micro から NUCLEO-F072RB という評価基板が出ています。いろいろ調べていると STmicro のデバイス、ST-link デバッグアダプタともに非常に広い範囲の開発ツールで標準でサポートされています。この ST-link は、STM デバイス 専用ですが、安価であることでも有名です。

評価基板のほうは、とりあえず性能云々より、開発ツールを評価したいときの参考ハードウェアになりそうです。 uVison Keil からもフリーでの開発がサポートされているのは驚きです STmicro Cortex-M0, Cortex-M0+ 限定版。ほかにもというか、ほとんどの ARM の IDE でネイティブサポートされているのではないでしょうか?ちょっと注文しておきました。評価基板には、ST-Link 機能が組み込まれていますので、別途購入する必要はありません。

FRDM-KL25Z 評価基板については、その後 Em:Blocks でデバッグアダプタの接続に苦労し。CMSIS-DAP モードでデバッグアダプタが一発認識された Cross works では mbed からのプロジェクトのインポートがいまひとつといった状況です。

あちらを立てれば、こちらが立たず、という感じです。

2015年6月7日日曜日

mbed のプロジェクトを Em::Blocks で コンパイル しターゲットに書き込む

オンラインツール ARMmbed で開発(え?笑)したプロジェクトをローカルの HDDにダウンロードしてPC 環境で、コンパイル、ビルドしてターゲットに書き込む。 Gcc 使えます。

オンラインであっけなくできた .bin ファイル。同じソースファイルをもとに PC でコンパイルし同じ結果を得たい。同様のことは先人 va009039 さんがおられ解決済みでしたので、フォローします。 .elf ファイルから .bin ファイルを作る post-process を追加しました。基本はこちらの記事です。本当にありがとうございます。

IAR も Keil も持っていませんから、Em::Blocks が何か調べたところ、とてもよさそうなので使うことにしました。J-link も持っていませんので JTAG デバッグアダプタはまだ正確に設定、確認されていません、それはまた後ほどがんばりましょう < ネットで調べるだけでいけますねー

  • mbed のプロジェクトを Export します。
    商用コンパイラを持っていないので、GCC, CooCox, EmBlocks の選択肢 
  • Em::Blocks をインストールします
    別途 Gcc をインストールする必要も無く、バッテリー同梱。で 40MB?
  • mbed で Export したプロジェクトを Em::Blocks で Import しコンパイル
  1. mbed からプロジェクトを emblocks オプションで export。ダウンロードし zip を展開
  2. EmBlocks から File Open Project では無く Import Project - EmblocksIX で import
  3. リンカーセッティングの変更
    Build option - Linker settings - Libralies にて mbed を上に持ってくるのが大事だそうです。
  4. .bin ファイルを自動生成する post build steps を追記。
    FAQ の How do I create a binary file from the output? に従いコピペします。
    Build option - Pre/post build steps - Post
  5. コンパイル、ビルド で .bin ファイルが \build フォルダにできます。
  • .bin ファイルを ターゲットに書き込み動作を確認
    FRDM-KL25Z の Open-SDA は、昨日書き換えた mbed ファームウェアのままなので、フラッシュドライブ mbed ドライブに .bin ファイルをドロップ。ターゲットをボタンでリセット
  • ソースを変更し、再コンパイル、ビルド、書き込み、リセットすると機能が変わることを確認します。
びっくりです。
面倒なデバイス設定ファイル、ピンファイル等の生成は mbed に任せて自動生成です。しかもそれは行儀良く標準的 なニーモニックに名付けられますから、面倒も無し。


追記 --- 18 June 2015

Em::blocks で FRDM-KL25Z のUSB デバッガの認識は完了していません。
FRDM- USBデバッガは標準のメニューに無いのでマニュアルで設定し認識させないといけないようです。

本来であれば FRDM ボード、もしくは FRDM インターフェース、P&E micro インターフェース か CMSIS-DAP インターフェース と KL25Z ターゲット と選べればよかったのですが、なにやらプロプラエあたりの大人の事情があるみたいです。G 系の人のこういうビーガンベジタリアンみたいな態度にはつくづく... ともあれ、まだ途中なのですが、できる人の助けになればと思い、現状を記録



他集めた情報から、OpenOCD の設定を以下のように設定すると途中までうまくいきました(笑





もうちょっと!

あとは、ターゲット。cfg ファイル内容とか、ターゲットの Reset や Holt のシーケンスをうまくすれば何とかなりそうです。というのも、かたや同じ Gcc ツールチェインを利用する Cross Works がまったく同じファーム、ハードウェアできちっとデバッガを動かしていますから、絶対に何とかなるはずです。



2015年6月6日土曜日

ARMmbed で .cpp を編集 コンパイルして書き込む FRDM-KL25Z

前記事の最後で、FRDM-KL25Z のコンパイルされたデータ .srec ファイルを OpenSDA 経由で書き込みましたが、今回は、ソースからコンパイルしてターゲットのKL25Z に書き込みます。

まだ、どのツールチェインを自分のメインにするか決めかねています。そこで目にしたのが ARMmbed という仕組みでした。悪くなさそうだと思います。オンラインで全部用意されている環境を利用してコンパイルし、ダウンロードした .bin ファイルをオンボードの KL25Z に書き込みます。
この mbed から出力される .bin ファイルを書き込むのに、OpenSDA のファームウェアを mbed 用のファームウェアに書き換える必要があります。


  • ARMmbed の利用開始
  1. ARMmbedにアカウントを作ります
    ログイン名、メイルアドレス、ログイン用パスワードを設定し、自分のアカウントを作ります。
  2. Compiler ページでターゲットプラットフォームを選択します
    FRDM-KL25Z を選択します。この時点で LED 点滅のソースが現れます(!)
  3. コンパイルしてみます。
    コンパイルというボタンがあるので押してみると、mbed_blinky_KL25Z.bin というファイルがダウンロードされます。ちょっと驚きです。
  • OpenSDA ファームウェアの書き換え
  1. ファームウェアをダウンロード
    プラットフォームのページには個々プラットフォーム依存のファームウェアアップデートの方法などが記載されています。ARMmbed FDRM-KL25Z のページからリンクされている  mbed用 OpenSDA のファームウェアをダウンロードします。https://developer.mbed.org/handbook/Firmware-FRDM-KL25Z
    今日の時点で 20140530_k20dx128_kl25z_if_opensda でした。
  2.  ダウンロードしたファイルを展開します。Zip ファイルです。
  3. FRDM-KL25ZをBootload モードで接続し、ファームウェアを更新します。
    基板上の Reset ボタンを押しながら USB SDA側に接続します。LED が点滅したら RESET ボタンを離します。現れた Flash Drive, Bootloader に展開した 20140530_k20dx128_kl25z_if_opensda.s19 ファイルをコピーします。再度接続すると OpenSDA は新しい mbed 用ファームウェアで動きます。
  • 設計変更、再コンパイルと書き込み
  1. はじめのコンパイル済みデータを書き込みます。
    はじめの手順でダウンロードした mbed_blinky_KL25Z.bin を現れた mbed ドライブ、フラッシュドライブにコピーします。
  2. ターゲットをリセットします。リセットボタンを押すと LED が点滅します
  3. ソースを変更しコンパイルします。
    Line 8, Line 10 あたりの wait(0.2); を wait(2.0); あたりに変更して、再度コンパイルボタンを押します。新しい mbed_blinky_KL25Z.bin がダウンロードされます。
  4. ターゲットを書き換えます
    手順 1に戻り、新しくダウンロードした、mbed_blinky_KL25Z.bin をターゲットに書き込み、基板のリセットボタンを押すと、LED の点滅スピードが変わっていることを確認します。

隔世の感がありますね。
ラップトップからプリンターポートが消え、USB経由の GPIO を何とかしようと苦労していましたが。意外なところで解決策に出会えたような気がします。これなら社内で同僚と使ったりもできそうです。 Arduino IF ピンには馴染めませんが、ここまで流行ってしまうと、もう止めようがありません飲むことにしましょう。

この設計データを、オフラインのツールチェインに組み込む手順も用意されているようです。



2015年6月4日木曜日

Linux ディストリビューション 正直 Debian でも

これから Linux をインストールするとすれば、Ubuntu の LTS でおよそ問題ありません。だた、FPGA 開発ツール等商用パッケージを Linux ベースで使いたいとなると RedHut, Suse 等 エンタープライズ系 Linux を利用するほうが便利です。

Python, Embedded ARM, KiCAD, Eclipse もろもろ、どちらでも動きますし、けど Emmbeded Linux OS となると Debian のほうが優勢です。あ、Android とかちょっと別にしてすいません。

ですが、困るのが FPGA 開発ツール等の商用パッケージを Linux で使いたい人。Windows 版がいくらフリーとはいえ Ubuntu のパッケージマネージャに名前が出てくるほどやさしい状況ではありません。

いろいろ勉強する努力を最小限に済ませるという基本方針から、Linux ディストリビューションは選択肢があれば、Debian。デスクトップは Ubuntu LTS、古いラップトップや組み込みに Debian 系があれば、そっちを選びます。

Python 等は、Windows より苦労が少ないので Ubuntu 上で使うのはお勧めです。

でも、普通に社会人をしてて、会社の IT IS 部門の管理者が社内に Linux PC をネットに接続させてくれるかというと、いろいろ面倒です。そのくせ、IT 求人には Linux 使える人みたいな求人もある世の中の矛盾。こまったものです。が、まぁ、なんとか生きていきましょう。

2015年6月3日水曜日

Freescale FRDM 評価基板 の Open SDA 周り

USB から ARM プロセッサに接続される OpenSDA 部分は、FPGA で言うところの USB-JTAG アダプタ、USBコンフィグPROM ライタに相当する物のようです。JTAG サポートについては、まだ二の次扱いのようで、SDA シリアルアダプタ としてがんばっているようです。SWD とも言われるモードだと思われます。

Freescale の FRDM 評価基板の OpenSDA 部分について、一応礼儀正しくドライバ、ファームウェアの更新から、コンパイル済み PreCompiled データをターゲットに書き込むあたりのことをしてみます。

  • Open SDA ファームウェアとアプリケーションのアップデート P&E Micro から


  1. 最新の FRDM 用 OpenSDA ファームウェアを P&E Micro からダウンロードします
    P&E Micro にメイルアドレスとログイン用パスワードを登録してユーザアカウントを作ります。
  2. FRDM 評価基板を USB SDA側 で接続します。
  3. ファームウェアのバージョンを確認するとともに、最新のファームウェアを P&E Micro からダウンロード 展開します。
    接続した SDA のフラッシュドライブイメージにある SDA_INFO.HTM をブラウザで開きます。
    Firmware Apps のリンクをたどります。P&E Micro のサイトに ログインして、ファイルをダウンロードし、展開します。 今日のファイルは、Pemicro_OpenSDA_Debug_MSD_Update_Apps_2015_03_12.zip でした。ドライバーフォルダは展開してもまだ .Zip なのでこれも展開します。SDA 関連のファームは、拡張子 .sda のようです。  
  4. OpenSDA部分のプロセッサは、カーネル、ブートローダ、アプリケーションという構成のようです。ブートローダとアプリケーションを最新のものに更新します。スクリーンショットは、試行錯誤中の中途半端なバージョン。購入後の評価基板の SDA ファームウェアの状態は、ブートローダ、アプリケーションとも Ver. 1.09 でした。
  5. 評価基板を SDA Boot mode で接続します。
    基板上のリセットボタンを押しながら、USB ケーブルを USB SDA 側コネクタに挿入すると SDA パートそばの LED が点滅(ブートモード)になります。Reset ボタンは離してよいです。今回は フラッシュドライブイメージの フォルダ名が “BOOTLOADER” になっています。
  6. 最新の Bootloader ファームウェアをフラッシュドライバイメージのドライブにコピーします。
    展開したフォルダ OpenSDA_Bootloader_Update_App_v111_2013_12_11 の BOOTUPDATEAPP_Pemicro_v111.SDA ファイルを フラッシュドライブ(評価基板のドライブ)にコピーします。
  7. 評価基板を再度接続します。
    行儀良く、ドライブ 取り出し を行ってケーブルを再接続します。USB SDA ポート
    ドライバを更新すると、アプリケーションは削除というか、無効になり、ボード上の RESET ボタンを押していないのに(アプリケーションが無いので?)Bootloader モードで起動します。
  8. 最新のアプリケーションをコピーします。
    “BOOTLOADER” に MSD-DEBUG-FRDM-KL25Z_Pemicro_v114.SDA をコピーします。
  9. 評価基板を切り離し再度接続します。
    行儀良く、ドライブ 取り出し を行ってケーブルを再接続します。 USB SDAポート
  10. bootloarder と アプリケーションが更新されていることを確認します。
    接続した SDA のフラッシュドライブイメージにある SDA_INFO.HTM をブラウザで開きます。
    BootLoarder が 1.11 アプリケーションが 1.14 の更新されています。
これでお作法どおり、買ってきた評価基板の OpenSDA 部分のファームウェアの類を最新の状態に更新した、ということになります。

  • ターゲット コントローラ KL25Z のプログラムの書き換え Freescale から
  1. 評価基板のコンパイル済みデータをダウンロードします。
    FRDM-KL25Z Quick start package をダウンロードして展開します。
  2. コンパイル済みデータを評価基板に書き込みます。
    PreCompiledExamples の .srec ファイルを 評価基板のフラッシュドライブにドラッグアンドドロップするとデータが転送されているようです。フラッシュに書き込まれているのでしょう。電源落としても平気です。 FRDM_KL25Z_OOBE_Demo.srec が出荷時に書き込まれているイメージのようです。
  3. どんどんファイルをドラッグ&ドロップして機能が変わることを確認します。
さて、この .srec ファイルをどうやって生成するのでしょうか。。。。 笑
あと ちらっと CMSIS-DAP_OpenSDA.S19  というファイルを見かけました。うーん一体どうつながるんでしょう?試してみます。.s19 ってなに?
SDA アプリケーションのファイル名はどうももともと MassStrageDevice フラッシュプログラマ というアプリケーションと P&E デバッグというアプリケーションがあったのが一緒になったのかな?古いファイル見るとそういう構成のようです。
この状態で、シリアルポートがひとつ Open SDA  CDC - Serial Port (COM *) というのがありました。
この構成でターゲット側のフラッシュの書き換えにも成功しました。


Quartus II でデフォルトの verilog 設計データをコンパイルして書き込む

前記事では  Cyclone II FPGA Starter Development Kit の用意された .sof .pof ファイルをスタンドアロン プログラマソフトで書き込んだだけでしたが今回は、設計データの verilog ソースを、少し編集して、コンパイルして .sof .pof ファイルを生成し、Quartus II からデバイスに書き込みます。

DK-CYCII-2C20N : Cyclone II FPGA Starter Development Kit 評価基板
Quartus II ソフトウェア
\CSK_demonstrations\CSK_Default デフォルトプロジェクトの設計ファイル 

添付の CD-ROM に入っている設計ファイルをローカルの HDD にコピーして Quartus II ソフトウェアで、デフォルトで評価ボードに書き込まれているプロジェクトを開き。verilog ソースを編集し、デモ基板で点灯して動いている緑の LED を 3つから 4つにします。 verilog ファイルを保存し、Quartus II ソフトウェアで、コンパイルし、Quartus II ソフトウェアから評価基板上の FPGA に書き込みます。


  1. 設計ファイルをローカルの HDD にコピー
    添付 CD-ROM の \CSK_demonstrations\CSK_Default フォルダを C: にコピー
  2. 評価基板を接続します。
  3. Quartus II ソフトウェアで CSK_Default プロジェクトを開く。
    File, Open project
    CSK_Default.qpf を開く
  4. LEDG_Driver.v を開く
    Project Navigator - Window
    Files - Tab
    LEDG_Driver.v をクリック
  5. LEDG_Driver.v を編集
    Line16 mLED <= 8'b00000111;

    Line16 // mLED <= 8'b00000111; コメントアウトして 1 を 4つに
    Line17 mLED <= 8'b00001111;
  6. LEDG_Driver.v を保存
  7. プロジェクトをコンパイル
    Processing, Start Compilation  紫の右矢印
  8. Quartus II 内部のプログラマを起動
    Tools, Programmer  ICにケーブルのアイコン
  9.  プログラミングケーブルを選択
    Programmer - Window の Hardwere Setup ボタン
    Currently Selected Hardware を USB-Blaster に
  10. Mode の選択
    FPGA に直接書き込む場合は Mode: 
    JTAG で File: CSK_Default.sof
    PROM に書き込む場合は Mode: Active Serial Programming で File CSK_Default.pof
     
  11. デバイスへの書きこみ
    Start 青右矢印 ケーブルアイコン
  12. デモの内容が変更されていることを確認します。
    右側、3個流れて点灯していた LED が 4個になっています。 KEY0 を押して確認

2015年6月2日火曜日

Altera Stand-Alone Programmer でデバイスへの書き込み

評価基板デフォルトのプログラム内容を上書きします。設計済みの機能を書き込むだけです。
Quartus II ではなく、スタンドアロンプログラマで、.sof .pof ファイルをデバイスに書き込みます。Quartus II から書き込んでもかまいません。

DK-CYCII-2C20N : Cyclone II FPGA Starter Development Kit (評価ボード)
12.1_177_programmer_windows.exe (プログラマセットアップ用実行ファイル、ALTERA)
CSK_Default.sof
CSK_Default.pof
CSK_i2sound.sof
CSK_i2sound.pof 等、評価ボード用にコンパイルされたデータ。

.sof と .pof の違い。Lattice の XO2-7000HE はコンフィグROMも内臓のデバイスでしたので JEDEC ファイルを書き込むだけでした。Altera の Cyclone II はコンフィグROM が外付けの 標準的な FPGA です。コンパイル終了後デバイスに書き込むファイルは、.sof ファイルと .pof ファイルの 2種類があります。JTAG経由でデバイスに直接書き込む場合は、.sof ファイルを使います。コンフィグROM に書き込む場合は .pof を利用します。
.sof で直接デバイスに書き込むと、動作中に機能を変更できますが、電源を落とすと FPGA の変更内容は失われます。システムで、自分ひとりのために電源を落とせないような状況では、こういう方法も便利です。
評価基板には、RUN/PROG スイッチがついており、RUN の位置では、デバイスに直接書き込み .sof でFPGA の内容を変更できます。コンフィグROM に書き込む場合には PROG の位置 で .pof の内容を コンフィグROM に書き込みます。
  • Quartus II Stand-Alone Programmer のインストール
Altera のサイトから Stand-Alone Programmer をダウンロードしインストールします。Quartus II から、開発しそのまま書き込む場合にはこのソフトウェアは不要ですが、誰か人に書き込みを頼むような場合には、フルセットの Quartus II をインストールするより気軽です。ライセンスファイルは不要です。
12.1_177_programmer_windows.exe
インストール後はじめの1回だけ、プログラミングハードウェアのセットアップを行います。左上の Hardware Setup ボタンです。USB-Blaster を選択します。
電源を入れた評価基板を接続し、Auto Detect を実行しデバイスが認識されるか確認します。
とりあえず下のデバイスを選んでおきます。これは簡単なソフトウェア、ドライバー等の機能確認が目的で、書き込みのための手順ではありません。

  • FPGA に直接書き込み .sof ファイルを用いて直接書き込み 
評価基板の電源 ON の状態で コンフィグレーションスイッチを RUN の位置に、FPGA の内容を JTAG で直接変更します。
  1. Stand-Alone Programmer を再起動します。
    Stand-Alone Programmer を一度終了させ。再度実行します。デバイスが何も検出、選択されていない状態からはじめます。 Mode は JTAG mode です。Auto Detect で検出されたデバイスを手動で Delete してもかまいません。
  2. ファイルを選択し追加しますAdd file ボタンで、\CSK_demonstrations\CSK_Default の CSK_Default.sof を選択します。
  3. Start で FPGA にデータが書き込まれます。
デモボード用に用意されている、いろいろな .SOF ファイルを選んで書き込み、機能が変わることを確かめます。そして、この方法で変更した内容は、コンフィグROM には書き込まれていないので。電源を一度落とすと、FPGAの機能は、もともとコンフィグROM に書き込まれている内容に戻ります。

  • コンフィグROM への書き込み .pof ファイルを用いてコンフィグROM の内容を変更
評価基板の電源 OFF の状態で コンフィグレーションスイッチを PROG の位置にして 電源をON にします。コンフィグROM の内容を .POF ファイルで変更します。
  1. Stand-Alone Programmer を再起動します。
    Stand-Alone Programmer を一度終了させ。再度実行します。デバイスが何も検出、選択されていない状態からはじめます。 バイスを手動で Delete してもかまいません。Mode を Active Serial Programming に変更します。
  2. ファイルを選択し追加しますAdd file ボタンで、\CSK_demonstrations\CSK_Default の CSK_Default.pof を選択します。デバイスが ROM の型番号 EPSC4 に変わっています。
  3. Program/Configure [] にチェックを入れます。 

  4. Start で コンフィグROM、 EPSC4 にデータが書き込まれます。
  5. 電源を OFF、スイッチを RUN の位置に戻し、電源を ON して、機能を確認します。
デモボード用に用意されている、いろいろな .POF ファイルを選んで ROMに書き込み、電源を再投入すると、機能が変わることを確かめます。そして、この方法で変更した内容は、コンフィグROM に書き込まれているので何度電源を落としても更新された内容は変わりません。


Python3 で解析する環境 Numpy と matplotlib

Python3 + Ipython の環境の上に SciPy の一部 Numpy と matplotlib をインストールします。これで Excel や 基本の Matlab 程度のことができるようになります。

会社や学校で、同僚や一緒に作業をする人のPC にPyhton をセットアップするとき。基本のPython と追加に必要なファイルを USB フラッシュなどに用意しておくとバージョンがどうのとか、コンパイラをインストールしてとか、わずらわしい作業を減らせます。一時期これができなくなって困っていましたが、最近 Pyreadline あたりの問題が解決して Windows 環境でも、前のように小回りが利くようになりました。

  • pip3.4 で直下にあるコンパイル済み .whl ファイルを直接指定してパッケージをインストール
  1. 自分の Python (2/3) WIndows (x86 32bit / AMD 64bit)に適したコンパイル済み .whl ファイルを Unofficial Windows Binaries for Python Extension Packages からダウンロードし C:\Python3.4\Scripts フォルダにコピーする。
    numpy-1.9.2+mkl-cp34-none-win_amd64.whl
    matplotlib-1.4.3-cp34-none-win_amd64.whl
  2. 管理者モードで コマンドウィンドウを開き (cmd.exe) C:\Python3.4\Scripts にて pip3.4 にて直下にある .whl ファイルを指定して、パッケージをインストール。
    C:\Python3.4\Scripts にて
    pip3.4 install numpy-1.9.2+mkl-cp34-none-win_amd64.whl を実行
    pip3.4 install matplotlib-1.4.3-cp34-none-win_amd64.whl を実行
     
  3. ipython3 を実行して モジュールがインストールされていることを確認する。

iPython もこの方法でインストールできます。
pip3.4 install ipython でインストールしましたが、その代わりに
ipython-3.1.0-py3-none-any.whl を入手し、ローカルで
pip3.4 install ipython-3.1.0-py3-none-any.whl と実行してもよいです。

この手順、 Python3.4 と Pyreadline を実行型バイナリ形式でインストール、IPython, Numpy, matplotlib をコンパイル済み .whl を PIP でインストールする場合。必要なファイルは、5つで 容量は 60MB  ほどです。Notepad++ インストーラが数MBです。

展開後の Python34 フォルダも 250MB 程ですから、これで Python の環境を用意してあげるといえば、同僚や友達もいやな顔はしないでしょう。

もっと上品でエレガントなやり方はいくらでもありますが、まぁ。



2015年6月1日月曜日

Python3 iPython と Notepad++ 基本環境

Python3 と iPython による開発環境設定と エディタ Notepad++

Wondows7-64Bit に Python3 環境を作ります。現時点でいくつかのモジュールが Python3 に対応していませんが、解析環境を Scipy なしで、Numpy と matplotlib を使うだけなら、今からでも Python3 に移行できます。
Test & Measurement 環境では、Pyserial PyUSB-FTDI が Python2 で止まっているので目的に応じて使い分ける状態です。Scipy だけでなく PysqLite 等も早めに対応していただきたいものです。

IPython はインタラクティブパイソンと呼ばれる環境です。標準の IDEL がいやになってPython をやめてしまう開発者も多いと思います。IPython こそ標準にしていただきたいものです。


  • Python3 と IPthon のインストール

  1. Python3 のインストール 
    普通にバイナリパッケージからインストールします。今日は python-3.4.3.amd64.msi をダウンロードして実行します。64 bit 環境の方は探してインストールしないと、32 bit がセットアップされてしまいます。
  2. Pyreadline のインストール
    Windows で IPython を利用するには、Pyreadline が必要です。コマンドラインをカラーにする追加パッケージみたいなものだと思います。話を簡単にするためにバイナリパッケージを実行してインストールします。今日は pyreadline-2.0.win-amd64.exe
  3. IPython のインストール
    コマンドライン c:\python34\scripts にて pip3.4 install ipython を実行します。これは、馬鹿にしているわけではなく、CMD(管理者)で PIPのあるディレクトリ C:\Python34\Scripts に移動してそこで PIP を実行するということです。特に、Python2 Python3 の両方を使う方は、Path 切るよりその都度目的のディレクトリに移動する癖をつけるほうが間違いないと思います。
  4. Notepad++ の設定
    最近のバージョンではデフォルトになったのでしょうか? Tab を 4 Space に置き換えます。
      • IPython の実行
        C:\Python34\Scripts\ipython3.exe を実行します、ショートカットをデスクトップにおいてもいいですし、なにか設定スクリプトを実行すると Windows メニューにも出てくるようになります。多分。。。
      • IPython で覚えるべきコマンド
      1. Bookmark コマンド
        Bookmark で良く使うワーキングディレクトリのトップに移動し、作業対象のフォルダに降りる
      2. Run コマンド
        そこでトップレベルの main.py 等を実行する
        run main.py
      3. Unix シェルコマンド使えます。


      簡単なデバッグ
      Notepad++ 等ファイルのパーミッションを奪わないエディタで編集、保存、IPython で実行、確認。を繰り返します。対象データ、結果の出力。実行する Python Script 等プロジェクトに関連するすべてのファイルをワーキングディレクトリにまとめて保存しておく癖をつけておくとなにかと便利です。

      2015年5月30日土曜日

      Lattice Diamond でデフォルトの verilog 設計データをコンパイルして書き込む

      前記事では MachXO2-7000HE Breakout Board の用意された JEDEC ファイルをプログラマソフトで書き込んだだけでしたが今回は、設計データの verilog ソースを、少し編集して、コンパイルしてデバイスに書き込みます。
      Lattice MachXO2-7000HE Breakout Board
      Lattice Diamond 

      はまりどころは
      • JEDEC file を生成するには, Export files というプロセスを手動で実行する必要がある。
      • ファイルは明示的に Save all しないと成果物はメモリーの中で、ファイルになっていない。
      1. 設計ファイルをローカルに展開します。場所はプロジェクトを開くときに指定しますのでどこでもよいのですが、c:\Projects\L2015-0530_ABC とかそのへんにフォルダを作ってすべてのファイルをコピーしましょう。
      2. Lattice Diamond を起動し、既存の設計プロジェクトを開きます。File, Open, Project で目的のフォルダを指定し Default_pattern_w_standby.ldf ファイルを開きます。
      3. Verilog ソースを開き、変更します。LED4 と LED5 をカウンターの 20 bit から 19 bit の状態を表示するように変更しました。
      4. Save します。
      5. コンパイルします。 Tools、RunManager、impl1 にチェックを入れて Run 右向き 三角緑ボタン。しばらくかかります。ここでコンパイルが終了していますが、デバイスの書き込みに必要な JEDEC ファイルができていません。古い日付のままで上書きされていませんでした。
      6. Export files で JEDEC ファイルを作成します。Process の Export files JEDEC File にチェックを入れます。 マウスで Process の Export Files を右クリック、Run 右向き矢印、緑。この操作で JEDEC ファイルが生成されます。
      7. プログラマーを起動し、デバイスプロパティで書き込む JEDEC ファイルを指定し書き込みます。Tools、Programmer。検出されたデバイスを右クリックで デバイスプロパティ、プロジェクトフォルダの下にある impl1 フォルダに .JED ファイルがあります。ファイルの日時を確認して開きます。IC に 下矢印アイコンのボタンでデバイスに書き込みます。
      8. LED の点滅パターンが以前のパターンと変わっていることを確認します。
      設計は、2.08 MHz のクロックを 22 ビット (0-21)バイナリカウンターで分周した cnt[20] 21Bit 目、2 .08 MHz / 2^21で大体 ~1 Hz)  と その反転 を LED で表示するという設計でしたが、接続図を見ても 2.08 MHz クロック源が無く、内部発信器の設定だと気づくまで???でした。 Export files も自動で最後の JEDEC ファイルまで出ているものと思っていたのであせりました。 






      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 にてマニュアルでドライバーをインストールします。このドライバーは信用できませんだとか、警告が出れば安心です。