작업 환경
-메인 OS : Ubuntu 14.04.5 LTS 64bit
-장 비 명 : Atmega128(JMOD-128-1)
1. avr-gcc 설치
아래의 명령을 순서대로 진행한다.
- sudo apt-get install binutils-avr
- sudo apt-get install gcc-avr
- sudo apt-get install avr-libc
- sudo apt-get install avrdude
2. avrdude.conf 수정
avr-gcc를 설치하였다면 다음과 같이 avrdude.conf를 수정한다.
- sudo vi /etc/avrdude.conf
- memory "flash" 섹션에서
page_size = 256 --> page_size = 128
num_pages = 512 --> num_pages = 1024 로 수정한다.
3. makefile 만들기
다음으로 makefile을 만들어야 한다. 필자는 avr 디렉토리에 makefile 와 소스들을 만들 것이다.
- cd ~/
- mkdir avr
- cd avr
- vi makefile
makefile
#makefile
CC = avr-gcc
MCU_NAME = atmega128
M_NAME = atmega128
F_CPU = 16000000UL
TARGET = main
PROG_TYPE = stk500
PORT_NAME = /dev/ttyUSB0
RM = rm -rf
$(TARGET):$(TARGET).c
$(CC) -w -Os -DF_CPU=$(F_CPU) -mmcu=$(MCU_NAME) -c -o $@.o $^
$(CC) -w -mmcu=$(MCU_NAME) $@.o -o $(TARGET)
avr-objcopy -O ihex -R .eeprom $(TARGET) $(TARGET).hex
sudo avrdude -F -V -c $(PROG_TYPE) -p $(M_NAME) -P $(PORT_NAME) -U flash:w:$(TARGET).hex:i
# $(CC) -mmcu=$(MCU_NAME) -o $@.o $^
# avr-objcopy -O ihex -R .eeprom $@.o $(TARGET).hex
# avrdude -p $(MCU_NAME) -c $(PROG_TYPE) -P $(PORT_NAME) -U flash:w:$(TARGET).hex:i
clean:
$(RM) $(TARGET) $(TARGET).hex $(TARGET).o
4. USB 연결 확인
Atmega128을 PC에 연결하고 USB가 연결되있는지 확인한다.
- lsusb
- dmesg | grep tty
5. 메인소스 작성
다음으로 메인소스를 작성해 보자. 필자는 간단한 LED 점멸 소스를 만들었다.
main.c
#include <avr/io.h>
#include <util/delay.h>
void main(void)
{
DDRA = 0xff;
PORTA = 0x00;
while(1)
{
_delay_ms(500);
PORTA = 0xff;
_delay_ms(500);
PORTA = 0x00;
}
}
*만약 소스 이름을 main.c 가 아니라 다른 이름으로 만들시 makefile의 TARGET = main 부분을 수정해준다.
ex) 소스 이름이 led.c 라면 TARGET = led 로 변경해준다.
6. 빌드
소스를 작성하였다면 컴파일 해준다.(avr 디렉토리에서 진행)
- make main (만약 소스 이름이 led.c 라면 make led로 진행)
다음과 같이 빌드된 것을 확인할 수 있으며 실행파일 , 헥사파일 , 목적 파일이 만들어 진것을 확인할 수 있다.
만약 소스를 수정하고 다시 빌드를 하려면 다음과 같이 진행한다.
- make clean (실행파일 , 헥사파일 , 목적파일 지워짐)
- make main