Aaron 1 22 октября, 2014 Опубликовано 22 октября, 2014 (изменено) · Жалоба Наконец-то мы начали отлаживать платы на отечественных МК от Миландра: 1986ВЕ91Ти K1986ВЕ92QI. В наличии есть программаторы MT-Link (давно пользуемся) и Olimex ARM-USB-OCD-H (купили специально попробовать с этими МК). Почитали форумы, пришли к выводу, что надо ставить WinUSB драйверы (они же libusb) - поставили с помощью утилиты Zadig. До этого с openOCD никогда не работали, т.к. использовали STM32 и st-link gdb server. Конфиги в makefile для работы openOCD: #----------------------------------------------------------------------- #openocd command-line ## debug level (d0..d3) oocd_params = -d3 ## interface and board/target settings (using the OOCD target-library here) # oocd_params += -f interface/jlink.cfg oocd_params += -f interface/ftdi/olimex-arm-usb-ocd-h.cfg oocd_params += -f target/mdr32f9q2i.cfg # oocd_params += -c "gdb_port 3333" oocd_params += -c init -c targets oocd_params_program = $(oocd_params) ## commands to prepare flash-write oocd_params_program += -c "halt" ## flash-write and -verify oocd_params_program += -c "flash write_image erase $(ELF)" oocd_params_program += -c "verify_image $(ELF)" ## reset target oocd_params_program += -c "reset run" ## terminate OOCD after programming oocd_params_program += -c shutdown oocd_params_reset = $(oocd_params) oocd_params_reset += -c "reset run" oocd_params_reset += -c shutdown oocd_params_halt = $(oocd_params) oocd_params_halt += -c "halt" oocd_params_halt += -c shutdown Используем mdr32f9q2i.cfg для обоих МК, т.к. openOCD детектирует у обоих МК одинаковые CPUTAPID. Кроме того, объём ОЗУ и ПЗУ одинаковый. Дак вот, интересно получается. При использовании MT-Link: oocd_params += -f interface/jlink.cfg команды из Eclipse вызываются нормально, всё отрабатывает. НО! При использовании программатора Olimex ARM-USB-OCD-H oocd_params += -f interface/ftdi/olimex-arm-usb-ocd-h.cfg команды из Eclipse не выполняются, вот лог попытки halt: --- Halting device with openOCD... openocd -d3 -f interface/ftdi/olimex-arm-usb-ocd-h.cfg -f target/mdr32f9q2i.cfg -c "gdb_port 3333" -c init -c targets -c "halt" -c shutdown Open On-Chip Debugger 0.8.0-dev-00110-ga8d115c (2013-08-02-22:11) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html User : 13 4 command.c:549 command_print(): debug_level: 3 Debug: 14 4 configuration.c:45 add_script_search_dir(): adding c:/DevTools/openOCD/bin/.. Debug: 15 4 configuration.c:45 add_script_search_dir(): adding c:/DevTools/openOCD/bin/../share/openocd/scripts Debug: 16 4 configuration.c:45 add_script_search_dir(): adding c:/DevTools/openOCD/bin/../scripts Debug: 17 7 configuration.c:86 find_file(): found c:/DevTools/openOCD/bin/../share/openocd/scripts/interface/ftdi/olimex-arm-usb-ocd-h.cfg Debug: 18 29 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_interface ftdi Debug: 19 29 command.c:145 script_debug(): command - interface ocd_interface ftdi Debug: 21 30 command.c:369 register_command_handler(): registering 'ocd_ftdi_device_desc'... Debug: 22 30 command.c:369 register_command_handler(): registering 'ocd_ftdi_serial'... Debug: 23 30 command.c:369 register_command_handler(): registering 'ocd_ftdi_channel'... Debug: 24 45 command.c:369 register_command_handler(): registering 'ocd_ftdi_layout_init'... Debug: 25 46 command.c:369 register_command_handler(): registering 'ocd_ftdi_layout_signal'... Debug: 26 46 command.c:369 register_command_handler(): registering 'ocd_ftdi_set_signal'... Debug: 27 46 command.c:369 register_command_handler(): registering 'ocd_ftdi_vid_pid'... Info : 28 46 transport.c:118 allow_transports(): only one transport option; autoselect 'jtag' Debug: 29 46 command.c:369 register_command_handler(): registering 'ocd_jtag_flush_queue_sleep'... Debug: 30 47 command.c:369 register_command_handler(): registering 'ocd_jtag_rclk'... Debug: 31 47 command.c:369 register_command_handler(): registering 'ocd_jtag_ntrst_delay'... Debug: 32 47 command.c:369 register_command_handler(): registering 'ocd_jtag_ntrst_assert_width'... Debug: 33 48 command.c:369 register_command_handler(): registering 'ocd_scan_chain'... Debug: 34 49 command.c:369 register_command_handler(): registering 'ocd_jtag_reset'... Debug: 35 49 command.c:369 register_command_handler(): registering 'ocd_runtest'... Debug: 36 49 command.c:369 register_command_handler(): registering 'ocd_irscan'... Debug: 37 49 command.c:369 register_command_handler(): registering 'ocd_verify_ircapture'... Debug: 38 49 command.c:369 register_command_handler(): registering 'ocd_verify_jtag'... Debug: 39 191 command.c:369 register_command_handler(): registering 'ocd_tms_sequence'... Debug: 40 191 command.c:369 register_command_handler(): registering 'ocd_wait_srst_deassert'... Debug: 41 191 command.c:369 register_command_handler(): registering 'ocd_jtag'... Debug: 42 191 command.c:369 register_command_handler(): registering 'ocd_jtag'... Debug: 43 191 command.c:369 register_command_handler(): registering 'ocd_jtag'... Debug: 44 191 command.c:369 register_command_handler(): registering 'ocd_jtag'... Debug: 45 192 command.c:369 register_command_handler(): registering 'ocd_jtag'... Debug: 46 192 command.c:369 register_command_handler(): registering 'ocd_jtag'... Debug: 47 192 command.c:369 register_command_handler(): registering 'ocd_jtag'... Debug: 48 193 command.c:369 register_command_handler(): registering 'ocd_jtag'... Debug: 49 193 command.c:369 register_command_handler(): registering 'ocd_jtag'... Debug: 50 193 command.c:369 register_command_handler(): registering 'ocd_jtag'... Debug: 51 194 command.c:369 register_command_handler(): registering 'ocd_jtag'... Debug: 52 194 command.c:369 register_command_handler(): registering 'ocd_jtag'... Debug: 53 194 command.c:369 register_command_handler(): registering 'ocd_jtag'... Debug: 54 194 command.c:369 register_command_handler(): registering 'ocd_svf'... Debug: 55 194 command.c:369 register_command_handler(): registering 'ocd_xsvf'... Debug: 56 194 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_ftdi_device_desc Olimex OpenOCD JTAG ARM-USB-OCD-H Debug: 57 195 command.c:145 script_debug(): command - ftdi_device_desc ocd_ftdi_device_desc Olimex OpenOCD JTAG ARM-USB-OCD-H Debug: 59 195 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_ftdi_vid_pid 0x15ba 0x002b Debug: 60 196 command.c:145 script_debug(): command - ftdi_vid_pid ocd_ftdi_vid_pid 0x15ba 0x002b Debug: 62 196 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_ftdi_layout_init 0x0c08 0x0f1b Debug: 63 196 command.c:145 script_debug(): command - ftdi_layout_init ocd_ftdi_layout_init 0x0c08 0x0f1b Debug: 65 197 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_ftdi_layout_signal nSRST -oe 0x0200 Debug: 66 197 command.c:145 script_debug(): command - ftdi_layout_signal ocd_ftdi_layout_signal nSRST -oe 0x0200 Debug: 68 197 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_ftdi_layout_signal nTRST -data 0x0100 -noe 0x0400 Debug: 69 198 command.c:145 script_debug(): command - ftdi_layout_signal ocd_ftdi_layout_signal nTRST -data 0x0100 -noe 0x0400 Debug: 71 198 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_ftdi_layout_signal LED -data 0x0800 Debug: 72 198 command.c:145 script_debug(): command - ftdi_layout_signal ocd_ftdi_layout_signal LED -data 0x0800 Debug: 74 199 configuration.c:86 find_file(): found c:/DevTools/openOCD/bin/../share/openocd/scripts/target/mdr32f9q2i.cfg Debug: 75 203 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_adapter_khz 1000 Debug: 76 203 command.c:145 script_debug(): command - adapter_khz ocd_adapter_khz 1000 Debug: 78 203 core.c:1646 jtag_config_khz(): handle jtag khz Debug: 79 204 core.c:1613 adapter_khz_to_speed(): convert khz to interface specific speed value Debug: 80 204 core.c:1613 adapter_khz_to_speed(): convert khz to interface specific speed value User : 81 204 command.c:549 command_print(): adapter speed: 1000 kHz Debug: 82 556 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_adapter_nsrst_delay 100 Debug: 83 556 command.c:145 script_debug(): command - adapter_nsrst_delay ocd_adapter_nsrst_delay 100 User : 86 556 command.c:549 command_print(): adapter_nsrst_delay: 100 Debug: 87 557 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_jtag_ntrst_delay 100 Debug: 88 557 command.c:145 script_debug(): command - jtag_ntrst_delay ocd_jtag_ntrst_delay 100 User : 90 557 command.c:549 command_print(): jtag_ntrst_delay: 100 Debug: 91 557 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_jtag newtap mdr32f9q2i cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id 0x4ba00477 Debug: 92 557 command.c:145 script_debug(): command - ocd_jtag ocd_jtag newtap mdr32f9q2i cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id 0x4ba00477 Debug: 93 558 tcl.c:554 jim_newtap_cmd(): Creating New Tap, Chip: mdr32f9q2i, Tap: cpu, Dotted: mdr32f9q2i.cpu, 8 params Debug: 94 558 tcl.c:571 jim_newtap_cmd(): Processing option: -irlen Debug: 95 558 tcl.c:571 jim_newtap_cmd(): Processing option: -ircapture Debug: 96 559 tcl.c:571 jim_newtap_cmd(): Processing option: -irmask Debug: 97 559 tcl.c:571 jim_newtap_cmd(): Processing option: -expected-id Debug: 98 559 core.c:1321 jtag_tap_init(): Created Tap: mdr32f9q2i.cpu @ abs position 0, irlen 4, capture: 0x1 mask: 0xf Debug: 99 560 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_target create mdr32f9q2i.cpu cortex_m -endian little -chain-position mdr32f9q2i.cpu Debug: 100 560 command.c:145 script_debug(): command - ocd_target ocd_target create mdr32f9q2i.cpu cortex_m -endian little -chain-position mdr32f9q2i.cpu Debug: 101 560 target.c:1624 target_free_all_working_areas_restore(): freeing all working areas Debug: 102 561 command.c:369 register_command_handler(): registering 'ocd_arm'... Debug: 103 561 command.c:369 register_command_handler(): registering 'ocd_arm'... Debug: 104 561 command.c:369 register_command_handler(): registering 'ocd_arm'... Debug: 105 561 command.c:369 register_command_handler(): registering 'ocd_arm'... Debug: 106 561 command.c:369 register_command_handler(): registering 'ocd_arm'... Debug: 107 561 command.c:369 register_command_handler(): registering 'ocd_arm'... Debug: 108 562 command.c:369 register_command_handler(): registering 'ocd_dap'... Debug: 109 562 command.c:369 register_command_handler(): registering 'ocd_dap'... Debug: 110 562 command.c:369 register_command_handler(): registering 'ocd_dap'... Debug: 111 563 command.c:369 register_command_handler(): registering 'ocd_dap'... Debug: 112 563 command.c:369 register_command_handler(): registering 'ocd_dap'... Debug: 113 563 command.c:369 register_command_handler(): registering 'ocd_dap'... Debug: 114 563 command.c:369 register_command_handler(): registering 'ocd_cortex_m'... Debug: 115 563 command.c:369 register_command_handler(): registering 'ocd_cortex_m'... Debug: 116 563 command.c:369 register_command_handler(): registering 'ocd_cortex_m'... Debug: 117 564 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 118 564 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 119 564 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 120 565 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 121 565 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 122 565 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 123 565 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 124 565 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 125 566 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 126 566 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 127 566 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 128 566 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 129 566 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 130 567 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 131 567 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 132 567 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 133 567 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 134 567 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 135 567 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 136 568 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 137 568 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 138 568 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 139 568 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 140 568 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 141 568 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 142 569 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 143 569 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 144 569 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 145 569 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 146 569 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 147 570 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 148 570 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 149 570 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 150 570 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 151 570 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 152 570 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 153 571 command.c:369 register_command_handler(): registering 'ocd_mdr32f9q2i.cpu'... Debug: 154 571 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_mdr32f9q2i.cpu configure -work-area-phys 0x20000000 -work-area-size 0x8000 -work-area-backup 0 Debug: 155 571 command.c:145 script_debug(): command - ocd_mdr32f9q2i.cpu ocd_mdr32f9q2i.cpu configure -work-area-phys 0x20000000 -work-area-size 0x8000 -work-area-backup 0 Debug: 156 572 target.c:1624 target_free_all_working_areas_restore(): freeing all working areas Debug: 157 572 target.c:1624 target_free_all_working_areas_restore(): freeing all working areas Debug: 158 572 target.c:1624 target_free_all_working_areas_restore(): freeing all working areas Debug: 159 572 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_flash bank mdr32f9q2i.flash mdr 0x08000000 0x20000 0 0 mdr32f9q2i.cpu 0 32 4 Debug: 160 573 command.c:145 script_debug(): command - ocd_flash ocd_flash bank mdr32f9q2i.flash mdr 0x08000000 0x20000 0 0 mdr32f9q2i.cpu 0 32 4 Debug: 162 573 tcl.c:781 handle_flash_bank_command(): 'mdr' driver usage field missing Debug: 163 573 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_cortex_m reset_config sysresetreq Debug: 164 573 command.c:145 script_debug(): command - ocd_cortex_m ocd_cortex_m reset_config sysresetreq User : 166 573 command.c:549 command_print(): cortex_m reset_config sysresetreq Debug: 167 574 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_gdb_port 3333 Debug: 168 574 command.c:145 script_debug(): command - gdb_port ocd_gdb_port 3333 Debug: 170 574 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_init Debug: 171 574 command.c:145 script_debug(): command - init ocd_init Debug: 174 1422 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_target init Debug: 175 1422 command.c:145 script_debug(): command - ocd_target ocd_target init Debug: 177 1422 target.c:1187 handle_target_init_command(): Initializing targets... Debug: 178 1422 command.c:369 register_command_handler(): registering 'ocd_target_request'... Debug: 179 1422 command.c:369 register_command_handler(): registering 'ocd_trace'... Debug: 180 1423 command.c:369 register_command_handler(): registering 'ocd_trace'... Debug: 181 1423 command.c:369 register_command_handler(): registering 'ocd_fast_load_image'... Debug: 182 1423 command.c:369 register_command_handler(): registering 'ocd_fast_load'... Debug: 183 1424 command.c:369 register_command_handler(): registering 'ocd_profile'... Debug: 184 1424 command.c:369 register_command_handler(): registering 'ocd_virt2phys'... Debug: 185 1424 command.c:369 register_command_handler(): registering 'ocd_reg'... Debug: 186 1424 command.c:369 register_command_handler(): registering 'ocd_poll'... Debug: 187 1424 command.c:369 register_command_handler(): registering 'ocd_wait_halt'... Debug: 188 1425 command.c:369 register_command_handler(): registering 'ocd_halt'... Debug: 189 1425 command.c:369 register_command_handler(): registering 'ocd_resume'... Debug: 190 1425 command.c:369 register_command_handler(): registering 'ocd_reset'... Debug: 191 1425 command.c:369 register_command_handler(): registering 'ocd_soft_reset_halt'... Debug: 192 1425 command.c:369 register_command_handler(): registering 'ocd_step'... Debug: 193 1427 command.c:369 register_command_handler(): registering 'ocd_mdw'... Debug: 194 1427 command.c:369 register_command_handler(): registering 'ocd_mdh'... Debug: 195 1428 command.c:369 register_command_handler(): registering 'ocd_mdb'... Debug: 196 1428 command.c:369 register_command_handler(): registering 'ocd_mww'... Debug: 197 1428 command.c:369 register_command_handler(): registering 'ocd_mwh'... Debug: 198 1428 command.c:369 register_command_handler(): registering 'ocd_mwb'... Debug: 199 1428 command.c:369 register_command_handler(): registering 'ocd_bp'... Debug: 200 1429 command.c:369 register_command_handler(): registering 'ocd_rbp'... Debug: 201 1429 command.c:369 register_command_handler(): registering 'ocd_wp'... Debug: 202 1429 command.c:369 register_command_handler(): registering 'ocd_rwp'... Debug: 203 1429 command.c:369 register_command_handler(): registering 'ocd_load_image'... Debug: 204 1430 command.c:369 register_command_handler(): registering 'ocd_dump_image'... Debug: 205 1430 command.c:369 register_command_handler(): registering 'ocd_verify_image'... Debug: 206 1430 command.c:369 register_command_handler(): registering 'ocd_test_image'... Debug: 207 1430 command.c:369 register_command_handler(): registering 'ocd_reset_nag'... Debug: 208 1431 command.c:369 register_command_handler(): registering 'ocd_ps'... Debug: 209 1431 ftdi.c:592 ftdi_initialize(): ftdi interface using shortest path jtag state transitions Debug: 210 1791 mpsse.c:363 mpsse_purge(): - Debug: 211 1791 mpsse.c:644 mpsse_loopback_config(): off Debug: 212 1792 core.c:1613 adapter_khz_to_speed(): convert khz to interface specific speed value Debug: 213 1792 core.c:1616 adapter_khz_to_speed(): have interface set up Debug: 214 1792 mpsse.c:689 mpsse_set_frequency(): target 1000000 Hz Debug: 215 1792 mpsse.c:681 mpsse_rtck_config(): off Debug: 216 1792 mpsse.c:670 mpsse_divide_by_5_config(): off Debug: 217 1792 mpsse.c:650 mpsse_set_divisor(): 29 Debug: 218 1792 mpsse.c:713 mpsse_set_frequency(): actually 1000000 Hz Debug: 219 1793 core.c:1613 adapter_khz_to_speed(): convert khz to interface specific speed value Debug: 220 1793 core.c:1616 adapter_khz_to_speed(): have interface set up Info : 221 1793 core.c:1402 adapter_init(): clock speed 1000 kHz Debug: 222 1794 openocd.c:132 handle_init_command(): Debug Adapter init complete Debug: 223 1794 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_transport init Debug: 224 1794 command.c:145 script_debug(): command - ocd_transport ocd_transport init Debug: 226 1794 transport.c:240 handle_transport_init(): handle_transport_init Debug: 227 1805 core.c:719 jtag_add_reset(): SRST line released Debug: 228 1806 core.c:743 jtag_add_reset(): TRST line released Debug: 229 1806 core.c:323 jtag_call_event_callbacks(): jtag event: TAP reset Debug: 231 2026 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_jtag arp_init Debug: 232 2026 command.c:145 script_debug(): command - ocd_jtag ocd_jtag arp_init Debug: 233 2027 core.c:1415 jtag_init_inner(): Init JTAG chain Debug: 234 2027 core.c:323 jtag_call_event_callbacks(): jtag event: TAP reset Debug: 235 2028 core.c:1048 jtag_examine_chain(): DR scan interrogation for IDCODE/BYPASS Debug: 236 2028 core.c:323 jtag_call_event_callbacks(): jtag event: TAP reset Info : 237 2030 core.c:951 jtag_examine_chain_display(): JTAG tap: mdr32f9q2i.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Debug: 238 2030 core.c:1208 jtag_validate_ircapture(): IR capture validation scan Debug: 239 2031 core.c:1265 jtag_validate_ircapture(): mdr32f9q2i.cpu: IR capture 0x01 Debug: 240 2031 openocd.c:145 handle_init_command(): Examining targets... Debug: 241 2067 target.c:1303 target_call_event_callbacks(): target event 21 (examine-start) Debug: 242 2067 arm_adi_v5.c:1086 ahbap_debugport_init(): Debug: 243 2076 arm_adi_v5.c:1048 dap_syssec(): DAP: mdmap_init for idcode: 4ba00477 Debug: 244 2087 arm_adi_v5.c:945 dap_syssec_kinetis_mdmap(): id doesn't match 00000000 != 0x001C0000 Debug: 245 2091 target.c:1921 target_read_u32(): address: 0xe000ed00, value: 0x412fc230 Debug: 246 2091 cortex_m.c:1859 cortex_m3_examine(): Cortex-M3 r2p0 processor detected Debug: 247 2091 cortex_m.c:1860 cortex_m3_examine(): cpuid: 0x412fc230 Debug: 248 2093 target.c:1921 target_read_u32(): address: 0xe0002000, value: 0x00000261 Debug: 249 2137 target.c:1987 target_write_u32(): address: 0xe0002008, value: 0x00000000 Debug: 250 2155 target.c:1987 target_write_u32(): address: 0xe000200c, value: 0x00000000 Debug: 251 2156 target.c:1987 target_write_u32(): address: 0xe0002010, value: 0x00000000 Debug: 252 2157 target.c:1987 target_write_u32(): address: 0xe0002014, value: 0x00000000 Debug: 253 2163 target.c:1987 target_write_u32(): address: 0xe0002018, value: 0x00000000 Debug: 254 2197 target.c:1987 target_write_u32(): address: 0xe000201c, value: 0x00000000 Debug: 255 2237 target.c:1987 target_write_u32(): address: 0xe0002020, value: 0x00000000 Debug: 256 2248 target.c:1987 target_write_u32(): address: 0xe0002024, value: 0x00000000 Debug: 257 2259 cortex_m.c:1907 cortex_m3_examine(): FPB fpcr 0x261, numcode 6, numlit 2 Debug: 258 2268 target.c:1921 target_read_u32(): address: 0xe0001000, value: 0x40000000 Debug: 259 2269 target.c:1987 target_write_u32(): address: 0xe0001028, value: 0x00000000 Debug: 260 2285 target.c:1987 target_write_u32(): address: 0xe0001038, value: 0x00000000 Debug: 261 2295 target.c:1987 target_write_u32(): address: 0xe0001048, value: 0x00000000 Debug: 262 2303 target.c:1987 target_write_u32(): address: 0xe0001058, value: 0x00000000 Debug: 263 2316 cortex_m.c:1816 cortex_m3_dwt_setup(): DWT dwtcr 0x40000000, comp 4, watch/trigger Info : 264 2316 cortex_m.c:1916 cortex_m3_examine(): mdr32f9q2i.cpu: hardware has 6 breakpoints, 4 watchpoints Debug: 265 2316 target.c:1303 target_call_event_callbacks(): target event 22 (examine-end) Debug: 266 2317 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_flash init Debug: 267 2317 command.c:145 script_debug(): command - ocd_flash ocd_flash init Debug: 269 2348 tcl.c:847 handle_flash_init_command(): Initializing flash devices... Debug: 270 2348 command.c:369 register_command_handler(): registering 'ocd_flash'... Debug: 271 2348 command.c:369 register_command_handler(): registering 'ocd_flash'... Debug: 272 2348 command.c:369 register_command_handler(): registering 'ocd_flash'... Debug: 273 2349 command.c:369 register_command_handler(): registering 'ocd_flash'... Debug: 274 2349 command.c:369 register_command_handler(): registering 'ocd_flash'... Debug: 275 2370 command.c:369 register_command_handler(): registering 'ocd_flash'... Debug: 276 2370 command.c:369 register_command_handler(): registering 'ocd_flash'... Debug: 277 2370 command.c:369 register_command_handler(): registering 'ocd_flash'... Debug: 278 2371 command.c:369 register_command_handler(): registering 'ocd_flash'... Debug: 279 2371 command.c:369 register_command_handler(): registering 'ocd_flash'... Debug: 280 2371 command.c:369 register_command_handler(): registering 'ocd_flash'... Debug: 281 2371 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_mflash init Debug: 282 2371 command.c:145 script_debug(): command - ocd_mflash ocd_mflash init Debug: 284 2420 mflash.c:1379 handle_mflash_init_command(): Initializing mflash devices... Debug: 285 2420 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_nand init Debug: 286 2421 command.c:145 script_debug(): command - ocd_nand ocd_nand init Debug: 289 2467 tcl.c:497 handle_nand_init_command(): Initializing NAND devices... Debug: 290 2467 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_pld init Debug: 291 2467 command.c:145 script_debug(): command - ocd_pld ocd_pld init Debug: 293 2479 pld.c:207 handle_pld_init_command(): Initializing PLDs... Error: 294 2480 server.c:220 add_service(): error creating socket: No error mingw32-make: *** [halt] Error -1 Попробовал ставить разные версии openOCD ветки 0.8.0, 0.8.0-dev и 0.9.0-dev - результат один и тот же. Залез в исходники по ошибке server.c:220 add_service(), а там в соответствующем месте: /* FIX! make service return error instead of invoking exit() */ int add_service(char *name, const char *port, int max_connections, new_connection_handler_t new_connection_handler, input_handler_t input_handler, connection_closed_handler_t connection_closed_handler, void *priv) ... if (c->type == CONNECTION_TCP) { c->max_connections = max_connections; c->fd = socket(AF_INET, SOCK_STREAM, 0); if (c->fd == -1) { LOG_ERROR("error creating socket: %s", strerror(errno)); exit(-1); } ... } gdb_port disable пробовал в конфиге прописать - вываливается в той же функции server.c:277 add_service() в следующем месте по коду: } else if (c->type == CONNECTION_PIPE) { #ifdef _WIN32 /* we currenty do not support named pipes under win32 * so exit openocd for now */ LOG_ERROR("Named pipes currently not supported under this os"); exit(1); Пробовал также для olimex ставить transport hla, swd, hla_swd - пишет, что не поддерживает. Ну да это и не особо надо мне сейчас... Опять же, при подключении к openOCD по telnet 127.0.0.1 4444 - все команды отрабатываются, в ручном режиме могу останавливать-запускать-ресетить-прошивать МК. То есть проблема именно при запуске openOCD из Eclipse. Создал отдельный bat-файл, просто скопировав строчки из Eclipse: openocd -f interface/ftdi/olimex-arm-usb-ocd-h.cfg -f target/mdr32f9q2i.cfg -c init -c targets -c "reset halt" -c shutdown Всё нормально работает! В общем, как-то здесь замешан Eclipse, выходит! Вопросы: - почему программа вылетает, ведь у других явно работает с олимексовским программатором? - почему он вообще пытается создать socket подключение? Можно это как-то запретить/обойти? - может кто подскажет 100% полностью рабочий конфиг под этот программатор, чтобы в Eclipse всё работало? Пишите свои идеи, предложения - тестировать буду по мере сил оперативно в рабочее время. Изменено 23 октября, 2014 пользователем Aaron Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aaron 1 23 октября, 2014 Опубликовано 23 октября, 2014 · Жалоба В общем, странное поведение устранить не удалось. Даже если прописать внешний bat-файл и запускать его через make из Eclipse - то выдаёт ошибку. На разных версиях Eclipse поведение одинаковое. НО! Ошибку такую выдаёт на двух компах, на третьем компе всё заработало нормально, что самое удивительное - весь набор программ и ключей в экспериментах идентичны!!! В итоге, сейчас прошиваю через добавленный в Run -> External Tools вызов openocd :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 23 декабря, 2014 Опубликовано 23 декабря, 2014 · Жалоба Эта проблема возникает лишь под windows. Попробуйте вызывайте openocd не напрямую, а так (в Ваших терминах): echo $(oocd_params) | xargs openocd HINT: https://ru.wikipedia.org/wiki/Xargs Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться