임베디드 소프트웨어를 공부하려면 어떻게 시작하면 좋을까요? > 진학/학업

본문 바로가기

임베디드 소프트웨어를 공부하려면 어떻게 시작하면 좋을까요?

페이지 정보

돼지털유목민 작성일2007-09-16 19:38

본문

정확히 진학에 관계된 질문은 아닙니다만..

이 게시판이 그래도 비슷한것 같아서요..

흔히들 임베디드, 임베디드 많이 그러는데, 제대로 공부해 보려면 어디서 부터 시작을 해야 하나요? 딱 무슨 해야할 관련 프로젝트가 있거나 그런건 아닙니다. 그냥 공부해 두고 싶어서요.

제가 윈도우 어플리케이션만 만들어 봤지 리눅스쪽은 거의 잼병이라.. 전공도 전산인데, 회로이론같은 전자과 과목은 무시하고 살았습니다.. 임베디드 소프트웨어도 같은 프로그래밍인데 하면 되겠지 싶다가도 아무것도 모르고 하면 될까 싶기도 하고 그러네요..

리눅스 깔고 바로 커널 소스를 보는건지, 아니면 기본적으로 봐둬야 할 책들이 있는건지.. 어떻게 시작하면 좋을까요?

댓글 11

sonyi님의 댓글

sonyi

  임베디드 = 리눅스? 아니죠~~
리눅스는 임베디드에 포팅이 "가능한" OS일 뿐이라는 생각인데요..
PDA를 예를 들어도.. 리눅스말고도 여러가지 OS가 있고.. 좀 더 밑으로 가보면.. DSP, AVR등의 마이컴 등등.. 여러가지 종류가 있는데요..

KJS님의 댓글

KJS

  전산전공이시면 하드웨어 자세히 하시는거보다...일단 임베디드 환경에서 어플리케션 개발하는거 해보시면 괜찮을꺼 같아요. 회사에서도 하드웨어/소프트웨어 구분되어 있는거 같은데....그러다 어느정도 이해가 생기면 하드웨어쪽도 공부하시구요..

바닐라아이스크림님의 댓글

바닐라아이스크림

  저는 임베디드 분야에서 일하는 개발자는 아닙니다.
관심이 많아서 일부러 사비들여서 교육은 받아본 적도 있지만, 실무 경험은 전혀없습니다.

일단, 논리회로에 대한 기본지식은 확실하게 갖추셔야 됩니다.
그리고 논리회로부터 거론되서 컴퓨터구조, 마이크로프로세서까지 나오는 클럭표에 대한 이해를 확실히 하셔야 합니다.
모르면 교수님 찾아가서 이해될 때까지 물어보셔야 됩니다.

일단, 추상적인 O/S의 구조보다 CPU와 Memory, I/O 사이의 데이터가 클럭주파수에 따라 어떻게 움직이는지 확실하게 이해하세요.
어셈블리 명령어에 대한 클럭표가 이해될 정도 되면 O/S 공부를 하셔도 좋습니다.
이 정도 기본기 갖추시면 ARM이든 뭐든 두려울 것이 없을 겁니다.
DPS 쪽은 조금 논외이지만, 학부 과정 중에 쌓을 수 있는 가장 중요한 기본기이자 최강의 무기가 아닐까 합니다.

솔직히 윈도우 프로그래밍보다 임베디드쪽의 로우레벨 개발이 훨씬 재밌게 느껴지네요.
윈도우 프로그래밍을 하게 되면 항상 "고객의 니즈~"를 신경써야 되니 항상 배가 산으로 갑니다. - -;

sonyi님의 댓글

sonyi

  바닐라아이스크림님의 말대로.. 임베디드는 하드웨어를 잘 알아야 하고, 적어도 "어느정도"는 알아야 합니다. 제 생각에는 직접 보드도 만들어보고(납땜질을 말하는 거죠..) 신호연결해서 실험도 해보고.. 그렇게 실무경험을 많이 해봐야 소프트웨어도 제대로 짤 수 있다고 생각됩니다. 돼지털님의 쓰신 글의 뉘앙스로 봐서는 리눅스를 임베디드 시스템의 전부로 오인하고 계신 것 같습니다. 질문을 바꿔주세요.. 그러면 좀 더 분명해질 것 같습니다.

빨간거미님의 댓글

빨간거미

  전산이 전공이시면, 아무래도 리눅스 쪽부터 하는것이 접근하긴 편하겠지요.
그런데, 관련된 경험을 쌓으시려면, 어째든 실제 코드를 심을 대상이 필요할텐데, 개인적으로 그런 대상을 구하는건 쉽지 않겠네요.

혹시 다니시는 학교에 임베디드 프로그래밍 훈련을 위한 툴킷이 있는지 알아보시고, 그걸 이용해보시는 방향을 추천합니다.

임베디드 프로그램이라고 해도 그 레벨이 원채 다양하다보니, 하드웨어를 잘 알아야 가능한 것 부터, 적당히 알면 되는 것까지 있다고 생각하시면 됩니다.

sonyi님의 댓글

sonyi

  ARM계열에 임베디드 리눅스로 구성된 툴킷 같은 게 있을 거 같습니다. 윈도우 프로그래밍을 하시던분이 갑자기 AVR같은 8비트 프로그래밍을 하시려면 답답하실거 같고.. ARM+임베디드 리눅스 정도의 시스템을 공부해보심이..

gobow님의 댓글

gobow

  ARM보드에 리눅스 포팅해본 적 있고, SROS용 이더넷 드라이버 만들어 본 적은 있습니다. 이x텔이라고 제법 큰 중소기업으로 외주가서 OS포팅이랑 그외 트러블슈팅하는 팀에서 일한 적이 있는데.. 임베디드쪽은 재미는 있지만 빡세요. 하드웨어팀이랑 같이 일해야 해서 짜증나는 일도 많습니다. 그쪽도 아마 소프트팀에게 짜증날테고 ㅎ. 리눅스 커널 뜯어보는 건 의미가 없을 것 같구요(저도 해봤는데) 그보다는 vi, ctags 쓰는 방법 공부해두는 게 좋을 것 같습니다. 그리고 크로스컴파일러 세팅할 줄 아는 게 편할 것 같고.. 시중에 ARM이나 그외 보드를 팔고 있는 것 같던데 하나 사시던가 구하셔서 리눅스 포팅하고 이것저것 디바이스 인식되고 작동하게 잡아 보세요. 그정도면 뭐 아마 엄청 좋아들 할 겁니다. 그게 되면 그 담에 리눅스 소스에 직접 손대서 라우터로 만들어보거나.. 프로토콜 스택을 하나 만들어 보시거나.. 이쯤되면 이제 몸값이 많이 올라가 있겠죠.

돼지털유목민님의 댓글

돼지털유목민

  많은 답변들 정말 감사합니다.. 사실 석사때 까지 계속 소프트웨어만 전공하다가 막상 취업 준비를 하는데 삼성이나 엘쥐나 대부분 기업에서 소프트웨어 전공자에게 요구하는게 임베디드 소프트웨어 개발이니까..
좀 걱정도 되고 해서 미리 공부를 하려고 했는데 지금까지 말씀들을 종합해 보니 하드웨어도 알아야 되고 회로이론같은것도 알아야 되네요..
이제 곧 졸업인라 논문 막판 작업 중인데 그냥 기본기만 다진다는 생각으로 이런 내용들을 책 보고 혼자 공부할 수는 있을까요?
현재로선 시중에 있는 '임베디드 프로그래밍 시작하기' 류의 책을 볼까 생각중입니다..

돼지털유목민님의 댓글

돼지털유목민

  지금까지의 내용들이 회사 가서 닥치면 하게 되는 레벨인지.. 이쪽 전공자들 따라가기엔 벅찬 부분이 많은지.. 어떤가요?

sonyi님의 댓글

sonyi

  핸드폰 소프트웨어 개발이면 뭐 gobow님이 권해주신 정도해보면 될거 같습니다. 저희도 하나 사둔게 있고.. 그때 보니까.. xscale 등등 해서 CE나 리눅스로 나온 제품(툴킷)이 있었는데.. 교육도 있었던 듯 하고.. 상자에 잘 패키징 되어서 여러가지 IO를 연결하기가 쉽게 되어 있었기 때문에 그런 것을 한번 해보는게 도움될거 같네요.. 저희는 그보다는 좀 더 로레벨의 일들을 하는 팀이 바로 옆에 있는데.. 주로 마이컴과 DSP를 쓰죠. 그쪽은 하드웨어를 모르면 제어나 interface가 도저히 될 수가 없습니다.

바닐라아이스크림님의 댓글

바닐라아이스크림

  돼지털유목민// 석사생이셨군요.
시간이 촉박한 경우에 혼자서 다 할 수는 없습니다.
이런 경우 임베디드에 관련된 전반적인 지식은 교육을 받아서 필요한 것만 잘 아는 사람으로부터 배우면 됩니다.
단, 돈이 들겠죠.

진학/학업

SLIDE UP

모바일에서는 읽기만 가능합니다.
PC 버전 보기
© 2002 - 2015 scieng.net