2016-08-17 1 views
3

안정적인 디버깅 설정을 얻는 데 문제가 있습니다. 비슷한 제목의 인터넷 포럼에서 다른 스레드를 보았지만 상황이 다르게 보입니다.이유 7 - 대상을 재설정해야합니다 - 신뢰할 수없는 디버깅 설정

설정 :

  • 리눅스 (분투) 64 비트
  • & 지연 3 초를 다시 구성 이클립스 CDT, 네온 4.6.0 "새 소프트웨어를 설치"일식에서
  • "GDB 하드웨어 디버깅"플러그인, , 정지; 부하 기호 (모든 체크 박스, 아니 사용자 정의 명령)
  • 팔 - 없음 - EABI-GCC 4.8.3 툴 체인
  • OpenOCD는 최근 그 &을에서 제공하는 스크립트 내 정확한 MCU 용으로 구성, 자책골을 콘솔에서 실행 다운로드 st- 링크
  • STM32L476RG 하드 플로트가있는 MCU가 사용됩니다.
  • ST-링크 V2 디버거 (독립형)
  • 이제

'가 내가있는 시퀀스, 어떤 투쟁 때마다 ​​후, 디버거에 연결할 수 있지만 스테핑 읽기 변수 아무튼 너무 명확하게 신뢰할 수있는 작업을 통해 내가 볼 수있는 것을 두 번째 신뢰할 수 있습니다. 하지만 호출 스택이 명백한 말도 안되는 항목으로 가득 차서는 안되며 그 중 극소수 만이 피곤합니다.

예 :

  • 플래시 펌웨어로 장치. 이것은 대개 문제없이 작동합니다.
  • 시작 openocd.
  • Eclipse에서 디버깅을 시작하십시오.
  • OpenOcd는 다음과 같이 말합니다. "정의되지 않은 디버그 이유 7 - 대상을 재설정해야합니다."
  • 이클립스에서 "resume"버튼을 누르지 않아도 프로그램이 가짜 상위 스택 프레임을지나도록 실행됩니다.
  • "중단"(여전히 호출 스택에서 가짜)을 누른 다음 "종료"를 누르십시오.
  • OpenOcd에서 Ctrl + C를 누릅니다.
  • stm32 MCU를 수동으로 (하드웨어로) 재설정합니다.
  • OpenOcd를 다시 시작하십시오.
  • Eclipse에서 디버깅을 다시 시작하십시오.

OpenOCD 출력 :

 
GNU ARM Eclipse 64-bits Open On-Chip Debugger 0.10.0-dev-00287-g85cec24-dirty (2016-01-10-10:31) 
Licensed under GNU GPL v2 
For bug reports, read 
    http://openocd.org/doc/doxygen/bugs.html 
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select '. 
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD 
adapter speed: 500 kHz 
adapter_nsrst_delay: 100 
none separate 
none separate 
Info : Unable to match requested speed 500 kHz, using 480 kHz 
Info : Unable to match requested speed 500 kHz, using 480 kHz 
Info : clock speed 480 kHz 
Info : STLINK v2 JTAG v24 API v2 SWIM v4 VID 0x0483 PID 0x3748 
Info : using stlink api v2 
Info : Target voltage: 3.192646 
Info : stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints 
Info : accepting 'gdb' connection on tcp/3333 
Info : device id = 0x10076415 
Info : flash size = 1024kbytes 
undefined debug reason 7 - target needs reset 

지금 약간의 행운과 함께, 나는 마지막으로 잠시 동안 다소 작업 디버거 연결을 가지고있다. 그러나 이것은 반복이 필요할 수도 있습니다. 왜 연결이 좋지 않을 때 "누르기를 다시 시작 하시겠습니까?" 확실하지는 않지만, 이것은 다음 반복에서 연결이 많이 생길 가능성을 높여주는 것으로 보입니다.

어쩌면 관련 노트 : MCU에는 LCD가 연결되어 있으며 리셋 시점을 알 수 있습니다. 어떤 이유로 Eclipse에서 디버깅을 시작하는 것은 분명히 이 아니며은 디버그 구성에서 재설정 확인란이 선택되어 있지만 기기를 재설정합니다. 터미널에서 OpenOCD에 대한 텔넷 연결을 열고 거기에서 "재설정"하면 장치가 재설정됩니다.

내 설정이 이상하게 작동하는 원인은 무엇입니까?

+0

openocd.cfg에서 "reset halt"를 포함 시키거나 gdb에서 "monitor reset halt"를 입력하십시오. –

답변

0

어떤 OpenOCD 클라이언트를 사용하십니까? 호스트 gdb을 사용하여 실수를했으며이 오류가 발생했습니다. 그리고 "Debug Configuration"에서 내 arm-none-eabi-gdb 위치로 내 디버거 경로를 수정 한 후 문제가 사라졌습니다.

게시물에서 arm-none-eabi-gcc 툴체인만을 사용 했으므로 을 arm-none-eabi-gdb으로 설정했는지 여부는 프로젝트 도구 체인 설정과 별개로 "디버그 구성"에서 설정했는지 여부를 모릅니다.

관련 문제