임베디드 시스템, Device Driver 제작 과정 좀 알려주세요!!

badsky82의 이미지

과제에 보면.. device driver 제작 과정..

[Procedure]
Device driver의 제작 과정은 아래와 같은 단계로 이루어 진다.
+ Hardware 분석
▪ H/W 벤더에서 제공하는 데이터 쉬트를 이용하여 H/W 분석을 한다. S/W 개발자에
게는 레지스터들의 의미와 쓰임새를 이해하는게 가장 중요하다.
+ Device driver 인터페이스의 설계
▪작성할 device driver를 사용할 응용 프로그램 개발자와의 미팅을 통해 응용 프로그
램과 디바이스 드라이버 사이의 인터페이스를 설계한다.
+ 모듈을 이용한 device driver 제작, 디버깅 및 테스트
▪모듈과 NFS를 이용하여 device driver 코딩과 테스트를 한다. 이 단계에서는 일반적
으로 간단한 테스트용 응용 프로그램을 이용하여 device driver의 정상 작동여부를 테
스트한다.
+ 커널에 device driver 패키징
▪커널 소스에 D/D 소스를 추가하고 사용자가 make menuconfig를 통하여 디바이스
드라이버의 지원 여부를 선택할 수 있도록 최종 패키지 한다.

이라고 되어있는데요.. 보드는 mba2440 사용하구요..
데이터 쉬트 어딨는지도 모르구요 -_-; (홈페이지에 있나..)
응용 프로그램 개발자 그런거 없구요 -_-;

아 bootloader 고치는건 해봤는데요
device driver 이건 어떤 과정으로 만드는거죠?

그냥 헤더파일 c파일 만들어서 (파일명 아무렇게나?)
ads v1.2였나.. 암튼 코딩 프로그램으로 컴파일한다음에
bin 파일 만들어서 보드 flash에 올리면 되는건가여?

아니면 이것도 무슨 부트코드 고쳐야 되나여?
배운게 거의 없어서리.. 흑 미치겠네여

powerson의 이미지

device driver는 OS마다 구현 방식이 틀리기 때문에 우선 리눅스라는 가정하에 말씀 드리겠습니다.
device driver는 C로 개발이 되며, 컨트롤 하려는 디바이스에 대한 정보를 바탕으로 kernel module programming 하는 것입니다. 어플리케이션에서의 C 프로그래밍과 크게 다를게 없지만, module programming은 main함수 시작하는 대신, module이 insert 되는 시점부터 module_init으로 정의된 함수에서 시작이 되며, module을 내리면, module_exit로 정의된 함수가 호출되면서 종료하게 됩니다. 또한 어플리케이션에서 사용하는 library를 사용할 수 없고, kernel에서 EXPORT한 함수들만 사용하게 되며, header는 개발하려는 kernel에서 해당 source의 include 디렉토리에 있는 것들을 사용하게 됩니다. 물론 makefile에 대한 작성도 module programming 시에는 약간 틀려지게 되는데, 이건 그리 어렵지 않습니다. 좀더 자세한 정보는 책 LDD(Linux Device Driver) 혹은 커널 프로그래밍이란 책이 있는데, 이 두권을 참고하시면, 도움이 되실거 같습니다.

------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.