FrontPage

2011/10/02からのアクセス回数 9655

SWD対応オープンソースのJTAG Versaloon

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

STM32マイコン評価ボードSTM32VLDISCOVERY やARMマイコンパーフェクト学習基板で採用されているLPC1343の評価ボードhttp://akizukidenshi.com/catalog/g/gM-03598/ が開発環境とボードに組み込まれたSWDデバッガでとても簡単に開発できるのですが、すべてWindows上の開発環境です。 *1

arm/CodeBaseを使ったARMマイコンパーフェクト学習基板の使い方でMac OSX上でコンパイルと、 プログラムのセットができても、オープンソースのデバッガOpenOCDがSWDに対応していない *2 ので、とても悔しい思いをしていました。

Versaloonとの出会い

はじめてVersaloonの存在を知ったのは、 ねむいさんのぶろぐ を見たときでした。世の中にはすごい人がいるものだと感動しました。

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

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

Windowsの方は、ねむいさんが OpenOCDの作成手順 を紹介されていますので、そちら参照するとよいでしょう。

この他に LPC1343 QuickStart Board を販売しているサイトから 10-pin to 20-pin JTAG Adpater Kit を合わせて購入すると便利です。

versaloon.png

再度挑戦しようと思ったわけ

それでももう一度Versaloon対応のOpenOCDを作ってみようと思ったのは、 Bingo氏のサイト で紹介されている STM32 DiscoveryのVersaloon化の手順書 を見たときです。

これならトラ技のオフ会でもらったSTM32L-Dsicoveryを使ってハードの改造なしに、簡単にSTM8S-Discovery をVersaloon化することができると気づきました。 *3

その前に、Versaloon用のOpenOCDを作成する必要があります。以下ではMac OSX上でVersaloon対応のOpenOCDを作成する手順を紹介します。

Mac OSXで動作するSWD対応OpenOCD

Bingo氏は、VersaloonのForumでだれでも再現できるようにな スクリプトと必要なパッチ をまとめてくれました。

Bingo氏は、Versaloonの著者Simon氏の配布ファイルにあるopenocd_updateを修正し、

  • Simon氏が作成したOpenOCDと同じバージョンのソースを取得する
  • Coretex M3の例外処理を修正するパッチを提供

しています。

MacOSXでのmake

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

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

openocd_updateの実行

準備ができれば、後は簡単です。

  • 配布ファイルの展開(私はホームのlocalディレクトリに展開、ダウンロードしたファイルはopenocd-force-10-mar-2011.tar.gz)
    $ cd local
    $ tar xzvf ~/Downloaded/openocd-force-10-mar-2011.tar.gz
    
  • openocd_updateの実行
    $ cd openocd-force-10-mar-2011
    $ ./openocd_update
    途中でsudoからパスワードの要求がありますので、ユーザのログインパスワードを入力してください。
    

Versaloonのファームウェアの更新

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

  • Versaloon_IAR.hex

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

ファームウェアの更新

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

  • この他に、STM関連のツールの場所をまとめた Embedded newbie も便利です。

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

Flash Loader Demonstratorを起動し、

flash_loader_demo1.png

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

flash_loader_demo4.png

OpenOCDのコンフィグファイル

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

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

  • /usr/local/share/openocd/scripts/

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

いろいろ探してみると流石 ねむいさんのぶろぐ おきば にありました。

を使用しました。 ねむいさん、ありがとうございます。

私の使ったコンフィグと最新は、少し違うみたいです。

定義ファイルのコピー

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

$ cd OpendOcd_cfgs
$ sudo cp tcl/interface/* /usr/local/share/openocd/scripts/interface/
$ sudo cp tcl/target/* /usr/local/share/openocd/scripts/target/

OpenOCDを使って書き込みのテスト

MacOSX固有の前処理

Mac OSXでは、VersaloonのCDCがOSのドライバーに取られしまうため、一時的にそれをいったん止めます。

$ sudo kextunload /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBCDC.kext

もとに戻すには、

sudo kextload /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBCDC.kext

プロジェクトの準備

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

  • LPC13xx(LPC1343/LPCXPresso互換回路) KickStart

ファイルを展開したら、

$ cd LPC1343_with_KickStarts_20100901
$ /usr/local/bin/openocd -f interface/vsllink_swd.cfg -f target/lpc1343_swd_flash.cfg -c "mt_flash main.elf"
Open On-Chip Debugger 0.5.0-dev-00783-g0123985-dirty (2011-10-02-18:39)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.berlios.de/doc/doxygen/bugs.html
Warn : must select a transport.
Info : OpenOCD runs in SWD mode
adapter_nsrst_delay: 200
jtag_ntrst_delay: 200
trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
Info : OpenOCD runs in SWD mode
Error: Fail to receive usb data, error string is Operation timed out.
Info : Versaloon(0x15)by Simon(compiled on Jan 29 2011)
Info : USB_TO_XXX abilities: 0x0000024F:0x010001EF:0xC0000007
Info : RCLK (adaptive clock speed)
Info : lpc1343.cpu: hardware has 6 breakpoints, 4 watchpoints
target state: halted
target halted due to debug-request, current mode: Thread 
xPSR: 0x21000000 pc: 0x000004b4 msp: 0x10001fc8
flash 'lpc2000' found at 0x00000000
auto erase enabled
wrote 4096 bytes from file main.elf in 0.409816s (9.760 KiB/s)
verified 2968 bytes in 0.119172s (24.321 KiB/s)
requesting target halt and executing a soft reset
target state: halted
target halted due to breakpoint, current mode: Thread 
xPSR: 0x01000000 pc: 0x000000c0 msp: 0x10001fe0
shutdown command invoked

と無事、書き込みに成功しました。

versaloon-QuickStart1343.png

ARMマイコンパーフェクト学習基板でためしてみる

次にARMマイコンパーフェクト学習基板で、SWDIO, GND, SWCLKの3本の線で書き込みができるか、 試してみます。

ARMマイコンパーフェクト学習基板のP1ピンコネクタ

2 SWDIO
3 DWCLK
8 GND

これをVersaloonの

7 SWDIO
9 SWCLK
(4~20の偶数ピン) GND

に接続します。

結線は以下のようになります。

versaloon-TR-connect.png

コメント

選択肢 投票
おもしろかった 12  
そうでもない 0  
わかりずらい 0  

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


(Input image string)


*1 これらを使うときには、VMWareを使ってバーチャルマシンでWindowsを起動しなくてはなりません
*2 Ver. 6以降はサポートされているみたい
*3 私の方法は、Bingo氏の方法よりも簡単です
*4 STマイクロのウェブページの構成が悪いのだと思います。

添付ファイル: fileversaloon-TR-connect.png 1345件 [詳細] fileversaloon-QuickStart1343.png 1355件 [詳細] fileOpenOcd_cfgs.zip 1115件 [詳細] fileflash_loader_demo4.png 1405件 [詳細] fileflash_loader_demo1.png 1381件 [詳細] fileversaloon.png 1439件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-11-17 (日) 16:00:09 (1622d)
SmartDoc