[[FrontPage]]

#contents

2011/10/02からのアクセス回数 &counter;

** SWD対応オープンソースのJTAG Versaloon [#w2cf96a1]
Versaloonは、ARM Coretex-M3シリーズで最近よく使われているデバッガとのインターフェース
SWDをサポートするオープンソースのJTAGです。

[[STM32マイコン評価ボードSTM32VLDISCOVERY>http://akizukidenshi.com/catalog/g/gM-04276/]]
やARMマイコンパーフェクト学習基板で採用されているLPC1343の評価ボード[[http://akizukidenshi.com/catalog/g/gM-03598/>http://akizukidenshi.com/catalog/g/gM-03598/]]
が開発環境とボードに組み込まれたSWDデバッガでとても簡単に開発できるのですが、すべてWindows上の開発環境です。
((これらを使うときには、VMWareを使ってバーチャルマシンでWindowsを起動しなくてはなりません))

[[arm/CodeBaseを使ったARMマイコンパーフェクト学習基板の使い方]]でMac OSX上でコンパイルと、
プログラムのセットができても、JTAGに
プログラムのセットができても、オープンソースのデバッガOpenOCDがSWDに対応していない
((Ver. 6以降はサポートされているみたい))
ので、とても悔しい思いをしていました。

*** Versaloonとの出会い [#yf65c24e]
はじめてVersaloonの存在を知ったのは、
[[ねむいさんのぶろぐ>http://nemuisan.blog.bai.ne.jp/?eid=178353]]
を見たときでした。世の中にはすごい人がいるものだと感動しました。

さっそく、STM8S-Discoveryはじめ必要な部品を揃えSTM8S-DiscoveryのVersaloon化に挑戦しましが、
ハンダ技術にとぼしい私には、MCUのピンにハンダ付けをすることは不可能でした。

そこで、
[[Versaloonのサイト>http://www.versaloon.com/]]
から完成品のVersaloon Miniを購入し、OpenOCDを作ろうとしましたが、
開発途中のためパッチとソースのバージョンが合わず上手くいきませんでした。

Windowsの方は、ねむいさんが
[[OpenOCDの作成手順>http://nemuisan.blog.bai.ne.jp/?eid=188402]]
を紹介されていますので、そちら参照するとよいでしょう。

この他に
[[LPC1343 QuickStart Board>http://www.embeddedartists.com/products/boards/lpc1343_qsb.php]]
を販売しているサイトから
[[10-pin to 20-pin JTAG Adpater Kit>http://www.embeddedartists.com/products/acc/acc_jtag_adapter_kit.php]]
を合わせて購入すると便利です。

&ref(versaloon.png);


*** 再度挑戦しようと思ったわけ [#d6e77a12]
それでももう一度Versaloon対応のOpenOCDを作ってみようと思ったのは、
[[Bingo氏のサイト>http://www.mikrocontroller.net/topic/202785]]
で紹介されている
[[STM32 DiscoveryのVersaloon化の手順書>http://www.mikrocontroller.net/attachment/96661/STMxx-Discovery-Versaloon-How2-pict.pdf]]
を見たときです。

これならトラ技のオフ会でもらったSTM32L-Dsicoveryを使ってハードの改造なしに、簡単にSTM8S-Discovery
をVersaloon化することができると気づきました。
((私の方法は、Bingo氏の方法よりも簡単です))

その前に、Versaloon用のOpenOCDを作成する必要があります。以下ではMac OSX上でVersaloon対応のOpenOCDを作成する手順を紹介します。
** Mac OSXで動作するSWD対応OpenOCD [#tb95f149]
Bingo氏は、VersaloonのForumでだれでも再現できるようにな
[[スクリプトと必要なパッチ>http://www.versaloon.com/bbs/download/file.php?id=87&sid=09b55e9f01ead650364b0f495ff53e5d]]
をまとめてくれました。

Bingo氏は、Versaloonの著者Simon氏の配布ファイルにあるopenocd_updateを修正し、
- Simon氏が作成したOpenOCDと同じバージョンのソースを取得する
- Coretex M3の例外処理を修正するパッチを提供

しています。

*** MacOSXでのmake [#tfa22322]
上記配布ファイルを使ってMac OSXでmakeをする場合、準備と若干の修正が必要です。

- [[MacPort]]を使ってVer. 0.4のOpenOCDを作成し、必要なライブラリをインストールする
#pre{{
$ sudo port install openocd
}}
- 順序は逆転しますが、openocd_updateのを以下のように修正
9行目
#pre{{
SUDO=sudo
}}
81行目
#pre{{
./configure --enable-vsllink --enable-ft2232_libftdi --enable-maintainer-mode \
	--enable-ft2232 --enable-libftdi
}}

*** openocd_updateの実行 [#f514216b]
準備ができれば、後は簡単です。

- 配布ファイルの展開(私はホームのlocalディレクトリに展開、ダウンロードしたファイルはopenocd-force-10-mar-2011.tar.gz)
#pre{{
$ cd local
$ tar xzvf ~/Downloaded/openocd-force-10-mar-2011.tar.gz
}}

- openocd_updateの実行
#pre{{
$ cd openocd-force-10-mar-2011
$ ./openocd_update
途中でsudoからパスワードの要求がありますので、ユーザのログインパスワードを入力してください。
}}

** Versaloonのファームウェアの更新 [#ee8bcba4]
私が購入したVersaloon Miniのファームウェアが古く、これをopenocd-force-10-mar-2011.tar.gzに付属する
- Versaloon_IAR.hex

と入れ替えなくてはならないことが分かりました。

*** ファームウェアの更新 [#l330b84a]
ファームウェアの更新には、STMの提供するFlash Loader Demonstratorが必要ですが、これを見つけるのに一苦労しました。ということで、

- [[ストロベリーリナックスサイト>http://strawberry-linux.com/stbee/bb?c=%A5%CF%A1%BC%A5%C9%A5%A6%A5%A7%A5%A2&s=-date]]からum0462.zipをダウンロードしました
((STマイクロのウェブページの構成が悪いのだと思います。))

- この他に、STM関連のツールの場所をまとめた
[[Embedded newbie>http://embeddednewbie.blogspot.com/2011/01/free-toolchains-for-stm32vldiscovery.html]]
も便利です。

Versaloonにファームウェアを書き込むには、ボタンを押しながらUSBに接続すると赤のLEDが点灯します。
これで、シリアル通信ができるようになります。

Flash Loader Demonstratorを起動し、

&ref(flash_loader_demo1.png);

指示に従いながら進んでVeraloon_IAR.hexを指定して書き込みます。

&ref(flash_loader_demo4.png);


** OpenOCDのコンフィグファイル [#yd919d73]
OpenOCDを使う場合、JTAGインターフェースの定義ファイル、ターゲットのMPUの定義ファイルが必要となります。

OpenOCDでは、インストール時によく使われているものについてこれらの定義を
- /usr/local/share/openocd/scripts/

にセットされていますが、versaloonやSWD対応MPUであるLPC1114, LPCLPC1343, LPC1768の定義ファイルは
提供されていません。

いろいろ探してみると流石
[[ねむいさんのぶろぐ おきば>http://nemuisan.blog.bai.ne.jp/?eid=160746]]
にありました。
- OpenOCD(0.5.0)Flash書き込み・デバッグ用のカスタムcfgファイル
-- [[LPC2388,STM32用等の詰め合わせ>http://cid-36f4d1230f8a673c.office.live.com/self.aspx/.Public/tool/OpenOCD/OpenOcd%5E_cfgs.zip]]

をダウンロードしてください。
ねむいさん、ありがとうございます。

*** 定義ファイルのコピー [#o39e52d2]
ダウンロードした定義ファイルを解凍し、以下のようにコピーします。

#pre{{
$ cd OpendOcd_cfgs
$ sudo cp tcl/interface/* /usr/local/share/openocd/scripts/interface/
$ sudo cp tcl/target/* /usr/local/share/openocd/scripts/target/
}}

** OpenOCDを使って書き込みのテスト [#k6e7b444]
書き込みのテストには、ねむいさんの作られたkick startのプロジェクトを使いました。

- LPC13xx(LPC1343/LPCXPresso互換回路)
[[KickStart>http://cid-36f4d1230f8a673c.office.live.com/browse.aspx/.Public/src/Cortex/LPC1343]]


ファイルを展開したら、
#pre{{
$ cd LPC1343_with_KickStarts_20100901
$ 
}}

** コメント [#p2e46e45]
#vote(おもしろかった,そうでもない,わかりずらい)

皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc