embedded tcp/ip stack 개발하랍니다. ㅜㅜ 조언좀 주세요
글쓴이: jamongx / 작성시간: 토, 2007/11/17 - 9:40오후
이런글을 올려도 될지 모르겠습니다만..
솔라이스에서 gcc사용해서 프로그래밍 경력은 4~5년 정도 됩니다.
서버프로그래밍을 한거죠 인터페이스 프로세스 만들고
스트리밍 서버도 만들고 그랬습니다. 쓰레드 프로그래밍 할 줄 알고요
근데 제가 이번에 새로운 프로젝트를 하게 될것 같습니다.
전혀 생뚱맞은(경험이 없는) embedded 프로그래밍이고
스마트 카드에 탑재될
tcp/ip 스택을 만들라고 하는데요(개발자 팔자가 그렇죠 ^^; 뭐)
처음에는 그냥 소켓 사용해서
open bind listen accept close하는건가 했는데
인터넷에서 대충 자료를 찾아보니
아닌거 같더라구요 ㅋㅋ(무식이 탄로가 ㅜㅜ)
주위에 관련경력이 있으신분과 개발하는것도 아니고
내년 4월까지 개발해야 된다고 해서 무척 겁이 많이 납니다.
빡세게 몇달 닭질하다가 말아먹는거 아닌가 싶기도하고
이러다가 경력꼬이는거 아닌가 싶기도 하고
(물론 어떤 개발만 딱 고집하려는건 아닙니다.
고생하기 싫은거죠 솔직히 ^^)
혹시라도 경험이 있으신분은
어느 정도 규모이고 어떤 식으로 개발을 하게 될지
아니면 어떤 공부를 해야되는지
조언 주시면 감사하겠습니다.
수고하십시요
Forums:
말씀하신 대로
말씀하신 대로 open/bind/listen/accept/close 등의 함수에 read/write 등을 추가해주면 될 겁니다. 겉모양만 보면 그렇죠.
다만, TCP/IP 스택이라고 명시된 것을 보아하니, IP 스택과 TCP 스택을 따로 구현하고 그 위에 socket API를 얹는 형태가 되어야겠네요. TCP 스택에는 flow control과 congestion control을 구현해야 할 거구요. IP 스택에는 addressing/routing과 fragmentation/reassembly 기능을 구현해야 할 겁니다. 그 하위 layer가 어떤 것이냐에 따라 또 맞춰주는 작업도 필요할텐데, 스마트카드는 잘 모르겠지만 만약 Ethernet이라면 ARP도 구현해줘야 할 겁니다. SLIP을 이용하는 경우라면 RFC1055에 따라 TCP/IP를 그 위에 얹어야 할 겁니다.
TCP/IP Illustrated vol. 2를 참고하시면 BSD의 TCP/IP 스택이 어떻게 구현되어있는지 코드 수준으로 확인하실 수 있습니다. TCP를 일반 서버나 PC 수준으로 구현하게 되면 그 범위가 어마어마하니 스마트카드라면 적당히 추려서 개발해야겠죠.
내년
내년 4월이라...
경험이 있으면 필수 기능만 들어 있는 TCP/IP stack 같은 경우에는 2~3개월이면 충분히 개발합니다.
이건 경험이 있을때 이야기이고, 경험이 없다면 어떻게 될지 모르겠네요.
개발 방식은 이렇습니다.
일단 먼저 설계를 해야됩니다. 안하면 나중에 대략 낭패인 경우를 만나기 쉽습니다.
TCP/IP Illustrated vol. 2 내용을 참고해서 어떤 기능이 있는데 어디까지 구현할지 결정하시고,
결정된 범위 내에서 설계하면 됩니다.
실제 구현할때는 pc 상에서 하기를 원한다면 raw socket 등을 이용해서 구현하시고,
ethereal과 같은 프로그램으로 packet dump를 떠보면 됩니다.
기능 구현이 끝나면 raw socket 부분을 걷어내시고 실제 개발 보드에서 테스트 해보면 됩니다.
개발 보드 상에서 테스트 할때는 개발 보드의 이더넷 칩의 디바이스 드라이브를 먼저 만드시고,
이미지를 개발 보드에 올리고 pc와 개발 보드를 이더넷으로 연결해서
pc에서 ethereal과 같은 프로그램으로 개발 보드에서 보내는 packet를 받아 dump 해보면 됩니다.
겁낼 필요 없이, 작은것 부터 순차적으로 해보시면 될듯하네요.
packet을 만들어 send/receive하는것 부터 간단히 해보시고, 그럴려면 3way handshaking부터 되어야 겠죠.
차근차근 한가지씩 연습해보시면 자신감이 생길겁니다.
할게 산더미 처럼 많아서 그렇지 실제로 해보면 그다지 어렵지는 않은 작업입니다.
lwIP를 참고하시면 도움이 되실겁니다.
A Lightweight TCP/IP stack
http://savannah.nongnu.org/projects/lwip/
조언주셔서 감사합니다.
관련자료 더 찾아보겠습니다. ^^;
그럼 수고하십시요
용모수려 재색겸비