2010년 12월 8일 수요일

USB를 사용한 Ethernet Gadget 설정(Host)

USB를 이용하여 Ehernet 통신을 하는 방법이 있더라구요.
제가 E-Ink사의 AM300 Prototype Kit를 사용하고 있는데,
USB가 2개 있습니다.
한 개는 Host, 다른 한 개는 Client용으로 되어 있는데,
Client용으로 된 것은 Host와 연결하여 console용 터미널로 사용하고
Host용으로 된 것은 Host와 연결하여 Ethernet 통신용으로 사용하려고 설정 중 입니다.
+-----------------------+                                   +-------------------+
| Host                 |   Ethernet 용 USB         | Target          |
| Note-PC           +-----------------------------------+ PXA255       |
| Window XP       |  Serial Terminal용 USB  | Linux 2.6.20 |
| VMware           +-----------------------------------+                    |
| Fedora Core 11 |                                    |                     |
+----------------------+                                   +--------------------+

- Target 설정
  + Ehernet Gadget에 대한 package를 설정하고 설치
    * kernel의 설정 값 (.config 파일)
      CONFIG_USB_ARCH_HAS_HCD=y
      CONFIG_USB_GADGET=m
      CONFIG_USB_GADGET_SELECTED=y
      CONFIG_USB_GADGET_GUMSTIX=m
      CONFIG_USB_GADGET_PXA2XX=y
      CONFIG_USB_PXA2XX=m
      CONFIG_USB_ETH=m
      CONFIG_USB_ETH_RNDIS=y

  + Booting 시 메시지 확인
    pxa2xx_udc: version 4-May 2005
    usb0: Ethernet Gadget, version: May Day 2005
    usb0: using pxa2xx_udc, OUT ep2out-bulk IN ep1in-bulk STATUS ep6in-bulk
    usb0: MAC 1e:d9:0e:42:a3:a0
    usb0: HOST MAC 1e:d9:0e:42:a3:a1
    usb0: RNDIS ready
    NET: Registered protocol family 17
    usb0: full speed config #2: 100 mA, Ethernet Gadget, using RNDIS

  + #ifconfig로 IP 주소 설정
    # ifconfig usb0 192.168.2.100

- Host 설정
  + RNDIS/Ethernet Gadget Device Driver가 설치 되어야 함.
  + 인터넷에서 "linux.inf" 파일을 찾는다.
  + linux.inf에 있는 파일들이 Host 컴퓨터에 있는지 확인하고 없으면 인터넷에서 찾아서 구한다.
  + Device driver를 추가해 준다. -> 네트워크 환경에서 USB Ethernet Gadget용 local이 하나 더 생
    긴다.
  + 네트워크 환경에서 IP 설정
    * IP address : 192.168.2.60
    * Default Gateway : 192.168.2.60
  + Linux에서 IP 설정
    * default로 IPv6 address가 설정되므로
    * #ifconfig usb0 192.168.2.60

- 이때 IP route table의 설정이 중요 합니다.
  Ping은 Host와 Target의 IP route table의 설정이 올바르게 설정이 되어 있어야 가능합니다.
  #ifconfig를 하여 각각 IP 할당이 되어 있더라도 IP route table의 설정이 잘못되어 있으면
  Ping이 되지 않습니다.
  직접 연결된 두개의 system 간에도 이런 현상이 발생 합니다.
  물론 Host는 VMware를 사용하여 Ethernet이 별도로 연결되기 때문에 다른 환경이지만요.

* 주의 사항
  + 파일이 일부 부족하면 device driver 추가가 안된다. (예, netevent.dll)

* 참고자료
  + http://docwiki.gumstix.org/Setting_up_USBnet
  + http://embedded.seattle.intel-research.net/wiki/index.php?title=Setting_up_USBnet&redirect=no
  + http://www.linux-usb.org/gadget/

댓글 없음:

댓글 쓰기