안녕하세요.
임베디드라는게 뭔지도 잘모르고 회사에 취직했는데요.
첫 프로젝트로 tcp/ip 스택을 올리는 일을 맡았어요.
처음에는 프로토콜은 구현이라 가볍게 생각하고 접어들었는데 점점 시간이 가면서 막연해지기 시작합니다.
우선 개발을 window에서 할지 linux에서 할지 갈피를 잡을수 없어요.
이전에 자체로 개발한(누군가가 만든) 플랫폼에 tcp/ip 스택을 올려야 합니다.
그런데 개발은 windows에서 하고 ADS를 설치하고 컴파일도 윈도우에서 합니다.
개발보드는 PXA255라고 휴인스사에서 제공하는 것을 쓰랍니다.
보드에 따라오는 소프트웨어(커널, 툴체인, 부트로더)는 전부 리눅스용입니다.
그래서 생각한것이 부트로드는 blob(제공됨)을 그대로 쓰고 커널만 윈도우에서 컴파일하고 다운시키고
개발할려고 합니다.
플랫폼은 하는수 없이 보드에 맞게 뜯어고친다치고 컴파일을 GCC로 해야 하는지 ADS로 해도 다른일이 없겠는지 모르겠습니다.
부트로더와 커널의 컴파일러가 달라도 동작에 이상이 없겠는지 전혀 방도가 서질 않습니다.
현재는 부트로더는 하나도 수정안하고 커널만 윈도우에서 컴파일하고 그냥 리눅스에 가져가 포팅합니다.
너무 공정이 복잡하고 지겹기 그지없습니다.
과연 프로젝트를 해내겠는지 걱정만 앞서는군요.
경험많으신 분들의 조언을 바랍니다.
임베디드라는게 뭔지도 잘모르고 회사에 취직했는데요.
첫 프로젝트로 tcp/ip 스택을 올리는 일을 맡았어요.
처음에는 프로토콜은 구현이라 가볍게 생각하고 접어들었는데 점점 시간이 가면서 막연해지기 시작합니다.
우선 개발을 window에서 할지 linux에서 할지 갈피를 잡을수 없어요.
이전에 자체로 개발한(누군가가 만든) 플랫폼에 tcp/ip 스택을 올려야 합니다.
그런데 개발은 windows에서 하고 ADS를 설치하고 컴파일도 윈도우에서 합니다.
개발보드는 PXA255라고 휴인스사에서 제공하는 것을 쓰랍니다.
보드에 따라오는 소프트웨어(커널, 툴체인, 부트로더)는 전부 리눅스용입니다.
그래서 생각한것이 부트로드는 blob(제공됨)을 그대로 쓰고 커널만 윈도우에서 컴파일하고 다운시키고
개발할려고 합니다.
플랫폼은 하는수 없이 보드에 맞게 뜯어고친다치고 컴파일을 GCC로 해야 하는지 ADS로 해도 다른일이 없겠는지 모르겠습니다.
부트로더와 커널의 컴파일러가 달라도 동작에 이상이 없겠는지 전혀 방도가 서질 않습니다.
현재는 부트로더는 하나도 수정안하고 커널만 윈도우에서 컴파일하고 그냥 리눅스에 가져가 포팅합니다.
너무 공정이 복잡하고 지겹기 그지없습니다.
과연 프로젝트를 해내겠는지 걱정만 앞서는군요.
경험많으신 분들의 조언을 바랍니다.
댓글 2
-
백창우
2008.12.06 01:58
-
허경탁
2008.12.07 23:31
ADS와 GCC로 통합개발하는 것은 쉽지 않습니다.
ADS가 기본적으로 GCC와 호환이 안 되어서 GCC에서 ADS를 지원하도록 해서 컴파일하는 것이 가능한지 모르겠네요.
ADS의 후속 버전인 RVCT 3.0이상 부터는 GCC와 호환해서 사용하는 것이 가능합니다. ARM 사에 가시면 GCC와 크로스 컴파일하거나 크로스 링킹하는 방법에 대해서 나와 있습니다.
TCP/IP 스택이시면, 범용적으로 사용하는 프로토콜이라서 어떤 컴파일러를 쓰셔도 상관이 없습니다. 개발하실 플랫폼을 먼저 정하는 것이 나을 듯 싶네요...
.
되도록 개발 환경을 맞추라고 말씀드리고 싶네요. ADS 역시 ELF를 사용하기 때문에 플랫폼 라이브러리와 tcp/ip 스택이 링킹은 가능하지만 미묘한 문제가 있습니다.
링킹하는데 동작을 하지 않는다던지 ABI 때문에 나누기 연산에 대한 라이브러리 함수를 못찾는다던지, 링킹 순서에 따라 링킹이 될수도 안될수도 있는 다던지 하는것과 같은 여러가지 문제가 발생할수 있습니다.
그리고 하나의 플랫폼에 서로 다른 개발 환경이 있다면 개발뿐만 아니라 나중에 사용하는데도 사용이 불편한 문제가 있습니다.
그렇지만 ADS/GCC 통합 개발이 불가능한건 아니랍니다. :) 잘 알면 쉽게 할수 있는데 그렇지 않으면 사소한것들에 대해서 고생을 많이 할수 있습니다.