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 がまったく同じファーム、ハードウェアできちっとデバッガを動かしていますから、絶対に何とかなるはずです。