728x90
300x250

[PC활용, GNU(리눅스)] 우분투 18.04.01에서 AVR(Avrdude, gcc-Avr, binutils-avr 등) 사용하기 - 소개 및 설치

 

다음은 우분투에서 AVR 설치하는 방법과 소개를 하겠다.

 


1. AVRDude 소개

 

Avr dude는 AVR Downloader/Uploader이다.

아래의 사이트를 클릭하면 아래의 사이트를 볼 수 있다.

http://www.nongnu.org/avrdude

 

그림 1-1. AVRDude - AVRDude(Nongnu.org/avrdude)

 

AVRDUDE - AVR 다운로더 / UploaDEr


AVRDUDE는 ISP (in-system programming) 기술을 사용하여 AVR 마이크로 컨트롤러의 ROM 및 EEPROM 내용을 다운로드 / 업로드 / 조작하는 유틸리티이다.

설명서는 다운로드 영역에서 다운로드하거나 온라인으로 읽을 수 있다.

역사(History)

AVRDUDE는 일단 Brian S. Dean이 Atemel AVR 마이크로 컨트롤러 시리즈의 인 시스템 프로그래머의 개인 프로젝트로이 컨트롤러 용으로 제공되는 Opensource 및 무료 소프트웨어 도구 모음의 일부로 시작되었다.

원래 이 소프트웨어는 FreeBSD 운영 체제용으로 작성되었으며, 사설 CVS 저장소에서 유지 관리되었으며 avrprog라는 이름으로 배포되었다.

Brian은 소프트웨어를 다른 운영 체제로 이식하는 것에 대한 관심이 높아짐에 따라 savannah.nongnu.org에서 공개적으로 프로젝트에 액세스 할 수 있도록하기로 결정했다.
AVRDUDE로 이름 변경은 AVRstudio 소프트웨어와 함께 Atmel이 배포한 avrprog 유틸리티의 모호성을 해결하기 위해 선택 되었다.

주요 특징

AVRDUDE의 주요 기능은 다음과 같다.

• easyautomation을 위해 모든 다운로드 및 업로드 기능 (퓨즈 바이트 처리 포함)에 대한 명령 줄 기반 사용자 인터페이스
   eg. 
Makefiles에 포함시킴.

• 소위 터미널 모드에서 다양한 메모리 영역의 대화형 검사 및 수정.
  
또한 Atmel STK500 보드의 작동 매개 변수 (목표 전압, VAref, 마스터 클록 주파수)를 수정하기위한 옵션이 제공된다.
• Win32 플랫폼뿐만 아니라 모든 주요 POSIX 스타일 운영 체제에서 실행되는 것으로 알려져 있다.
  
POSIX 스타일 시스템에서 기존 운영 체제 드라이버를 사용하면 루트 권한이없는 보안 병렬 포트 액세스를 유지할 수 있다.
  
Win32 플랫폼에서 병렬 포트 액세스는 사용자 프로세스가 IO 레지스터에 직접 액세스 할 수 있게 하는 드라이버 (giveio.sys)를 이전에 설치해야 한다.
• AVR의 ISP 인터페이스를 컴퓨터의 병렬 포트 (추가 회로 없음) 또는 직렬 포트 (일부 추가 회로 필요)에 직접 연결하는 저렴한 ISPplug에서부터
   버퍼 / 드라이버 칩을 사용하는 고급 ASP 어댑터 (예 :
74HC373), AVR910 스타일의 ISP 장치, Atmel STK500 보드 및 Atmel JTAG ICE mkII와 같은
   직렬 연결 프로그래머까지 (더 복잡한)
가장 많이 사용되는 adapterscome 미리 정의 된 새로운 병렬 포트 어댑터를 추가하는 것은 구성 파일을
   편집하는 것만큼 간단하다. (재 컴파일 필요없음)

• Intel Hex, Motorola S-Record 및 원시 바이너리 파일을 지원한다.
   명령 줄에서 직접 메모리 내용 지정 (예 : 퓨즈 바이트의 경우 유용).
입력시 파일 형식을 자동으로 감지 할 수 있다.
• "터미널 모드"에서는 장치의 메모리 영역을 검사하고 수정할 수 있습니다. 이를 통해 상호 퓨즈를 설정하거나 몇 개의 EEPROM 셀을 수정할 수 있다.

도움을 받거나 버그를 신고하는 방법

AVRDUDE에 대한 지원을 받거나이 도구의 다른 사용자와 연락하려면 avr-chat 메일 링리스트를 참조하십시오.
프로젝트에 어떤 방식으로 기여하고자하는 사람들은 avrdude-dev 메일 링리스트에 가입 할 수 있다.

 


1-2. Savannah 홈페이지

 

아래의 사이트에 접속하면 프로젝트에 관해서 알 수 있다.

http://savannah.nongnu.org/

 

 

그림 1-2. savannah 홈페이지 - Nongnu.org

 


1-3. GCC-AVR - 소개

 

아래의 링크를 클릭하면 AVR-GCC에 대해서 자세히 살펴볼 수 있다.

 

https://gcc.gnu.org/wiki/avr-gcc

 

그림 1-3-1. AVR-GCC - 도도(Dodo)

 


1-4. 우분투 패키지에서의 AVR-GCC

 

https://packages.ubuntu.com/en/bionic/gcc-avr

 

 

 

그림 1-4-1. Ubuntu – Details of package gcc-avr in bionic - Ubuntu.org


2. 설치하기

 

우분투에서 AVR을 설치하는 명령어는 아래처럼 하면 된다.

 

번호

명령어

소개

비고(Remarks)

1

sudo -i

 

 

2

apt-get install avr*

 

 

3

 

 

 

 

 

 

 

그림 2-1. AVR 설치하기 - 도도(Dodo)

 

 

그림 2-2. AVR 설치하기 - 도도(Dodo)

 

 

그림 2-3. AVR 설치하기 - 도도(Dodo)

 


 

3. AVRDude 환경설정

 

AVRDude에 대한 환경설정에 관한 것이다.

 

번호

명령어

소개

비고(Remarks)

1

cd /etc

폴더 이동하기 /etc

 

2

vim avrdude.conf

vim avrdude.conf

파일 수정하기

 

3

 

 

 

 

 

 

 

그림 3-1. AvrDude에 대한 환경설정 - 도도(Dodo)

 

 

 

그림 3-2. AvrDude에 대한 환경설정 - 도도(Dodo)

 


4. MakeFile 구성(MakeFile Configuration)


MakeFile은 소스 코드에서 실행 가능한 프로그램 및 라이브러리를 자동으로 빌드하는 유틸리티이다.

A. AVR MakeFile 템플릿 다운로드
        여기에서 AVR 마이크로 컨트롤러 용 make 파일을 다운로드 해라.

        Makefile.tpl.txt (AVR Microcontroller용 Makefile.tpl)


        주의 : 다운로드 한 파일은 프로젝트 디렉토리에 저장해야 한다. 파일은 확장자가없는 "MakeFile"과 같아야 한다.

B. AVR MakeFile configurationAssumption : 마이크로 컨트롤러가 ATmega32이고 프로그래머 하드웨어가 JTAG ICE라고 가정한다.
    그러면 굵게 표시된 다음 매개 변수를 편집해야 한다.

 

MCU=atmega32 / * 사용중인 프로세서 이름 추가 * / PROGRAMMER_MCU = m32 /
* 이것은 마이크로 컨트롤러 ID입니다. avrdude의 매뉴얼 페이지를보십시오.

 

gedit /etc/avrdude.conf

 

*/PROJECTNAME=myproject /* Project name , This could be anything you wish

*/AVRDUDE_PROGRAMMERID=jtagmki 

/*Programmer ids are listed in /etc/avrdude.conf

*/AVRDUDE_PORT=/dev/ttyUSB0 /* 병렬 포트용 드라이버가 로드되어 작동하는지 확인하고 권한을 777으로 하세요 * /

 


4-1. 소스코드

 

#include <avr/io.h>
int main(void)
{
          // Set Port D pins as all outputs
          DDRD = 0xff;
          // Set all Port D pins as HIGH
          PORTD = 0xFF;
          return 1;
}

 

 


4-2. 컴파일 하기

 

$ make              /* Compile your project*/
$ make hex        /* Generate hex file */
$ make install    /* Burn hex file in microcontroller ( Make sure your board is switched on and programmer is connected )*/

 

소스코드를 작성하고 make를 한다.

 


5. GCC-AVR에서 제시하는 컴파일 방법

 

원문으로 읽어보면 도움이 될 것이다.

 

Compiling the Code

Let's start with a simple C program, source.c:

#include <avr/io.h>

int var;

int main (void)
{
    return var + SP;
}

Your source directory then contains the following files:

 

source.c    gcrt1.S    macros.inc    sectionname.h

 

The startup code gcrt1.S and macros.inc are verbatim copies from AVR Libc.

sectionname.h is included by macros.inc but we don't need it: Simply provide sectionname.h as an empty file.

For the matter of simplicity, we show how to compile for a device that is similar to ATmega8 so that we don't need to extend avr/io.h to show the work flow. In the case you copied avr/io.h to a new place, don't forget to add respective -isystem to the first two commands for source.c and gcrt1.S.

ATmega8 is a device in core family avr4, thus we compile and assemble our source.c for that core architecture. __AVR_ATmega8__ stands for the subheader selector you added to avr/io.h.

 

avr-gcc -mmcu=avr4 -D__AVR_ATmega8__ -c source.c -Os

 

Similarly, we assemble the startup code for our device by means of:

 

avr-gcc -mmcu=avr4 -D__AVR_ATmega8__ -c gcrt1.S -o crt0-mydevice.o


Finally, we link the stuff together to get a working
source.elf (assuming that RAM starts at address 0x124):

 

avr-gcc -mmcu=avr4 -Tdata 0x800124 source.o crt0-mydevice.o -nostartfiles -o source.elf

 

Voilà!

 


6. 맺음글(Conclusion)

 

AVR에 사용되는 주요 프로젝트 등에 대해서 살펴보았다.

 


7. 참고자료

 

1. gcc/Makefile.tpl at master · gcc-mirror/gcc · GitHub, Last Modified, Accessed by 2018-09-06, https://github.com/gcc-mirror/gcc/blob/master/Makefile.tpl

2. Welcome [Savannah], Last Modified, Accessed by 2018-09-06, http://savannah.nongnu.org/

3. AVRDUDE - AVR Downloader/UploaDEr, Last Modified 2010-01-08 09:14:46(CET), Accessed by 2018-09-06, https://www.nongnu.org/avrdude/

4. avr-gcc - GCC Wiki, Last Modified 2017-10-06 09:47:16, Accessed by 2018-09-06, https://gcc.gnu.org/wiki/avr-gcc

5. Ubuntu – Details of package gcc-avr in bionic, Last Modified, Accessed by 2018-09-06, https://packages.ubuntu.com/en/bionic/gcc-avr

반응형

+ Recent posts