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

конфигурация openOCD + Olimex ARM-USB-OCD-H

Наконец-то мы начали отлаживать платы на отечественных МК от Миландра: 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 всё работало?

 

Пишите свои идеи, предложения - тестировать буду по мере сил оперативно в рабочее время.

Изменено пользователем Aaron

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


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

В общем, странное поведение устранить не удалось. Даже если прописать внешний bat-файл и запускать его через make из Eclipse - то выдаёт ошибку. На разных версиях Eclipse поведение одинаковое.

НО! Ошибку такую выдаёт на двух компах, на третьем компе всё заработало нормально, что самое удивительное :wacko: - весь набор программ и ключей в экспериментах идентичны!!!

В итоге, сейчас прошиваю через добавленный в Run -> External Tools вызов openocd :(

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


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

Эта проблема возникает лишь под windows.

 

Попробуйте вызывайте openocd не напрямую, а так (в Ваших терминах):

echo $(oocd_params) | xargs openocd

 

HINT: https://ru.wikipedia.org/wiki/Xargs

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


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

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

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

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

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

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

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

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

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

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