usb p2p messaging device driver... 참고 reference 좀...

xibin의 이미지

안녕하세요?

지금 학교 과제로 usb p2p messaging device driver를 급히 만들고 있습니다.

Ori Pomerantz 아저씨 reference를 보고서 일단 제 커널에서 간단한 character device를 만들어서, ioctl을 이용해서 /dev/char_dev에서 message 뽑아내서 화면에 찍어주는 것까지는 했거든요.

그런데...

이걸... 한 컴터에서 usb cable에 message를 넣어주면 다른 컴터에서 그걸 받아서 화면에 찍어주는 걸로 좀 upgrade 시켜야 하는데...

..

여기 kldp도 그렇고 다른 싸이트들에서도... 알아볼 수 있을만한 reference를 찾을 수가 없네요.

usb driver 맹드는 거 좀 step by step으로 나와있는 reference 아시는 분 좀 알려주세요..

..;;

좀 이해가 안 가는 부분이...

1. 단순히 케이블 하나 연결하는 건데.. probe해서 어케 vendor나 productid를 찾느냐는 거 ㅡ,.ㅡ (이거 용산에서 1500원 주고 산 그냥 AA usb 케이블...)

2. 그리고 그냥 data 찔끔찔끔 보내주는 거라 character device인양 만들어야 할 것 같은데(network device가 아니라...) 그렇담 /dev/ 내의 character file은 어떻게 만들어야 하죠?

register_chrdev는 major값을 반환해줘서 그걸로 /dev/안에 file하나 열 수 있다지만... usb_register는 테스트 했더니 그냥 0을 반환하더라구요.

...

아무리 생각해도 제가 지금 전체적인 그림을 제대로 못 그리고 있는 것 같은데...

어떤 거라도 좋으니.. 제발 도움 좀...

vajna의 이미지

USB는 주종 프로토콜입니다.
단순히 AA케이블을 연결한다고 해서 시리얼이나 이더넷같이 P2P로 연결되지 않습니다.
즉, Master - Slave구조로 Master에서 허가를 내리기 전에는 Slave에서 버스제어권을 가질 수 없는 Half-Duplex시스템입니다.
PC는 기본적으로 (Universal or Open) Host Controller가 장착되어있는 HOST(Master) Device입니다. HOST끼리는 당연히 연결이 되지 않죠.
USB2.0이후에는 OTG라는 주종병용 USB스펙도 있지만 이는 하드웨어적인 제한이 있고 임베디드에만 활용도가 있습니다.
그리고 USB Vendor ID와 Product ID는 Target Device에서 호스트로부터의 프로토콜 리퀘스트 시퀀스에 따라 보내주는 것입니다. 케이블만 붙어있다고 해서 VID, PID가 생겨날 수 없습니다.

참고로 레퍼런스를 하나 드린다면 USB타겟쪽에(PC쪽 말고) 장치를 하나씩 만들어서 붙이고 종단장치간 통신을 하도록 한 후, 호스트에서 그것들을 읽기/쓰기 하도록 하면 춤분히 가능합니다. 하드웨어를 직접 만들어보면 재미있겠지만 그렇지 못한 상황이라면 시중의 장치를 사용하거나 해야겠죠..

머나먼 땅으로 우리 동무가 이제 떠나간다네.
고향의 바람이 불어와 동무 뒤를 따르고
사랑스러운 도시가 푸른 이내 속에서 사라지네.
정든 집, 푸른 동산, 부드러운 눈길도...

댓글 달기

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