KR101502147B1 - 네트워크 상에서 usb 호스트와 usb 디바이스 간의 통신 방법, 장치 및 기록매체 - Google Patents

네트워크 상에서 usb 호스트와 usb 디바이스 간의 통신 방법, 장치 및 기록매체 Download PDF

Info

Publication number
KR101502147B1
KR101502147B1 KR1020130025259A KR20130025259A KR101502147B1 KR 101502147 B1 KR101502147 B1 KR 101502147B1 KR 1020130025259 A KR1020130025259 A KR 1020130025259A KR 20130025259 A KR20130025259 A KR 20130025259A KR 101502147 B1 KR101502147 B1 KR 101502147B1
Authority
KR
South Korea
Prior art keywords
usb
data
network
packet
usb host
Prior art date
Application number
KR1020130025259A
Other languages
English (en)
Other versions
KR20140110623A (ko
Inventor
김대환
Original Assignee
김대환
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 김대환 filed Critical 김대환
Priority to KR1020130025259A priority Critical patent/KR101502147B1/ko
Publication of KR20140110623A publication Critical patent/KR20140110623A/ko
Application granted granted Critical
Publication of KR101502147B1 publication Critical patent/KR101502147B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3812USB port controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3814Wireless link with a computer system port

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 네트워크 상에서 USB 호스트와 USB 디바이스 간의 통신 방법, 장치 및 기록매체에 관한 것으로, 본 발명의 일 실시 예에 따른 USB 호스트와 USB 디바이스간의 통신 방법은 USB 호스트 측 에뮬레이터에서, USB 호스트로부터 상기 USB 디바이스에 전송할 데이터를 수신하는 단계, 수신된 데이터를 네트워크를 통한 전송용 패킷의 페이로드에 인캡슐레이션하는 단계 및 인캡슐레이션된 전송용 패킷을 상기 네트워크를 통해 송신하는 단계를 포함하고, USB 디바이스 측 에뮬레이터에서, 인캡슐레이션된 전송용 패킷을 수신하는 단계, 수신한 전송용 패킷을 디캡슐레이션하여 상기 데이터를 추출하는 단계 및 추출한 데이터를 UBS 디바이스에 전송하는 단계를 포함함으로써, 물리적으로 USB 장치간의 연결이 되어있지 않더라도 통신이 가능하여 거리적 제약을 극복할 수 있다.

Description

네트워크 상에서 USB 호스트와 USB 디바이스 간의 통신 방법, 장치 및 기록매체{Method, apparatus and computer readable medium for communication between USB host and USB device through network}
본 발명은 네트워크를 통한 USB 장치들간 통신에 관한 것으로, 보다 상세하게는 네트워크 상에서 에뮬레이터를 이용하여, USB 호스트와 USB 디바이스 간의 데이터를 송수신할 수 있는 통신 방법, 장치 및 기록매체에 관한 것이다.
USB는 마우스, 키보드, 프린터, 모뎀, 스피커 등과 같은 컴퓨터 주변기기와 컴퓨터를 연결하기 위한 인터페이스의 규격화를 목적으로 개발되었다.
USB를 이용하면 복잡한 어댑터(예를 들면, 드라이버 등)들의 설치와 제거를 쉽고, 빠르게 할 수 있어 현재 대부분의 PC 표준 장비로 채택되어 장착되고 있다.
USB 시스템에서 USB 호스트와 USB 디바이스간의 데이터는 물리적으로는 USB 케이블을 통해 전송되는데, USB 케이블의 물리적 한계로 인하여 호스트와 디바이스는 약 5미터 이내에서만 통신이 가능하다. 따라서, 사용자는 호스트와 인접한 디바이스만을 사용해야 하는 문제가 있다.
이러한 USB 케이블의 물리적 한계를 해결하기 위하여, USB 시스템 소프트웨어가 USB 호스트 컨트롤러에게 전송하는 데이터를 이용하여 소정의 네트워크에서 사용되는 포맷의 패킷을 생성하고, 이를 네트워크를 통해 USB 디바이스에게 전송하는 방법이 제안되었다.
하지만 USB 패킷의 기본 형식 및 프로토콜은 네트워크 계층에서 정의된 것이 아니어서 이를 네트워크 계층에 적합하게 변형시키기 위해서는 기존 USB 장치들에 별도의 소프트웨어를 설치해야 한다. 따라서 기존 USB 장치들과는 호환이 되지 않고, 특히 키보드, 마우스 등의 USB 디바이스들의 경우 네트워크를 처리하기 위한 CPU가 없어, 별도의 소프트웨어를 설치하는 것이 불가능하다는 문제가 있다.
본 발명의 일 실시 예들은 기존 USB 장치에 별도의 소프트웨어를 추가하지 않고도, 에뮬레이터를 이용하여 네트워크 상에서 USB 장치간 통신이 가능하도록 함으로써 원격지에서도 USB를 사용할 수 있는 네트워크 상에서 USB 호스트와 USB 디바이스 간의 통신 방법, 장치 및 기록매체를 제공하는 것이다.
상기 기술적 과제를 해결하기 위하여, 본 발명의 일 측면에 따른 네트워크를 통한 USB 호스트와 USB 디바이스 간의 통신 방법에 있어서, 상기 USB 호스트 측 에뮬레이터에서, 상기 USB 호스트로부터 상기 USB 디바이스에 전송할 데이터를 수신하는 단계; 상기 수신된 데이터를 상기 네트워크를 통한 전송용 패킷의 페이로드에 인캡슐레이션하는 단계; 및 상기 인캡슐레이션된 전송용 패킷을 상기 네트워크를 통해 송신하는 단계를 포함하고, 상기 USB 디바이스 측 에뮬레이터에서, 상기 인캡슐레이션된 전송용 패킷을 수신하는 단계; 상기 수신한 전송용 패킷을 디캡슐레이션하여 상기 데이터를 추출하는 단계; 상기 추출한 데이터를 상기 UBS 디바이스에 전송하는 단계를 포함하는, USB 호스트와 USB 디바이스 간의 통신 방법을 포함한다.
상기 USB 호스트와 USB 디바이스 간의 통신 방법은 상기 USB 호스트 측 에뮬레이터에서, 상기 수신된 데이터를 분석하는 단계; 및 상기 분석 결과에 따라 상기 수신된 데이터를 저장하고 핸드쉐이크 패킷을 생성하는 단계를 더 포함하고, 상기 저장된 데이터를 상기 네트워크 패킷의 페이로드에 인캡슐레이션 하여 상기 네트워크를 통해 상기 USB 디바이스 측 에뮬레이터로 전송하고, 상기 생성한 핸드쉐이크 패킷을 상기 USB 호스트로 전송하는 것을 특징으로 한다.
상기 USB 호스트와 USB 디바이스 간의 통신 방법은 상기 USB 디바이스 측 에뮬레이터에서, 상기 추출한 데이터를 저장하는 단계; 상기 저장된 데이터를 분석하는 단계; 및 상기 분석 결과에 따라 상기 저장된 데이터를 상기 USB 디바이스에 전송하고, 상기 USB 디바이스로부터 핸드쉐이크 패킷을 입력받는 단계를 더 포함하는 것을 특징으로 한다.
상기 분석 단계는, 상기 수신된 데이터를 토큰의 종류에 따라 분류하고, 상기 분류에 따라 상기 저장된 데이터의 종류 및 상기 생성된 핸드쉐이크 패킷의 종류 중 적어도 하나를 결정하는 것을 특징으로 한다.
상기 USB 호스트 측 에뮬레이터에서의 상기 수신 단계는, 상기 USB 호스트에 포함된 USB 버스인터페이스의 직렬 인터페이스 엔진(SIE)과 상기 USB 호스트 측 에뮬레이터의 직렬 인터페이스 엔진(SIE)의 연결을 통해 상기 데이터를 수신하는 것을 특징으로 한다.
또한, 본 발명의 다른 측면에 따른 네트워크를 통한 USB 호스트와 USB 디바이스 간의 통신 방법에 있어서, 상기 USB 디바이스 측 에뮬레이터에서, 상기 USB 디바이스로부터 상기 USB 호스트에 전송할 데이터를 수신하는 단계; 상기 수신된 데이터를 상기 네트워크를 통한 전송용 패킷의 페이로드에 인캡슐레이션하는 단계; 및 상기 인캡슐레이션된 전송용 패킷을 상기 네트워크를 통해 송신하는 단계를 포함하고,
상기 USB 호스트 측 에뮬레이터에서, 상기 인캡슐레이션된 전송용 패킷을 수신하는 단계; 상기 수신한 전송용 패킷을 디캡슐레이션하여 상기 데이터를 추출하는 단계; 상기 추출한 데이터를 상기 UBS 호스트에 전송하는 단계를 포함한다.
상기 네트워크를 통한 USB 호스트와 USB 디바이스 간의 통신 방법은 수신된 데이터를 저장하는 단계를 포함하는 것을 특징으로 한다.
상기 USB 디바이스 측 에뮬레이터에서의 상기 수신 단계는, 상기 USB 디바이스에 포함된 USB 버스인터페이스의 직렬 인터페이스 엔진(SIE)과 상기 USB 디바이스 측 에뮬레이터의 직렬 인터페이스 엔진(SIE)의 연결을 통해 상기 데이터를 수신하는 것을 특징으로 한다.
또한, 본 발명의 또 다른 측면에 따른 네트워크를 통한 USB 호스트와 USB 디바이스 간의 통신 방법을 실행하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
또한, 본 발명의 또 다른 측면에 따른 네트워크를 통한 USB 호스트와 USB 디바이스 간의 통신 장치는, 외부 장치에 포함된 USB 버스인터페이스부의 직렬 인터페이스 엔진(SIE) 과 데이터를 송수신 할 수 있는 연결부; 상기 연결부로부터 송수신된 상기 데이터를 토큰의 종류에 따라 분석하여 처리하는 제어부; 및 상기 처리된 데이터를 인캡슐레이션하여 상기 네트워크 인터페이스부로 송신하거나 상기 네트워크 인터페이스로부터 수신된 네트워크 패킷을 디캡슐레이션하는 네트워크 프로토콜 처리부;를 포함하는 것을 특징으로 하는 장치.
본 발명의 일 실시 예는 USB 호스트와 USB 디바이스 간 통신이 네트워크 상에서 수행됨으로써, 물리적으로 USB 장치간의 연결이 되어있지 않더라도 통신이 가능하여 거리적 제약을 극복할 수 있다.
또한, 기존 USB 장치에 별도의 기능 추가 없이도 네트워크 상에서의 USB 장치간 통신이 가능해짐에 따라 키보드, 마우스 등과 같이 CPU가 없는 USB 디바이스들의 경우에도 네트워크 상에서 USB 호스트와 통신할 수 있다.
도 1은 본 발명의 일 실시 예에 따라 따라 USB 호스트와 USB 디바이스, 에뮬레이터들의 구조를 도시한 도면이다.
도 2는 본 발명의 일 실시 예에 따라 USB 호스트가 USB 디바이스에게 데이터를 송신하는 과정을 나타낸 순서도이다.
도 3은 본 발명의 일 실시 예에 따라 USB 호스트가 USB 디바이스로부터 데이터를 수신하는 과정을 나타낸 순서도이다.
도 4는 본 발명의 일 실시 예에 따라 USB 디바이스가 USB 호스트로부터 데이터를 수신하는 과정을 나타낸 순서도이다.
도 5는 본 발명의 일 실시 예에 따라 USB 디바이스가 USB 호스트에게 데이터를 송신하는 과정을 나타낸 순서도이다.
도 6은 본 발명의 일 실시 예에 따라 USB 호스트와 USB 디바이스간의 통신을 중개하는 에뮬레이터의 구조를 도시한 도면이다.
도 7은 본 발명의 일 실시 예에 따라 USB 장치와 에뮬레이터 사이의 연결부가 연결되는 직렬 인터페이스 엔진에서의 데이터 전송을 도시한 도면이다.
도 8은 일반적인 USB 데이터의 패킷 구조를 도시한 도면이다.
도 9는 본 발명의 일 실시 예에 따라, USB 디바이스와 USB 호스트간에 전송되는 패킷의 구조를 나타낸 도면이다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다. 본 발명의 하기 실시 예는 본 발명을 구체화하기 위한 것일 뿐 본 발명의 권리 범위를 제한하거나 한정하지 않는다. 또한, 본 발명의 상세한 설명 및 실시 예로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 유추할 수 있는 것은 본 발명의 권리범위에 속하는 것으로 해석된다.
도 1은 본 발명의 일 실시 예에 따라 USB 호스트(110), USB 디바이스(120), USB 호스트 측 에뮬레이터(130)와 USB 디바이스 측 에뮬레이터(140)의 구조를 도시한 도면이다.
도 1에 도시된 바와 같이, USB 시스템은 USB 호스트(110), USB 디바이스(120)로 구성된다. USB 호스트(110)는 일반적으로 PC이며 USB 디바이스(120)는 USB 인터페이스를 가진 주변 기기이다.
USB 호스트(110)는 클라이언트 소프트웨어(111), USB 시스템 소프트웨어(112), USB 버스인터페이스(113)로 구성되고, USB 디바이스(120)는 Function(121), USB 논리 디바이스(122), USB 버스인터페이스(124)로 구성된다.
디바이스의 Function(121)을 실제로 사용하는 것은 클라이언트 소프트웨어(111)이다. 클라이언트 소프트웨어(111)가 Function(121)을 사용하기 위하여 발생시키는 모든 데이터의 흐름을 살펴보면 다음과 같다.
클라이언트 소프트웨어(111)가 USB 디바이스(120)의 Function(121)을 사용하기 위하여 발생시킨 데이터는 USB 시스템 소프트웨어(112), USB 버스인터페이스(113)의 호스트 컨트롤러(114)를 거쳐서 USB 디바이스(120)에 있는 USB 버스인터페이스(124)로 전달된다. 이 데이터는 USB 버스인터페이스(124)에서 USB 논리 디바이스(122)를 거쳐 Function(121)에 전달되고 Function(121)은 클라이언트 소프트웨어(111)가 전송한 데이터를 처리하게 된다.
이 때, 클라이언트 소프트웨어(111)와 하위 계층에 있는 USB 시스템 소프트웨어(112)는 USB Class Specification에서 정의한 형태의 데이터를 주고 받는다.
Function(121)이 클라이언트 소프트웨어(111)에게 전송하는 데이터는 클라이언트 소프트웨어(111)가 전송한 데이터의 역순으로 전달된다. 또한, USB 디바이스(120)의 Function(121)과 USB 논리 디바이스(122)도 USB Class Specification에서 정의한 형태의 데이터를 주고 받는다. 구체적인 데이터의 형태는 하기의 도 8에서 다시 살펴보도록 한다.
USB 호스트(110)와 USB 디바이스(120)간의 통신에서 데이터는 논리적으로는 USB 호스트(110)의 클라이언트 소프트웨어(111)와 USB 디바이스(120)의 Function(121) 간에 송수신되는 것으로 볼 수 있는데, 이 때의 전송통로를 파이프라 하며, USB 디바이스(120)에서 파이프의 종단을 엔드포인트(123)라고 한다.
종래 기술의 경우에는, USB 호스트(110)와 USB 디바이스(120) 내부에 별도의 소프트웨어를 추가적으로 설치하여 데이터를 네트워크 프로토콜에 맞게 변형시켰다. 예를 들어 USB 시스템 소프트웨어(111)가 호스트 컨트롤러(114)에게 전송하는 데이터를 이용하여 네트워크에서 사용되는 포맷의 데이터를 생성하는 등의 방법이 있다. 그러나 이러한 방법은 종래 USB 장치와 호환성의 문제가 있었다.
하지만, 본 발명의 경우에는 USB 호스트(110)와 USB 디바이스(120)에 각각 에뮬레이터를 연결하여 USB 장치 외부에서 네트워크 패킷 형태로 데이터를 변형한다. 따라서 종래 문제가 되었던 호환성 부분을 해결할 수 있다.
구체적으로 USB 호스트(110)와 USB 호스트 측 에뮬레이터(130)의 연결부분을 살펴보면, USB 호스트(110) 내부에 포함되어 있는 USB 버스인터페이스부(113)의 직렬 인터페이스 엔진(115)과 USB 호스트 측 에뮬레이터(130)의 USB 버스인터페이스부(131)의 직렬 인터페이스 엔진(132)은 USB 케이블로 연결되어 있다.
이 때, 직렬 인터페이스 엔진은 패킷 아이디를 해독하고, 데이터에 대한 에러 발생 여부를 체크하여 데이터를 전달하는 역할을 한다. 본 발명에서는 USB 호스트(110)의 직렬 인터페이스 엔진(115)과 USB 호스트 측 에뮬레이터(130)의 직렬 인터페이스 엔진(132)을 연결하여 데이터를 USB 호스트(110)에서 USB 호스트 측 에뮬레이터(130)로 송신한다.
USB 디바이스(120)와 USB 디바이스 측 에뮬레이터(140) 또한 USB 호스트(110)와 USB 호스트 측 에뮬레이터(130)와 같은 방식으로 연결되어 있다.
도 2는 본 발명의 일 실시 예에 따라 USB 호스트가 USB 디바이스에게 데이터를 송신하는 과정을 나타낸 순서도이다.
단계 210에서, 본 발명에 따른 에뮬레이터는 USB 호스트의 USB 버스인터페이스로부터 데이터를 수신한다. 본 발명의 목적에 따라 네트워크 상에서 데이터를 송수신하기 위해서는 데이터 형식의 변형이 필요한데, 에뮬레이터는 수신한 데이터를 네트워크 상에서의 전송에 적합하도록 데이터의 형식을 바꿔주는 역할을 한다.
단계 220에서, 에뮬레이터의 USB 디바이스 제어기는 수신한 데이터를 분석한다.
이 때, 데이터 분석은 수신한 데이터의 토큰의 종류를 구별하는 것을 포함한다. 토큰은 IN, OUT, SETUP 패킷으로 구성되어 있다. IN 패킷은 어드레스와 엔드포인트에서 지정되는 디바이스의 엔드포인트에서 호스트로의 데이터 전송명령을, OUT은 호스트에서 지정된 디바이스의 엔드포인트로의 데이터 전송명령을 각각 의미한다. SETUP은 호스트에서의 컨트롤 전송시 SETUP 커맨드에 사용된다.
여기에서 컨트롤 전송은 USB의 4가지 전송 모드 중 하나로 USB 호스트와 USB 디바이스의 컨트롤 엔드포인트를 사용하여 실행하는 데이터 전송이다. 모든 USB 디바이스가 지니고 있어야 할 모드로서 호스트에서의 커맨드나 각종 정보의 데이터 전송 등에 사용된다.
단계 230에서, 에뮬레이터의 USB 디바이스 제어기는 수신한 데이터가 SETUP 토큰이거나 OUT 토큰일 경우에는 토큰 패킷과 데이터 패킷을 저장한다.
단계 240에서, 에뮬레이터의 USB 디바이스 제어기는 수신한 데이터가 IN 토큰일 경우에는 토큰 패킷을 저장한다.
단계 250에서, 에뮬레이터의 USB 디바이스 제어기는 수신한 데이터가 SETUP 토큰이거나 OUT 토큰일 경우에는 ACK 핸드쉐이크 패킷을 생성한다.
단계 260에서, 에뮬레이터의 USB 디바이스 제어기는 수신한 데이터가 IN 토큰일 경우에는 NAK 핸드쉐이크 패킷을 생성한다.
이 때, 핸드쉐이크 패킷은 전송의 결과를 보고하는데 사용된다. 핸드쉐이크 패킷에는 ACK, NAK 등이 있는데 ACK는 데이터 수신이 정상종료되었을 때, 발행되고 NAK 는 데이터 전송준비가 아직 되지 않았거나 전송이 이루어지지 않았을 때 주로 발생된다.
단계 270에서, 에뮬레이터의 네트워크 프로토콜 처리기는 저장된 데이터를 네트워크 패킷의 페이로드에 인캡슐레이션한다. 이 때, 인캡슐레이션은 데이터가 네트워크를 통해 USB 디바이스로 전달될 수 있도록 데이터를 네트워크 패킷의 페이로드에 삽입하여 패킷의 형식을 변형하는 과정이다.
단계 280에서, 에뮬레이터의 네트워크 프로토콜 처리기는 생성한 핸드쉐이크 패킷을 USB 호스트로 송신한다.
단계 290에서, 네트워크 패킷을 네트워크 상으로 송신한다.
도 3은 본 발명의 일 실시 예에 따라 USB 호스트가 USB 디바이스로부터 데이터를 수신하는 과정을 나타낸 순서도이다.
단계 310에서, 에뮬레이터는 네트워크 상에서 입력된 네트워크 패킷을 수신한다.
단계 320에서, 에뮬레이터의 네트워크 프로토콜 처리기는 수신한 네트워크 패킷을 디캡슐레이션하여 데이터를 추출한다.
본 발명에서 디캡슐레이션은 네트워크 패킷의 페이로드를 분석하여 USB 디바이스가 인지할 수 있는 데이터를 추출하는 과정이다.
단계 330에서, 추출된 데이터를 USB 디바이스로 송신한다.
도 4는 본 발명의 일 실시 예에 따라 USB 디바이스가 USB 호스트로부터 데이터를 수신하는 과정을 나타낸 순서도이다.
단계 410에서, 에뮬레이터는 네트워크로부터 네트워크 패킷을 수신한다.
단계 420에서, 에뮬레이터의 네트워크 프로토콜 처리기는 수신한 네트워크 패킷을 디캡슐레이션하여 데이터를 추출한다.
단계 430에서, 에뮬레이터의 버퍼에 추출된 데이터를 저장한다.
단계 440에서, 저장된 데이터를 분석한다. 이 때, 데이터 분석은 수신한 데이터의 토큰의 종류를 구별하는 것을 의미한다.
단계 450에서, 에뮬레이터의 USB 호스트 제어기는 수신한 데이터가 SETUP 토큰이거나 OUT 토큰일 경우 토큰 패킷과 데이터 패킷을 USB 디바이스로 송신한다.
단계 460에서, 에뮬레이터의 USB 호스트 제어기는 수신한 데이터가 SETUP 토큰이거나 OUT 토큰일 경우 핸드쉐이크 패킷을 입력받는다.
단계 470에서, 핸드쉐이크 패킷을 분석하여 NAK일 경우에는 토큰 패킷과 데이터 패킷을 USB 디바이스로 송신하고, ACK일 경우에는 절차를 종료한다.
단계 480에서, 에뮬레이터의 USB 호스트 제어기는 수신한 데이터가 IN 토큰일 경우에는 토큰 패킷을 USB 디바이스로 송신한다.
단계 490에서, 수신한 데이터가 IN 토큰일 경우, 에뮬레이터는 USB 디바이스로부터 데이터 패킷을 입력받는다.
단계 491에서, 입력받은 데이터 패킷을 저장한다.
단계 492에서, ACK 핸드쉐이크 패킷을 생성한다.
단계 493에서 ACK 핸드쉐이크 패킷을 USB 디바이스로 송신한다.
단계 494에서 데이터 패킷을 네트워크 패킷의 페이로드에 인캡슐레이션한다.
단계 495에서 데이터 패킷이 인캡슐레이션된 네트워크 패킷을 USB 호스트로 송신한다.
도 5는 본 발명의 일 실시 예에 따라 USB 디바이스가 USB 호스트에게 데이터를 송신하는 과정을 나타낸 순서도이다.
단계 510에서, 에뮬레이터는 USB 디바이스로부터 데이터를 수신한다.
단계 520에서, 에뮬레이터의 네트워크 프로토콜 처리기는 수신한 데이터를 네트워크 패킷의 페이로드에 인캡슐레이션한다.
단계 530에서, 네트워크 패킷은 네트워크를 통해 USB 호스트로 송신된다.
상기에서 살펴본 도 2, 도 3, 도 4, 도 5 를 종합하여 USB 호스트와 USB 디바이스간의 에뮬레이터를 이용한 네트워크상에서의 통신과정에 대해 살펴보도록 한다.
우선, 토큰 패킷이 SETUP이거나 OUT인 경우에 대해 살펴보도록 한다. USB 호스트 측 에뮬레이터(130)는 USB 호스트(110)로부터 SETUP 또는 OUT 토큰을(이하, SETUP/OUT 토큰이라 기재) 수신한다. 수신된 데이터는 USB 디바이스 제어기에서 분석되는데 USB 호스트 측 에뮬레이터(130)는 이 과정에서 수신한 데이터의 토큰 패킷이 SETUP/OUT 토큰이라는 것을 확인하게 된다.
USB 호스트 측 에뮬레이터는 수신한 데이터의 토큰 패킷과 데이터 패킷을 저장하고 ACK 핸드쉐이크 패킷을 생성한다. 이 때 토큰 패킷과 데이터 패킷은 네트워크를 통해 USB 디바이스 측 에뮬레이터(140)로 전달되어야 하므로 네트워크 프로토콜 처리기에서 인캡슐레이션한다. 인캡슐레이션 결과 네트워크 패킷으로 데이터 형식이 변경되면, 네트워크 패킷은 네트워크를 통해 USB 디바이스 측 에뮬레이터(140)로 송신된다.
한편, ACK 핸드쉐이크 패킷은 USB 호스트(110)로 송신된다. USB 호스트는(110) ACK 핸드쉐이크 패킷을 수신함으로써 송신한 데이터가 제대로 전달되었다는 것을 확인할 수 있다.
USB 디바이스 측 에뮬레이터(140)는 네트워크를 통해 USB 호스트 측 에뮬레이터(130)로부터 송신된 네트워크 패킷을 수신한다. 수신된 네트워크 패킷은 USB 데이터 형식에 맞게 디캡슐레이션된다. 디캡슐레이션된 데이터는 토큰의 종류를 파악하기 위해 USB 호스트 제어기에서 분석된다.
수신 받은 데이터의 종류가 SETUP/OUT 토큰이므로 이에 따른 프로토콜이 진행되게 된다. 토큰 패킷과 데이터 패킷이 USB 디바이스로 송신되고, USB 디바이스로부터 핸드쉐이크 패킷을 입력받는다. 핸드쉐이크 패킷이 ACK인 경우(데이터 수신이 완료되었다는 의미)에는 전송과정이 종료되고, 핸드쉐이크 패킷이 NAK인 경우(데이터 수신이 완료되지 못했다는 의미)에는 USB 디바이스로 토큰 패킷과 데이터 패킷을 재전송한다.
다음으로 토큰 패킷이 IN인 경우에 대해 살펴보도록 한다. USB 호스트 측 에뮬레이터(130)는 USB 호스트(110)로부터 IN 토큰을 수신한다. 수신된 데이터는 USB 디바이스 제어기에서 분석되어 USB 호스트 측 에뮬레이터(130)는 수신한 데이터의 토큰 패킷이 IN 토큰이라는 것을 확인한다.
USB 호스트 측 에뮬레이터는 수신한 데이터의 토큰 패킷을 저장하고 NAK 핸드쉐이크 패킷을 생성한다. 이 때 토큰 패킷은 네트워크를 통해 USB 디바이스 측 에뮬레이터(140)로 전달되어야 하므로 네트워크 프로토콜 처리기에서 인캡슐레이션한다. 인캡슐레이션 결과 네트워크 패킷으로 데이터 형식이 변경되면, 네트워크 패킷은 네트워크를 통해 USB 디바이스 측 에뮬레이터(140)로 송신된다.
한편, NAK 핸드쉐이크 패킷은 USB 호스트(110)로 송신된다.
USB 디바이스 측 에뮬레이터(140)는 네트워크를 통해 USB 호스트 측 에뮬레이터(130)로부터 송신된 네트워크 패킷을 수신한다. 수신된 네트워크 패킷은 USB 데이터 형식에 맞게 디캡슐레이션된다. 디캡슐레이션된 데이터는 토큰의 종류를 파악하기 위해 USB 호스트 제어기에서 분석된다.
수신 받은 데이터의 종류가 IN 토큰이므로 이에 따른 프로토콜이 진행되게 된다. 토큰 패킷이 USB 디바이스로 송신되고, USB 디바이스로부터 데이터 패킷을 입력받는다. 이 때 ACK 핸드쉐이크 패킷이 생성되는데, ACK 핸드쉐이크 패킷은 USB 디바이스로 송신(데이터 패킷이 수신되었음을 확인)된다.
한편 USB 디바이스로부터 수신한 데이터 패킷은 네트워크를 통해 USB 호스트 측 에뮬레이터(130)로 전달될 수 있도록 USB 디바이스 측 에뮬레이터(140)의 네트워크 프로토콜 처리기에서 인캡슐레이션된다. 데이터 패킷이 인캡슐레이션된 네트워크 패킷은 네트워크를 통해 USB 호스트 측 에뮬레이터(130)로 송신된다.
USB 호스트 측 에뮬레이터(130)는 USB 디바이스 측 에뮬레이터(140)가 송신한 네트워크 패킷을 입력받아 디캡슐레이션하여 데이터 패킷을 추출한다. USB 호스트 측 에뮬레이터는 데이터 패킷을 USB 호스트(110)로 송신한다.
상기와 같은 일련의 과정을 통해 USB 호스트(110)와 USB 디바이스(120)는 에뮬레이터(130, 140)를 이용하여 네트워크를 통해 데이터를 송수신할 수 있다.
도 6은 본 발명의 일 실시 예에 따라 USB 호스트와 USB 디바이스간의 통신을 중개하는 에뮬레이터의 구조를 도시한 도면이다.
구체적으로 USB 호스트 측 에뮬레이터(130)는 연결부(600), USB 버스 인터페이스(610), USB 디바이스 제어기(620), 버퍼(630) 및 네트워크 프로토콜 처리부(640)를 포함한다. USB 호스트 측 에뮬레이터(130)는 USB 버스 인터페이스(610)를 통해 USB 호스트(110)로부터 데이터를 수신한다. 이 때 USB 호스트(110)와 USB 호스트 측 에뮬레이터(130)는 USB 케이블을 포함한 연결부를 통해 각각의 USB 버스 인터페이스가 연결되어 데이터의 송수신이 가능하다. 수신된 데이터는 USB 디바이스 제어기(620)로 전송되는데, USB 디바이스 제어기(620)에서는 수신된 데이터의 토큰의 종류를 분석한다.
분석결과에 따라 데이터는 버퍼(630)에 저장되고, 또한 분석결과에 따라 USB 디바이스 제어기(620)에서 핸드쉐이크 패킷을 생성한다. 버퍼(630)에 저장된 데이터는 네트워크 프로토콜 처리기(640)에서 인캡슐레이션 과정을 거쳐 네트워크 패킷 형태로 변형된다. 또한 생성된 핸드쉐이크 패킷은 USB 호스트(110)로 송신된다.
한편, USB 디바이스 측 에뮬레이터(140) 또한 연결부(650), USB 버스인터페이스(660), USB 호스트 제어기(670), 버퍼(680) 및 네트워크 프로토콜 처리부(690)를 포함한다. 구성요소 각각의 역할은 USB 호스트 측 에뮬레이터(130)와 동일하다.
도 7은 본 발명에 따른 USB 장치와 에뮬레이터 사이의 연결부가 연결되는 직렬 인터페이스 엔진(SIE)에서의 데이터 전송을 도시한 도면이다.
우선, USB 장치에서의 데이터 전송 단위를 살펴보면, 데이터 전송 단위에는 프레임(710), 트랜잭션(720), 패킷(토큰 패킷(721), 데이터 패킷(722), 핸드쉐이크 패킷(723))이 있다. 프레임(710)은 트랜잭션(720)의 모임이고, 트랜잭션(720)은 토큰 패킷(721), 데이터 패킷(722), 핸드쉐이크 패킷(723)의 집합이다. 패킷은 USB에서의 최소 전송 단위이다.
모든 USB 호스트와 USB 디바이스(이하 USB 장치라 기재)는 USB 데이터 라인(D+, D-)에 연결되고, USB 장치로부터 또는 USB 장치에게 데이터를 전달하는 직렬 인터페이스 엔진(740)을 가지고 있다.
직렬 인터페이스 엔진(740)은 패킷 아이디를 해독하고, 전달된 CRC 비트를 사용해서 데이터에 대한 에러여부를 확인한다. 그리고 USB 장치에 페이로드 데이터(750)를 전달하며, USB 장치로부터 핸드쉐이크 패킷(760)을 입력받는다.
도 8은 일반적인 USB 데이터의 패킷 구조를 도시한 도면이다.
USB 전송 패킷에는 토큰 패킷(810), 데이터 패킷(820), 핸드쉐이크 패킷(830)이 있다.
우선, 토큰 패킷(810)은 PID(811), ADDR(812), ENDP(813), CRC5(814)의 4가지 필드로 구성되어 있다.
PID(811)에는 IN, OUT, SETUP의 3 종류가 있고, IN은 ADDR(812)과 ENDP(813)에서 지정되는 디바이스의 엔드포인트에서 호스트로의 데이터 전송명령을, OUT은 호스트에서 디바이스의 엔드포인트로의 데이터 전송명령을 각각 의미하고 있다. SETUP은 호스트에서의 컨트롤 전송시 SETUP 커맨드에 사용된다. 토큰 패킷(810)은 5비트의 CRC(814)을 이용하여 ADDR(812)과 ENDP(813)를 보호한다.
데이터 패킷(820)은 PID(821), DATA(822), CRC16(823)의 3가지 필드로 구성되어 있다.
PID(821)에는 DATA0, DATA1의 2종류가 있으며 데이터가 복수의 패킷으로 분할되어 전송될 때 DATA0, DATA1은 동기화를 통해 데이터를 토글할 수 있도록 PID(821)에서 정의되어 있다.
핸드쉐이크 패킷(830)은 트랜잭션의 결과를 보고하는데 사용되고 PID(831)의 한가지 필드로 이루어져 있다. PID(831)로는 ACK, NAK, STALL의 3종류가 있다.
도 9는 본 발명의 일 실시 예에 따라, USB 디바이스와 USB 호스트간에 전송되는 패킷의 구조를 나타낸 도면이다.
본 발명에 따르면 USB 호스트와 USB 디바이스 간의 데이터 전송이 네트워크 상에서 이루어져야 하므로 에뮬레이터를 통해 USB 데이터 포맷을 네트워크 프로토콜에 맞게 변형해야 한다.
네트워크 패킷(900)은 크게 헤더(910)와 페이로드(920) 부분으로 나누어 지는데 헤더(910)는 송신측 IP주소, 수신측 IP 주소, 전체 길이 등 패킷 송수신에 필요한 정보를 담고 있다.
반면 페이로드(920)는 송수신 하고자 하는 데이터를 담고 있는데 본 발명의 경우에는 USB 데이터(930)가 페이로드(920)에 인캡슐레이션된다.
한편, 상술한 본 발명의 실시 예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다.
상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
110: USB 호스트
111: 클라이언트 소프트웨어
112: USB 시스템 소프트웨어
113: USB 버스인터페이스
120: USB 디바이스
121: Function
122: USB 논리디바이스
123: 엔드포인트
124: USB 버스인터페이스
130: USB 호스트 측 에뮬레이터
131: USB 버스인터페이스
132: 직렬 인터페이스 엔진
140: USB 디바이스 측 에뮬레이터
141: USB 버스인터페이스
142: 직렬 인터페이스 엔진

Claims (10)

  1. USB 호스트와 USB 디바이스 간의 통신을 수행하는 통신 장치에 있어서,
    상기 USB 호스트에 포함된 USB 버스인터페이스부의 직렬 인터페이스 엔진(SIE)과 데이터를 송수신하는 직렬 인터페이스 엔진;
    상기 직렬 인터페이스 엔진으로부터 송수신된 상기 데이터의 토큰의 종류를 분석하여 상기 데이터를 처리하는 제어부;
    상기 처리된 데이터를 인캡슐레이션하여 네트워크를 통해 상기 USB 디바이스에 접속된 USB 디바이스 측 통신 장치로 송신하거나 상기 USB 디바이스 측 통신 장치로부터 상기 네트워크를 통해 수신된 네트워크 패킷을 디캡슐레이션하는 네트워크 프로토콜 처리부; 및
    상기 USB 호스트와 상기 통신 장치를 접속하는 연결부를 포함하고,
    상기 제어부는 상기 데이터의 토큰이 IN 패킷을 포함하는 경우, 상기 데이터를 저장하고, 상기 데이터의 토큰이 OUT 패킷 또는 SETUP 패킷을 포함하는 경우, 상기 USB 디바이스 측 통신 장치에 상기 데이터를 전송하도록 상기 네트워크 프로토콜 처리부를 제어하는 통신 장치.
  2. 제 1항에 있어서, 상기 제어부는,
    상기 수신된 데이터의 토큰의 종류에 따라 핸드쉐이크 패킷을 생성하고,
    상기 네트워크 프로토콜 처리부는,
    상기 생성된 핸드쉐이크 패킷을 상기 USB 호스트로 전송하는 통신 장치.
  3. 삭제
  4. 삭제
  5. 제 1 항에 있어서, 상기 직렬 인터페이스 엔진은,
    상기 USB 호스트에 포함된 USB 버스인터페이스부의 직렬 인터페이스 엔진과 상기 연결부를 통해 접속되는 통신 장치.
  6. USB 호스트와 USB 디바이스 간의 통신을 수행하는 통신 장치에 있어서,
    상기 USB 디바이스와 데이터를 송수신하는 직렬 인터페이스 엔진;
    상기 직렬 인터페이스 엔진으로부터 송수신된 상기 데이터의 토큰의 종류를 분석하여 상기 데이터를 처리하는 제어부;
    상기 처리된 데이터를 인캡슐레이션하여 네트워크를 통해 상기 USB 호스트에 접속된 USB 호스트 측 통신 장치로 송신하거나 상기 네트워크를 통해 상기 USB 호스트 측 통신 장치로부터 수신된 네트워크 패킷을 디캡슐레이션하는 네트워크 프로토콜 처리부; 및
    상기 USB 디바이스와 상기 통신 장치를 접속하는 연결부를 포함하고,
    상기 제어부는 상기 데이터의 토큰이 IN 패킷을 포함하는 경우, 상기 데이터를 저장하고, 상기 데이터의 토큰이 OUT 패킷 또는 SETUP 패킷을 포함하는 경우, 상기 USB 호스트 측 통신 장치에 상기 데이터를 전송하도록 상기 네트워크 프로토콜 처리부를 제어하는 통신 장치.
  7. 제 6항에 있어서, 상기 제어부는,
    상기 수신된 데이터의 토큰의 종류에 따라 핸드쉐이크 패킷을 생성하고,
    상기 네트워크 프로토콜 처리부는,
    상기 생성된 핸드쉐이크 패킷을 상기 USB 디바이스로 전송하는 통신 장치.
  8. 제 6 항에 있어서, 상기 직렬 인터페이스 엔진은,
    상기 USB 디바이스의 직렬 인터페이스 엔진(SIE)과 상기 연결부를 통해 접속되는 통신 장치.
  9. 삭제
  10. USB 호스트와 USB 디바이스 간의 통신을 수행하는 통신 시스템에 있어서,
    상기 USB 호스트와 제 1 데이터를 송수신하고, 상기 송수신된 제 1 데이터의 토큰의 종류를 분석하여 상기 데이터를 처리하며, 상기 처리된 데이터를 인캡슐레이션하여 네트워크를 통해 상기 USB 디바이스에 접속된 USB 디바이스 측 통신 장치로 송신하거나 상기 네트워크를 통해 상기 USB 디바이스 측 통신 장치로부터 수신된 제 1 네트워크 패킷을 디캡슐레이션하고, 상기 USB 호스트와 접속되어 있는 USB 호스트 측 통신 장치 및
    상기 USB 디바이스와 제 2 데이터를 송수신하고, 상기 송수신된 제 2 데이터의 토큰의 종류를 분석하여 상기 데이터를 처리하며, 상기 처리된 데이터를 인캡슐레이션하여 상기 네트워크를 통해 상기 USB 호스트 측 통신 장치로 송신하거나 상기 네트워크를 통해 상기 USB 호스트 측 통신 장치로부터 수신된 제 2 네트워크 패킷을 디캡슐레이션하고, 상기 USB 디바이스와 접속되어 있는 상기 USB 디바이스 측 통신 장치를 포함하는 통신 시스템.
KR1020130025259A 2013-03-08 2013-03-08 네트워크 상에서 usb 호스트와 usb 디바이스 간의 통신 방법, 장치 및 기록매체 KR101502147B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130025259A KR101502147B1 (ko) 2013-03-08 2013-03-08 네트워크 상에서 usb 호스트와 usb 디바이스 간의 통신 방법, 장치 및 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130025259A KR101502147B1 (ko) 2013-03-08 2013-03-08 네트워크 상에서 usb 호스트와 usb 디바이스 간의 통신 방법, 장치 및 기록매체

Publications (2)

Publication Number Publication Date
KR20140110623A KR20140110623A (ko) 2014-09-17
KR101502147B1 true KR101502147B1 (ko) 2015-03-13

Family

ID=51756615

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130025259A KR101502147B1 (ko) 2013-03-08 2013-03-08 네트워크 상에서 usb 호스트와 usb 디바이스 간의 통신 방법, 장치 및 기록매체

Country Status (1)

Country Link
KR (1) KR101502147B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101827704B1 (ko) 2016-04-12 2018-03-22 현대자동차주식회사 Usb 멀티 호스트 장치, 그를 포함하는 차량 및 usb 멀티 호스트 장치의 제어방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020025847A (ko) * 2000-09-29 2002-04-04 잘링크 세미콘덕터 브이.엔. 아이엔씨. 데이터 교환 장치용 내부 통신 프로토콜
JP2004005637A (ja) * 2002-05-09 2004-01-08 Mitsubishi Electric Corp インシステムプログラミングのための方法および構成

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020025847A (ko) * 2000-09-29 2002-04-04 잘링크 세미콘덕터 브이.엔. 아이엔씨. 데이터 교환 장치용 내부 통신 프로토콜
JP2004005637A (ja) * 2002-05-09 2004-01-08 Mitsubishi Electric Corp インシステムプログラミングのための方法および構成

Also Published As

Publication number Publication date
KR20140110623A (ko) 2014-09-17

Similar Documents

Publication Publication Date Title
US11122151B2 (en) Multi-protocol gateway for connecting sensor devices to cloud
KR101832797B1 (ko) Usb 디바이스와의 mctp 통신을 수행하기 위한 방법, 장치 및 시스템
US9239808B2 (en) Serial interface for FPGA prototyping
TWI296083B (en) Communication controller, host-side controller, communication system, usb system, communication equipment, communication method, packet-based communication method, packet-based communication program, and storage medium
US7761627B2 (en) Wireless USB hub
KR102173089B1 (ko) 인터페이스 회로 및 그것의 패킷 전송 방법
EP2568665B1 (en) Methods and devices for transmitting scsi packets on a pcie bus
EP1457901A2 (en) System and method for simulating USB smart cards connected to USB host
US20130124877A1 (en) Communication method, communication equipment, and storage equipment
JP2007088775A (ja) 無線通信システム、無線通信装置及び方法
CN108563595B (zh) 一种远距离传输usb数据的系统及方法
CN101763324B (zh) 设备模拟的实现方法和装置
KR101502147B1 (ko) 네트워크 상에서 usb 호스트와 usb 디바이스 간의 통신 방법, 장치 및 기록매체
CN106716392B (zh) 用于串行通信的栈定时调整
KR101088376B1 (ko) Usb 호스트와 usb 디바이스간의 통신 방법 및 이를위한 장치
US20150350014A1 (en) Networking implementation using a converged high speed input/output fabric technology
CN106649187B (zh) 一种芯片自动化外设协议选择的方法
CN108287619A (zh) 一种控制服务器kvm系统的方法、系统及可读存储介质
US20150180777A1 (en) Data processing apparatus and method
CN108664441B (zh) Usb只读控制系统及方法
CN103514125A (zh) 主控端电子装置以及主控端操作方法
US20210157757A1 (en) Data conversion device and data conversion system
JP4582180B2 (ja) データ伝送装置
EP4092969A1 (en) Monitoring controller area network (can) xl nodes
TWI459305B (zh) 終端機模擬方法及系統

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee