드라이버 개발 방법에 대해 질문이...

katalog의 이미지

안녕하세요? 전 지금 학생이고 드라이버 공부를 해보려고 합니다..

지금은 WDM으로 NDIS를 이용해서 IDS까지 만들어본 상태구요..

드라이버 공부를 (윈도우 리눅스 둘다) 계속 해보려고 하는데..

어떤 방식으로 공부해야 하는지..(지금은 회로공부부터 하려고 하는데 맞는건지..)

그리고 업체에 들어가게되면 어떤식으로 개발을 하는지..

(이게 회로도만 떡 받으면 드라이버를 짜내야 하는건지.. 그런것도 궁금합니다)

업체에 들어가서 하는 방식으로 공부를 하고싶은데..

개발 프로세스를 모르니 어떤식으로 공부를 해야할지를 모르겠네요...

^^ 많은 답변 부탁드립니다. 읽어주셔서 감사합니다.

kooya의 이미지

디바이스 드라이버 공부를 하시나 보군요.

그리고 업체에 들어가게 되면 어떤 방법으로 개발을 하는지 궁금하시나 보네요.

제가 경험한것에 대해서 설명해 봅니다.

일단 디바이스 드라이버는 해당 시스템에서 필요로 하는 드라이버가 없을때 만들겠지요.(수정하는 부분은 예외로 둡니다.)

디바이스 드라이버를 개발할때는 해당 환경이 있겠네요.

OS가 리눅스냐? 윈도우 쪽이냐?(wince등등..)

디바이스가 DMA 같은것을 필요로 한다면 해당 CPU에 의존적이겠네요.

여기서 CPU는 arm이나 mips나 power pc등.. 임베디드용.

업체를 회사라 치면 회사는 이윤을 추구하는 존재지요. 회사에서 어떤 시스템을 만든다 하면

시스템이 요구하는 성능을 충분히 만족하고 그리고 값이 싼 디바이스를 사용할려고 하겠지요. 이때 개발자들한테 해당 디바이스 드라이버 개발을 요구하겠지요.

개발자 입장에서는 앞서 말한 환경과 해당 드라이버가 다른플랫폼에 포팅되었었는지 확인해야겠지요.

다른 환경에서 이식되었었다면 데이타 시트도 분명히 있겠지요.(데이타 시트 없이 만들어야 하는 경우가 있다면, 그건 업체에서 직접 디바이스를 만들었을때 있을 수 있겠지요. 하지만 다른 형태의 문서가 있겠지요?)

결과적으로 개발자 입장에서 신경써야 할 부분은 아래와 같습니다.

디바이스가 CPU에의존적이라면 개발에 필요한 CPU 데이타 시트를 봐주어야겠죠.(회사 들어가기 전부터 이것을 봐둘순 없겠죠.(해당 CPU가 먼지 알수 없잖아요?^^) 하지만 개념적인 부분은 대체로 많이 비슷하니까 크게 염두해두지 않아도 됩니다. 한두번 이상의 경험이 있으면 족할거 같습니다.)

그리고 OS dependent 하다면 OS에서 디바이스 드라이버를 어떻게 취급해야 하는지 알아야 겠지요?(보통은 리눅스나 윈도우지요. 시간이 부족하다면 하나만 파보세요. 개념적으로 일치하는 부분이 많습니다.시간이 조금더 있으시다면 둘다 파세요.)

그리고 몇가지 더 있습니다. lan드라이버나 usb드라이버 같은경우 lan과 usb에 대한 이해가 조금 필요합니다.

여기까지구요. 지금 할수있는걸 하세요.!!!
----------------------------------------------------------------------
다른분들 의견도 더 들어보세요. 개인적으로 권하는 방법은 해당 분야의 전문가에게 조언을 구하는거네요. 적극적으로요.

greedy 알고리즘

owlet의 이미지

하드웨어 공부를 하시길 추천합니다.

디바이스 드라이버라면 대부분 하드웨어를 컨트롤하는 놈일텐데 자기가 짠 프로그램이 어떻게 동작하는지는 확인을 할 수 있어야 겠지요. 그리고, 디바이스 드라이버를 개발한다면 하드웨어 개발과 병행되는 경우가 대부분일텐데 그런경우 소프트웨어 개발자가 하드웨어 디버깅을 해줘야 하는 상황이 종종 발생합니다. 소프트웨어 디버깅도 오실로스코프나 로직어날라이저같은 장비를 이용해서 하드웨어쪽에서 체크하는게 쉬울때도 많이있구요.

대충 필요한 하드웨어 스킬을 생각해보면 데이터시트, 회로도 정도는 볼 수 있어야 할테고, 간단한 땜질정도는 직접할수 있어야 좋을것같습니다. 계측장비 사용법은 필요할때 배우면 금방 배우실테구요.

8051이나 AVR같은데 LED랑 스위치 몇개 붙여서 LED깜빡이고, 키 입력 체크하는 정도 돌려보시면 소프트웨어 개발자가 갖춰야할 기본적인 하드웨어 지식은 거의 익힐수 있을것같습니다. 단, 반드시 직접 땜질해서 만들어보시기 바랍니다. 간단한거지만 많은걸 배울수 있습니다.

참고로 개발 프로세스라는건 회사마다, 프로젝트마다 천차만별인것같네요. 이미 만들어져있는 드라이버 가져다 수정 혹은 포팅하는 경우도 있을수 있고, 회로도와 스펙이라고 하기도 힘든 간단한 레지스터 설명만 가지고 불안한 하드웨어 위에서 맨땅에 헤딩하는 경우도 있을수 있구요. :)

익명 사용자의 이미지

아무래도 하드웨어 공부를 먼저하고 다시 드라이버 공부를 해야겠군요..

앞으로 가야할 길이 조금씩 보이기 시작했습니다

감사드립니다 ^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.