- 위 처럼 회색박스안에 있는 일련의 과정(컴파일, 링크 Hex 컨버팅)을 빌드(Build)라고 함
- 리눅스 시스템에서는 메이크(Make)라고 하기도 함.
1. Compiler (컴파일러)
- 고급언어(C, Java, ...) 프로그램을 기계어(Machine Language)로 번역하는 소프트웨어
- 일반적으로 현재 컴파일러가 돌아가는 그 컴퓨터의 ISA를 가지는 기계어로 번역한다.
- Intel - WIndows에서 컴파일하면 Windows - Intel 8086 ISA로 구성된 기계어로 번역됨
- 우리가 개발은 PC에서 하기 때문에 대부분 Intel 8086 ISA로 구성된 기계어로 번역된다
2. Cross Compiler/Assembler (교차 컴파일러/어셈블러)
- 컴파일러가 수행되는 환경이 아닌 다른 프로세서의 기계어로 번역하는 컴파일러/어셈블러
- 우선 일반 GCC컴파일러가 소스코드를 Windows Intel 기계어로 번역하면, 그 기계어 코드를
- ATmega128에서 돌아갈 수 있는 기계어로 다시 재 번역해줌. (ATmega는 80x86 기계어 실행 못함)
- 우리는 PC(Windows - Intel ABI)에서 개발하고, 교차 컴파일러/어셈블러를 써서 재번역한다
3. Linker (링커)
- 우리가 소스코드를 하나의 파일에 작성하는 것이 아니라 여러개의 파일에 작성하면,
- 기계어도 여러개로 떨어져서 나오는데, 이 때 링커가 컴파일된 각 파일을 조합해서
- 하나의 기계어 프로그램으로 만듬
4. Hex File Converter
- 컴파일러 -> 교차컴파일러 -> 링커에 의해 만들어진 기계어 소스코드를
- ATmega128에 전송하기 전에, Hex File Converter를 이용하여 특정 포맷으로 컨버팅한다.
- 기계어는 0100110...001과 같이 구분없이 배치되어있기 때문에 컨버터를 이용하여 특정 포맷으로
- 잘라서 소스코드를 ATmega128에 전송해야하는데, 우리는 Intel-Hex Format이라는 포맷을 사용한다.
5. ISP Downloader (with Loader)
- ISP 다운로더는 In System Programmable 다운로더의 약자로, PC에서 개발한
- 소프트웨어를 손쉽게 ATmega128 보드(타겟 보드)의 플래시메모리에 쓰게 해준다.
- PC에서 쓰이는 로더(Loader)와 비슷하면서, 기계간의 통신이 가능하게 해준다는 특징이 있다.
6. Debugger (디버거)
- 프로그램 실행 중 변수, 레지스터의 상태를 보여주고 프로그램을 문장별로 제어할 수 있게 하며,
- 사용자로 하여금 프로그램의 오류를 찾기 쉽게 도와주는 소프트웨어이다 (IDE같은 개발 도구임)
7. Reference
'마이크로프로세서' 카테고리의 다른 글
패턴을 변경한 LED 점등 (0) | 2020.05.24 |
---|---|
입출력포트 & LED 점등해보기 (0) | 2020.04.21 |
출력(LED) & 입력(스위치버튼) 회로 구성 (0) | 2020.04.21 |
ATmega128 보드 (0) | 2020.04.21 |
ATmega128의 EEPROM (추가메모리) (0) | 2020.04.21 |
ATmega128의 SRAM과 레지스터 (데이터 저장용) (0) | 2020.04.21 |
ATmega128의 Flash 메모리 (프로그램 저장용) (0) | 2020.04.21 |