==================================Outline====================================
컴파일에 대한 단상
ARM ADS 설치
컴파일 공장 이야기
----------------------------------------------------------------------------
컴파일에 대한 단상
0과 1로 이루어진 코드를 문자를 도입하여 표시하게 되어 사람이 코드를 작성하는데 용이하게 되었다.
어셈블리 언어는 CPU에 따라 문법이 달라진다. 호환성의 한계를 해결하기 위해서 고급 언어인 C나 C++이 등장하게 되었다.
CPU에 자유롭다 - high level language
CPU에 종속된다 - low level language
C로 작성 -> Assembly 언어로 변환 -> cpu가 해석할 수 있는 bit pattern으로 변환
![](https://t1.daumcdn.net/cfile/tistory/24328233565D231507)
메모리는 플립플롭의 회로를 사용하여 데이터를 보존한다.
cross compile이란 프로그램을 고사양 개발 PC에서 컴파일 후 프로그램이 사용될 CPU에 이식하는 것을 말한다.
ARM ADS 설치
공유 폴더에 가서 ARM ADS(ARM Developer Suite) 1.2를 가져온다. setup.exe를 눌러 실행한다.
** 굳이 설명이 없는 것은 변동 없이 다음을 눌러주면 된다.
![](https://t1.daumcdn.net/cfile/tistory/211C9B33565D231714)
![](https://t1.daumcdn.net/cfile/tistory/2635BB33565D231904)
![](https://t1.daumcdn.net/cfile/tistory/22042B33565D231A23)
![](https://t1.daumcdn.net/cfile/tistory/2235DF33565D231C05)
보안패치 업데이트
![](https://t1.daumcdn.net/cfile/tistory/2513FD33565D231D1A)
![](https://t1.daumcdn.net/cfile/tistory/24278A33565D231E0E)
예제 파일 ‘OK7S256ads’은 인터넷 검색하여 사용한다. 압축을 풀어 Program File에서 ADS가 설치된 폴더 안에 잘라 넣는다.
IDE를 실행하고 예제 파일을 불러들인다.
![](https://t1.daumcdn.net/cfile/tistory/2739A436565D23211C)
![](https://t1.daumcdn.net/cfile/tistory/213BFD36565D23221A)
그룹을 생성한다.
![](https://t1.daumcdn.net/cfile/tistory/24556936565D232302)
![](https://t1.daumcdn.net/cfile/tistory/263D2E36565D232419)
![](https://t1.daumcdn.net/cfile/tistory/263E2D36565D232617)
![](https://t1.daumcdn.net/cfile/tistory/272B8F36565D232729)
![](https://t1.daumcdn.net/cfile/tistory/2152D936565D232804)
‘Cstarup_SAM7.c‘ 와 ’retarget.c‘ 도 같은 방식으로 등록한다.
![](https://t1.daumcdn.net/cfile/tistory/225B193C565D23291E)
![](https://t1.daumcdn.net/cfile/tistory/2268C43C565D232A12)
이제 예제 파일을 추가한다.
![](https://t1.daumcdn.net/cfile/tistory/2677303C565D232B05)
![](https://t1.daumcdn.net/cfile/tistory/276DDC3C565D232C0D)
![](https://t1.daumcdn.net/cfile/tistory/266BAC3C565D232E0F)
새로운 프로젝트 환경 설정
![](https://t1.daumcdn.net/cfile/tistory/24623A3C565D232F18)
![](https://t1.daumcdn.net/cfile/tistory/22783C3C565D233104)
![](https://t1.daumcdn.net/cfile/tistory/2577A638565D233228)
![](https://t1.daumcdn.net/cfile/tistory/21223238565D233305)
![](https://t1.daumcdn.net/cfile/tistory/24160738565D233510)
![](https://t1.daumcdn.net/cfile/tistory/27029338565D23371F)
![](https://t1.daumcdn.net/cfile/tistory/24195438565D23390D)
![](https://t1.daumcdn.net/cfile/tistory/2607C938565D233B1A)
![](https://t1.daumcdn.net/cfile/tistory/24743138565D233D2B)
코딩 시 코드의 탭 간격 조절
![](https://t1.daumcdn.net/cfile/tistory/2237D936565D233E1F)
![](https://t1.daumcdn.net/cfile/tistory/24349D36565D234222)
![](https://t1.daumcdn.net/cfile/tistory/2243D436565D234414)
![](https://t1.daumcdn.net/cfile/tistory/233F4536565D234617)
주소가 달라 오류가 난다. 주소를 수정해보자.
![](https://t1.daumcdn.net/cfile/tistory/26370436565D234720)
베이스 주소를 '0x00000000'로 수정하니 컴파일이 됐다. 하지만 warning이 뜬다. entry point가 없다는 메시지이다.
![](https://t1.daumcdn.net/cfile/tistory/21481A36565D23480F)
다시 alt + F7을 눌러 디버그 세팅으로 간다. Image Entry Point창에 'entry'를 입력한다.
![](https://t1.daumcdn.net/cfile/tistory/27403036565D234917)
다시 컴파일을 해보자.
![](https://t1.daumcdn.net/cfile/tistory/262B8F36565D234A2A)
잘된다.
Atmel사 홈페이지로 간다.
![](https://t1.daumcdn.net/cfile/tistory/2144BB36565D234C13)
![](https://t1.daumcdn.net/cfile/tistory/25510F36565D234E08)
![](https://t1.daumcdn.net/cfile/tistory/2237A336565D235020)
//MCU를 구입할 때 evolution kit를 사야한다. 아니면 CPU 달랑 하나 구입하는 꼴이 된다.
컴파일 공장 이야기
![](https://t1.daumcdn.net/cfile/tistory/26446236565D235213)
//전처리 과정이 빠져있다.
elf와 bin파일은 둘 다 기계어이다. 실제로 동작이 가능한 파일이 bin파일이다.
실행 파일 구조는 윈도우는 pe계열 리눅스는 elf계열이다. 임베디드 계열은 대부분 elf계열이다.
컴파일 과정을 그림으로 표시하면 다음과 같다.
![](https://t1.daumcdn.net/cfile/tistory/25420C36565D235316)