Перейти к содержанию
    

STM32VLDISCOVERY в качестве отладчика

Имеем

- Ubuntu 14.04 32bit

- STM32VLDISCOVERY

- STM32F107VC

- OpenOCD 0.8.0

- arm-none-eabi-xxx

В качестве отладчика пытаюсь запустить discovery. Пока что все попытки не увенчались успехом.

при подключении discovery ядро (dmesg) выдает:

[ 83.660090] usb 1-4.1: new full-speed USB device number 7 using ehci-pci
[ 83.754037] usb 1-4.1: New USB device found, idVendor=0483, idProduct=3744
[ 83.754041] usb 1-4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 83.754044] usb 1-4.1: Product: STM32 STLink
[ 83.754047] usb 1-4.1: Manufacturer: STMicroelectronics
[ 83.754049] usb 1-4.1: SerialNumber: U\xffffffc3\xffffffbf\xffffffbfm\x06H\xffffffc2\xffffff82\xffffff82HSCu"\xffffffc2\xffffff87\xffffff87
[ 83.799151] usb-storage 1-4.1:1.0: USB Mass Storage device detected
[ 83.800050] scsi4 : usb-storage 1-4.1:1.0
[ 83.800176] usbcore: registered new interface driver usb-storage
[ 84.801047] scsi 4:0:0:0: Direct-Access STM32 PQ: 0 ANSI: 0
[ 84.801413] sd 4:0:0:0: Attached scsi generic sg2 type 0
[ 84.802025] sd 4:0:0:0: [sdc] 64000 512-byte logical blocks: (32.7 MB/31.2 MiB)
[ 84.803593] sd 4:0:0:0: [sdc] Write Protect is on
[ 84.803601] sd 4:0:0:0: [sdc] Mode Sense: 03 00 80 00
[ 84.804920] sd 4:0:0:0: [sdc] No Caching mode page found
[ 84.804928] sd 4:0:0:0: [sdc] Assuming drive cache: write through
[ 84.880106] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 85.056148] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 85.232177] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 85.408087] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 85.584123] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 85.760160] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 85.854379] sd 4:0:0:0: [sdc] No Caching mode page found
[ 85.854386] sd 4:0:0:0: [sdc] Assuming drive cache: write through
[ 85.860082] sdc:
[ 85.936079] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 86.112110] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 86.288146] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 86.464059] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 86.640096] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 86.816134] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 86.911098] sd 4:0:0:0: [sdc] No Caching mode page found
[ 86.911105] sd 4:0:0:0: [sdc] Assuming drive cache: write through
[ 86.911110] sd 4:0:0:0: [sdc] Attached SCSI removable disk
[ 86.988178] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 87.164084] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 87.340120] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 87.516157] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 87.692069] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 87.868105] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 88.036147] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 88.212059] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 88.388095] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 88.564133] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 88.740169] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 88.916083] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 89.008547] sd 4:0:0:0: [sdc] Unhandled error code
[ 89.008553] sd 4:0:0:0: [sdc] 
[ 89.008556] Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
[ 89.008558] sd 4:0:0:0: [sdc] CDB: 
[ 89.008560] Read(10): 28 00 00 00 f9 80 00 00 08 00
[ 89.008570] end_request: I/O error, dev sdc, sector 63872
[ 89.008574] Buffer I/O error on device sdc, logical block 7984
[ 89.084124] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 89.260160] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 89.436071] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 89.612127] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 89.788145] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 89.964182] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 90.056516] sd 4:0:0:0: [sdc] Unhandled error code
[ 90.056520] sd 4:0:0:0: [sdc] 
[ 90.056523] Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
[ 90.056525] sd 4:0:0:0: [sdc] CDB: 
[ 90.056527] Read(10): 28 00 00 00 f9 80 00 00 08 00
[ 90.056536] end_request: I/O error, dev sdc, sector 63872
[ 90.056540] Buffer I/O error on device sdc, logical block 7984
[ 90.132099] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 90.308136] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 90.484173] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 90.660084] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 90.836125] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 91.012159] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 91.104616] sd 4:0:0:0: [sdc] Unhandled error code
[ 91.104619] sd 4:0:0:0: [sdc] 
[ 91.104622] Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
[ 91.104624] sd 4:0:0:0: [sdc] CDB: 
[ 91.104626] Read(10): 28 00 00 00 f9 f0 00 00 08 00
[ 91.104634] end_request: I/O error, dev sdc, sector 63984
[ 91.104637] Buffer I/O error on device sdc, logical block 7998
[ 91.180075] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 91.356111] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 91.532148] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 91.708060] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 91.884097] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 92.060135] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 92.152591] sd 4:0:0:0: [sdc] Unhandled error code
[ 92.152595] sd 4:0:0:0: [sdc] 
[ 92.152597] Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
[ 92.152600] sd 4:0:0:0: [sdc] CDB: 
[ 92.152601] Read(10): 28 00 00 00 f9 f0 00 00 08 00
[ 92.152609] end_request: I/O error, dev sdc, sector 63984
[ 92.152612] Buffer I/O error on device sdc, logical block 7998
[ 92.240169] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 92.416081] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 92.592118] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 92.768173] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 92.944072] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 93.120105] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 93.212565] sd 4:0:0:0: [sdc] Unhandled error code
[ 93.212569] sd 4:0:0:0: [sdc] 
[ 93.212572] Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
[ 93.212574] sd 4:0:0:0: [sdc] CDB: 
[ 93.212576] Read(10): 28 00 00 00 f9 f8 00 00 01 00
[ 93.212586] end_request: I/O error, dev sdc, sector 63992
[ 93.212590] Buffer I/O error on device sdc, logical block 7999
[ 93.288163] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 93.464203] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 93.640119] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 93.816144] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 93.992175] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 94.168080] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 94.260542] sd 4:0:0:0: [sdc] Unhandled error code
[ 94.260546] sd 4:0:0:0: [sdc] 
[ 94.260548] Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
[ 94.260551] sd 4:0:0:0: [sdc] CDB: 
[ 94.260553] Read(10): 28 00 00 00 f9 f8 00 00 01 00
[ 94.260562] end_request: I/O error, dev sdc, sector 63992
[ 94.260567] Buffer I/O error on device sdc, logical block 7999
[ 94.336134] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 94.512159] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 94.688069] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci
[ 94.864118] usb 1-4.1: reset full-speed USB device number 7 using ehci-pci

 

Если запустить openocd с таким config файлом

./openocd -f /opt/openocd/share/openocd/scripts/board/stm32vldiscovery.cfg

то в результате получим (иногда вообще никаких Error не выводит, просто завершает работу.)

sudo ./openocd -f /opt/openocd/share/openocd/scripts/board/stm32vldiscovery.cfg 
Open On-Chip Debugger 0.8.0 (2014-08-19-11:19)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : This adapter doesn't support configurable speed
in procedure 'transport'
in procedure 'init'

или

./openocd -f /opt/openocd/share/openocd/scripts/board/stm32vldiscovery.cfg 
Open On-Chip Debugger 0.8.0 (2014-08-19-11:19)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : This adapter doesn't support configurable speed
Error: read version failed
in procedure 'transport'
in procedure 'init'

При использовании /texane/stlink

./st-util 
2014-08-20T09:39:07 INFO src/stlink-usb.c: -- exit_dfu_mode
2014-08-20T09:39:07 INFO src/stlink-common.c: Loading device parameters....
2014-08-20T09:39:07 INFO src/stlink-common.c: Device connected is: F1 Connectivity line device, id 0x10016418
2014-08-20T09:39:07 INFO src/stlink-common.c: SRAM size: 0x10000 bytes (64 KiB), Flash: 0x40000 bytes (256 KiB) in pages of 2048 bytes
2014-08-20T09:39:07 INFO gdbserver/gdb-server.c: Chip ID is 00000418, Core ID is 1ba01477.
libusb_handle_events() | has_error
[!] send_recv
2014-08-20T09:39:07 INFO gdbserver/gdb-server.c: Listening at *:4242...
^C
libusb_handle_events() | has_error
[!] send_recv
libusb_handle_events() | has_error
[!] send_recv
libusb_handle_events() | has_error
[!] send_only

dmesg после запуска openocd

[ 1515.391032] usb 1-4.1: usbfs: interface 0 claimed by usb-storage while 'openocd' sets config #1

Относительно texane сказано что

IF YOU HAVE AN STLINKv1

~~~~~~~~~~~~~~~~~~~~~~~

The STLINKv1's SCSI emulation is very broken, so the best thing to do

is tell your operating system to completely ignore it.

 

Options (do one of these before you plug it in)

*) modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:i

or *)1. add "options usb-storage quirks=483:3744:i" to /etc/modprobe.conf

*)2. modprobe -r usb-storage && modprobe usb-storage

or *)1. cp stlink_v1.modprobe.conf /etc/modprobe.d

*)2. modprobe -r usb-storage && modprobe usb-storage

 

Для нашего случая, если применить игнор, то результат на запуск openocd будет таким

./openocd -f /opt/openocd/share/openocd/scripts/board/stm32vldiscovery.cfg 
Open On-Chip Debugger 0.8.0 (2014-08-19-11:19)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : This adapter doesn't support configurable speed
Info : STLINK v1 JTAG v13 API v2 SWIM v0 VID 0x0483 PID 0x3744
Info : using stlink api v2
Error: init mode failed
in procedure 'transport'
in procedure 'init'

При этом texane, для случая когда мы игнорируем usb-storage ведет себя аналогично тому как и без игнора

 

Если полезть в коменты репозитория на openocd, то можно найти инфрмацию, не на столько уж и давнешнюю

stlink_usb: Fix swallowed error on read/write operations, add retries on SWD WAIT, clean up error debug output.

 

- stlink_usb_get_rw_status() had a bug where FAULT or WAIT responses

in read/write operations were ignored, leading to incomplete data.

 

- Added wrapper stlink_cmd_allow_retry to handle

SWD_AP_WAIT/SWD_DP_WAIT statuses in most commands. These statuses

appear if an SWD read or write received a WAIT ACK response from the

target more than 4 times in a row. The driver retries the operation

(with exponential backoff) before failing outright (in testing 1

retry was always enough.)

 

- As part of the implementation of stlink_cmd_allow_retry a large

number of lines of boilerplate were refactored.

 

- Fleshed out stlink_usb_error_check and added it to some more code

paths so WAIT or FAULT responses are logged to debug. WAIT responses

will be logged even if they are subsequently retried, which should

help in case the retries have subtle side effects (none

anticipated.)

 

Tested with two targets: STLINK F0 Discovery, Nordic NRF51822. Only

tested with STLINK V2 programmers.

Но даже откомпилированая последняя версия openocd выдает:

./../src/openocd -f board/stm32vldiscovery.cfg 
Open On-Chip Debugger 0.9.0-dev-00130-gf0dfa13 (2014-08-20-10:08)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
Info : clock speed 1000 kHz
in procedure 'init' 
in procedure 'ocd_bouncer' 
in procedure 'transport'
in procedure 'init'

Как я понял, ребята успешно запускали OpenOCD на STLINK V1

Может я что-то упустил, в чем может быть причина того что OpenOCD не стартует ?

 

P.S. Spoiler работает не совсм коректно...

 

Add #1

======================

The discovery’s stlink (both st8, st32) implementation of the USB protocol violates the USB standard in multiple ways and it's too much broken for the linux kernel driver. Although it's possible to intercept the core and write/read a data in some for that designated SRAM region, there isn't any direct communication channel to the chip over the USB. The right (but long term) solution will be to replace the stlink firmware.

Изменено пользователем IgorKossak
[codebox] для длинного кода, [code] - для короткого!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

The right (but long term) solution will be to replace the stlink firmware.

 

Я сходу стлинк прошил как versaloon. F107 пока не пробовал, но с F100 все норм.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...