xcl파일에대하여
EWARM컴파일러에서 xcl파일은 생성되는 binary image의 실행번지와 밀접한 관련이
있습니다. CPU의 특정 번지(특정메모리영역)에 특정 binary image를 위치시켜 실행하기
위해서는 xcl파일을 통해서 ASM/C언어상의 함수/변수위치를 해당 위치에 맞게 할당해
주어야 합니다.
시스템 엔지니어는 하드웨어를 설계할 때 CPU의 어느 번지에 어떤 메모리(램/롬)을 붙일
것인가를 설계하고, 해당 번지를 어떤 용도로 사용할 것인지 결정하게 됩니다. 이때 CPU의
주소공간에 마음대로 램이나 롬을 붙일 수 있는 것이 아니라, Reset Vector영역에는 롬을
붙여야 하고, 그 외 다른 주소 영역에 램을 붙입니다. 롬과 램 용량의 결정은 어떤
소프트웨어를 실행할 것인가에 달려있습니다. 이렇게 해서 롬과 램의 주소와 용량이
결정되면 그에 맞게 프로그램을 작성하여 해당 영역(롬/램 영역)에 프로그램을 위치시킨 후
프로그램을 실행합니다.
보통의 경우 프로그램을 작성할 때는(ASM/C소스를 작성할 때) 이런 롬/램의 영역이나 용
량은 고려의 대상이 아니라 단순히 소스만 작성하게 됩니다.(물론 데이터의 양은 고려의 대
상입니다.) 이렇게 작성된 명령어/데이터들의 집합체인 이미지를 하드웨어 설계 시
의도했던 번지에 배치하는 작업이 필요한데, 이 작업은 link작업 시에 이루어지며, link
프로그램은 xcl파일을 참조하여 명령어와 데이터를 적절한 주소 영역에 배치합니다.
프로그램의 코드는 보통 롬에 위치하고, 램에 위치하기도 합니다. 프로그램의 데이터는
램에 위치합니다. 프로그래머는 xcl파일을 통해서 코드의 위치(주소)와 데이터의
위치(주소)를 링커에게 알려주고, 링커는 이에 맞게 binary image를 배치합니다.
IAR EWARM 컴파일러는 Segment라는 단위로 코드와 데이터를 배치합니다. 따라서
프로그래머는 Segment단위로 주소영역을 지정합니다.
이들 Segment중에 코드와 관련된 세그먼트는 INTVEC, ICODE, NEARFUNC_A등이 있으며
데이터와 관련된 세그먼트는 HUGE_ID,HUGE_C,HUGE_I,HUGE_Z,HEAP,CSTACK등이
있습니다.(더 자세한 사항은 IAR EWARM 관련 자료참조)
이들 세그먼트 중에서 가장 중요한 점은 코드의 시작위치와 데이터의 시작위치입니다.
코드의 시작위치가 반드시 롬/플래시 메모리의 시작위치일 필요는 없습니다.
코드의 시작위치는 롬/플래시의 중간이나 램의 중간부분 어디에 위치해도 상관없습니다.
이 코드(실행 image)를 실행하기 위해서는 단지 CPU의 PC register(Program Counter)를
이 코드의 시작위치로 세팅하기만 하면 됩니다.
데이터의 위치 역시 램의 시작위치일 필요는 없습니다. READ와 WRITE겸용 데이터(전역
번수/Stack)는 반드시 램에 위치해야 하지만, 이 역시 램의 시작위치일 필요는 없습니다.
READ전용 데이터의 위치는 램에 위치해도 되고, 롬에 위치해도 됩니다.
보통의 경우 롬에 코드와 READ전용데이터가 위치하고, 램에 READ/WRITE데이터가 위치
하지만, 램에 코드와 READ전용데이터, READ/WRITE데이터가 위치해도 상관없습니다.
IAR EWARM 컴파일러는 xcl파일을 통해서 이들 Segment의 실제 위치를 지정하고,
이렇게 해서 컴파일 된 binary image는 xcl파일을 통해서 지정된 위치에 실제로
Load되어야 올바르게 실행됩니다.
소스의 각각의 프로젝트에는 각각에 해당되는 *.xcl파일이 있습니다. 이 파일을 잘
분석하면 각각의 image의 위치를 알 수 있습니다.
그리고 최종적으로 컴파일 된 binary image의 Segment위치는 MAP파일을 통해서 알 수
있습니다.
xcl파일은 단지 범위를 지정하기만 할 뿐이고, 최종적인 결과의 위치는 MAP파일을
통해서 알 수 있습니다.
결과적으로 xcl파일이 소스와 binary image 실행번지를 연결해주는 파일입니다.
'Doc' 카테고리의 다른 글
Doc :: 집짓기 (0) | 2012.06.28 |
---|---|
Doc :: Pads 거버 만드는 법 (0) | 2012.04.17 |
Doc :: Microsim App Note (0) | 2012.03.12 |
Doc :: 개발완료 보고서 생산이관자료_예제 (0) | 2012.03.12 |
Doc :: 무선전력전송 기술개발 및 표준화 동향 보고서_2011 (0) | 2012.03.12 |