- 개발 환경
Macbook Pro 14 (M3)
macOS : Sequoia 15.4
개발 보드 : NewTC AVR MEGA 128 개발보드
프로그래머 : NewTC AVR용 USPISP V7.0
Jtag 프로그래머 및 디버거 : AVR JTAG ICE USB
0. 사전 작업 (Toolchain을 설치 하지 않았다면)
https://littlebitodd-developer.tistory.com/34
Mac에서 Atmel(AVR) MCU 개발을 위한 환경 구축 - 1 Toolchain 설치
- 개발 환경Macbook Pro 14 (M3)macOS : Sequoia 15.4 개발 보드 : NewTC AVR MEGA 128 개발보드프로그래머 : NewTC AVR용 USPISP V7.0Jtag 프로그래머 및 디버거 : AVR JTAG ICE USB1. 서론 사실 Atmel MCU는 윈도우에서 AVR studio
littlebitodd-developer.tistory.com
1. 서론
4번 포스트 까지 만으로도 충분히 개발을 진행 할 수 있지만 디버깅을 하기 힘들기에 개발에 더많은 시간을 투자해야 할 것입니다. 그렇다고 정식 AVRICE를 사기에는 너무 비싸 취미로 개발하고있는 사람으로써는 매우 부담이 됩니다. 하지만, 중국산 저렴한 AVR용 JTAG로도 충분히 디버깅을 할 수 있음을 이 포스트에서 확인하겠습니다.
2. Avarice 설치
2.1. 사전 패키지 설치
brew install automake
2.2. Avarice 설치
https://github.com/avrdudes/avarice
GitHub - avrdudes/avarice: AVaRICE is a program for interfacing the Atmel JTAG ICE to GDB to allow users to debug their embedded
AVaRICE is a program for interfacing the Atmel JTAG ICE to GDB to allow users to debug their embedded AVR target. - GitHub - avrdudes/avarice: AVaRICE is a program for interfacing the Atmel JTAG ...
github.com
# git으로 코드 다운로드
cd ~/Downloads
git clone https://github.com/avrdudes/avarice
# configure 파일 생성
cd avarice
./Bootstrap
# 설치 파일 분리
mkdir build
cd build
../configure
# avarice 설치
sudo make install
3. JTAG 프로그래머와 AVR MCU 연결
4. 디버깅 전 확인 사항
4.1. OCDEN 퓨즈 비트 1로 설정
아직 퓨즈를 설정하지 않았다면 아래 5번을 참고하여 퓨즈를 설정을 하면 정상적으로 동작합니다.
아래 포스트에서는 STK500을 사용하였지만 JTAG로도 퓨즈 설정이 가능합니다. (-c 의 인자를 jtag1으로 변경하면 됩니다.)
https://littlebitodd-developer.tistory.com/35
Mac에서 Atmel(AVR) MCU 개발을 위한 환경 구축 - 2 : LED 점등 예제 동작
- 개발 환경Macbook Pro 14 (M3)macOS : Sequoia 15.4 개발 보드 : NewTC AVR MEGA 128 개발보드프로그래머 : NewTC AVR용 USPISP V7.0Jtag 프로그래머 및 디버거 : AVR JTAG ICE USB1. 서론 지난 포스트에서 Toolchain를 설치
littlebitodd-developer.tistory.com
4.2. avr-gcc 컴파일 파라미터 설정
디버깅을 하기 위해 2가지 옵션을 추가 하여야 합니다.
-O0 : 컴파일시 최적화를 하지않습니다. 컴파일러가 최적화시 필요없다 판단되는 코드를 수정하는데 디버깅시 방해가 됩니다.
-g : 출력 파일에 디버깅 심볼을 추가하여 gdb로 디버깅을 할 수 있도록합니다.
예시)
avr-gcc -Wall -O0 -g -mmcu=atmega128a -DF_CPU=16000000UL main.c -o main.bin
5. avarice 실행
이제 JTAG로 연결된 MCU에 접근하기 위해 avarice를 실행합니다.
avarice --jtag <JTAG 디바이스 파일> :4242
예시)
avarice --jtag /dev/tty.usbserial-110 :4242
6. gdb 연결
gdb가 설치 되지 않았다면 아래 커맨드를 이용하여 gdb를 설치합니다.
#gdb 설치
brew install gdb
이제 주의 사항을 확인하면서 gdb를 아래 처럼 실행하면 됩니다.
# 주의 사항
# 1. main.hex가 아닌 main.bin 파일이다.
# 2. avr-gcc로 컴파일시 -O0 -g 옵션을 넣었는지 확인한다.
gdb ./main.bin
# 타켓 아키텍쳐를 avr로 설정
set architecture avr
# avarice에 연결
target remote localhost:4242
이제 디버깅할 준비는 완료되었습니다.
디버깅을 더 쉽게 하기 위해 몇가지 명령어를 실행하도록 하겠습니다.
#명령어 위에 디버깅할 코드를 보여주기 위한 화면 생성
layout next
# main 함수 시작부분에 break point 설정
b main
# main 함수의 코드를 출력
l main
# 위에서 설정한 break point까지 실행
continue
7. gdb 종료
'Embedded > Atmel' 카테고리의 다른 글
Mac에서 Atmel(AVR) MCU 개발을 위한 환경 구축 - 6 : Visual Studio Code로 디버깅 (0) | 2025.04.04 |
---|---|
Mac에서 Atmel(AVR) MCU 개발을 위한 환경 구축 - 4 : VS Code에서 펌웨어 작성 (0) | 2025.04.03 |
Mac에서 Atmel(AVR) MCU 개발을 위한 환경 구축 - 3 : Makefile로 자동화 (0) | 2025.04.03 |
Mac에서 Atmel(AVR) MCU 개발을 위한 환경 구축 - 2 : LED 점등 예제 동작 (0) | 2025.04.02 |
Mac에서 Atmel(AVR) MCU 개발을 위한 환경 구축 - 1 Toolchain 설치 (0) | 2025.04.02 |