Linux PC에서 gdb로 Arduino Uno를 어떻게 디버깅합니까?


10

Linux PC에서 gdb로 Arduino Uno를 디버깅 (소스 코드 단일 단계)하는 방법은 무엇입니까? 와인이나 VirtualBox에서 AVR Studio를 사용하고 싶지 않습니다.

질문 1 : 물리적 연결

Uno 보드에 어떻게 그리고 무엇을 연결합니까? 내 생각에 Uno 보드는 ATmega328로 채워져 있기 때문에 단일 단계 소스 코드를 사용할 수 있어야합니까? 또한 ICSP 헤더를 통해 AVR JTAGICE mkII 또는 AVR Dragon 을 사용할 수 있다고 생각 합니까?

질문 2 : GDB 서버

그런 다음 gdb 기능에 jtag 를 제공하는 것으로 보이는 AVaRICE 와 같은 일부 프로젝트 가 있지만 다른 프로젝트가있을 수 있음을 알았습니다 .

질문 3 : 엘프는 어디에 있습니까?

그리고 그것을 시작하고 실행하면 Arduino IDE는 디버그 기호가있는 elf 파일과 같이 생성 된 출력을 어디에 숨깁니까? 아니면 Ardino 라이브러리를 사용하는 클래식 Makefile을 생성해야합니까?

나는 무엇을 / 어떻게 사용해야하는지에 대한 정보를 찾으려고 노력했지만, 내가 할 수있는 것을 알려주는 단서 만 찾았습니다. 누군가 나를 올바른 방향으로 밀어 넣을 수 있습니까?


답변:


3

이전 버전의 IDE에서 컴파일 버튼을 클릭 할 때 Shift 키를 누르면 컴파일러 아티팩트를 찾을 수 있습니다 (읽기 <1.0). 최신 버전 (읽기> = 1.0)에는 환경 설정 대화 상자 아래에 컴파일하는 동안 상세 출력을 표시하는 옵션이 있습니다 (스크린 샷 참조). 상세 출력을 사용하면 모든 컴파일러 출력이 끝나는 폴더가 콘솔에 (반복적으로) 인쇄됩니다. 적어도 시작해야합니다.

스크린 샷 arduino는 컴파일하는 동안 자세한 출력을 보여줍니다

참고로, 2012 년 6 월 초 Arduino 개발자 목록에이 주제에 관한 모든 종류의 대화가 있었고 누군가 Arduino를위한 GDB 디버깅의 개선 / 통합 방법에 관한 Arduino 개발자 목록에 발표를했지만 조사하지는 않았습니다. 훨씬 더. 프로젝트는 VisualMicro (?) 라고 합니다. Visual Studio 플러그인으로 빌드 된 것처럼 보이므로 Linux 환경에서는 도움이되지 않을 수 있으며 그 위에 베타 버전이지만 결정하도록하겠습니다.


"컴파일 중 상세 출력 사용"을 사용 가능하게하고 빌드 디렉토리로 /tmp/build3652385594823436592.tmp/와 같은 것을 사용하며, 엘프는 -g 플래그로 빌드되므로 디버그 기호를 포함해야합니다. 즉, 빌드 아티팩트를 찾았으므로 이제 jtag를 작동시켜야합니다.
Johan

3

Simavr AVR 프로세서 시뮬레이터는 이제 Arduino를 포함한 AVR firmvare 디버깅을위한 훌륭한 GDB 서버를 제공합니다. 자체적으로 (특정 하드웨어 구성을위한 소형 콘솔 응용 프로그램을 작성해야 함) 또는 Simutron GUI 환경 내에서 사용할 수 있습니다. 여기서 회로도 캡처를 통해 하드웨어 구성을 정의 할 수 있습니다.

참고 :이 도구를 사용하면 모든 하드웨어가 시뮬레이션되므로 물리적으로 연결할 수 없습니다.


2

이것은 비슷한 질문에 인용 된 Linux 저널 기사에서 대답합니다 : Jtag programming AVR .

기본적으로 avr-gdb 및 simulavr을 함께 사용하면 시뮬레이터를 통해 선택한 AVR 마이크로 컨트롤러에서 소프트웨어를 실행할 수 있으며 GDB를 사용하여 실행 코드를 단계별로 관찰하고 관찰 할 수 있습니다.

도움이 되었기를 바랍니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.