Mac OSXで組み込み開発 part.2 Eclipse + OpenOCD環境をWindowsで試す

前回のpart.1にてJTAGデバッガが完成したので、さっそくサンプルプログラムのコンパイルと書き込みをテストしてみたいと思います。
しかし、タイトル通りWindowsでテストします。
自作ものなので、少しでも動作実績のある環境で試したいという気持ちを察してください。。。(´・ω:;.:…

そんなわけで、Windowsでテストするときに必要なアイテムを入手します。
なお、以下の作業ではZUS氏のWEBページを大いに参考にさせていただきました。
むしろそのままと言っていいw

入手するのは以下のものです。

Eclipseなんですが、自分は日本語化して使いたかったので、Pleiades All in OneのUltimateを使ってます。
これだと機能が全部入りな上に、プラグインで追加したものまでほぼ日本語にしてくれるので、大変便利です。
ただし、動作中に単語を置き換えるような仕組みなので、ちょっと重いです。
マシン性能が出ない人は止めて、公式のまま使った方がいいかもしれないです。

cygwinはZUN氏の所で紹介されているmakeとかの代わりです。
私の場合はWindows上でLinux機能をちょいち使いたいなぁという事があるので、こちらの方が良かったのです。

基本的にインストールとかはZUN氏のページを参考にしていただきたいなぁと。
画像をたっぷり使って紹介されているので、とてもわかり易いです。
しかもDesigneWave 2008年5月号付録の「STM32F103VB」Interface 2009年5月号付録の「LPC2388」の両方について解説されています。
うーん、素敵です。

では、20pinコネクタから変換が必要のないLPC2388から試していきたいと思います。
ts3e0602

まず、インストールが正しく行われているかコマンドプロンプトからチェック。
e38394e382afe38381e383a3-27
どうやらちゃんと動いているようです。

つぎにOpenOCDとターゲットが正しく繋がっているかチェックです。
こんな感じで繋げます。
ts3e0597

そして、必要箇所を変更します。
ZUS氏のサンプルはOlimexのJTAGデバッガを使っているので、今回作成したJTAG用に設定を変えます。

サンプルのjtagディレクトリに入っている、ファイル「openocd.cfg」を開きます。


#interface
interface ft2232
ft2232_device_desc "Olimex OpenOCD JTAG TINY A"
ft2232_layout olimex-jtag
ft2232_vid_pid 0x15BA 0x0004
ft2232_latency 2
# 6/(1+n) Mhz TCLK
jtag_speed 1

という部分があるので、以下のように変更します。

#interface
interface ft2232
ft2232_device_desc "myJTAG A"
ft2232_layout jtagkey
#ft2232_vid_pid 0x15BA 0x0004
ft2232_latency 20
# 6/(1+n) Mhz TCLK
jtag_speed 10

これで準備完了なので、動作チェックを開始します。
コマンドプロンプトにて該当ディレクトリを移動して、openocdを実行します。

> cd c:\home\workspace\LPC2388_Sample\jtag
> openocd -f openocd.cfg

e38394e382afe38381e383a3-35
どうやらちゃんと動作しているようです。
自作が上手く言って一安心ですよー。

では「ctrl + C」でopenocdを終了させて、Eclipseでデバッグ作業を進めていきたいと思います。
Eclipseの設定はZUN氏のサイトのままです。
改めて画像で紹介する事も無いと思いますので、要所の結果だけ貼付けていきたいと思います。

まずはコンパイル
e38394e382afe38381e383a3-44
OK

OpenOCDの起動
e38394e382afe38381e383a3-55
e38394e382afe38381e383a3-64
OK

Flashへの書き込み
e38394e382afe38381e383a3-73
e38394e382afe38381e383a3-82
OK

デバッグ作業
とりあえず、LEDのON/OFFの部分でブレークするようにセット。
e38394e382afe38381e383a3-103
e38394e382afe38381e383a3-92

実行してみると
ts3e0598a
ちゃんとLEDのON/OFFのタイミングでブレークする事ができています。
これでデバッグ環境もOKですね♪

調子に乗って次はSTM32F103VBにいきたいと思います。
ts3e0601
ただしこの基板はJTAG用のコネクタの線を引いてくれていないので、左右の80pinからJTAGに該当する部分を引っ張って来てあげないといけません。
データシートから「TRST/TDI/TMS/TCK/TDO/nRESET」の位置を確認して結線します。

そうすると。。。
ts3e0603
こんな感じなります。
不格好ですが、ベース基板が無いのでしょうがないです。。。(;・∀・)

さて、LPC2388のときと同様にサンプルから始めます。
基本的にZUN氏のサイトのままなんですが、多少変えないといけない所があるので、ちょこちょこと紹介していきます。

OpenOCDの動作チェックですが、自作JTAGに合わせて変更する必要があります。
まずはZUN氏の様に「openocd.cfg」と「stm32.cfg」を書き換えます。
その後、openocd.cfgの以下の部分をさらに書き換えます。

source [find interface/myjtag.cfg]
#interface
ft2232_vid_pid 0x15BA 0x0004
ft2232_latency 2
# 6/(1+n) Mhz TCLK
jtag_speed 1

Olimexの製品用になっているので、ここを

source [find interface/myjtag.cfg]
#interface
ft2232_vid_pid 0x15BA 0x0004
ft2232_latency 20
# 6/(1+n) Mhz TCLK
jtag_speed 10

として、自作JTAGを参照するようにします。
参照するようにしたものの、このままではファイルが無いので、interfaceディレクトリの中に、myjtag.cfgを作成します。
中身は以下です。

# myJTAG
interface ft2232
ft2232_device_desc "myJTAG A"
ft2232_layout jtagkey

LPC2388の時の一部分と同じですね。
どうやらOpenOCDのコンフィグファイルは外部参照ができるようで、今回のサンプルは一部分を外部参照するようになっているようです。

では出来た所で動作チェックをしてみましょう。
e38394e382afe38381e383a3-1110
OKみたいですね。

それではEclipseでも試してみたいと思います。
e38394e382afe38381e383a3-122
e38394e382afe38381e383a3-134
OpenOCDの呼び出しができていますね。

そして、Flashへの書き込み。
e38394e382afe38381e383a3-144
転送速度が出ていない事に目をつぶれば、ちゃんと書き込めているようです。
速度についてはOpenOCDについてちゃんと学ばないとダメそうなので、また今度考えます。

最後にちゃんとデバッグ作業が出来るかチェックします。
e38394e382afe38381e383a3-152
main関数のLED点灯部分にブレークを仕掛けます。

すると、
ts3e0605a
LEDの点灯前後でしっかりブレークが入る事を確認できました。

ここまで時間がかかってしまったものの、なんとか動作しそうです。
若干のJTAGへの不安はありますが、次回からはMacに戻って作業を続けたいと思います。

Mac OSXで組み込み開発 part.1 JTAGデバッガ作成編

part.0から早3ヶ月。。。。
何はともあれ、書き込みツールがないと話にならないので、JTAGデバッガの自作を試みた訳ですよ。
部品を集めて組み立て始めたのは良いものの、買い忘れがあったり、連休を挟んだりでなんだかんだで時間がかかってしまった。。。
さらにちゃんと動くかどうかの動作チェックも相まってもう3ヶ月ですよ。

仕上がりはこんな感じです。
ts3e0596

試してみて思ったのは「買った方が早い!」
これに尽きますね。。。
確かに安くは済んだんですが、ハンダ付けの手間と動作チェックの手間を考えると、買った方が安定感があります。。。
最初に組上げたときは、本体との通信がうまくいかず、いちいち導通をチェックしなければいけませんでしたよ。
ハンダ付けに熟れていて、部品が集め易い環境にある人にだけオススメします。

買った方が早いと言ったものの、いちおう制作レポートなので、作った所の説明も入れておきます。
回路図はCQ出版のデザインウェーブ跡地で入手できます。
openOCDのどっかでも入手できるようですが、今回は雑誌のまんまでいきました。
回路図を見るためにはBSch3Vが必要です。
Macintosh/Windowsともに本家(水魚堂の回路図エディタ)にあります。
ただし、Macintoshの場合はコンパイルする必要があるので、XCodeが必要です。

Macintoshのコンパイルではkitanosawa氏のWEBページを参考にさせていただきました。
まずはQt Softwareより、Qt SDKのGPL/LGPL(無償版)を入手します。
ダウンロードに for Mac ってのがあるので、それです。
ダウンロードすると、なかにインストーラがあるので、インストールしてください。
特に難しい事はなく、いつも通りにインストールすると終わりです。

つぎに、ターミナルを開いて、水魚堂の回路図エディタから入手したソースのディレクトリに移動します。
(以下のコマンドはqbsv0.47.tgzをホームに保存した場合)

$ tar xvzf qbsv047.tgz
$ cd qbsv047/qtbsch3v/
$ qmake

こうすると、
e38394e382afe38381e383a3-25
こんな感じにXCodeプロジェクトが作成されます。
これをダブルクリックすると、
XCodexが起動しますので、ビルドしてください。
xcode_bsch3v

んで、出来上がった qtbsch3v.app を実行して、CQ出版の回路図を見てみると、
e38394e382afe38381e383a3-26
このように表示されます。

回路図が見れた所で、部品を取り付けしてハンダ付けしていきます。
FT2232の足はちょいち細めなので、慎重に取り付けます。
ts3e0574

これさえ問題なくつけられれば、あとはそれほど難しい部分は無いと思います。
とりあえず、FT2232がちゃんと動作しているのか、確認をしておきたいので、USBとFT2232の間と水晶のハンダ付けが完了した時点でパソコンとつないでみる事をお進めします。
e38394e382afe38381e383a3-120
こんな感じで表示されたら作成は上手くいってます。
そしたら残りの配線をつないでしまいましょう。
ちなみに画面がWindowsなんですが、理由は以下の点があるからです。

えー、ここで申し訳ないんですが、「Mac OSXで組み込み開発」といいながらも、ここではどうしてもWindowsを使わないといけません。
今回作成した回路ではEEPROMを使ってまして、そこにFT2232の設定を保存するんですが、その設定をできるツールがWindowsにしかないんですよ。
それがこのFTDIの公式ツール「MProg」です。
e38394e382afe38381e383a3-34
保存する設定は上の画像の通りです。
これでJTAGとRS232<->USB変換に設定されます。

さて、では配線の終わったJTAGデバッガを早速試してみましょう。
さらに申し訳ないんですが、ここでもWindowsで実行しています。
雑誌の記事がWindowsだったことと、ネットの検索がWindowsの方が圧倒的に多いので、動作確認まではどうしてもWindowsの方が有利なんですよ。。。
ここさえうまくいけば、次からOS Xで作業したいと思います。。。
あー、しかし投稿がちょっと長くなって来たので、ここで一回切る事にします。

ちなみに、私はデバッガを自作してしまったため、Windowsが必要になっていますが、OpenOCD対応のデバッガを購入してしまえば、ここら辺の作業が不必要になるのでWindowsは必要ないです。

Mac OSXで組み込み開発 – ARM編 – part.0 思いたったものの

Interface5月号にNXP Semiconductorsの評価が付くらしい。
コアはARM7ということらしいので、付録を使い倒すためにはARM開発環境が必要となります。
いつも雑誌に付録マイコン基板が付くたびに思うのだが、JTAGデバッガが無くては中身がどうなっているのかさっぱり見当がつかないわけですよ。
それで、JTAGデバッガ付きのコンパイラなどを探してみる訳ですが、どうにも個人が趣味で買う、という範疇を超えた金額になってしまっています。
(NECのminicube2は比較的に安価ですが)

今回も「付録がつくものの、データシートとサンプルをちょっくら眺めて終わりかなー」と考えていたのですが、それでは勿体ないなぁと思うようになった訳です。
さらに
・JTAGデバッガは欲しい。
・できればMac OSX上で開発してみたい。
・環境構築にあまりお金をかけたくない
と欲が湧いたので、以前DesignWaveMagazineで紹介されていたOpenOCDとFTDI社のFT2232を組み合わせたJTAGデバッガを試してみる事にしました。
これならばEclipseという統合環境を使いつつ、汎用性の高いGNUツールチェインが使えつつ、Mac OSXで組み込み開発ができる「はず」です。

まずは思い立っただけなので、今回はここまでとします。
だってFT2232用の部品をそろえようにも地方じゃ揃わないんだもん!!!
部品リストをそろえようと思うと、3社ぐらいから通販しなくちゃ行けないんだもん!!!
送料かかりすぎだっつーの!!!
今度、秋葉原に行ったときにパーツをそろえます。。。(´・ω:;.:…

さてどうなることでしょう。
途中で飽きるかもしれませんし、Mac OSXじゃ続行不可能となってWindowsに切り替えてしまうかもしれませんねぇ。