embedded linux device driver 작업 절차?

chxooi의 이미지


저희부서엔 세팀이있습니다.

H/W 팀
OS 팀
S/W 팀

H/W 팀에서 새로 설계된 보드를 가지고 보드를 만들었습니다. 해당 block 도를 받았구요
O/S 팀에서 설계된 보드에 이미지를 올릴 수 있도록 linux 를 포팅해서 올렸습니다.

결국, 하드도 받았고, O/S 도 설치 완료했습니다.

문제는 S/W 인 제가 디바이스 드라이버를 올려야 하는데 순서를 모르겠습니다.
일단,
제 디바이스는 PCI 디바이스 입니다.

예전에 한 경험에 의하면 PCI 디바이스의 경우 PCI base address 도 세팅을 해야하고 했던것 같은데 기억이 잘 안나네요

일단 insmod 를 하기위한 디바이스 업체로부터 레퍼런스를 받긴했읍니다만, 저희 보드와 레퍼런스 보드가 같질 않아서 세팅을 바꿔줘야 합니다.

제가 요청해야 하는 절차는 어떤걸까요??

H/W 팀에 PCI 디바이스를 붙이기위해 뭘 요청해야 하나요?
OS 팀에서 제 PCI 디바이스를 위해서 무엇을 해야 하는지 어떤걸 요청해야 하나요?

참고로 O/S 팀은 제 디바이스가 붙었는지 안붙었는지 관심이 없습니다.
그냥 shell 까지 구동되는것만 확인할뿐.....

O/S loading 된 보드를 받은 디바이스 드라이버 담당자가 그다음에 해야할 절차....
어떤게 있을까요......

PCI 라서...더 헤깔린다능....

mirheekl의 이미지

기억을 되살려보면..

일단 해당 하드웨어의 디바이스 ID랑 벤더ID를 알아야겠죠. 뭐 직접 알아보셔도 되긴 하겠지만.. 확실히 하기 위해서..
그리고 O/S가 제공하는 PNP함수를 사용해서 해당 PCI디바이스가 사용하는 I/O랑 인터럽트 주소 등 리소스를 얻어옵니다. (이 과정은 다른 디바이스 드라이버들도 모두 하고 있으므로 그대로 참고하시면 됩니다)

드라이버를 통해 여기까지 성공했으면, 이제 하드웨어 스펙시트를 보고 I/O작업을 테스트해보시면 됩니다.
테스트결과 I/O동작에 문제가 없다고 판단되었을 경우(이 단계에서 간단한 콘솔용 테스트프로그램을 함께 짜기도 합니다),

범용디바이스일 경우 당연히도 가장 비슷한 부류의 표준 디바이스의 샘플코드를 갖고 모디파이 작업을 하시면 되며..
커스텀 프로그램으로만 쓰는 디바이스일 경우 커스텀 디바이스 드라이버 샘플코드를 갖다 살을 붙이는 식으로 하시면 됩니다.
(이것들은 베이스 플랫폼 제공 업체를 통해 구할 수 있습니다.. 베이스 플랫폼 제공 업체가 지금 일하시는 회사라면.. 뭐 지금 사용하시는 임베디드 리눅스의 드라이버 소스들을 통해 찾아봐야지요. 거기에도 없으면 커널 버전에 맞는 넘을 찾아다 직접 변경을..)

요새 트렌트가 어떻게 바뀌었는지는 모르나 몇년전 제가 일할 땐 저런 식으로 했었습니다.
물론 플랫폼마다, 상황에 따라 다를것같기는 합니다.
도움안되는 답변만 드린것 같아 걱정입니다 ^^;;

--
This is for you new people. I have just one rule :
Everyone fights, no one quits. If you don't do your job, I'll shoot you myself. Do you get me?

--

댓글 달기

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