前回の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から試していきたいと思います。

まず、インストールが正しく行われているかコマンドプロンプトからチェック。

どうやらちゃんと動いているようです。
つぎにOpenOCDとターゲットが正しく繋がっているかチェックです。
こんな感じで繋げます。

そして、必要箇所を変更します。
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

どうやらちゃんと動作しているようです。
自作が上手く言って一安心ですよー。
では「ctrl + C」でopenocdを終了させて、Eclipseでデバッグ作業を進めていきたいと思います。
Eclipseの設定はZUN氏のサイトのままです。
改めて画像で紹介する事も無いと思いますので、要所の結果だけ貼付けていきたいと思います。
まずはコンパイル

OK
OpenOCDの起動


OK
Flashへの書き込み


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


実行してみると

ちゃんとLEDのON/OFFのタイミングでブレークする事ができています。
これでデバッグ環境もOKですね♪
調子に乗って次はSTM32F103VBにいきたいと思います。

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

こんな感じなります。
不格好ですが、ベース基板が無いのでしょうがないです。。。(;・∀・)
さて、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のコンフィグファイルは外部参照ができるようで、今回のサンプルは一部分を外部参照するようになっているようです。
では出来た所で動作チェックをしてみましょう。

OKみたいですね。
それではEclipseでも試してみたいと思います。


OpenOCDの呼び出しができていますね。
そして、Flashへの書き込み。

転送速度が出ていない事に目をつぶれば、ちゃんと書き込めているようです。
速度についてはOpenOCDについてちゃんと学ばないとダメそうなので、また今度考えます。
最後にちゃんとデバッグ作業が出来るかチェックします。

main関数のLED点灯部分にブレークを仕掛けます。
すると、

LEDの点灯前後でしっかりブレークが入る事を確認できました。
ここまで時間がかかってしまったものの、なんとか動作しそうです。
若干のJTAGへの不安はありますが、次回からはMacに戻って作業を続けたいと思います。