bureau 0 20 августа, 2014 Опубликовано 20 августа, 2014 (изменено) · Жалоба Имеем - 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. Изменено 20 августа, 2014 пользователем IgorKossak [codebox] для длинного кода, [code] - для короткого!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viakon 0 21 августа, 2014 Опубликовано 21 августа, 2014 · Жалоба The right (but long term) solution will be to replace the stlink firmware. Я сходу стлинк прошил как versaloon. F107 пока не пробовал, но с F100 все норм. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться