マイコン工作実験日記

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

ウニモグの2重連

2014-09-27 10:40:17 | Weblog



我が家の最寄駅の京王線若葉台駅には、京王線の車両基地が隣接しています。先日電車に乗ろうとしてたところ、向かいのホームに入れ替えのためにウニモグが車両を引いて入ってくるのに遭遇。こんなに近くで実際に車両を引いていることろを見るのは初めてだったので、慌てて写真撮影。ちょうど自分が乗るべき電車も到着したタイミングだったので、ほとんど乗車ドアに向かって後ずさりながら何枚かを撮影したのでした。

帰宅後Googleさんに写真をアップしてから、2、3日経った日のことです。Googleさんの自動パノラマ作成機能が、こんなウニモグ2重連を自動生成してくれたのでした。





ケーブル交換

2014-09-21 08:43:00 | Weblog
最近、Macbookの充電器MagSafeのケーブルが接触不良気味で、ケーブルがちょっと動いてしまうと充電が停止したりして不便していました。検索してみるとケーブル交換する記事や動画がたくさん出ていたので、やってみました。

まずは交換用ケーブルの入手。この手のものはeBayならあるだろうと思い、調べるとだいたい1000円前後で売られていました。以前, 悪魔に喰われたアダプタも残してあったので2本を注文して待つこと1週間ほどで到着。



2本注文したのに1本しか届きませんでした。あぁ、中国だよ。すぐにCaseを開いて文句いれて、追加分を送るように連絡する。



右が純正品、左今回購入したもの。ちょっとケーブルが太めなんですが、オリジナルが細すぎる印象を受けるので、こちらの方が安心できる感じ。LEDの穴がちょっと小さめなんで、点灯時も小さく見えます。



実際の交換手順は、ほぼ上の動画と同じ。ポイントとしては。
  • ケースは思い切ってこじ開ける。わたしもラジペンを使いました。
  • ケーブルの取り外しに結構苦労。作業しづらいし、なかなかハンダが溶けてくれなくて。
  • こじ開けたケースは、接着剤を使って固定。




無事作業終了。問題なく動作。追加発送させた分が届いたら、もうひとつも修理するつもりです。

J-LinkでRTTClientを使ってみる

2014-09-07 00:35:30 | Weblog
マイコンのソフトウェアを開発中には、デバック用のトレース出力ができると便利です。ピン数や使用ポートに余裕があれば、シリアルポートやUSBポートを使うことができますが、余裕がない場合にはそうもいきません。そんな時に、デバッガがJTAG経由でのデバック出力機能を持っていると便利です。ARMマイコンでは通常 Semi hostingと呼ばれる機能により、デバッガが特定のソフトウェア割り込みやブレークポイント・トラップを捕まえることで、実際の入出力をホスト側で行うことを可能としているようです。

J-Linkを使う場合にはSemi hostingではなく、SWOを使ってトレース出力する機能もあり、提供されている出力用のコードを使ってプログラムを実行すると、SEGGERが用意したSWO Viewerというアプリを使うことで、この出力を拾うことができます。ここまでは使ったことはなくてもマニュアルにも説明があるので、その存在は知っていました。ところが、最近 RTTClientという機能が加わったということを聞いたので確認してみることにしました。

どうやら、この機能は比較的最近加わったらしくPDFマニュアルには説明が無いのですが, Webページ上では説明が見つかりました。この機能を使うには, SEGGERが提供しているRTT(Real Time Terminal)という出力ルーチンを使ってログ出力してやります。今回は、GNU ARM EclipseのサンプルプログラムであるLED Blinkのトレース出力を、RTTに向けてやりました。ターゲットとして使用したのは、FRDM-KL25Zです。



ログ出力を見るには、RTTClientというプログラムを実行してやります。以下は MacOSでの実行例です。出力だけでなく、入力することも可能です。



このRTT機能は、Semi hostingのようなソフトウェア・トラップも、SWO viewerのように特定のレジスタの操作も行っていないのが大きな特徴です。RTTの入出力ルーチンはCソースで提供されているので、これを読めばわかりますが、単にリングバッファとの間で入出力処理をおこなっているだけで、特定のデバイスに出力したり、特定のハードゥエアレジスタへアクセスするような処理は一切行っていないのです。そのため、どんなターゲットにも変更無しに簡単に移植して用いることができます。仕組みとしては、J-linkのGDBServerがソフトウェアをダウンロードあるいは実行する際に、リングバッファの頭についているIDを見つけてバッファの位置やその中のデータを認識して、ターゲットとの入出力をやってくれているようです。ターゲット上の実現方法には、なんにも特別な仕掛けが無いといえるくらいで、なんだか全てが Automagicallyに J-linkがよろしく処理してくれているような印象を受けます。RTTClientも特別な仕掛けで実現されているわけでもなく、

$ telnet localhost 19021

としても入出力ができてしまいます。仕掛けそのものはとっても単純なことに感銘を受けました。今後、重宝しそうです。