スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

OpenOCD+ST-Link+FM3 リンク設定

OpenOCDをST-Link対応したので、どうしても富士通マイコンFM3(MB9BF506)に繋げたく思い、いろいろと試した結果、何とか繋がりました。だましだましなので、何処かに何かが潜んでいる可能性は十分にあります。


前回、STM32VLDISCOVERYを使って ST-Link と STM32F100 のリンク確認がとれました。なので、ヒョッとしたら出来るかな~くらいの感覚で ST-Link を使って FM3 に繋いでみたくなりました。裏事情として JTAGKey2 clone は基板丸出しの状態なのと、ST-Link-v1 が遊んでいたからというのがありますが…。

STM32F100の設定を見ると、stlink-v1.cfg, stm32f1x_stlink.cfg, stm32_stlink.cfg が呼び出されています。1つ目のは ST-Link-v1 自体を使うことを宣言する内容なので、そのまま使えます、3つ目のは2つ目のから呼び出されていたので、FM3用で作成する時は合体させてしまえ的な発想で1ファイルにしました。

ハマりにハマりまくったのが、JTAG-20pinの接続 = JTAG-DP だと思い込んでいたのと、STM32VLDISCOVERYは JTAG-DP で繋いでいると思い込んでいた点です。なので、ST-Link+FM3 でも JTAG-DP を使うように以下の設定をしていました。

 transport select stlink_jtag

この設定でいろいろと試していたのですが、何をしても Error 表示しか出ません。ググっても ST-Link+STM32Fxxx か、Versaloon+STM32Fxxx くらいしか出てこなく「ST-LinkってSTM32Fxxx用なんじゃないか」とまで半ば諦めかけていました。休憩がてらボーっとしていたら、ふと「STM32VLDISCOVERYってSW-DPで繋いでいるんじゃないか?」と思い立ち、確認してみると…やはり SW-DP で繋いでました。

ココからは考えの変更にさほど時間を要しませんでした。先ず JTAG-20pinの接続 = JTAG-DP の考えが吹っ飛びました。FM3は SWJ-DP で JTAG-DP/SW-DP の両方に対応してます。更に、これらは同じポートを使っています。なので接続コネクタもそのままで行けるはずと考えた。次に、ST-Link+STM32Fxxx の構成くらいしか試されていない = ST-Link の JTAG-DP の方はまだハック中? と連想されたので、SW-DP(SWD)接続に設定変更です。

 transport select stlink_swd

そのた細々と変更はありましたが、何とか接続できました。とりあえず、telnet/insight での接続確認を簡単にし、動かせるな~といった状態まで確認しました。まだまだ、モヤッとした部分がありますが、とにかく接続不可能だと思っていたのが接続できて良かったです。

RIMG0351 mb9bf506_stlink_20120325

成功したCFGファイルファイルを 【物置】 に置きました。



[2012/03/25 追記]
書き込みが出来ません。
タイムアウトになってしまいます…orz
スポンサーサイト

コメントの投稿

非公開コメント

ST-LINK V2 & MB9BF506R

はじめまして。
katsu と申します。長文ですが、お付き合い頂ければ幸いです。

FM3(MB9BF506R) に ST-Link/V2 を繋げようと思い、こちらのブログに辿りつきました。

IAR の評価キット MB9BF506R に OpenOCD で ST-Link/V2 を繋げようとしています。
同評価キットには J-Link が付いており、なんとか繋ってますが、ちょっと不安定で
す。(reset halt が リセットボタンを離すのと同時に発行しないと効かないなど。)

そこで、ST-Link/V2 に繋げようとしているのですが、どうしても繋がりません。

jujurou さんが ST-Link で FM3 との接続に成功された組み合わせはどういうもので
しょうか?
何かヒントのようなものを頂けるとありがたいです。


■ OpenOCD の実行状況
OpenOCD を起動すると、以下のように表示して終了してしまします。
-------- ここから ---------
Open On-Chip Debugger 0.8.0-dev-00106-gbb91c64-dirty (2013-08-03-23:07)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
adapter speed: 500 kHz
Info : This adapter doesn't support configurable speed
Info : STLINK v2 JTAG v16 API v2 SWIM v4 VID 0x0483 PID 0x3748
Info : Target voltage: 2.781353
Error: init mode failed
in procedure 'transport'
in procedure 'init'
-------- ここまで ---------

■ OpenOCD/cfgファイル/USB ドライバの組み合わせ
使用した OpenOCD は、jujurou さんの物置にある openocd_0.8.0-dev_20130803.zip
や、ねむいさんの公開している 20130820 版や、
http://www.freddiechopin.info/pl/download で公開している 0.5.0, 0.6.1 0.7.0
などいろいろです。

OpenOCD の cfg ファイルは、やはり jujurou さんの公開しているものや、それぞれの
OpenOCD に添付している fm_stlink.cfg、mb9bf506.cfg など、いろいろ必要に応じ
て修正しながら、試しました。(OpenOCD の 0.8.0 では、stlink_swd など、stlink を
使った指定をすると hla を使えと怒らますので、hla に変えてます。)

USB ドライバは、STMicro から最新版をダウンロードし、その中に出てくる
STMicroelectronics STLink dongle というものや、それを、Zadig で
WinUSB/libusbK/libUSB-win32 などに replace したものなど、いろいろ使用してみま
したが、いずれの組み合わせでも成功していません。

尚、STMicro からダウンロードした STM32ST-LINK Utility を使って動作確認すると
STMicro の USB ドライバが STMicroelectronics STLink dongle(バージョン不明)とい
うものだけ、
"Can not connect to target!"
となり、繋りそうな感じになりますが、その他は全て "No STLink detected!" となり
ます。

■ OpenOCD の詳細ログ
最後に openocd に -d 3 オプションを付けた時の ログを添付します。
-------- ここから ---------
Open On-Chip Debugger 0.8.0-dev-00106-gbb91c64-dirty (2013-08-03-23:07)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
User : 13 0 command.c:549 command_print(): debug_level: 3
Debug: 14 0 configuration.c:45 add_script_search_dir(): adding D:/Install/OpenOCD/openocd_0.8.0-dev_20130803/i686/..
Debug: 15 0 configuration.c:45 add_script_search_dir(): adding D:/Install/OpenOCD/openocd_0.8.0-dev_20130803/i686/../share/openocd/scripts
Debug: 16 0 configuration.c:45 add_script_search_dir(): adding D:/Install/OpenOCD/openocd_0.8.0-dev_20130803/i686/../scripts
Debug: 17 0 configuration.c:86 find_file(): found IarFM3.cfg
Debug: 18 0 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_telnet_port 4444
Debug: 19 15 command.c:145 script_debug(): command - telnet_port ocd_telnet_port 4444
Debug: 21 15 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_gdb_port 3333
Debug: 22 15 command.c:145 script_debug(): command - gdb_port ocd_gdb_port 3333
Debug: 24 15 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_interface hla
Debug: 25 15 command.c:145 script_debug(): command - interface ocd_interface hla
Debug: 27 15 command.c:369 register_command_handler(): registering 'ocd_hla_device_desc'...
Debug: 28 15 command.c:369 register_command_handler(): registering 'ocd_hla_serial'...
Debug: 29 15 command.c:369 register_command_handler(): registering 'ocd_hla_layout'...
Debug: 30 15 command.c:369 register_command_handler(): registering 'ocd_hla_vid_pid'...
Debug: 31 15 command.c:369 register_command_handler(): registering 'ocd_stlink_api'...
Debug: 32 15 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_hla_layout stlink
Debug: 33 15 command.c:145 script_debug(): command - hla_layout ocd_hla_layout stlink
Debug: 35 15 hla_interface.c:167 hl_interface_handle_layout_command(): hl_interface_handle_layout_command
Debug: 36 15 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_hla_device_desc ST-LINK/V2
Debug: 37 15 command.c:145 script_debug(): command - hla_device_desc ocd_hla_device_desc ST-LINK/V2
Debug: 39 15 hla_interface.c:141 hl_interface_handle_device_desc_command(): hl_interface_handle_device_desc_command
Debug: 40 15 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_hla_vid_pid 0x0483 0x3748
Debug: 41 15 command.c:145 script_debug(): command - hla_vid_pid ocd_hla_vid_pid 0x0483 0x3748
Debug: 43 31 hla_interface.c:195 hl_interface_handle_vid_pid_command(): hl_interface_handle_vid_pid_command
Debug: 44 31 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_transport select hla_swd
Debug: 45 31 command.c:145 script_debug(): command - ocd_transport ocd_transport select hla_swd
Debug: 46 31 hla_transport.c:187 hl_transport_select(): hl_transport_select
Debug: 47 31 command.c:369 register_command_handler(): registering 'ocd_hla'...
Debug: 48 31 command.c:369 register_command_handler(): registering 'ocd_jtag'...
Debug: 49 31 command.c:369 register_command_handler(): registering 'ocd_jtag'...
Debug: 50 31 command.c:369 register_command_handler(): registering 'ocd_jtag'...
Debug: 51 31 command.c:369 register_command_handler(): registering 'ocd_jtag'...
Debug: 52 31 command.c:369 register_command_handler(): registering 'ocd_jtag'...
Debug: 53 31 command.c:369 register_command_handler(): registering 'ocd_jtag'...
Debug: 54 31 command.c:369 register_command_handler(): registering 'ocd_jtag'...
Debug: 55 31 command.c:369 register_command_handler(): registering 'ocd_jtag'...
Debug: 56 31 command.c:369 register_command_handler(): registering 'ocd_jtag'...
Debug: 57 31 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_hla newtap mb9bfxx6 cpu -expected-id 0x2ba01477
Debug: 58 31 command.c:145 script_debug(): command - ocd_hla ocd_hla newtap mb9bfxx6 cpu -expected-id 0x2ba01477
Debug: 59 31 hla_tcl.c:104 jim_hl_newtap_cmd(): Creating New Tap, Chip: mb9bfxx6, Tap: cpu, Dotted: mb9bfxx6.cpu, 2 params
Debug: 60 31 hla_tcl.c:114 jim_hl_newtap_cmd(): Processing option: -expected-id
Debug: 61 47 core.c:1323 jtag_tap_init(): Created Tap: mb9bfxx6.cpu @ abs position 0, irlen 0, capture: 0x0 mask: 0x0
Debug: 62 47 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_target create mb9bfxx6.cpu cortex_m -chain-position mb9bfxx6.cpu
Debug: 63 47 command.c:145 script_debug(): command - ocd_target ocd_target create mb9bfxx6.cpu cortex_m -chain-position mb9bfxx6.cpu
Debug: 64 47 target.c:1624 target_free_all_working_areas_restore(): freeing all working areas
Debug: 65 47 command.c:369 register_command_handler(): registering 'ocd_arm'...
Debug: 66 47 command.c:369 register_command_handler(): registering 'ocd_arm'...
Debug: 67 47 command.c:369 register_command_handler(): registering 'ocd_arm'...
Debug: 68 47 command.c:369 register_command_handler(): registering 'ocd_arm'...
Debug: 69 47 command.c:369 register_command_handler(): registering 'ocd_arm'...
Debug: 70 47 command.c:369 register_command_handler(): registering 'ocd_arm'...
Debug: 71 47 command.c:369 register_command_handler(): registering 'ocd_dap'...
Debug: 72 47 command.c:369 register_command_handler(): registering 'ocd_dap'...
Debug: 73 47 command.c:369 register_command_handler(): registering 'ocd_dap'...
Debug: 74 47 command.c:369 register_command_handler(): registering 'ocd_dap'...
Debug: 75 47 command.c:369 register_command_handler(): registering 'ocd_dap'...
Debug: 76 47 command.c:369 register_command_handler(): registering 'ocd_dap'...
Debug: 77 47 command.c:369 register_command_handler(): registering 'ocd_cortex_m'...
Debug: 78 47 command.c:369 register_command_handler(): registering 'ocd_cortex_m'...
Debug: 79 47 command.c:369 register_command_handler(): registering 'ocd_cortex_m'...
Debug: 80 47 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 81 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 82 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 83 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 84 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 85 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 86 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 87 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 88 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 89 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 90 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 91 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 92 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 93 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 94 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 95 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 96 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 97 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 98 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 99 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 100 62 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 101 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 102 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 103 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 104 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 105 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 106 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 107 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 108 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 109 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 110 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 111 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 112 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 113 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 114 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 115 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 116 78 command.c:369 register_command_handler(): registering 'ocd_mb9bfxx6.cpu'...
Debug: 117 78 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_mb9bfxx6.cpu configure -work-area-phys 0x1FFF8000 -work-area-size 0x10000 -work-area-backup 0
Debug: 118 78 command.c:145 script_debug(): command - ocd_mb9bfxx6.cpu ocd_mb9bfxx6.cpu configure -work-area-phys 0x1FFF8000 -work-area-size 0x10000 -work-area-backup 0
Debug: 119 93 target.c:1624 target_free_all_working_areas_restore(): freeing all working areas
Debug: 120 93 target.c:1624 target_free_all_working_areas_restore(): freeing all working areas
Debug: 121 93 target.c:1624 target_free_all_working_areas_restore(): freeing all working areas
Debug: 122 93 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_flash bank mb9bfxx6.flash fm3 0 0 0 0 mb9bfxx6.cpu
Debug: 123 93 command.c:145 script_debug(): command - ocd_flash ocd_flash bank mb9bfxx6.flash fm3 0 0 0 0 mb9bfxx6.cpu
Debug: 125 93 command.c:369 register_command_handler(): registering 'ocd_fm3'...
Debug: 126 93 tcl.c:781 handle_flash_bank_command(): 'fm3' driver usage field missing
Debug: 127 93 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_adapter_khz 500
Debug: 128 93 command.c:145 script_debug(): command - adapter_khz ocd_adapter_khz 500
Debug: 130 93 core.c:1648 jtag_config_khz(): handle jtag khz
Debug: 131 93 core.c:1615 adapter_khz_to_speed(): convert khz to interface specific speed value
Debug: 132 93 core.c:1615 adapter_khz_to_speed(): convert khz to interface specific speed value
User : 133 93 command.c:549 command_print(): adapter speed: 500 kHz
Debug: 134 109 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_init
Debug: 135 109 command.c:145 script_debug(): command - init ocd_init
Debug: 137 109 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_target init
Debug: 138 109 command.c:145 script_debug(): command - ocd_target ocd_target init
Debug: 140 109 target.c:1187 handle_target_init_command(): Initializing targets...
Debug: 141 109 command.c:369 register_command_handler(): registering 'ocd_target_request'...
Debug: 142 109 command.c:369 register_command_handler(): registering 'ocd_trace'...
Debug: 143 109 command.c:369 register_command_handler(): registering 'ocd_trace'...
Debug: 144 125 command.c:369 register_command_handler(): registering 'ocd_fast_load_image'...
Debug: 145 125 command.c:369 register_command_handler(): registering 'ocd_fast_load'...
Debug: 146 125 command.c:369 register_command_handler(): registering 'ocd_profile'...
Debug: 147 125 command.c:369 register_command_handler(): registering 'ocd_virt2phys'...
Debug: 148 125 command.c:369 register_command_handler(): registering 'ocd_reg'...
Debug: 149 125 command.c:369 register_command_handler(): registering 'ocd_poll'...
Debug: 150 125 command.c:369 register_command_handler(): registering 'ocd_wait_halt'...
Debug: 151 125 command.c:369 register_command_handler(): registering 'ocd_halt'...
Debug: 152 125 command.c:369 register_command_handler(): registering 'ocd_resume'...
Debug: 153 125 command.c:369 register_command_handler(): registering 'ocd_reset'...
Debug: 154 125 command.c:369 register_command_handler(): registering 'ocd_soft_reset_halt'...
Debug: 155 125 command.c:369 register_command_handler(): registering 'ocd_step'...
Debug: 156 125 command.c:369 register_command_handler(): registering 'ocd_mdw'...
Debug: 157 125 command.c:369 register_command_handler(): registering 'ocd_mdh'...
Debug: 158 125 command.c:369 register_command_handler(): registering 'ocd_mdb'...
Debug: 159 125 command.c:369 register_command_handler(): registering 'ocd_mww'...
Debug: 160 125 command.c:369 register_command_handler(): registering 'ocd_mwh'...
Debug: 161 125 command.c:369 register_command_handler(): registering 'ocd_mwb'...
Debug: 162 125 command.c:369 register_command_handler(): registering 'ocd_bp'...
Debug: 163 125 command.c:369 register_command_handler(): registering 'ocd_rbp'...
Debug: 164 140 command.c:369 register_command_handler(): registering 'ocd_wp'...
Debug: 165 140 command.c:369 register_command_handler(): registering 'ocd_rwp'...
Debug: 166 140 command.c:369 register_command_handler(): registering 'ocd_load_image'...
Debug: 167 140 command.c:369 register_command_handler(): registering 'ocd_dump_image'...
Debug: 168 140 command.c:369 register_command_handler(): registering 'ocd_verify_image'...
Debug: 169 140 command.c:369 register_command_handler(): registering 'ocd_test_image'...
Debug: 170 140 command.c:369 register_command_handler(): registering 'ocd_reset_nag'...
Debug: 171 140 command.c:369 register_command_handler(): registering 'ocd_ps'...
Debug: 172 140 hla_interface.c:107 hl_interface_init(): hl_interface_init
Debug: 173 140 hla_layout.c:91 hl_layout_init(): hl_layout_init
Info : 174 140 core.c:1375 adapter_init(): This adapter doesn't support configurable speed
Debug: 175 140 openocd.c:132 handle_init_command(): Debug Adapter init complete
Debug: 176 140 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_transport init
Debug: 177 140 command.c:145 script_debug(): command - ocd_transport ocd_transport init
Debug: 179 140 transport.c:240 handle_transport_init(): handle_transport_init
Debug: 180 140 hla_transport.c:148 hl_transport_init(): hl_transport_init
Debug: 181 140 hla_transport.c:165 hl_transport_init(): current transport hla_swd
Debug: 182 140 hla_interface.c:44 hl_interface_open(): hl_interface_open
Debug: 183 140 hla_layout.c:42 hl_layout_open(): hl_layout_open
Debug: 184 140 stlink_usb.c:1233 stlink_usb_open(): stlink_usb_open
Debug: 185 140 stlink_usb.c:1251 stlink_usb_open(): transport: 1 vid: 0x0483 pid: 0x3748
Info : 186 1109 stlink_usb.c:423 stlink_usb_version(): STLINK v2 JTAG v16 API v2 SWIM v4 VID 0x0483 PID 0x3748
Debug: 187 1109 stlink_usb.c:601 stlink_usb_init_mode(): MODE: 0x02
Info : 188 1125 stlink_usb.c:457 stlink_usb_check_voltage(): Target voltage: 2.779279
Debug: 189 1125 stlink_usb.c:656 stlink_usb_init_mode(): MODE: 0x01
Debug: 190 1125 stlink_usb.c:376 stlink_usb_error_check(): status error: 9 ('unknown')
Error: 191 1125 stlink_usb.c:1328 stlink_usb_open(): init mode failed
Debug: 192 1125 hla_layout.c:49 hl_layout_open(): failed
Debug: 193 1125 command.c:631 run_command(): Command failed with error code -4
User : 194 1125 command.c:669 command_run_line(): in procedure 'transport'
Debug: 195 1125 command.c:631 run_command(): Command failed with error code -4
User : 196 1125 command.c:669 command_run_line(): in procedure 'init'
Debug: 197 1125 hla_interface.c:115 hl_interface_quit(): hl_interface_quit
-------- ここまで ---------

以上

Re: ST-LINK V2 & MB9BF506R

katsuさん、はじめまして。

私自身、ST-LINK/V2とMB9BF506Rを繋いだことがありませんが、気になった点を下記します。

1. ST-LINKの場合、OpenOCDは0.7.0(?)からSTMicroの純正ドライバに対応し、Zadigを使う必要がなくなりました。ちなみに、ST-LINK/V2のドライバは以下にあります。
http://www.st.com/web/en/catalog/tools/PF258167

2. ST-LINKで繋ぐ場合、SWD接続(SWO,SCK,GNDを接続、場合によってVcc,SWVも接続)になります。
cfgの中身もSTLINK用の物を使用しますので、ST-LINKを使わない場合(JTAGKey等を使う場合)と異なります。
この点に注意してcfgを書き換える必要があります。

現時点ではおそらく1の要因でつながらない状況になっています。
ちなみに、ST-LINK/V2は何をお使いでしょうか?

ST-LINK V2 & MB9BF506R

jujrou さん、早速のご返信ありがとうございます。

ご指摘頂いた 1. の USB ドライバですが、ご連絡頂いた STmicro のサイトのものを、Zadig
は使わず、純正ドライバのままで、いろいろ試しましたが残念ながらダメでした。
ドライバのインストールの仕方がまずいのでしょうか。

手順は以下のようにしてます。
1)ダウンロードした st-link_v2_usbdriver.zip を解凍してできる
st-link_v2_usbdriver.exeを実行する。
2) Windows の デバイスマネージャで STMicroelectronics STLink dongle を選択し、
ドライバの更新をクリック。
3)ハードウェアの更新ウィザード画面が開くので、「ソフトウェアを自動的にインス
トールする」をチェックし、その次の画面で出てくるドライバのリストの中から選択する。
ここには "... dongle" と名の付いたものだけで 12個ぐらいあります。

ここに dongle と付いたものははじから試めしましたが、いずれも症状は同じです。
Windows の OS は XP です。

使用している ST-Link/V2 は単体の製品で ST-LINK/V2 dongle と Packaging list
に書いてあります。

使用した cfg ファイルは以下です。jujurou さんの openocd_0.8.0-dev_20130803
に同梱されていた interface/st-link-v2.cfg と target/fm3_stlink.cfg を合体して
修正したものです。

何か気が付いたことがありました、お教えください。
よろしくお願いします。

-------- ここから ---------
telnet_port 4444
gdb_port 3333

set CHIPNAME mb9bfxx6
set CPUTAPID 0x2ba01477
#set TRANSPORT stlink_jtag
# stlink_jtag --> hla_swd by katsu
set TRANSPORT hla_swd

#source [find interface/stlink-v2.cfg]
interface hla
hla_layout stlink
hla_device_desc "ST-LINK/V2"
hla_vid_pid 0x0483 0x3748

#source [find target/fm3_stlink.cfg]
# MB96F506
# Fujitsu Cortex-M3 with 512kB Flash and 64kB RAM

if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
} else {
set _CHIPNAME mb9bf500
}

if { [info exists ENDIAN] } {
set _ENDIAN $ENDIAN
} else {
set _ENDIAN little
}

if { [info exists CPUTAPID] } {
set _CPUTAPID $CPUTAPID
} else {
set _CPUTAPID 0x4ba00477
}

if { [info exists TRANSPORT] } {
# stlink_jtag or stlink_swd
set _TRANSPORT $TRANSPORT
} else {
set _TRANSPORT stlink_swd
}


#
# possibles value are stlink_swd or stlink_jtag
#
transport select $_TRANSPORT



# delays on reset lines
#jtag_nsrst_delay 100
#jtag_ntrst_delay 100

# Fujitsu cortex-M3 reset configuration
#reset_config trst_only
#reset_config srst_only srst_nogate connect_assert_srst

#jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
#stlink newtap $_CHIPNAME cpu -expected-id $_CPUTAPID
# stlink --> hla by katsu
hla newtap $_CHIPNAME cpu -expected-id $_CPUTAPID

set _TARGETNAME $_CHIPNAME.cpu
#target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
#target create $_TARGETNAME stm32_stlink -chain-position $_TARGETNAME
# stm32_stlink --> cortex_m by katsu
target create $_TARGETNAME cortex_m -chain-position $_TARGETNAME

# MB9BF506 has 64kB of SRAM on its main system bus
$_TARGETNAME configure -work-area-phys 0x1FFF8000 -work-area-size 0x10000 -work-area-backup 0

# MB9BF506 has 512kB internal FLASH

set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME fm3 0 0 0 0 $_TARGETNAME

# 4MHz / 6 = 666kHz, so use 500
adapter_khz 500
#adapter_khz 1

# if srst is not fitted use SYSRESETREQ to
# perform a soft reset
#cortex_m3 reset_config sysresetreq


#proc halt_mpu {} {
# init
# reset halt
#}

-------- ここまで ---------

以上

Re: ST-LINK V2 & MB9BF506R

デバイスマネージャを確認するとドライバが正常にインストールできたか確認できます。

ST-LINK/V2(先に何も接続しない)をPCに繋いだ状態で、
「ユニバーサル シリアル バス コントローラ」の所に
「STMicroelectronics STLink dongle」というのが出てくる様です。
私が持っているのはST-LINK/V1なので、上記の内容は出てこず、
「USB 大容量記憶装置」となっていました。

次に、STM32 ST-LINK Utilityを使用して本当に認識しているかのテストができます。
Utilityを起動して「ST-LINK」→「Firmware update」とすると別ウィンドウが開き、
「Device Connect」ボタンを押下します。正常に認識していますと、
Firmware Version: 欄にバージョンが表示されます。upgradeが可能であれば「Yes」ボタンを
押下してupgradeしておきます。

ここまでの確認ができれば、ST-LINK/V2はPCに正常に認識され、動作している状態であるといえます。
上記までたどり着いていない場合は、ドライバが正常にインストールされていない状態なので、
再インストールする必要があります。

デバイスマネージャーの該当デバイスを右クリック、プロパティのドライバータブで削除を選択だったと思います。

ちなみに、正常に動作している場合はプロパティ、詳細のプルダウンメニューで「ハードウェアID」を選択するとVID,PIDを確認する事ができます。

まずはここまで確認してみてください。

ST-LINK V2 & MB9BF506R

jujrou さん、ご返信ありがとうございます。

デバイスマネージャでドライバの確認をしたところ、正常に動作しているようです。
ハードウェアID を確認すると以下になっており、OpenOCD のログに出てくるものと同
じで問題なさそうです。
USB\Vid_0483&Pid_3748&Rev_0100
USB\Vid_0483&Pid_3748

尚、ドライバですが、以下のものがハードウェア更新ウィザードで列挙されます。
同じバージョンのものが複数あります。いずれのドライバでもハードウェアID の確認
まではできます。

<バージョン> <inf ファイル> <プロバイダ>
不明 stlink_winusb.inf 不明
3.0.5.16 oem110.inf, oem103.inf, oem108.inf の3個。libsubK
6.1.7600.16385 oem111.inf, 104, 113, 105, 107 の5個。 libusbx
1.2.6.0 oem112.inf, 106, 109 の3個。 libusb-win32


ST-LINK Utility による Fimware のバージョン確認ですが、上記ドライバの中でバー
ジョンが「不明」のものでのみ、可能でした。

V.16 が入っていたので、V.17 にバージョンアップもしてみました
が、状況は以前と変わりませんでした。

まずは、ご報告まで。

以上

Re: ST-LINK V2 & MB9BF506R

ねむいさんから指摘があるまで存在を知りませんでしたが、
On BoardのJ-LINKとを解放する端子があるのですね。

導入ガイドの2頁にJP4で切り替えができる旨が記載されていました。
この設定はされていますでしょうか?
因みにボード自体は購入していません。

C:\Program Files\IAR Systems\IAR-Kit-for-MB9BF506R-JPN\Guides\GS-MB9BF506R-JPN.pdf

ST-LINK V2 & MB9BF506R

jujrou さん、ご返信ありがとうございます。

>On BoardのJ-LINKとを解放する端子があるのですね。
>
>導入ガイドの2頁にJP4で切り替えができる旨が記載されていました。
>この設定はされていますでしょうか?

実は、これが嵌った一つなのですが、導入ガイドの記載が間違っており、切り替えは
JP4ではなくJ4 でした。J4 のショートで On Board J-LINK が無効になるようです。場
所を示す写真まで間違ってました。 (回路図を見ると、JP4 はMB9BF506Rの Mode端子に
繋がっていてます。)

それで、J4 ショート、JP4解放にして J5 の外付け用JTAG コネクタに IAR J-Link という
外付けの JTAGアダプタを繋げ、Falsh の書き込みができるところまでは確認しました。
(JTAG-DP OVERRUN になるという問題はありますが。)

この状態で、ST-LINK に差し替え、cfg ファイルも入れ替えて動作させようとしてますが、
これまでご連絡したような状態でつながりません。

以上

Re: ST-LINK V2 & MB9BF506R

またもや、ねむいさんにアドバイスを頂きました。

> target create $_TARGETNAME cortex_m -chain-position $_TARGETNAME
> ->
> target create $_TARGETNAME hla_target -chain-position $_TARGETNAME

こうすることで繋がる事を確認しました。

ただ、私の環境では書き込みができません。
正確には erase ができないのです。
JTAGKeyで繋いで erase をしてからST-Link/V1に変えて flash_write をすると書き込めます。
このあたりの解析はしていないので、どこか設定漏れがあるのかもしれません。


---------------------------
telnet_port 4444
gdb_port 3333

set CHIPNAME mb9bfxx6
set CPUTAPID 0x2ba01477
set TRANSPORT hla_swd

#source [find interface/stlink-v1.cfg]
interface hla
hla_layout stlink
hla_device_desc "ST-LINK/V1"
hla_vid_pid 0x0483 0x3744

#source [find target/fm3_stlink.cfg]
# MB96F506
# Fujitsu Cortex-M3 with 512kB Flash and 64kB RAM

if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
} else {
set _CHIPNAME mb9bf506
}

if { [info exists ENDIAN] } {
set _ENDIAN $ENDIAN
} else {
set _ENDIAN little
}

if { [info exists CPUTAPID] } {
set _CPUTAPID $CPUTAPID
} else {
set _CPUTAPID 0x4ba00477
}

if { [info exists TRANSPORT] } {
# hla_jtag or hla_swd
set _TRANSPORT $TRANSPORT
} else {
set _TRANSPORT hla_swd
}


#
# possibles value are hla_swd or hla_jtag
#
transport select $_TRANSPORT


# delays on reset lines
#jtag_nsrst_delay 100
#jtag_ntrst_delay 100

# Fujitsu cortex-M3 reset configuration
#reset_config trst_only
#reset_config srst_only srst_nogate connect_assert_srst

hla newtap $_CHIPNAME cpu -expected-id $_CPUTAPID

set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME hla_target -chain-position $_TARGETNAME

# MB9BF506 has 64kB of SRAM on its main system bus
$_TARGETNAME configure -work-area-phys 0x1FFF8000 -work-area-size 0x8000 -work-area-backup 0

# MB9BF506 has 512kB internal FLASH

set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME fm3 0 0 0 0 $_TARGETNAME

# 4MHz / 6 = 666kHz, so use 500
adapter_khz 500

---------------------------

ST-LINK V2 & MB9BF506R

jujrou さん、katsu です。
私のしつこい質問にごていねいに回答頂き、恐縮してます。

jujuoru さんの cfg ファイルの ST-LINK/V1 の部分を ST-LINK/V2 用に変更して
試してみましたが、残念ながら結果は変わらず、繋がりませんでした。
(cortex_m3 でも hla_target でも変わりありませんでした。)

>hla_device_desc "ST-LINK/V1"
>hla_vid_pid 0x0483 0x3744
-->
hla_device_desc "ST-LINK/V2"
hla_vid_pid 0x0483 0x3748
※ この変更をしないと、ターゲットの電圧表示さえ出なくなります。

以下は、-d 3 のオプションを付けて実行した際の、エラー終了する部分のログです。

--------------
Debug: 166 125 hla_layout.c:42 hl_layout_open(): hl_layout_open
Debug: 167 125 stlink_usb.c:1233 stlink_usb_open(): stlink_usb_open
Debug: 168 125 stlink_usb.c:1251 stlink_usb_open(): transport: 1 vid: 0x0483 pid: 0x3748
Info : 169 1109 stlink_usb.c:423 stlink_usb_version(): STLINK v2 JTAG v17 API v2 SWIM v4 VID 0x0483 PID 0x3748
Debug: 170 1109 stlink_usb.c:601 stlink_usb_init_mode(): MODE: 0x02
Info : 171 1124 stlink_usb.c:457 stlink_usb_check_voltage(): Target voltage: 2.781102
Debug: 172 1124 stlink_usb.c:656 stlink_usb_init_mode(): MODE: 0x01
Debug: 173 1124 stlink_usb.c:376 stlink_usb_error_check(): status error: 9 ('unknown')
Error: 174 1124 stlink_usb.c:1328 stlink_usb_open(): init mode failed
Debug: 175 1124 hla_layout.c:49 hl_layout_open(): failed
Debug: 176 1124 command.c:631 run_command(): Command failed with error code -4
User : 177 1124 command.c:669 command_run_line(): in procedure 'transport'
Debug: 178 1124 command.c:631 run_command(): Command failed with error code -4
User : 179 1124 command.c:669 command_run_line(): in procedure 'init'
Debug: 180 1124 hla_interface.c:115 hl_interface_quit(): hl_interface_quit
--------------

openocd-0.7.0 での stlink_usb.c を覗くと、JTAG FW のバージョンが v11 以上か
未満かで、上記の 「 status error: 9 ('unknown')」になるか否かが分かれているよ
うです。(それ以上は私の能力不足で分かりません。)

jujurou さんの環境では、バージョン表示(上記では JTAG v17なっているところ)は
どのようになっていますでしょうか?

あつかましく、何度もお聞きして、申し訳ありません。

以上

Re: ST-LINK V2 & MB9BF506R

バージョン云々の話ではないと思います。
一つ確認ですが、評価ボードの電源はどこから取られていますでしょうか?
On BoardのJ-Linkでは電源をJ-Linkから取っているみたいですが、ST-Linkではおそらくできないと思います。
評価ボードに電源コネクタがあるように見えますが、そこから電源を供給されていますでしょうか?

ねむいさんがcfgファイルを展開されています。
私はST-Link/V1で動かしていますので、動作が異なるかもしれません。
直リンクはどうかと思いますので、ねむいさんのぶろぐから頂いて試してみてはどうでしょう?

私のblogへの質問でねむいさんに振るのはかなり失礼な事ですので、迷惑をかけられないよう注意願います。

ねむいさん、いつも情報提供ありがとう御座います。

No title

jujurou 様、katsu です。

つながりました!!!

ご指摘頂きましたように電源を JTAG コネクタからではなく、外部から供給させた
ところ、MB9BF506R + ST-LINK/V2 での動作が可能になりました。

あまりにも単純な理由に気付かなかった自分が情けないです。外付けの J-Link の時
は、JTAGコネクタからの電源供給で OB J-Link と同等に動いてましたので、
ST-LINK/V2 でも可能だと思い込んでおりました。(外付けの J-Link が動かない時、外
部電源で試したこともあり、その時は効果なかったので、どうせだめだろうと思い込ん
でおりました。)

ねむいさんの 20130903版の openocd.exe, stlink-v2.cfg, mb9bf506r_hla_flash.cfg
の組み合わせにて フラッシュへの書き込みもできております。

尚、以下のメッセージが出ておりますが、取り敢えずの動作は問題なさそうです。

-------
jtag status contains invalid mode value - communication failure
-------

本当に、ありがとうございました。

この場をお借りして ねむいさんにもお礼申し上げます。

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

jujurou

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

カレンダー
06 | 2017/07 | 08
- - - - - - 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 イーサネットコンバータ FON2405E DAC buildroot FM3ペリフェラル BeagleBoneBlack FM3評価ボード library OpenGL mingw ODROID-U2 TL-WR700N Edison bitbake KiCad 計測 VMware シングル FM4 ミニワッター 6N6P プリアンプ 

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

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。