blueecho's collection

누군가에게 "당신은 무엇을 잘하십니까?"라는 질문을 들었을때 바로 대답할것을 만들어보자~!!
        
분류 전체보기 (267)
NeWs (21)
배움생활 (107)
취미생활 (118)
끄적끄적 (5)
인생설계 (12)
Wish list (4)
솔카당 영화감상 자전거 연구실생활 Fedora 연구실 생활 일본소설 사진 리눅스 지름신
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
블로그 이동하였습니다.

 

스크립트에 해당하는 글 2개
2010.07.26   링커 스크립트 
2010.04.12   모델심 기본 스크립트 

  링커 스크립트 | 2010. 7. 26. 16:53 | 배움생활/SoC   
링커스크립트 관련 박상호님께서  MPSoC스터디 모임 게시판에 올려주신 내용입니다.


토요일 스터디 모임에서 잠시나마 소개(?)를 했었던 링커 스크립트에 대해서 간략히 요약을 해 드리겠습니다.

링커 스크립트는 한마디로 말하면 object파일들의 각 영역에 대한 재정렬을 하는 스크립트라고 보시면 편하실 것입니다.


 더 자세히 공부해 보고 싶으시는 분들은 다음의 링크를 참조하시기 바랍니다. 한글 번역이 되어 있습니다. 잠시(?) 읽어보셈.. ^^;

http://korea.gnu.org/manual/release/ld/ld-mahajjh/ld_toc.html


  컴파일러가 컴파일을 하게되면 그 결과 파일이 object파일이 생긴다는 것은 잘 알고 계실것입니다.

이 각 object 파일들은 내부적인 어떤 포맷(보통 리눅스는 elf32,  윈도우는 coff 포맷을 가지고 있죠..)에 따라서

여러개의 섹션이란 녀석들을 가지고 있습니다. 대표적인 섹션이라면 코드 섹션(.text) 와 데이터 섹션(.data) 이 있습니다.


각 섹션들은 새롭게 빌드 과정에서 만들어 질수도 있고, 포맷별로 다른 이름을 가지고 있는 경우도 있죠. 컴파일러가

object파일을 만들면서 잘 분류를 해놓아서, 각 섹션에 차곡차곡 그 정보가 쌓여있게 되지요.


이후에 링커가 이들을 가지고 실행파일을 만드는 것을 이미 알고들 있으실터...


  일반적으로 링커는 내부정의된 링커 스크립트를 가지고 있고(default linker script), 이번에 봤던 임의의 스크립트를 연결해서 쓰는

경우도 있죠. 이 스크립트에 의해서 각 섹션을 다시 재 정렬 하는 녀석이 링커가 하는 역할이다라고 보시면 됩니다. 스크립트에 의해 마음대로 위치를 떡 주무르듯 할수가 있는 것이지요.


예를 들어보면, a.o에 (.text, .data)가 있고, b.o에 (.text, .data, .idata)가 있다고 하죠.

스크립트를 다음처럼 구성하면...
section {
 .text : { a.o(.text) } // a.o에서 .text 영역만을 .text 영역으로 구성하라!!
 .data : { *(.data) } // 모든 입력 파일에서의 .data 영역들을 가지고 .data 영역으로 구성하라!!
}

a.o에서 .text영역을 앞에두고, 모든 .data영역을 가지고 있는 입력 파일에서
차례대로 .data 영역을 읽어와 재구성을 하게 됩니다. 그 구성의 내용은

//////////////////////////////
//         a.o(.text)        //
//////////////////////////////
//         a.o(.data)        //
//         b.o(.data)        //
//////////////////////////////

가 되겠습니다. 여기서는 b.o의 .text 영역과 .idata여역은 스크립트에는 정의되지 않았기 때문에
최종 출력파일에는 b.o의 코드 영역은 들어갈수가 없습니다. 예로든 스크립트에
의해서 재정렬을 해보았지만, 결과 파일은 별 의미가 없는것 같군요.. ㅡㅡ;


한페이지 정도로 어떤 역할을 하는지 이해가 가셨으면 이번 글은 성공입니다.. ㅋㅋ

링커 스크립트에는 알수없는 외계(?)문자들이 많이 있으니 각 옵션을 알고 싶으신분은 위쪽 링크를 따라가셈...

'배움생활 > SoC' 카테고리의 다른 글

유지보수가 어렵게 코딩하는 방법  (0) 2011.12.16
C언어 매크로에서의 팁  (0) 2010.08.09
verilog 2001에서 배럴쉬프터 짜기....  (0) 2010.07.09
infer_mux 지정자  (0) 2010.07.06
H.264의 대항마가 나오네요....  (0) 2010.05.24


  모델심 기본 스크립트 | 2010. 4. 12. 11:54 | 배움생활/SoC   
개인적으로 나를 평가하자면 좀(?) 멍청한 편이다.
편해지는 방법이 있음에도 잘 사용하지 않는 때가 많기도 하고 게다가 배치파일이나 스크립트 짜는 것을 별로 중요하게 여기지 않는 경향이 많다.
키본적으로 키보드를 치는게 왠지 일하는 것 처럼 보여서일까? -_-;;
하여간, 스터디에서 만나뵈었던 상철님의 블로그(http://myskan.tistory.com/2)에서 modelsim에 대한 스크립트에 대한 친절한 안내가 있어서 트랙백으로 넣어봅니다. (링크 참고해주세요.)
VHDL사용자분들은 vlog를 vcom으로 바꿔주시면 되고, 각 명령어에 대해서 궁금하시다면 Model.com에 들어가셔서 quick guide를 보시면 편할 것 같습니다.

기본적으로 많이 사용하는 명령어이고 do 스크립트를 이용해서 실행시킬수 있으니 초보 HDL 프로그래머님들과 연구실원들은 좀 봐줬으면 좋겠습니다. (콘솔이 편하다니까... -_-;)

예전에 만들었던 스크립트에는 각 파형의 색 지정 및 디바이더 virtual signal로 매핑같은 방법도 있었는데 연구실에서의 첫 하드 날림에서 손실되었다. ㅠㅠ
정말 정성들여서 조작한거였는데... 큭 그 이후로 몇년간 스크립트를 안 짜거나 대충 짰던거 같은... ㅠㅠ (연구실에서 하드날림 2번 있었습니다. 한번은 그동안 찍었던 사진들이 몽땅.. ㅠㅠ)

항상 다른 분들의 블로그들에서 느끼는 점이지만 기술을 나누려고 많이 하시는데 뭔가 나눠줄 수 있는 제가 되었으면 좋겠습니다. (.... 결국은 일기냐? -_-;;)


#1
 
     
- Home
- Guestbook
- Manage - Location
- Tag - Post