본문 바로가기
Development

맥에서 AVR 개발하기 1 : AVR 툴체인 설치하기

by 맥쓰는풍경/송호정 2014. 4. 24.

맥에서 AVR 개발하기 1 : AVR 툴체인 설치하기

 



맥에서 AVR 개발하기 1 : AVR 툴체인 설치하기

맥에서 AVR 개발하기 2 : 개발 프로그램 컴파일하기

맥에서 AVR 개발하기 3 : ISP 드라이버 설치하기

맥에서 AVR 개발하기 4 : 다운로더 설치 및 프로그램 다운로드


 

0. 개요


윈도우에서 맥으로 이사를 온 후, 많은 개발 프로그램들 때문에 윈도우를 떠나지 못하고 있습니다. 물론 개발 툴 뿐만 아니라 파워포인트나 엑셀, 아래한글과 같은 프로그램들도 같은 이유이겠지만...

그동안 AVR 개발을 하기 위해서 패러럴즈의 윈도우를 띄우고 AVRStudio를 실행시켜 개발을 해야 했습니다.

그러다 어느날 우연히 맥에서도 개발이 가능하다는 정보를 보게되고, 그 다음부터 한참을 검색해서 개발 환경 구축에 성공하였습니다.

AVR 툴체인 설치, 개발 프로젝트 소스 컴파일, ISP 드라이버 설치하기, 프로그램 다운로드의 순으로 포스팅 예정입니다.


그럼 그 첫번째로 AVR 툴체인 설치 방법에 대해서 알아보도록 하겠습니다.



 1. Xcode 설치

 

AVR을 컴파일하기 위한 크로스 컴파일러 툴체인을 만들기 위해서는 gcc가 깔려있어야 합니다.

우선 터미널에서 다음과 같이 입력합니다. 

$  gcc —version

 

다음과 같이 결과가 나오면 gcc가 설치되어 있으므로 다음으로 넘어갑니다.

….

Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)

Target: x86_64-apple-darwin13.1.0

Thread model: posix

 

하지만, 다음과 같이 gcc를 찾지 못한다는 메시지가 나오면 gcc가 없는 것 입니다.

gcc를 따로 깔아도 좋지만, Xcode에는 크로스 컴파일러 툴체인을 만들 수 있는 모든 툴이 포함되어 있으므로 Xcode를 설치합니다.

 

2. 툴체인 소스 다운로드

 

1) Binary Utilies 소스 다운로드

    바이너리 유틸리티(binutils)는 여로 종류의 오브젝트 파일 형식을 조작하기 위한 프로그램 도구 모음으로서 어셈블러, 링커등을 포함하고 있습니다. binutils는 일반적으로 gcc, make, gdb와 함께 사용됩니다.

    binutils의 최신버전은 http://ftp.gnu.org/gnu/binutils/ 에서 확인할 수 있습니다.

$ curl -O ftp://gcc.gnu.org/pub/binutils/releases/binutils-2.24.tar.bz2


2) GCC 컴파일러 소스 다운로드

    gcc는 GNU(GNU is Not Unix) 프로젝트의 프리웨어 컴파일러 입니다. C언어 뿐만 아니라 C++, Objective-C, Pascal, Ada등의 다양한 언어를 지원합니다.

   최신버전은 http://ftp.gnu.org/gnu/gcc/ 에서 확인할 수 있습니다.

$ curl -O ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.6.4/gcc-core-4.6.4.tar.bz2

$ curl -O ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.6.4/gcc-g++-4.6.4.tar.bz2

 

3) AVR 라이브러리 소스 다운로드

    avr-libc의 공식 사이트는 http://savannah.nongnu.org/projects/avr-libc/ 이며,

   최신버전은 http://download.savannah.gnu.org/releases/avr-libc/ 에서 확인할 수 있습니다.

$ curl -O http://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.8.0.tar.bz2


    위의 다운로드 사이트는 현재 접속은 되지만 다운로드는 불가능 합니다. 하지만 다음의 미러 사이트에서 다운받을 수 있습니다.

$ curl -O http://mirror.lihnidos.org/GNU/savannah/avr-lib/avr-libc-1.8.0.tar.bz2

 

4) Debugger 소스 다운로드

    최신버전은 https://sourceware.org/gdb/ 에서 확인할 수 있습니다.

$ curl -O ftp://sourceware.org/pub/gdb/releases/gdb-7.7.tar.bz2

 

3. 환경설정

 

우선 크로스 컴파일러 툴체인을 만들기 전에 다음과 같이 컴파일 환경설정을 합니다.

 

크로스 컴파일러의 위치를 prefix라는 환경변수로 설정합니다.

일반적인 사용자 설치 파일은 /usr/local 아래에 설치하지만 필자의 경우는 /opt 아래에 설치합니다. 어느 위치이건 관계 없습니다.

$ export target=avr

$ export prefix=/opt/$target

 

크로스 컴파일러가 위치할 디렉토리를 만듭니다. (수퍼유저 권한으로 디렉토리를 만들므로 비밀번호 필요)

$ sudo mkdir -p $prefix/bin

 

크로스 컴파일러의 실행파일이 있는 디렉토리 위치를 PATH로 설정합니다.

$ export PATH=$prefix/bin:$PATH 


앞에서 한 컴파일 환경설정은 일시적인 설정입니다.

그러므로 터미널을 종료했다 다시 시작하거나, 다른 터미널을 실행시키면 앞에서 한 환경설정이 적용되지 않습니다.

터미널을 실행시킬 때 마다 위의 환경설정이 항상 적용되는것을 원한다면 사용자 홈 디렉토리의 .bash_profile 파일에 다음을 추가하면 됩니다.

$ vi ~/.bash_profile

$ export target=avr

$ export prefix=/opt/$target

$ export PATH=$prefix/bin:$PATH


내용 추가: 2014.09.16


(참고)

  • vi는 유닉스 및 리눅스 계열에서 가장 많이 사용하는 전통적인 커멘드라인 에디터 입니다. 하지만 사용법이 복잡하여 초보자는 사용하기 어렵습니다.
  • 본 강좌에서는 계속 vi를 사용하여 설명을 하겠지만, 만일 vi 사용법을 모른다면 vi 대신 nano를 사용하시기 바랍니다.

     # nano ~/.bash_profile

  • 또한 커멘드라인 에디터가 어렵다면 맥의 기본 에디터인 "텍스트 편집기"나 무료로 배포되는 "Sublime Text 2"와 같은 에디터를 사용하셔도 됩니다.


이제 새로 터미널을 실행할 때마다 환경설정이 적용된 것을 확인할 수 있습니다.

$ env

TERM_PROGRAM=Apple_Terminal

SHELL=/bin/bash

.

.

.

PATH=/opt/avr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

.

.

.

prefix=/opt/avr

.

.

.

target=avr


4. 툴체인 컴파일

 

1) Binary Utility 컴파일

 

다운받은 압축파일을 풉니다.

$ tar -jxf binutils-2.24.tar.bz2

 

컴파일할 폴더를 만듭니다.

$ cd binutils-2.24

$ mkdir build-$target

$ cd build-$target

 

컴파일 환경을 설정하기 위하여 comfigure를 실행시킵니다.

$ ../configure --target=$target --prefix=$prefix --disable-nls --disable-shared --disable-threads --with-gcc --with-gnu-as --with-gnu-ld

 

컴파일을 합니다.

$ make

 

만일 다음과 같은 에러가 나온다면

../../gas/as.c:977:24: error: 'sbrk' is deprecated [-Werror,-Wdeprecated-declarations]

  char *lim = (char *) sbrk (0);

                       ^

/usr/include/unistd.h:582:7: note: 'sbrk' declared here

void    *sbrk(int);

         ^

../../gas/as.c:1146:25: error: 'sbrk' is deprecated [-Werror,-Wdeprecated-declarations]

  start_sbrk = (char *) sbrk (0);

                        ^

/usr/include/unistd.h:582:7: note: 'sbrk' declared here

void    *sbrk(int);

 

Makefile에서 CFLAGS를 찾아 다음과 같이 수정합니다. (이 에러를 해결하기 위해 몇일을 고생하였습니다).

$ vi Makefile

 

 

.

.

.

 

 

//CFLAGS = -g -O2

CFLAGS = -g -O2 -Wno-error=deprecated-declarations

 

.

.

.

 

 

에러가 없이 모든 컴파일이 완료되면 설치를 합니다.

$ sudo make install

$ cd ../..

 

2) AVR Cross Compiler 컴파일 

 

다운받은 압축파일을 풉니다.

$ tar -jxf gcc-core-4.6.4.tar.bz2

$ tar -jxf gcc-g++-4.6.4.tar.bz2

 

컴파일할 폴더를 만듭니다.

$ cd gcc-4.6.4

$ mkdir build-$target

$ cd build-$target 

 

컴파일 환경설정을 합니다.

$ ../configure --target=$target --prefix=$prefix --disable-nls --disable-shared --disable-threads --with-gcc --with-gnu-ld --with-gnu-as --with-dwarf2 --enable-languages=c,c++ --disable-libssp -v

 

내용 추가: 2014.09.16


만일 다음과 같은 에러가 발생한다면 

gmp나 mpfr, mpc중 하나가(또는 모두) 설치가 안된것이므로 해당 패키지를 설치해야 합니다.

.

.

.

 

checking for objdir... .libs

checking for the correct version of gmp.h... no

configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.

Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify

their locations. Source code for these libraries can be found at

their respective hosting sites as well as at

ftp://gcc.gnu.org/pub/gcc/infrastructure/. See also

http://gcc.gnu.org/install/prerequisites.html for additional info. If

you obtained GMP, MPFR and/or MPC from a vendor distribution package,

make sure that you have installed both the libraries and the header

files. They may be located in separate packages.


맥에서의 패키지 설치는 Homebrew나 MacPort와 같은 패키지 관리자를 사용하여 설치할 수 있습니다.

참고로 Homebrew에서는 다음과 같이 설치하면 됩니다.

# brew install gmp

# brew install mpfr

# brew install libmpc



Homebrew에 대한 자세한 사용법은 다음에서 확인할 수 있습니다.



컴파일 및 설치를 합니다.

$ make

$ sudo make install

$ cd ../..

 

컴파일러가 정상적으로 설치 되었는지 확인합니다.

$ avr-gcc —version

avr-gcc (GCC) 4.6.4

Copyright (C) 2011 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 

3) Library 컴파일

 

다운받은 압축파일을 풉니다.

$ tar -jxf avr-libc-1.8.0.tar.bz2

 

컴파일할 폴더를 만듭니다.

$ cd avr-libc-1.8.0

$ mkdir build-$target

$ cd build-$target

 

컴파일 환경설정을 합니다.

$ ../configure --prefix=$prefix --build=`../config.guess` --host=$target

 

컴파일 및 설치를 합니다.

$ make

$ sudo make install

$ cd ../..

 

4) Debugger 컴파일

 

다운받은 압축파일을 풉니다.

$ tar -jxf gdb-7.7.tar.bz2

 

컴파일할 폴더를 만듭니다.

$ cd gdb-7.7

$ mkdir build-$target

$ cd build-$target

 

컴파일 환경설정을 합니다.

$ ../configure --target=$target --prefix=$prefix --disable-nls

 

컴파일 및 설치를 합니다.

$ make

$ sudo make install

$ cd ../..

 

5) 바이너리 축소

 

컴파일한 바이너리 파일의 용량을 줄이고 로딩 속도를 빠리게 하기 위하여 바이너리를 축소 합니다.

$ sudo strip $prefix/bin/*

$ sudo strip $prefix/$target/bin/*

$ sudo strip $prefix/libexec/gcc/$target/4.2.2/*

 

 

이제 AVR 개발을 위한 툴체인 설치가 완료되었습니다.

다음에는 설치된 툴체인을 사용하여 개발하는 프로젝트 소스를 컴파일을 하는 방법을 알아보도록 하겠습니다.

 

반응형

댓글