マイコン工作実験日記

Microcontroller を用いての工作、実験記録

FreemasterでScope表示してみる

2015-02-22 09:46:44 | FRDM
FRDM-KL25Zには3軸加速度センサーとしてMMA8451Qが実装されており、同センサーを用いた実験を簡単に行うことができます。センサーを用いてイベントを検出するには割り込みを発生させるための加速度閾値の設定などが必要となることもしばしばありますが、それらの設定値を求めるには検出したいイベントに対応する加速度出力値の変化を把握しておくことが重要です。そのため、センサーの出力値をモニタしてグラフ表示してくれるツールがあると便利です。以前MMA8452Qを実験した際には、いったんフラッシュに記録したデータを読みだしてExcelを使ってグラフを表示していました。今回、FreescaleがFreemasterというツールを提供していることを知ったので、これを使ってみました。下図のグラフはFreemasterを使って取得したものです。




Freemasterのおおまかな機能や使い方については、次のページが参考になりました。
わたしなりに説明させてもらうと、Freemasterはデバッガの変数Watch機能を独立したアプリとして仕立てて、その値のリアルタイムな変化をグラフ表示する機能を付け加えたものです。アプリのシンボル情報から指定された変数のアドレスを求め、デバック用インターフェースを介して、その値を定期的に読み取って表示してくれます。ターゲットとのデバックインタフェースは用意されているプラグインから選択することができ、次のような種類がサポートされています。



わたしはOpenSDAをJ-Link化しているのでJ-Linkを選択していますが、BDM Communication を選択すればもともとのOpenSDA Debugインターフェイスも使えるようです。またCMSIS-DAPに対応しているので多くのマイコンボードでも利用可能なんじゃないでしょうか。RS232シリアルも使えますが、この場合にはターゲット側で対応ドライバのコードを組み込むことが必要となるようです。

シンボル情報は、ELFファイルから取得できます。したがって、Freemasterを使うために特別な作業は必要ありません。ただし、アドレスを確定させるために、表示したい変数はグローバル変数でなければなりません。シンボル情報から自分が表示したい変数を選択して設定しますが、その手順の説明は省略。上述の参考リンクを参照してください。

実験には単純に800Hzでサンプリングした3軸加速度データをXout, Yout, Zoutという変数に格納するだけのアプリを作成しました。ビルドしたELFファイルデータをFRDM-KL25に書き込んだら、今度はFreemasterを立ち上げて上述のようにシンボル情報を読み込みます。値を表示したい変数を選択して、Freemasterとターゲットとを接続するボタンを押せば動き始めます。



手でボードを持って、Z軸方向に何度か振ってみた場合の動作時画です。右下のウィンドウに選択した変数 Xout, Yout, Zoutの値が表示されています。記事の最初に載せたグラフはHigh pass filterを有効にした際のものですが、こちらの例では無効にしています。そのためZoutの値が1024(1g)程度になっています。



X-Yモードでも表示もできます。この例ではボードを手に持ちほぼ平らな状態にしてから、X軸方向に +/-90ずつ回転、その後Y軸方向も同じように+/-90度回転させてみました。Z方向を横軸にとり、X, Y方向の重力加速度の変化が軌跡として表示されています。

このようにFreemasterを使うと簡単にデータを表示、視覚化することができます。
  • プログラム側では単にデータをグローバル変数として持てば良いだけであり、それ以外の準備は何もいりません。
  • 上記の例ではターゲットとしてFRDM-KL25Zを使っていますが、J-Link, CMSIS-DAPというJTAGインターフェイスに対応しているので、実際のところターゲットのマイコンはFreescaleのKinetisに限らず、なんでもいいことになります。これらのJ-TAGではFreemasterの持つコマンド送信機能などは使えないのですが、スコープ表示はできます。
  • LPCXpressoなどが生成するaxfファイルはそのままではFreemasterでは開けませんが、elfにrenameすれば開くことができます。
  • シンボル数が多かったり、おおきな配列がある場合に、シンボルの選択操作が使いにくいのが難点ではあります。最大の問題はWindowsでしか動かないということでしょうか。

手軽に使えて重宝しそうなツールです。お試しあれ。

Keil for STM32F0/STM32L0

2015-02-18 14:09:53 | Weblog
STのプレスリリースでKeilのMDKがターゲットがSTM32F0/L0に限定されるもののタダで使えるようになったことを知りました。サイズ制限は無いようだし、30日制限も無いようです。

Keilの説明にある図をみる限りでは、2018年までは使えるライセンスがもらえるということでしょうか? ちょっと試してみたい気もするけど、ディスクが残り少ないのでしばらくはお預けかな。


アプリの必要性 -- その2

2015-02-15 10:41:16 | Weblog
以前の記事にてtext/htmlでNDEFデータを書き込んでおいても、Androidにはそれを自動的に表示してくれる機能は備わっておらず、対応アプリを用意する必要があることを書きました。仕方がないので、自分でアプリを作ってみようかと思い、Android Studioを開発マシンのMBAにインストールしてみたのですが、ディスクの使用量が96%に達してしまいました。これはディスクのお掃除をしなかればいかんということで、いったんAndroid Stduioはアンインストール。しかしなんとかtext/htmlのNDEFデータを表示してみたいと思い、出来合いのアプリを組み合わせて表示できないかと考え試行錯誤してみました。その結果ちょっと手間ですが、以下のように2つのアプリの間をコピペすることでデータを渡して表示することができました。

まず最初にNFC Readerという、とってもシンプルなUIのアプリを使ってデータを読み取ります。text/htmlの内容も表示してくれます。




表示されたtext/htmlの一部分をタッチし続けるとコピペの範囲選択のモードになるので、text/htmlのデータ全部を範囲選択して、クリップボードにコピーしておきます。

クリップボードの内容をいったんファイルに落とせば普通にブラウザで開いて表示することもできますが、ちょっと手間なのでクリップボードからペーストしたデータを表示してくれるアプリがないか探してHTML playというアプリを見つけました。HTMLエディタなんですが、HTML入力の際に入力エリアを長押ししていると、ペーストメニューが現れてクリップボードの内容をペーストすることができます。ペーストできたら、Previewボタンを押すとその内容が表示できるという具合。




NFCにtext/html形式で記録されたデータは30分間隔で過去24時間分の温度/気圧を記録したものとなっています。記録間隔が30分と長いので、単純に30分間の平均値を表示してしまうと最高や最低値の記録が失われてしまいます。そこで、気温/気圧の記録データには30分の間の最低、平均、最高の3つの値を持たせています。

グラフ表示にはGoogle Chartを利用していますが、intervalオプションにareaを指定することで最低/最高値も線幅として表現しています。グラフの最初で温度の変化幅が大きくなっていますが、これはソフトのバグでまちがったデータが書き込まれているためです。修正せねば。。。

このようにして、なんとか当初の目論見は達成できましたが、コピペの際の範囲選択作業がとってもめんどくさいので実用的ではありません。やはり専用アプリを用意しないと使い勝手は向上できなさそうです。上記の例では30分間隔でデータを記録していますが、これはおよそ4KB近いデータ量に相当します。使用したMR24SRは8KBの容量なので、他のレコードで使用される容量を考慮すると15分間隔で記録しようとすると領域不足になる可能性があります。バイナリデータで書き込めば容量を有効に活用できますが、読み取りには専用アプリが必要となってしまいます。いろいろと試行錯誤するにはテキストで記録しているのがやはり便利なんですが。

Bluegiga買収される

2015-02-06 20:59:33 | Weblog
先日、BluegigaSilabsに買収されました。Bluegigaは非公開の会社だったので、突然の発表ですね。当面は、これまでと同じようにBluegiga製品が供給されるようです。3年ほど前にMicrochipがRoving Networksを買収したのを思い出させます。そのうちに Bluegigaのモジュールを積んだEFM32の評価ボードとか出てくるんでしょうか。

Radio Shack

2015-02-06 19:36:55 | Weblog


Radio ShackがついにChapter 11したということを、この人の動画で知りました。やはりDaveだけあってTandyの製品も数々お持ちのようですが、高校生の頃にTandyの修理センターで仕事したことがあるそうで、それだけに思い出深いものがおありのようです。