PCI 관련 프로그래밍 질문

kama4001의 이미지

음.. 리눅스에서 PCI 엑세스는 처음 해 봅니다.

궁금한 것이...

리눅스에서는 PCI 엑세스를 하기 위해서는 드라이버를 꼭 만들어야 하나요?

/usr/include/pci.h에 보니...

여러 함수들이 많이 있더군요..

pci_scan_bus(), pci_read_..., pci_read_..., etc.

이들을 이용해서는 접근할 수 있는 방법이 없는지 궁금합니다.

하드웨어를 직접 엑세스 할 수 있는 운영체제에서는

디바이스를 찾아서 메모리 매핑등을 이용해서 하면 되었는데..

리눅스에서는 불가능 한가요?

커널 소스에 보니 pci_find_device() 등 관련 헤더가 있기는 하더라구요.

그리고 두번째는 이러한 함수들에 대한 도움말은 어디에서 찾아야 하나요?

기본적인 것은 man 이나 vi 편집기에서 shift+k를 누르면 나오는 것은

알았으나.. 보다 자세한 설명이나 없는 함수들은 어디에서 찾아야 하는지

궁금합니다.[/b]

darkblue99의 이미지

커널 소스의 Documentation/pci.txt를 보시면
자세히 나와있습니다.
대신 단순하게 address로 접근하면 안되고 remap을 해야 합니다.

Be Postive!

kama4001의 이미지

님의 빠른 답변에 감사합니다.

그러나 제가 알고 싶은것은 조금 다릅니다.

저의 짧은 지식으로는 PCI가 초기화 될때 PCI BIOS 코드를 이용하여,

PCI 버스의 슬롯이 점유되어 있는지를 확인하고, PCI 슬롯이 점유되어 있다면,

그 장치를 나타내는 pci_dev 자료 구조를 만든다고 알고 있습니다.

그 결과 중 하나로 /proc/pci 에 표시되는 것으로 알고 있습니다.

위 내용들을 가지고 사용자 모드(혹은 시스템 콜을 이용하여)에서 지원되는 함수를 이용하여(/usr/include/pci) PCI 장치를 엑세스 할 수는 없는지...

님의 말씀으로는 결국 커널에서 모듈로 적재하던, 컴파일 옵션에 포함시키던지

해서 결국 디바이스 드라이버를 만들어야 한다는 건지요?

아니면, 커널 소스를 이용해서 사용자 모드의 실행 프로그램을 만들면 된다는 것인지요?

음 다르게 말하면 님의 말씀은 리눅스에서는 디바이스 드라이버를 제작하지 않으면 하드웨어의 직접적인 접근은 불가하다는 건가요?

리눅스를 다시 시작한지 한달(예전에는 대학교 과정에서 조금했습니다)이라

아직 모르는 것이 많습니다...

많은 지도 부탁드립니다.

Necromancer의 이미지

XFree86이 user level에서 PCI 버스 전체를 스캔합니다.
X 로그를 보면 알 수 있습니다.

하지만 소스가 워낙에 방대하니까 참고자료로 하기에는 좀 곤란하죠. :cry:

Written By the Black Knight of Destruction

hb_kim의 이미지

google search 를 해보시면 금방 답이 나오던데요...

http://www.linuxjournal.com/article.php?sid=5442

어떤 시스템을 만드느냐에 따라 달라지겠지만요, multi-entrance 가 요구 사항이 아니라면 드라이버를 만들지 않아도 왠만한 정도의 액세스는 할수 있다고 보여집니다.

댓글 달기

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