1. WIN AVR이란?
리눅스 기반의 ‘GCC’(GNU Compiler Collection)라 불리는 컴파일러 프로그램 묶음이 있다. 이 리눅스에서 사용하던 ‘GCC’를 윈도우 기반에서 돌아가도록 ‘GCC’를 계량하여 PC 프로그램을 통상적인 ‘델파이’, ‘MFC', 'API'가 아닌 ’GCC‘로 C/C++ 프로그램 작성을 가능하게 하였다. 또, 이를 확장하여 'GCC'를 이용하여 ARM, AVR, AVR32 등의 마이크로프로세서에서 사용 가능한 크로스 컴파일러로 확장시켜 나가게 되었으며 이중 ’AVR' 을 위한 ‘GCC'에 ’WIN AVR'이란 명칭을 붙이게 되었다.
2. WIN AVR의 파일 구성
"C:\WinAVR-20090313\bin" 폴더 아래에 'GCC'가 갖고 있는 컴파일러 주요 프로그램 묶음들에 대해 각각 나열 하였다.
가. avr-gcc.exe : C 언어 컴파일러로써 C언어로 작성된 소스를 어셈블리 소스 파일로 생성하여 준다.
나. avr-c++.exe : C++ 언어 컴파일러로써 C++언어로 작성된 소스를 어셈블리 소스 파일로 생성하여 준다.
다. avr-g++.exe : C++ 언어 컴파일러로써 ‘GCC’에서 계정한 C++ 문법에 대하여 컴파일을 하기 위한 프로그램으로 'GCC‘에서 계정한 문법의 C++ 소스는 'c++.exe'에서는 컴파일 할 수 없다. 결과물로는 어셈블리 소스 파일을 생성한다.
라. avr-as.exe : 'avr-gcc.exe', 'avr-c++.exe', 'avr-g++.exe'에서 생성한 어셈블리어를 어셈블하는 어셈블러로써 링킹 직전의 오브젝트 파일을 생성한다.
마. avr-ld.exe : 'avr-as.exe'가 생성한 오브젝트 파일들을 한데 모아 실행 파일을 만들어주는 최종 단계의 역할이다.
3. WIN AVR 컴파일의 작업 진행
위 파일들이 순차적으로 'avr-gcc.exe'가 ‘.c'의 확장명을 갖는 C 소스 파일을 컴파일 하여 '.s'의 확장명을 갖는 어셈블리 파일로 만들어 낸다. ’.s' 확장명의 어셈블리 파일을 ‘avr-as.exe'가 어셈블 하여 ’.o'의 확장명을 갖는 오브젝트 파일을 생성하고 마지막으로 'avr-ld.exe'가 링킹을 하여 ‘.elf’로 만들어 낸다. (실질적인 GCC는 목적파일을 ‘.elf‘를 생성해 내고 'avr-objcopy.exe' 프로그램이 '.hex'로 변형해 낸다.)
< 컴파일 작업 순서도 >
위 예시에서 초록색은 파일의 변화를 나타내고 보라색은 프로그램을 나타내며 초록색의 파일이 보라색의 프로그램을 거치면서 변화하는 과정을 보여주고 있다. 실제로 과정은 더 세분화 되어 있지만 간단히 표현하였다.