본문 바로가기
코스웨어/15년 스마트컨트롤러

20151201 업무일지 -여지윤- ARM Assembly, Winsock

by 알 수 없는 사용자 2015. 12. 1.
728x90
반응형

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 값은 클라이언트에서도 그대로 적용해 주어야한다.

728x90