본문 바로가기

Embedded/Atmega128

[Atmega128] 우분투에서 Avr 개발환경 구축

작업 환경

-메인 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