コメを噛め

コメを噛め

rerofumi の電子工作メモ

Archive for the ‘Tool’ Category


hatena bookmark


CNCフライスでプリント基板作成をするために、G-Code変換ツールを作っていたのは以前に書いた通り。(準備その1その2動画)
その後 10枚くらいの基板を設計、作成してちょこちょことスクリプトを変更していた。

ruby で書いたスクリプトではあるもののいずれアプリケーションとして整えて公開しようと思いつつずるずると今に至る。
別に意図して公開していなかったわけではないのだけれども、いまひとつ変なところがあるとか、素のスクリプト状態では使いにくいとかそんなあたりで。
そんなスクリプトだが公開して欲しいという声をありがたいことに頂戴したので、軽く整えて以下に置いておくことにする。

Download: r_gerber_converter.zip (19kb)

通常の ruby ではなくて .NET framework の IronRuby が必要。
また、計算結果のパターン表示に OpenTK を使っているのでそれも準備する必要がある。
ちょっぴり変な実行環境だけれども、その分 MacOSX などでも動作するものになっている(確認済み)ので興味があったら試してみて欲しい。

ファイルの指定などを GUI で行うことのできるアプリケーション版も準備中。
本気出したら割とそれなりにできてきたので近日中に公開できるかも。こちらも IronRuby+OpenTK で作られている珍しいプロジェクトなので環境はあらかじめ用意しておいてくださいな。

# ちなみに計算にはえらい時間がかかるので覚悟してください


hatena bookmark

以前からちょくちょく出てきている、iruka さん製作の STBEE MINI を使った JTAGアダプター。名称 arm_blaster。

ごらんの通り CNCフライスでプリント基板を作って使っている。
回路図は元のページを見て欲しいのだけれども、単に 4本の GPIO に抵抗を挟んでコネクタにつなぐだけの代物。どう見てもユニバーサル基板で作った方が早いよ!という風情なのだけれども、敢えてこういう小物も CNCフライスで作っていきたい。

できあがったモノの仕上がりが綺麗ってのもあるけれども、今は CAD で書いて CNC で出力というフローに慣れたいからというのが主な理由。
あと、こんなものでも部品代としてみれば安いので数こなしていけばユニバーサル基板を買うよりコストメリットも出てくるはず。それとこれは次回になるだろうけれども、コネクターでユニバーサル基板にそのまま刺さらないような奴を使いたいときにぐぐっと優位性がでてくる。

とかそれらしいこと書いているけれども、実際の所、ワイヤーの皮膜を向いたり溶かしたりして配線する作業が面倒で嫌なんだよ!ヽ(`Д´)ノウワァァァン
あとユニバーサル基板を適度なサイズに割るのもめんどい。

ユニバーサル基板だととりあえずで作り始めて作りながらあーでもないこーでもないと設計を変えたりテストしたりするものだけど、CNCだと最初にCADできっちり設計しなければならないのが難点。
いや、それは製作手順としてやった方がいいことなんだけれども。

この程度のもの欲しい人がいるとも思えないけど、K2CADのデータやガーバーやGCODEの詰め合わせ。
Download: armblaster_pcb.zip


hatena bookmark

toolchain スクリプトの更新。 Ver.0.0.3

binutil-2.21 の gas で、SVC ニーモニックが使えないというバグがあるようなので、binutil の version を 2.20.1 に引き下げたもの。

Download: fumi2_cortexM3_toolchain-0.0.3.tar.gz (4KB)

おまけの cygwin binary
Download: cortexM3_gcc_toolchain.tgz (77MB)


hatena bookmark

OpenOCD で JTAG ダウンロードができるようになったといっても毎回 gdb サーバーを起動して gdb からバイナリを流し込むのも面倒くさいもの。
Makefile(Rakefile) やコマンドラインから一発でフラッシュを書き込めないものか。

OpenOCD にはフラッシュを読み書き消去する基本的な機能が備わっている。
単純な機能のダウンロードケーブルとして使うにはこれで十分だったりする。
このコマンドは OpenOCD が起動している時に port 4444 (標準時)に telnet アクセスして打ち込めば使えるが、起動時にコマンドラインとして与えることもできる。

毎回コマンドを入力するのも大変なのでコンフィグファイルに書いておくのが便利。
このへん参考記事がいくつか見つかるので、そのうちの一つのものを参考にコピペする。
—–

proc flash_program {ELF_FILENAME} {
halt
flash probe 0
flash write_image erase $ELF_FILENAME
echo "flash program complete. reset and run"
resume
reset run
exit
}

—–
これをコンフィグファイルに書いておく。

それを使いやすくシェルスクリプトにまとめて、書き込みコマンドを作成する。
—–

#/bin/sh
openocd.exe -f (コンフィグを置いたパス)/armblaster_stm32.cfg -c "flash_program $1"

—–
これに armblaster_flash などと名前をつけておくと使いやすい。

これで書き込み&実行確認がやりやすくなった。

※注意?
そういえばこの方法だとフラッシュイレースの範囲をちゃんと指定していないから DSU が書き込まれている 0x08000000 – 0x08002fff の範囲も書きつぶしてしまうのでした。
DSU を消したくない人やバックアップをまだ取っていない人はご注意を。
それ故にダウンロードするプログラムの先頭アドレスを 0x08000000 にしておく必要がありまする。


hatena bookmark

STBee とその開発に使えるJTAGケーブルの実際。
iruka さん製作の STBEE MINI を使った JTAGアダプター

STBee Mini もお安いしあっという間に作れるし、ファームも DSUe で書き込めるのでもうこれでいいんじゃね的なソリューション。
コマンドラインベースだけれども、シリアルライト機能の応用として AVRライターや PIC18Fライターも用意されているのでパワーユーザーにはおいしい感じである。

若干遅めではあるものの、OpenOCD 経由の利用も、gdb でのデバッグもできた。
個人的にはこれで十分かな。

OpenOCD とそれ用の HID コントローラーは用意されているバイナリを使うことになるんだけれども、それが今のところ Windows のみというのがたぶん最大の条件。
HID 部分は libusb じゃなくて Windows のデバイスを直接 Open しているので、他の OS に持って行くには libusb への移植作業が必要そう。

MaxOSX でも使えたらうれしいかもと思って調べ始めた JTAG ケーブルだったが、結局安定して使える環境が Windows だけという結果に落ち着いたり。


hatena bookmark

STBee とその開発に使えるJTAGケーブルの実際。
USB Blaster もどきで OpenOCD がどれくらい使えるか。

OpenOCD には ALTERA のダウンロードケーブルである USB Blaster やその互換品を JTAG ケーブルとして使うというオプションがある。
OpenOCD はパラレルポート(が使えた過去の時代)や FT2232ベースのJTAGケーブルを使うことを想定されている。だが MacOSX では FT2232 のドライバーだといまいちな場面があるらしく使いづらいとの声を聞く。
そこで浮上してくるのが USB Blaster 互換ケーブルの使用である。

そもそも、OpenOCD が難しいのはなぜかというと USB 接続デバイスを扱うからということに他ならない。デバイスの問題は結構大きいのだけれども、それは Windows, MacOSX、Linux のそれぞれでデバイスモデルが異なるところにある。なのでオープンソースで開発を固めようとしても、どうしてもこのターゲットとの接続部分がいまくいかないものなのである。
libusb はそういった機種間の proxy となり一つの stub を提供してくれるのだが、Windows では専用の USB ドライバをインストールする必要があるとか inf を作成しないとインストールできないとか色々とあったり、すんなりとは行かなかったりする。MacOSXと Linux は libusb で割と問題無くいけそうに見えるなあ。
そういう意味でダウンロードポートを USART(シリアル接続)のみに絞った Arduino の設計は正解なのだよね。

さて、USB Blaster もどきを使って OpenOCD を使う実験だけれども、Windows 上では早々に諦めた(w。
Windows だと 32bit と 64bit のドライバーって異なっているので、libusb-win のドライバーも二種類存在している。我が家は Win7 64bit を使っているので、64bit の方をインストールすることになる。かたや Cygwin は 32bitなので libusb はバイナリも付いてくるものの 32bit 版しかない。
このへんに食い違いがあるのかどうかよく分からないのだけれども、うまいこと使えなかった。原因究明するにも、準備が面倒な段階でもういいやと投げてしまった次第。

MacOSX と Linux での OpenOCD ビルドはそんなに難しくはない。
libusb, libusb-compat, libftdi, openocd といった順番でビルドしていけば良い。
libusb は Linux ディストリビューションに入ってることが多いので、devパッケージだけ用意すれば後は libftdi, openocd のインストールで良い。

そんなこんなで OpenOCD が用意できて MacOSX と Linux はこれでばっちりだぜと思っていたのだけれどもそうはうまくはいかないのでした。

ターゲットと接続して scan_chain とか難なくできるから大丈夫かと思っていたのだけれども、gdb から操作しているとやたら遅かったり失敗したりする。どうも通信がうまくできていないような印象。
先達の記事にも OpenOCD で USB-Blaster はイマイチと書いてあったりするので深追いしないことにした。

OpenOCD を使うのであれば素直に FT2232 系の JTAG ケーブルを購入するのが良さそうである。
ストロベリーリナックスの FT2232H モジュールとか EEPROM も載っていてまさにそういった用途にお使いくださいといった感じだしなー。


hatena bookmark

STBee とその開発に使えるJTAGケーブルの実際。
まずは STM 純正の ST-Link のお話。

これ自体 2500円ちょいで買えるので、開発ツールはこれ一本で完璧なんじゃね?と思われるのだけれども、本当にオープンソース周りで開発を固めようとすると「ドライバー等がオープンじゃない」という問題がある。一番大きな影響は MacOSX や Linux で利用するすべがなさそうだ、という所に尽きるだろう。
Windows だけで良いよといった場合は無償環境でそこそこはいけるので、なにができるのかを記しておく。

■ ファームのアップデート
ST-Link を入手したらまずはファームウェアのアップデートを行う。
STMicro のサイトに行って ST-Link Upgrade をダウンロードする。

すると案の定古いバージョンだからアップデートするように催促されるのでアップデートしておこう。
ここで、最新のファームウェアにしておかないと後述する Atollic のデバッグプロキシが動作しないことがある。地味にひっかかるポイント。

■ AT-Link Utility
STMicro のサイトに AT-Link 用のアプリケーションとして AT-Link Utility が提供されている。もちろん無償。

これを使うと ST-Link を JTAGケーブルとして STM32 のメモリ空間がダンプできる。
このダンプされているメモリ空間に対し、バイナリデータのアップロードや、ダウンロード、およびフラッシュメモリのイレースを行うこともできる。つまり基本的なダウンロード作業は ST-Link と ST-Link Utility で一通りできるのだ。
フラッシュメモリの吸い上げもできるのが嬉しいところ。STBeeユーザーは、これを使って DFUe ファームウェアをバックアップしておくと、書きつぶしちゃった後にいつでも復活できるようになるよ。

Reset/Run/Halt といった実行だけでなく、レジスタも見れてプログラムカウンタ単位のステップ実行もできるので、バイナリダンプを見て命令を脳内デコードできる人ならこれだけでデバッグできるかもしれない。

とまあ、ソースコードデバッグを考えなければ ST-Link と無償提供の ST-Link Utility でダウンロード&実行はできてしまう。
Windows ユーザーであれば持っていても良いケーブルかもしれない。

■ デバッグ環境
ARM系列を JTAG ケーブルでソースコードデバッグするとき、hobbyユーザーとしては GDB+OpenOCDが鉄板というか他があまりないわけなのだが、ST-Link がオープンじゃないっぽいので OpenOCD が使えないらしい。
デバッグをするには IAR, KEIL, Atollic といったプロユースの有料開発環境には ST-Link 用のドライバーとそれを利用する GDB Server が付いてくる。
しかしそれらはプロ用と称すだけあってお値段数十万円だったり、hobby用の廉価版がなかったりといった問題がある。一応、無料利用できる制限版があるのだけれども、IARとKEILは出力バイナリにサイズ制限があったりする。
Atollic TrueSTUDIO は無料体験できる Lite版でもサイズ制限がなく、デバッグもできるので多くの人が使っているようだ。

Eclips ベースの IDE 製品なのでこういった環境が欲しい人は ST-Link とセットで使えば、完全なゴールとなろう。
ただし Lite版には以下の制限がある。
・事ある毎に「Pro版にアップグレードしましょう」というダイアログが出てきて 3秒待たされる
・ダウンロードする際登録したメールアドレスに「あなたの業種はなんですか?Pro版を購入しませんか?」といった旨のアンケートメールが届く
それが気にならないなら悪くない選択だろう。

さて、Atollic TrueSTUDIO をインストールすると、ST-Link GDB server というコマンドラインプログラムが存在している事に気がつく。

これがまさに GDB Server そのもので、True STUDIO は裏でこれを起動してデバッグを行っている。ST-Link へ続く GDB server なのでこれさえあれば、別個に用意した ARMクロス開発用の GDB でデバッグをすることができる。

実際にコマンドライン上での GDB でデバッグできることはもちろん、Meadow などの Emacs をつかって GUD ソースコードデバッグを行うことができる。
先にビルドしておいた Tool chain で、コンパイルからデバッグまで一通りできることが確認された。

なので個人的に欲しいのは Atollic TrueSTUDIO の ST-Link GDB server だけなのだけれども、それだけのために個人情報を入力してダウンロードするかというのは考えどころ。


hatena bookmark

STBee には DFU (USB Device Firmware Upgrade) という USB 標準規格なファームウェア書き換えのブートローダが乗っており、Windows PC と USB 接続するだけでユーザーが作成したプログラムのダウンロードと実行ができるようになっている。
このマイコンボードを買うだけでマイコン開発ができるということでもあり、とてもお手軽なマイコン工作環境を提供してくれている。

通常ならばその恩恵に預かっていれば良いのだけれども、ちと深いことをやろうとするとやっぱり JTAG ケーブルが欲しくなってくるところ。
DFU だけだと不満な点というのはだいたい次の様なところ。

  • USB DFU のドライバーインストールが必要になる (ST社製)
  • ドライバーと転送ソフトが Windows でしかない
  • ダウンロードのみでデバッグまではできない(スタブを乗せれば手はあるけど)
  • ブートローダをつぶしちゃうと利用できなくなる
  • 自分でチップ買って作成した時はJTAGでなんとかしないとならない

そういった将来的な所も考えて JTAG ケーブルによる開発環境も用意しておいた方がよさそう、と思った。

ARM 開発での安価な JTAG ケーブルというと、OLIMEX の ARM-USB-OCD が鉄板な感じ。
中身は FT2232 なので互換機の製作もできなくないし、OpenOCD を使うなら JTAG ケーブルはシンプルにできるというもの。
7000円とか 9800円とか開発機材としては安いんだけれども、今回はなんとなく OLIMEX のこいつを使わないでできる方法を探してみた。ARM-USB-OCD を回避しているのには特に深い意味は無いですが。

■ ST-LINK

ST純正のデバッガ&プログラムケーブル。
2700円ほどと大変お安い。STBee を買った時に、ブートローダの保存&復活のために買っておいたもの。
これがあれば十分じゃんという意見もあるけれどもね。
基本的にデバッグには IAR, Keil, Atollic といった商用開発環境(hobby用は存在しない)が必要でドライバーもオープンじゃないので OpenOCD が使えない。Atollic lite が無料で使えるのでその上で開発を完結させるつもりならばそんなに問題は無い。
詳細についてはあとで書く。

■ arm_blaster

iruka さん製作の STBEE MINI を使った JTAGアダプター
HID なのでドライバ要らずなのがステキ。
OpenOCD は独自のパッチをあてて利用する形だけれども、Windows版のソース&バイナリもあるのでそれを利用すれば容易。

■ USB-Blaster もどき

以前作ってあった PIC18F2550 使用の USB-Blaster もどき。ALTERA のダウンロードケーブルとして使えている。
OpenOCD 0.4.0 では多少微妙なれど USB-Blaster をサポートするオプションが付いている。これを利用すると、この USB-Blaster もどきも OK なはず。

■ つづく
取り急ぎで上にある 3種類の JTAGケーブルを使ってのフラッシュ書き込みと GDB からの接続を確認済み。
もうちょっと環境の広がりを検討するので、ちょびちょびと報告していく予定。

基本的にコマンドラインと手書き Makefile で扱えるように検討していくのが目的。
必要なときに gdb をコマンドラインから叩いて扱ったりするような人向け。


hatena bookmark

CNCフライスでけがいてプリント基板を作成する手順を動画でまとめたもの。
実際に動いて削っていくところをみれるのです。

↓スマートホンとかでどうしてもYoutubeじゃないととゆ人はこちら
http://www.youtube.com/watch?v=Ho7_jFzH0kY


hatena bookmark

「いるみさん」のプリント基板配線で半田ブリッジしまくって悩まされたというのは以前から書いていたこと。
それを確認したり、パターンを見ながらはんだ付けするのにルーペ付きのヘルパー(鰐口ばさみ)を使っていた。が、それにも限界を感じたので、最近安価で手に入る USB顕微鏡を導入することにした。

これで、基板をけがいたあとのバリを確認することができる。


左がバリが出てしまったパターンで、右が綺麗にできたもの。
このバリがショートしているものがたまにあったりするので、それを拡大で確認していく。
もしショートしていたらカッターで溝をなぞって再度確認する感じ。


顕微鏡を見ながらはんだ付けすれば細かいパターンも大丈夫だぜ。
と、思ったけれどもこれはうまくいかなかった。
案外はんだ付けの際に小手先や部品高さといった深度をみて作業するものらしく、単眼ではちょっとやりにくくイライラしてしまった。
結局肉眼ではんだ付けして、結果を顕微鏡で確認するといったフローがスムーズだった。


顕微鏡で無いと確認できないブリッジの例。
あとバリのショートもわかりにくい。

これまではルーペでなんとかなるだろうと思っていたけれども、実際にUSB顕微鏡を使ってみるとやっぱりこれは必要だなーと思うツールでした。