STM8S-DISCOVERYのST-Link部分をVersaloon化

そう、今更ネタです。しかし、枯れたネタだからか情報や書き込み用のファイルがリンク切れになっていたりして、結局1から構築する羽目になりました。

RIMG0439.jpg

ST-LinkのVersaloon化は前々からやろうとしてたのですが、チョコチョコ触っていたARMマイコンがCortex-M3だったりするのでJtagkey2で十分間に合っていました。しかし、Cortex-M4,M0,M0+ を扱う上ではSWD対応のドングルが必要になってくるのと、OpenOCDがそろそろSWD対応してくるのと、Versaloon(SWD版)のネタが上がってきているので、手を出しておこうかと思い重い腰を上げてみました。

その昔、2枚購入していたSTM8S-DISCOVERYのうち1枚のST-Link部分をVersaloon化します。本家のSVNのログを見ると、r987で "stm8s-discovery board fix" とあります。最新版はr1381のようですが、これにすると修正箇所が多くなるのでr987で書き込み用のファイルを作成します。

$ svn co http://vsprog.googlecode.com/svn/trunk -r 987


以下のファイルのボード選択値を変更します。

/trunk/dongle/firmware/Projects/Versaloon/GCC/makefile
HW_BOARD = STM8S_Discovery

また、以下のファイルにはコンパイル不可能な記述があるのでここの内容を参考に修正します。2行なので手動で修正しました。

/trunk/vsf/interfaces/cpu/stm32/hw/STM32F10x_Lib/Libraries/CMSIS/CM3/CoreSupport/core_cm3.c

From 7341a316c38a61cc745ce04e618916677007883b Mon Sep 17 00:00:00 2001
From: Timothy Brom
Date: Wed, 29 Feb 2012 11:29:55 -0500
Subject: [PATCH] Fixed error about strexh and strexb using the same register

---
example/libs_stm/inc/core_support/core_cm3.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/example/libs_stm/inc/core_support/core_cm3.c b/example/libs_stm/inc/core_support/core_cm3.c
index 56fddc5..0e8c3c4 100644
--- a/example/libs_stm/inc/core_support/core_cm3.c
+++ b/example/libs_stm/inc/core_support/core_cm3.c
@@ -733,7 +733,7 @@ uint32_t __STREXB(uint8_t value, uint8_t *addr)
{
uint32_t result=0;
- __ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
+ __ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
return(result);
}
@@ -750,7 +750,7 @@ uint32_t __STREXH(uint16_t value, uint16_t *addr)
{
uint32_t result=0;
- __ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
+ __ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
return(result);
}
--


arm-none-eabi-gcc.exe などがあるフォルダにパスが通っている状態でmakeします。
$ cd ./trunk/dongle/firmware/Projects/Versaloon/GCC
$ make


無事にコンパイルが終わると Versaloon_GCC-STM8S_Discovery-0x0000.hex というファイルがmakeしたフォルダ内に出来ます。これを ST-Link部分に書き込めばドングルは完成です。書き込み方法はCN5を利用してJTAGKey2とOpenOCDを使って書き込みました。最初はST-LinkのFlash-ROMにロックがかかった状態で、これを解除する必要があります。解除は STM32 ST-LINK Utility でするか、OpenOCDのコマンドを使ったか…解除だけ結構前に行ったのでどちらで行ったか忘れてしまいました。

書き込みが終わったら、ドングルをPCから抜き刺しして、ドライバのインストールをします。Versaloonのドライバは以下の場所にあります(64bit版)。

/trunk_stm8s-discovery/dongle/driver/win64/versaloon/driver

念の為に簡単な動作確認をしました。OpenOCDで確認しましたが、この場合、VersaloonのSWD版に対応させたOpenOCDが必要になります。手元にありますが、その他の確認が出来てないので時期がきたら【物置】に置いておきます。 作成したVersaloonのバイナリとVersaloon対応OpenOCDを【物置】に置きました。

OpenOCDでLPC1114へアクセスした内容が以下です。telnetで簡単な動作確認をしました。


$ ./openocd.exe -s ./tcl -f ./tcl/interface/vsllink_swd.cfg -f ./tcl/target/lpc1114_swd_flash.cfg
Open On-Chip Debugger 0.7.0-dev (2013-01-26-19:54)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : OpenOCD runs in SWD mode
adapter_nsrst_delay: 200
jtag_ntrst_delay: 200
none separate
adapter speed: 250 kHz
cortex_m3 reset_config sysresetreq
Info : Versaloon(0x32)by Simon(compiled on Feb 15 2013)
Info : USB_TO_XXX abilities: 0x00000008:0x00000040:0xC0000006
Info : clock speed 250 kHz
Info : lpc1114.cpu: hardware has 4 breakpoints, 2 watchpoints
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0xc1000000 pc: 0x1fff0040 msp: 0x10000ffc
Info : accepting 'telnet' connection from 4444
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000dd0 msp: 0x10001fb0
target state: halted
target halted due to single-step, current mode: Thread
xPSR: 0x01000000 pc: 0x00000dd2 msp: 0x10001fa8
shutdown command invoked


RIMG0440.jpg

スポンサーサイト

コメントの投稿

非公開コメント

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
02 | 2017/03 | 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
最新記事
最新コメント
カテゴリ
ユーザタグ

RaspberryPi ぺるけ Linux TRminiWatterPart4 トランジスタ式ミニワッター MPD イーサネットコンバータ OpenOCD DAC FON2405E buildroot FM3ペリフェラル BeagleBoneBlack library FM3評価ボード ODROID-U2 mingw OpenGL TL-WR700N Edison bitbake KiCad VMware シングル FM4 ミニワッター 6N6P 計測 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter