1~8교시
☆S/W★
● ARM Assembly
□ 컴파일에 대한 단상
- 인간은 bit pattern을 직접 입력하지 않고 , Assembly로 코딩을 하게 되었으며 이를 기계어로 바꿔주는 것이 컴파일에 목적이었다.
- 그래서 예전에는 인간이 직접 코드표를 찾아서 기계어로 바꾸어주는 일을 했다.
- ARM core를 예로 들면, C로 coding을 한후 컴파일 한다는 의미는 C컴파일을 이용하여 ARM이 해석 할 수 있는 어셈블리를 만들어 낸후 ARM 어셈블리를 이용하여 , ARM 코어가 해석할 수 있는 일련의 bit pattern을 만들어 낸다고 할 수 있다.
- mnemonic : mnemonic 은 사람의 기억을 돕기 위하여 사용되는 심볼을 의미하는데, 결국 assembly는 기계어와 1:1로 matching 되므로 어셈블리 코드를 mnemonic 이라 불러도 무방하다.
- 흔히들 크로스 컴파일 환경이라는 말을 많이쓰는데, 크로스 컴파일이란 실제 타겟에서 돌아갈 바이너리 이미지를 PC상에서 컴파일 할수 있게 해주는 환경을 이야기한다.
- 흔히 PC에서 컴파일한 것은 PC에서 실행하는게 정상인데, 임베디드 시스템에서는 타겟 자체에서 컴파일을 수행하기에 너무 작은 시스템이며, 불편하기에 이런 환경을 만들어서 바이너리 이미지를 PC상에서 만들어낸다.
□ 컴파일 공장
- 우선 이전에 ARM ADS를 설치를 해야하는데 설치하는 방법은 다음 방법으로 하면 된다.
http://wowcat.tistory.com/1961 >> 설치방법
- 설치가 완료 되면 예제를 다운 받아서 실행 해 볼 수도 있다.
- 우선 실행을 하기전에 해당 하는 ARM acc가 버전이 일치한지 확인을 해야하며, 패치가 수시로 되기 때문에 현재 패치버전을 받아야 한다.
- 패치가 다되었다면 cmd 창에다가 명령어를 입력하여 현재 버전을 확인 할 수가 있다.
- 기본적으로 Example 이라는 폴더 내부에 있는 예제를 한번 실행해 볼 수가 있다.
- 본론으로 넘어가서 컴파일 공장에대한 내용을 좀더 자세히 알아보자.
- 결국 c-compiler로 .c file 하나를 컴파일 하면,
ⓐ 전처리를 하고 (#define이나, #include등의 것을 잘 처리해서 끼워 넣어서 c 형식의 .i file을 만듦)
ⓑ 전처리 된 녀석을 mnemonic의 Assembly로 만들고 (기계어와 1:1 대응의 .s Assembly로 만들고)
ⓒ Assembly를 실제 기계어로 만들어준다. (elf 형식의 .o file로 만든다)
- ⓐ 뒤에서 다루겠지만, 몇 가지 더 덧붙이자면 lib file은 source code를 제공하고 싶지 않은 개발자가 object 형식으로 미리 컴파일 하여 제공하고, lib은 다른 컴파일 된 object들과 link되어 같이 물려 들어가는 형식을 취한다.
ⓑ 또한 link시에 scl이라는 것이 새로 들어가 있으며, 이것은 Scatter Loading이라고 부르며, binary를 만들어 낼 때, 메모리의 주소 구성을 원하는 대로 주물럭 주물럭 댈 수 있게 해주는 script file이다.
ⓒ Map file이나 Sym file은 compile된 binary의 메모리 구성을 나타내 주는 text file이며, 보통 compiler option을 줘서 만들어 낼 수 있는 option file이다.
● Winsock 2일차
□ Winsock 다중채팅 프로그램
- 어제에 이어서 이번에는 Windows 내부에서 여러명의 사람들과 채팅을 할 수 있게 만들어주는 시스템을 만들 수가 있다.
- 그렇게 하기 위해서는 조금 손봐야 할 부분이 많다.. 하지만 리눅스에서 만들었던 채팅 프로그램과 매우 흡사하게 이루어지기 때문에, 대부분의 내용을 복사해서 붙여넣으면 된다.
- 현재 사용하고 있는 서버내부의 define 값은 클라이언트에서도 그대로 적용해 주어야한다.
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20151201_안향진_ARM어셈블리_3__WINSOCK_2 (4) | 2015.12.02 |
---|---|
20151201 윤재희 컴파일에 대한 단상, ARM ADS 설치, 컴파일 공장 이야기, winsock 채팅 프로그램 (4) | 2015.12.01 |
20151201 - 홍준모 - 오전 : ARM 계의 비쥬얼 스튜디오(ADS) 깔기, .map .sym 의 필요성, 여러 다른 교양 내용 등등 (3) | 2015.12.01 |
20151201 / ARM(컴파일러 설치), Winsock_2 / 남수진 (4) | 2015.12.01 |
2015-12-01 ARM Assembly & WinSock Chatting 개인업무일지 - 천정호 (3) | 2015.12.01 |
20151201-김재홍-ARM_Assembly (3) | 2015.12.01 |
2015.12.01_[ARM #3][Winsock #2]_이량경_ARM ADS, socket (2) | 2015.12.01 |
20151201 엄민웅 - arm 임베디드레시피 (교제 162~199) WinSock 2일차. (3) | 2015.12.01 |