AVR Studio 를 사용한 디버깅[1] – AVR JTAG

마이컴 작업을 할 때 자신이 프로그래밍 한 실제 코드가 마이컴 내부에서 실행될때 어떤 상태에서 레지스터나 변수가 셋팅되어지고 루틴이 어떻게 분기하는지를 명령어 단위나 시간별로 관찰할 수 있다면 그냥 마이컴을 롬라이터나 인서킷 라이터(AVR ISP 같은) 로 굽고 단지 실행시켜 외부에서 지켜보는 식의 작업방식 보다는 더욱 편리하고 유용한 개발조건이 될 수 있을 것입니다.

AVRStudio

 

이를 위해 그래서 우리는 이전 게시물에서처럼 AVR JTAG 을 제작하여 보았습니다.

이전 게시물에서 다룬 AVR JTAG 회로는 정품의 그것과는 달리 타겟의 전압을 감지한다든지 JTAG 펌웨어를 업데이트를 지원하는 회로 부분을 제외하여 자작하기 쉽도록 간략화 시킨 버전입니다.

이제부터 타겟의 펌웨어 프로그래밍 작업을 하면서 AVR JTAG 을 사용하는 방법에 대해 알아보도록 합시다.

우선 자신의 타겟보드(이 게시물 내용의 실습을 위하여 AVR 에 전원과 JTAG 포트 및 리셋 회로만 갖춘 간단한 장치를 만들어도 됩니다.) 의 AVR 칩의 퓨즈비트들을 읽어보고 JTAGEN 이 아래 포니프로그에서 읽어온 그림처럼 셋 되어있는지를 확인하고 그렇지 않다면 그림처럼 셋팅시켜 줍니다.

JTAG_Fuses

 

JTAGEN 이 셋팅되지 않은 AVR 칩의 퓨즈비트를 읽고 쓰기 위해선 타겟에 AVR ISP 연결하거나 롬라이터를 사용해야 합니다.

JTAGEN 비트가 셋 되어있는 AVR 칩이라면 AVR JTAG 을 연결하고 AVR Studio 에서 이를 클리어(1) 하기 전까지 퓨즈비트들을 읽거나 갱신할 수 있습니다.

AVR 에서 퓨즈비트를 다룰때 셋된다 함은 0 으로 설정되는 것이며 포니프로그에서는 체크박스가 체크된 상태입니다. 착오 없으시길 바랍니다.

타겟의 JTAGEN 퓨즈비트가 셋 되었다면 타겟에 전원을 인가하고 JTAG 을 연결시켜 AVR Studio 에서 타겟을 인식시킬 수 있습니다.

아래 그림은 타겟과 연결에 사용되는 AVR JTAG 의 JTAG 컨넥터 핀 배치도 입니다.

AVR_JTAG_PIN

 

타겟과 AVR JTAG 과의 연결이 잘 되었으면 AVR Studio 를 실행시켜 Tools 메뉴의 [STK500/AVRISP/JTAGICE] 메뉴를 선택해 봅니다.
하드웨어에 이상이 없다면 아래와 같이 JTAG 설정 박스를 보실 수 있고 아래 상태 화면에 JTAG 의 각 체크상태들이 잘 나타나 있을 것입니다.

JTAGICE

 

 

그렇지 않고 FAILED 라는 메세지만 보일 경우 타겟 및 AVR JTAG 의 상태를 재 점검해 보도록 합니다.

위 그림에서처럼 프로그램 탭에서 타겟의 AVR 종류를 지정해주고 펌웨어(코드 메모리) 와 내부 EEPROM 파일을 불러들려 AVR 메모리 내용을 갱신할 수 있습니다.

이제 다음 페이지에서 AVR Studio 사용을 통한 디버깅 작업에 대해 설명하겠습니다.

이 게시물은 여러 페이지로 묶여진 묶음 게시물입니다.
다음 페이지를 보시려면 아래 [다음페이지] 버튼을 클릭해주세요.

 

이 글을 공유하기:

Be the first to comment

Leave a Reply