회원 및 비회원 모두 열람이 가능합니다. 최대 업로드 가능한 용량은 20MB 입니다.

안녕하세요.

고도리입니다.

작년서부터 먹고사는데 바빠서, 동호회에 신경을 많이 쓰지 못했습니다.
이래저래....^^

대신 김재훈님이 많이 활동을 해주셔서 그것으로 동호회가 거의 유지 되는 듯 하네요(감사....)


근래 들어서 각 카페 혹은 동호회에서 s3c6410 보드들이 많이 공구 혹은 공제가 이루어 지고 있고,
Android다 머다 해서 다양한 이슈가 나오는 듯 합니다.

이런것을 보면서 몇가지 생각 나는게 있어 글을 적어봅니다.
간단한 임베디드 리눅스에 대한 접근법 정도라고 보시면 됩니다.

일단 저는 실무자의 입장에서 쓴다고 보시면 됩니다.


0. 임베디드는 여러파트로 나뉘어진다고 봅니다.

- high level OS(Linux, WinCE 등과 같은)를 쓸 경우는 다음과 같이 대략 볼 수 있습니다.

1> Hardware 설계
2> Artwork
3> Firmware - Bootloader까지(ex> u-boot)
4> OS - device driver 포함
5> Middle ware - ex> 동영상 코덱, OpenGL
6> Application


1. 임베디드를 처음하시는 분들께

임베디드를 공부를 하거나 접근하는 방법은 대체적으로 두가지로 볼 수가 있습니다.

- Hardware를 하다가 올라오는 분들
- application을 하다가 밑단으로 내려가시는 분들

둘 다 일 혹은 공부를 하다보면 갑갑해서 다른 파트를 공부하는 쪽입니다.


저는 개인적으로 후자에 속합니다.
서로 장단점이 있지만, aesop의 경우는 아마도 전자에 치우친 감이 좀 많아 보입니다.

즉, 위의 임베디드 파트에서 보면 1> ~ 4>까지 공부하시는 분들이 많다는 얘기가 되겠네요.



2. 그럼 처음하시는 분들은 어떤 부분부터 접근하는게 나을까?

예를 들어 대학생 분들이라고 생각했을 때
0번의 파트 분류에서 어느부분이 가장 나을거라고 보여지는지 함 생각해 보시기 바랍니다.

1> hardware 설계 - 직접 제작이 힘들기 때문에 분석정도가 한계
2> 이 부분은 아주 전문적인 분야라 실제로 하기도 힘듭니다. 1>의 경우와 유사한 한계성

==> 즉, Hardware는 돈이 많이 듭니다. 기본적으로 보드 한번 뜨는데 몇천은 홀라당이죠...^^


3> Firmware(혹은 bootloader) - Evaluation board를 가지고 공부가 가능합니다.

software를 board에 writing하려면 JTAG등의 장비가 필요합니다.

여기서의 문제점....

- JTAG 디버거의 경우 대부분 고가이다.
- 저가 JTAG 동글이 있기는 하지만, 엄청 느린 경우가 많고, 요즘같이 복잡한 CPU는 적용하기 힘든경우도 있다.

대략 u-boot 한번 write하려면 15분 이상 걸립니다.
공부하거나 개발하기 아주 골치아픈 상황이 되는 것이죠.


==> 공부방법
잘되어 있는 evaluation보드의 경우는 대부분 ethernet으로 write를 할 수 있습니다. flow를 쫓아다니면서
print문으로 확인이 가능합니다. 물론 asm routine은 제외지만요(방법은 있습니다만).

이 정도까지만 해도 굉장한 고수(?)에 가깝다고 봅니다. 밥먹고 이것만 하시는 분들과 공부하시는 분들을
동급으로 생각치 않으시겠죠?ㅎ


===================================================================================================
※ 참고할 부분 - 특히 처음 시작하시는 분들께
JTAG을 이용하면 write를 할 수 있다고 보지만, JTAG자체를 공부할 필요가 있을까요?
특히 실무에서는 돈이면 해결이 가능한 부분입니다. 시간대비 돈으로 환산했을때 어느게 나을까요?

==> 대부분 JTAG이 엄청난 비급처럼 생각하시는데, 실무에서는 그냥 writing하는 장비정도로 취급하는 경우도
많습니다. 핸드폰쪽에서는 Trace-32 혹은 OpenICE같은 비싼 장비를 쓰기 때문에 필요도 없고요.
가끔 이부분을 심하게 강조하시는 분들이 있는데,

그 말도 맞습니다. 기초가 중요하지요

하지만 모든 사람이 JTAG을 공부할 필요는 없다고 보여집니다. 그냥 개념정도만 아시고
실제 일이 주어진다면 그때 해도 늦지는 않습니다.
 
대학생분들이나 지금 공부하시는 분들은 회사가서 보시면 대부분 writing장비로 사용을 하거나
진짜 비싼 장비가 지급이 됩니다. 즉, 사용법 공부도 힘든 장비가 지급됩니다.
저도 OpenICE A-1000 쓰는데 쓸때마다 김재훈님께 SOS를 칩니다.

궂이 Boundary Scan 방식의 JTAG(두가지 모드가 있는데  Boundary Scan방식과 Debug mode방식이 있습니다)
을 공부해야하는지 의문이 듭니다.

제 개인적으로는 이거 할 시간에 다른데 더 투자하시는게훨 낫다고 보여집니다.
====================================================================================================




3. OS 및 Device Driver

이것은 os에 따라 많이 틀린 부분입니다.
어떤 OS을 쓸지 결정을 하는게 가장 중요하지요.

순수 OS공부 목적이라면 RTOS정도를 공부하는게 좋을테고요.
좀 더 실무나 현업에서 적용을 한다고 하면 Linux/WinCE쪽을 공부하시는게 좋을거라고 보여집니다.

이쪽 부분은 이해하기가 난해한 구석도 많고, 실제로 안쓰이는 부분이 많습니다(OS쪽 내용은)
개인적으로는 Device Driver의 구조를 먼저 익히시고, OS쪽 내용을 보시는게 낫다고 보여집니다.

====================================================================================================
※ 참고할 부분 - 특히 처음 시작하시는 분들께

OS에 대한 일반론 정도(대략 100page정도쯤 되는)를 읽으신 후에 Device Driver쪽을 보시기 바라고요.
Device Driver도 쓰지 않는 부분은 제외하시고 공부하시기 바랍니다.

예전에 모임할때도 많이 느낀것이지만, 대부분 공부하시는 분들이 OS밑단을 공부하시는것을 더 좋아하는
분들이 있습니다. 많이 공부하는 것 좋습니다.

가장 기초가 되는 부분이니깐요.

하지만.........예를들어 국내에 Linux 커널 메인테이너가 몇이나 될까요?
WinCE OS engineer가 몇명이나 될까요?

즉, Linux의 경우는 해외주도입니다. 국내서 아무리 잘해도 하라는대로 해야하는게 맞습니다....쩝

실무를 하시는 입장에서 OS까지 내려가는게 어디까지 도움이 될지는 장담하지 못합니다.
Device Driver의 경우는 잘 아는게 중요하지만, 실제로는 Device Driver를 커널에 붙이는게 대부분의 일입니다.

이것은 공식대로 하시면 됩니다.
가끔 비공식인 녀석들이 있지만, 이것은 공식적인 녀석들을 열심히 공부하다보면 알 수 있습니다.

무슨 여기에도 비급이 있는 것처럼 얘기하는 사람들이 있는데==> 없습니다.(커널 소스에 다 있습니다)

실무에서 쓰이는 Device Driver의 List도 제대로 못하는 경우가 많고, 책에도 실무 device driver는 언급도
안되어 있습니다.

간단히 예를 들어

Linux에서 일반적으로 얘기하는 device driver는 다음과 같습니다.

- character
- block
- network

여기서 실무에서는 character만 씁니다. 나머지 두개는 어렵기도 하고, 작성할일이 거의 없을겁니다.

하지만, 실무에서는 위의 분류에 해당하지(?) 않는

- MTD(nand/nor flash)
- Framebuffer(LCD)
- OSS/ALSA(sound driver)
- 그 외 동영상 codec용 hw 가속기 드라이버
- Harddisk driver
- Event driver(key/touch등)

이런게 사용이 됩니다.

이런것을 공부하라고 하는게 나은데,

이상한 것을 설명하고, 공부하라고 얘기하는데가 있더군요(ex> 커널 모듈이 등록되는 방법?)
이게 무슨 소용이 있는지....작성하는 방법이 더 중요하지 등록되는게 더 중요한지 의문이 드는 경우가 많습니다.
(주객이 전도된 듯한....뭐 알면 좋죠...ㅎ)

제 개인적으로는 잘되어 있는 코드를 동작시켜 보면서 printk로 찍으면서 분석하는게 가장 낫습니다
구조분석도요.
=====================================================================================================




4. Middleware

제가 linux 코덱쪽으로 많이 하는 통에 그쪽으로 간단히 얘기하겠습니다.

미들웨어가 실무에서는 제일 중요하다고 봅니다.
밑단(OS/Driver)는 기본으로 되어 있다고 가정을 하고 실무에서는 적용이 됩니다.

기업다니시는 분들은 아시겠지만, 칩벤더를 잘 선정하면 밑단은 거의 해결이 되는 경우가 많습니다.
물론 미들웨어도 마찬가지기는 하지만요.

하지만, middleware의 경우는 칩벤더에서 주는 것을 가지고 Application을 잘 작성하기 위한 툴입니다.
이게 사용법이 만만찮다는데 그 어려움이 있습니다.


즉, 실무에서는 H264 codec공부도 중요하지만(확실히 중요합니다), 이것을 os의 device driver구조위에
올라간 middle ware랑 붙이는 부분이 더 중요합니다.


근래 고생한일 -----------------------------------------------------------------------------------------
예를 들어 근래 s3c6410에 mplayer를 붙이는데 몇일 고생했습니다.
왜냐하면 어떤 데이터를 넣어야 동작이 되는지 메뉴얼에 한줄도 안나와 있더군요.

솔직히 속으로 ==> 장x하냐? 였습니다.

영상 sample도 주지않고, 메뉴얼에도 없고, 결국은 동작 application을 다 분석해야한다고 얘기하는거랑
같다는 얘기입니다.

고생해보라는 얘긴지 원......ㅎ

이런 경우는 좀 드뭅니다...국내는 이런경우가 종종 있습니다.
-------------------------------------------------------------------------------------------------------


그래서 저는 미들웨어 프레임워크를 공부하라고 얘기하고, 각종 코덱을 단위적으로 동작시킬 수 있는 부분을
공부하라고 추천합니다.

미들웨어에는 두종류 접근 방법이 있는데...

1> 코덱 자체에 대한 공부
2> 있는 코덱을 이용하도록 하는 것

저는 2>도 힘들어 하는데, 대부분은 1>을 열심히 파더군요...
(실제로 Audio/Video Synchronization에 대해서 설명한 자료는 하나도 없고, 엄청 어렵습니다....ㅎㅎ)


====================================================================================================
※ 참고할 부분 - 특히 처음 시작하시는 분들께

위에서 언급한 코덱관련 기술 중 코덱 자체에 대한 공부를 하는것은 의미가 많이 반감이 됩니다.
특히 실무를 하는 입장(코덱 회사가 아닐 경우)에서는 코덱 자체의 기술보다는 사용법에 더 중심을 두는
경우가 많습니다.

왜냐하면 코덱 자체에 대한 자료는 spec에 있으니 공부할만하지만, 그것을 구현한 소스에 대한 사용법을
친절히 설명해 주는 부분은 거의 없습니다.

예를 들어 ffmpeg의 libavcodec을 써서 avi에서 동영상을 추출해서 동작시키는 법에 대해서 아는 분들은
은근히 많이 없습니다. 그만큼 이 자체로도 복잡한 일입니다.

그런데, 코덱 spec을 보면서 공부한다는 자체는 학술적인 목적이면 모르겠지만, 실무를 하시는 분 입장에서는
의미가 좀 퇴색한다고 생각이 됩니다.

저도 동영상 코덱 전공인 사람이지만, ㅎㅎㅎ

내부까지 다 짜본 경우는 학교때 외엔 거의 없고, 작성을 하고서도 속도가 안나와서 좌절한 경험이 많습니다.
지금은 훨 잘하겠지만, ffmpeg의 libavcodec만큼 잘 작성할 자신은 없더군요.

==> 제대로 공부를 하시려면 접근 방법을 잘 찾아서 해야한다는 얘기입니다. 코덱을 공부하고자 하면
코덱 동작시키는 환경을 놓고서 app서 밑으로 내려가시는게 좋은 방법입니다.

참, 코덱은 책들이 많이 있으니 그것을 참조하시고요..
==================================================================================================




5. Application


요즘 추세가 Cross Platform입니다.

즉, 하나의 platform에서 작성을 하면 소스를 안 고치고 다른 플랫폼에서 동작이 되도록 하는게 추세입니다.
이런 부분들을 잘 알아보시고 공부를 하시는게 나중에 훨 도움이 될겁니다.

ex> wxWidget, SDL, QT, Android의 JAVA와 같은
이 부분은 워낙 case by case라 제가 더 이상 얘기하는것은 힘들 듯 하고요.


대신 많은 소스를 직접 작성해보고, 분석해 봐야합니다. 그래야 늘지요...^^

예를 들어 mplayer같은 프로그램은 엄청 크기도 크고, Device Driver랑도 관련이 깊고
middleware랑도 관련이 깊은 녀석이라 분석하기도 힘들지만, 분석이 되면 엄청 좋은 녀석입니다.


6. 임베디드 리눅스 공부하는 것과 여러가지에 대해서는 밑의 글에 대충 써 놓았습니다.

http://www.aesop.or.kr/?mid=board_notice&search_target=title_content&search_keyword=io860&document_srl=2522&listStyle=&cpage=

이 글을 보시면 대충 어떤 방식으로 접근을 해 나가야 할지에 대해서 써 놓았습니다.
아주 예전글이기는 하지만요.




7. 글을 대충 쓰고나서...

이런 글을 근래는 그다지 쓰고 싶지 않아서 쓰지 않습니다만, 위의 글도 자다깨서 고향서 할일없을때 쓴겁니다.ㅎ
제가 남한테 이래라 저래라 할만한 수준도 안되고, 남한테 안 좋은 소리도 들을 수도 있고요...

하지만, 요즘 임베디드를 공부하시는 분들이 또 갑자기 늘어난 듯 하고, 리눅스의 변화도 심해지고
임베디드쪽의 칩시장도 이래저래 많이 바뀐 듯 합니다.

이 시점에서 어떻게 접근을 해야할지 헤매다가 이상한 길로 빠져서 시간만 낭비하는 경우가 있을까 싶어서
간단하게 저의 관점에서 글을 함 써 봤습니다.


정답이 아니고, 틀린 얘기도 있겠지만, 너무 머라 그러지 마시고요....^^


참, 마지막으로요....단기간내에 고수가 되기는 힘듭니다. 길게 보시기 바랍니다.
천천히 한계단씩요....(저도 계속 계단에서 기어올라가는 중입니다....)

그럼....

황순일

2009.04.20 18:37:30
*.52.32.18

좋은 글 잘 읽었습니다. 항상 공부는 하고 싶은 분야였지만... 어떻게 접근할지 몰라서 아직도 헤매고 있네요~^^

성인제

2009.04.20 18:44:35
*.83.228.60

좋은 글 잘 읽었습니다.

이쪽에서 일하면서 늘  업무 외에  이쪽 방면의 배울꺼 투성이라는 막연함에  답답했는대

고도리 님 글일고 힘이 되내요! ^^  

감사합니다!!!

이정화

2009.04.20 20:03:43
*.194.129.38

정말 감사합니다.

초보한테는 너무 도움이 되네요.

고현철

2009.04.20 23:20:10
*.32.117.22

^^

위의 쓴 글을 약간 뜻을 달리 이해하신 듯(내가 잘 못썼나?....ㅎ)
기본을 하려면 전체 동작을 먼저 알고서 시작하라는 뜻이였는데.......쩝

기초를 먼저 닦은 후에 접근을 좀 더 깊숙하게 하라는 얘기입니다.(software적인)

architecture하나 익숙하게 하는데 꽤 긴 시간이 걸립니다.
학생때 4년하고도 모자른 시간이지요

그리고, 기본만 가지고 국내에서 살 수 있는 환경이 안되기 때문에, 동작이 되는 것을 먼저 확인하고 밑으로 내려가라는 얘기입니다.

미국이나 일본정도만 되어도 틀린 얘기지만요.

서원호

2009.04.21 20:08:01
*.47.222.22

좋은 글 감사합니다. 많은 도움이 되었네요.. ^^

전성진

2009.04.21 20:35:30
*.130.232.166

좋은 글 잘 읽고 갑니다. 엔지니어로써 공감이 많이 되는 글입니다. 역시 뭘 하던 선택과 집중이 중요한것 같은데, 뭘 선택해야하고 선택한 다음 무엇에 집중하는가에 대한 생각은 끊임 없이 회전하는 것 같습니다.

전호철

2009.04.22 06:31:04
*.68.81.155

고도리님의 조언을 듣고서 ffmpeg 샘플 프로그램 문서를 번역하면서 공부하다 보니 저는 멀티미디어 파일에 대해서 좀더 공부해야 겠다는 생각이 들었습니다. 
학부때 동영상 코덱에 대해서 잠깐 배우긴 했지만 깊이 공부한것이 아니라서 모르는 내용이 너무 많음을 느꼈구요.... 
실제로 구현된 코드 분석이 정말 유익함을 많이 느꼈습니다. (학부때 하던 멀티미디어 처리 책은 완전 껌.... 수준이되었습니다.)
위에서 말씀하신 Audio/Video Synchronization 에 대해서는 책에서 본 기억이 아예 없었습니다. 공부를 게을리 한게 아니라 책에 아예 없더군요 -_-;;
다른 책을 찾으면 Audio/Video Synchronization 부분이 있을줄 알고 며칠있다가 도서관 가야지.... 하고 있었는데.... ㅠ.ㅠ

강종순

2009.04.22 19:20:06
*.184.149.233

글 잘 읽었습니다.  임베디드쪽은 입문한지 얼마되지 않은 터라 글을 읽으면서  앞으로 이 길을 가는데 많은 도움이 될 거라 생각이 됩니다. 감사합니다.

2009.04.26 09:26:44
*.37.125.113

위에 나와 있는것중에서 그래도 쬐끔 아는게 MTD 밖에 없네요,, 임베디드 입문하고 계속 다뤘던게 그나마 낸드플래시 였는데,, 여튼,, 선택과 집중은 정말 중요 합니다. 처음에 전체적인 숲을 충분히 숙지하고 자신만의 깊은 기술을 키우는게 실무에서 인정받는 방법이 아닌가 하는생각이 드네요,, ^^ 여튼,, 공감100% 글 잘 읽었습니다.

이낙호

2009.04.27 01:15:38
*.38.247.143

글 잘 읽었습니다. 저도 후자(Application)에 가까운 편인데, 일하다보면 1, 2, 3 쪽으로 시간이 빠져가는것 같네요. 어떤 쪽으로 시간 투자를 해야 하는지 다시 생각하게 하는 글이였습니다. 좋은 글 잘읽었습니다.
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
공지 [교육관련] 게시물 --> 반드시 "교육 및 세미나 홍보" 게시판 ... 관리자 2013-12-12 18754
공지 [질문]하실 때 부탁드립니다. 관리자 2013-07-10 21741
319 [안내] ODROID 공동구매 진행 안내 - S5PC100(Cortex A8... file [57] 관리자 2009-09-24 50538
318 [사이트관련] 향후 Embedded Board관련 및 Site향후 방향 [59] 관리자 2010-11-03 48120
317 [공제보드] 새롭게 수정된 자료 및 문제점 정리 [5] 관리자 2010-10-27 42811
316 [안내] 2009 이솝 임베디드 포럼 - 제 1차 구글 안드로이드... file [169] 관리자 2009-10-09 42201
315 [안내] ODROID 플랫폼 개발자 버전 공동구매 접수 file [12] 관리자 2009-09-29 41869
314 [공제보드관련] 월요일부터 자료와 문제점에 대해 정리하도록 ... [14] 관리자 2010-10-25 41800
313 [도움요청] AMOLED 전원 수정관련 보드 제작관련 [12] 관리자 2010-10-31 41735
312 [공구] 하드커널 ODROID-T S5PC110 개발 보드 예약판매 안... [70] 관리자 2010-04-21 37584
311 [안내] ODROID (Platform Developer Edition) 공동 구매 ... [37] 관리자 2009-11-05 37486
310 [공지] ODROID-T/ S5PC110 보드 진행 상황 및 배송 일정 file [72] 관리자 2010-05-24 35349
309 [안내] 이솝 임베디드 포럼 제 1차 구글 안드로이드 세미나 ... [92] 관리자 2009-09-28 35258
308 [공제안내] 이솝 S5PV210 공동제작 보드 공제 접수 및 절차... file [53] 관리자 2010-09-06 34983
307 [안내] 2009 이솝 임베디드 포럼 - 제 1차 구글 안드로이드... [68] 관리자 2009-10-20 34090
306 [공제관련] WIFI module이 정해졌습니다. [7] 관리자 2010-11-19 33480
305 [공지] AESOP6410 임베디드 리눅스용 SDK 배포합니다. [28] 관리자 2009-03-22 32561
304 [안내] 이솝 S5PC100 공동 제작 보드 신청 및 구매 방법 ... file [17] 관리자 2010-03-16 31639
303 [공제반품관련] 오늘(11월2일) 정리해서 반환하였습니다. 관리자 2010-11-03 31530
» [참고] 근래 Embedded를 공부하시는 분들과 실무 적용에 대한... [10] 관리자 2009-04-20 31279
301 aESOP S3C6410 공제 진행 및 참여 안내 file [3] 관리자 2009-02-13 30688
300 [요청] 타업체(단체)에서 만든 S3C6410 board에 대한 메일/쪽지... [1] 관리자 2009-04-23 30529

사용자 로그인