USB Driver Interface(USBDI) 라고부른다. * 호스트컨트롤러드라이버 (xhcd) 호스트컨트롤러하드웨어와 USBD 사이에존재하는소프트 웨어영역을제공한다. * 호스트컨트롤러 (xhc) 보통 Low Speed, Full Speed, High Speed,

Size: px
Start display at page:

Download "USB Driver Interface(USBDI) 라고부른다. * 호스트컨트롤러드라이버 (xhcd) 호스트컨트롤러하드웨어와 USBD 사이에존재하는소프트 웨어영역을제공한다. * 호스트컨트롤러 (xhc) 보통 Low Speed, Full Speed, High Speed,"

Transcription

1 10 장 xhci(extensible Host Controller Interface) USB 호스트시스템 (Host System) 은많은수의하드웨어와소프트웨어영역으로구성된다. [ 그림 10-1] 은개념적인호스트시스템을구성하는각종영역이어떻게연결되는지를보여주는 블록다이어그램을보여준다. 그림 10-1 USB 3.0 시스템블록다이아그램 * 응용프로그램소프트웨어 (Application Software) 응용프로그램소프트웨어는클래스드라이버 에의해서제공되는표준화된인터페이스를통해서 USB 디바이스와데이터를송, 수신한다. * 클래스드라이버소프트웨어 (Class Driver Software) USB 디바이스의소위클래스 (Mass Storage, Human Interface, Audio, 등등 ) 에대응하는호스트의소프트웨어를의미한다. 클래스드라이버는대게운영체제가제공하는드라이버와제조사가 USB 디바이스와함께제공하는드라이버로구분된다. * USB 드라이버 (USBD) USBD 는시스템소프트웨어버스드라이버이다. 복수개의호스트컨트롤 러드라이버와복수개의클래스드라이버간의연결을책임진다. USBD 가제공하는인터페이스를

2 USB Driver Interface(USBDI) 라고부른다. * 호스트컨트롤러드라이버 (xhcd) 호스트컨트롤러하드웨어와 USBD 사이에존재하는소프트 웨어영역을제공한다. * 호스트컨트롤러 (xhc) 보통 Low Speed, Full Speed, High Speed, Super Speed 를지원하는 USB 3.0 호스트컨트롤러를의미한다. 호스트컨트롤러가호스트컨트롤러드라이버와대화하는방식 을호스트컨트롤러인터페이스 (xhci) 라고부른다. * USB 디바이스 (USB Device) 호스트컨트롤러하드웨어가통신하는대상의디바이스를 USB 디 바이스라고부른다. 이것은허브디바이스를포함한다. 그림 10-2 USB 3.0 extensible Host Controller [ 그림 10-2] 는호스트컨트롤러의내부를블록다이아그램으로보여주고있다. USB 3.0 호스트컨트롤러는 Low Speed, Full Speed, High Speed, Super Speed 인터페이스를모두 지원한다. 그리고복수개의 Down Stream Port 를가진다. 이것은루트허브의역할을수행한다.

3 이번장에서중요하게다룰부분은 Host Interface(xHCI) 이다. 호스트컨트롤러 (xhc) 는 xhci 를통해 서호스트컨트롤러드라이버와대화를한다. 이것을채널이라고도부른다 아키텍쳐개관 인터페이스아키텍쳐 (Interface Architecture) 그림 10-3 호스트컨트롤러인터페이스 (xhci) 의일반적인아키텍쳐 [ 그림 10-3] 을보면, 크게 3 개의인터페이스공간을정의하고있다. * 호스트컨피규레이션영역 (Host Configuration Space) xhc 는 PCI Config Space 라고불리는공 간을사용해서열거된다. 이공간은내부레지스터를접근하기위한 Base Address 들과 PCI Extended Capability 특성정보를포함하고있다. * 메모리맵드영역 (Memory Mapped IO Space, MMIO) xhc 는시스템소프트웨어에게메모리

4 맵드형태의레지스터를제공한다. 이공간은일반적인 xhc 의동작과관련된레지스터들과실시 간제어상태레지스터 (Runtime Control Status Register) 와도어벨 (Doorbell) 배열등을제공한다. * 호스트메모리공간 (Host Memory Space) xhc는램 (RAM) 메모리공간에트리혹은리스트 (List) 자료구조를구성한다. 이것은실시간으로 xhc에의해서업데이트되고참조되는공간이다. 시스템소프트웨어는모든전송작업 ( 컨트롤전송, 인터럽트전송, 벌크전송, 등시성전송 ) 에관계된전송요청블럭을호스트메모리공간에존재하는트리혹은리스트의항목 ( 트랜잭션환형버퍼 ) 내부로추가기술하고 xhc는이것을참고하여트랜잭션을시작한다 xhci 데이터자료구조 xhci 는호스트메모리공간에다양한자료구조를정의하여시스템소프트웨어와대화를한다. 여기에사용되는자료구조는다음과같다 Device Context Base Address Array 호스트에연결되는모든 USB 디바이스는각각 Device Context 자료구조를사용해서대화한다. 이와같은 Device Context를보관하고있는배열정보를 Device Context Base Address Array( 줄여서 DCBAA) 라고부른다. DCBAA의배열의특정항목을담는공간을디바이스슬롯 (Slot) 이라고부른다. 이곳에 Device Context 가보관된다 Device Context 하나의 Device Context 는하나의 USB 디바이스와대화를하기위한자료구조이다. Device Context 는 32 개의배열로구성된다. 이중첫번째항목 ( 인덱스 = 0) 을 Slot Context 라고부른다. 나머지항 목들 ( 인덱스 = 1-31) 을 Endpoint Context 라고부른다 Slot Context Device Context 와 Input Context 의맴버로서사용되는 Slot Context 는디바이스혹은디바이스가 가진모든엔드포인트에게영향을미치거나현재의상태를알려주는파라미터들로구성된다. Slot Context 는사용되는목적에따라서크게 2 가지로구분된다. 각각의목적에따라서사용되는

5 Slot Context 는존재하는위치가서로다르다. Device Context 의맴버로사용되는경우, 시스템소프트웨어에게현재디바이스혹은디바이스가가진모든엔드포인트에게영향을미치는 현재파라미터값을보고하는용도로사용된다. 이런경우 Output Slot Context 라고도부른다. 이 것을통상 Slot Context 라고생각한다. Input Context 의맴버로사용되는경우, 시스템소프트웨어는 xhc 에게디바이스혹은디바이스가가진엔드포인트에게영향을미칠수있 는파라미터값을전달하는용도로사용된다. 이런경우 Input Slot Context 라고도부른다. 이것은 Device Context 가가지는 32 개의배열의첫번째항목이아니다 Endpoint Context Device Context 와 Input Context 의맴버로서사용되는 Endpoint Context 는디바이스가가진각각 의엔드포인트에게영향을미치거나현재의상태를알려주는파라미터들로구성된다. Endpoint Context 는사용되는목적에따라서크게 2 가지로구분된다. 각각의목적에따라서사용 되는 Endpoint Context 는존재하는위치가서로다르다. Device Context 의맴버로사용되는경우, 시스템소프트웨어에게현재디바이스가가진특정엔드포인트의현재파라미터값을보고하는용도로사용된다. 이런경우 Output Endpoint Context 라고도부른다. 이것을통상 Endpoint Context라고생각한다. Device Context가가지는 32개의배열의인덱스 1-31까지의항목이여기에해당한다. Input Context 의맴버로사용되는경우, 시스템소프트웨어는 xhc 에게디바이스가가진특정엔드포인트에게영향을미칠수있는파라

6 미터값을전달하는용도로사용된다. 이런경우 Input Endpoint Context 라고도부른다. 이것은 Device Context 가가지는 32 개의배열에포함되는항목이아니다 Input Context 디바이스의파라미터혹은디바이스가가진엔드포인트를위한파라미터를변경하고자하는요청요하려할때, 시스템소프트웨어는 Input Context의내용을변경한다. Input Context는 Slot Context와 Endpoint Context를포함하고있다. 이것들은모두변경하고자하는파라미터값을기록하는데사용된다. Input Context 는 Input Control Context 자료구조를추가로정의하고있다. Input Control Context 는 지정하는엔드포인트를현재사용중인 Device Context 로추가혹은변경요청하는 Add 계열과 사용중인엔드포인트를 Device Context 에서제거하는 Drop 계열로구분된다 Ring 그림 10-4 Transfer Ring 의구조

7 Ring 은환형버퍼자료구조로구현된다. xhc 는몇개의 Ring 을통해서시스템소프트웨어에의해 서전송요청을접수하거나결과를시스템소프트웨어에게보고한다. * 명령 Ring(Command Ring) xhc 는하나의명령 Ring 을가지고있다. 이곳을통해서수용하는 명령어는 xhc 에게영향을미치는명령들이다. 이명령은 절에서소개한다. * 이벤트 Ring(Event Ring) 인터럽트신호와관련된사건 ( 결과 ) 을보고하는용도로사용하는 Ring 을의미한다. xhc 가하나의인터럽트를사용하는경우에는하나의이벤트 Ring을가진다. 효과적인동작을위해서 MSI(Message Signaled Interrupt) 를지원하는경우에는해당하는메시지의개수만큼이벤트 Ring을가진다. * 전송 Ring(Transfer Ring) 컨트롤전송요청, 인터럽트전송요청, 벌크전송요청그리고등시성 전송요청을위해서사용되는 Ring 자료구조로서, 엔드포인트마다하나씩가지고있다. [ 그림 10-4] 를보면, Ring 은복수개의 TRB(Transfer Request Block) 으로구성된다. TRB 는단독으로

8 혹은복수개가하나의 Transfer Descriptor 로의미를가진다. Ring 은환형버퍼이기때문에넣는위치 (,Enqueue Pointer) 와뽑아내는위치 (Dequeue Pointer) 를가 지고있다. 시스템소프트웨어는이와같은 Ring 의 Enqueue Pointer 를사용해서새로운 TRB 를추 가한다. xhc 는 Dequeue Pointer 를사용해서하나씩 TRB 를끄집어내어실행한다 Transfer Request Block(TRB) TRB 는물리적으로연속적인메모리블럭의주소, 크기와추가적인제어정보등을포함한다. TRB 가표현하는메모리블럭의최대크기는 64KBytes 이다.

9 그림 10-5 Transfer Ring 의구조 Scatter/Gather 전송 가상메모리환경은불연속적인물리메모리페이지들이마치연속적인것처럼보이게하는기능을가 지고있다. xhc 는하드웨어이기때문에이런가상메모리환경을사용하지못한다. 불연속적인물리 메모리페이지를효과적으로사용할수있도록 xhc 는 Scatter/Gather 전송방법을사용할수있다.

10 그림 10-6 Scatter/Gather 전송예시 [ 그림 10-6] 을보자. Transfer Ring 속에는 3 개의 TRB 가발견되고있다. 그런데, 이들각각의 Ctrl 필드를보면, Chain 의 의미를가진 2 개의 TRB 가보인다. 이것은전체적으로 3 개가하나의전송을표현한다는의미로사 용된다 제어전송 USB 제어전송은총 3 가지단계 (Setup 단계, 데이터단계그리고 Status 단계 ) 로구성된다. Setup 단계를위해서하나의 Setup 단계 TD(Transfer Descriptor) 를준비한다. 이것은 8 바이트셋 업데이타를담는다. 이어서필요에따라서데이터단계를위한데이터단계 TD 를준비한다. 마지막으로처리결과를

11 위한 Status 단계 TD 를준비한다. 그림 10-7 제어전송예시 [ 그림 10-7] 을보자. 그림속에서두개의제어전송 (1), (2) 를볼수있다. (1) 제어전송은별도의데이터단계를가지지 않는다. (2) 제어전송은 IN 방향을가지는데이터단계를가지고있다. 두가지전송모두 Setup 단계와 Status 단계를위한각각의 TRB 를가지고있으며, Setup 단계는 8 바이트데이터 (Setup Data) 를정의하고있다. 특별히 Setup 단계에사용되는 Immediate 상수는 8 바이트 Setup Data 를별도의데이터버퍼를준 비하지않고 TRB 내부의필드를그대로사용한다는의미로사용된다. 때문에데이터단계때사용 되는 Data 를위한별도의 TRB 를가지지않고 8 바이트 Setup Data 를 Setup TRB 에포함할수있다.

12 벌크, 인터럽트전송 벌크와인터럽트전송은일반적인 TRB 형태를그대로사용한다. 제어전송에서사용되던데이터단 계에서나타나는 TRB 구조를그대로사용한다 등시성전송 그림 10-8 등시성전송예시 [ 그림 10-8] 은등시성전송의예시를보여주고있다. 하나의 TD(Transfer Descriptor) 는하나혹은복수개의 TRB 로구성될수있다. 등시성전송에서는 하나의 TD 는 TRB 의 Ctrl 필드가가리키는 Frame ID(ms 단위의시간 ) 시간에전송을시작하는데이 터읽기혹은쓰기요청을표현한다.

13 명령인터페이스 (Command Interface) xhc 는연결되는 USB 디바이스를관리하기위해서 Command Ring 인터페이스를사용한다. xhc 가가지는 Command Ring 은오직한개다. 이곳에기록되는내용을 Command Descriptor(CD) 라고부른다. Command Descriptor 는다양한종류의명령어를포함하고있다. 모든명령은처리가완료될때 Event Ring 속에 Command Completion Event 를만들어서보관한 다. 시스템소프트웨어는이것을읽어보아명령의처리상태를확인한다. Command Descriptor 를구성하는 TRB 는다음과같은명령어에따라서가변적인파라미터를가지 고있다 No Op 해당하는명령어는 xhc 와 USB 디바이스에게아무런영향을미치지않는테스트용도의명령어이 다 Enable Slot 시스템소프트웨어는 xhci 를사용해서새로운디바이스슬롯을예약한다. 슬롯을예약하는이유 는예약된슬롯공간에 Device Context 자료구조를만들어서담기위해서이다. 이와같은작업은새 로운 USB 디바이스가 USB 호스트시스템에서탐지되었기때문이다 Disable Slot 사용이끝난 Device Context 를메모리에서해제하고나면, 더이상디바이스슬롯을사용할필요 가없다. 이런경우, 시스템소프트웨어는 xhci 를사용해서더이상사용하지않는슬롯을해제하 도록요청한다 Address Device USB 디바이스는리셋이후디폴트주소를사용한다. 이후호스트에의해서적당한주소가지정되 어야한다. 호스트에서 USB 디바이스에게주소를지정하는방법은제어전송명령을사용하는방

14 법과 Address Device 명령어를사용하는 TD 를작성해서 Command Ring 을사용하는방법으로나 뉜다. 여기서는 Address Device 명령어를사용하는방법을말하고있다 Configure Endpoint USB 디바이스는적당한주소가지정된이후엔드포인트의활성화를위해서셋업 (Configuration) 되어야한다. 이작업은제어전송명령을사용하는방법과 Configure Endpoint 명령어를사용하는 TD를작성해서 Command Ring을사용하는방법으로나뉜다. 여기서는 Configure Endpoint 명령어를사용하는방법을말하고있다 Evaluate Context Full Speed를사용하는 USB 디바이스의경우, 디폴트엔드포인트의 MaxPacketSize값이 8, 16, 32, 64중에한가지를사용할수있다. 하지만, 호스트에서는이값이 8 이라고가정한다. 따라서, 시스템소프트웨어는디바이스로부터 Device Descriptor를읽은뒤, 이곳에기술된 MaxPacketSize값을확인하여이값이 8 이아닌경우, 적당한값으로 Device Context의내용을수정해야한다. 또한, 디바이스로부터얻은정보들 ( 예, Max Exit Latency) 을사용해서현재 Device Context 의내용 을수정해야한다. 이와같은작업을하기위해서 Evaluate Context 명령어를사용한다 Reset Endpoint USB 디바이스의엔드포인트가정지 (Halt) 된경우, 해당하는엔드포인트의정지상태를회복하는데 사용하는명령어이다 Stop Endpoint USB 디바이스의엔드포인트와대화를하는 xhc로하여금잠시동안이런대화를중지또는취소하라는요청의의미로사용되는명령어이다. Endpoint 가중지되면, 관련된 Transfer Ring 의동작이중지된다. 이때, 시스템소프트웨어는보다우선순위가높은 TD(Transfer Descriptor) 를준비해서 Transfer Ring의 Dequeue Pointer로옮길수있다.

15 Set TR Dequeue Pointer xhci 에서사용되는엔드포인트를위한 Transfer Ring 의 Dequeue Pointer 의값을변경하는명령어 이다. 보통 Stop Endpoint 명령어를사용한뒤에이명령어를사용할수있다 Reset Device 시스템소프트웨어는 xhc 에게특정디바이스의상태가리셋되었다는사실을이명령어를통해서 알린다. 이명령을받은 xhc 는디바이스를위해서사용되던 Device Slot 의정보를초기화한다. 다음은초기화하는정보에대한내용이다. 슬롯상태 (Slot State) = Default USB Device Address = 0 Default Endpoint 를제외한나머지엔드포인트를위한 Endpoint Context 슬롯상태 = Disabled Force Event 가상머쉰관리자 (Virtual Machine Manager, VMM) 의기능을사용해서실제존재하지않는 USB 디바이스가존재하는것처럼흉내내도록하는명령어로사용된다. 이기능은 xhc 가가지고있는 가상머쉰기능이활성화된경우에만사용될수있다. 선택적으로사용된다 Negotiation Bandwidth 루트허브가사용하는대역폭에대한사용정도를변경하는데사용하는선택적인명령어이다 Set Latency Tolerance Value USB 3.0에서소개된효과적인전원관리방법으로사용되는 LTM(Latency Tolerance Message) 는디바이스로하여금호스트에게적당한 BELT(Best Effort Latency Tolerance) 값을알리도록권장하고있다. 이와같은기능을사용하는 USB 디바이스와 xhc가대화를하기위해서는디바이스가알려주는 BELT값이호스트에의해서사용되어져야한다. 시스템소프트웨어는디바이스가전달하는 LTM메시지를수신하여이속에들어있는 BELT값을읽어서, 향후 xhc가디바이스와대화를할때

16 참고할수있도록 xhc 에게알려주어야한다. 이때사용하는명령어이다 Get Port Bandwidth 루트허브가현재사용하고있는각각의포트가연결되어사용중일때, 연결된디바이스의속도와 관련해서전체적인대역폭의몇퍼센트씩포트가사용하고있는지를확인할때사용하는명령어이 다 Force Header USB 3.0 에서사용되는프로토콜패킷중에서 TP(Transaction Packet), LMP(Link Management Packet) 등과같은 Header Packet 을디바이스로강제로전송하고자할때사용한다 동작모델 (Operational Model) 이번절에서는시스템소프트웨어가어떤식으로 xhc 를초기화하고, 이후 USB 디바이스가 USB 호 스트에서검색된이후진행하는작업순서, USB 디바이스가제거될때수행하는작업등을살펴보도 록한다 명령어동작 xhc 는하나의 Command Ring 을가지고있다. Command Ring 을제어하는데사용하는레지스터는 Operational Register 공간안에서찾을수있다 [ 그림 10-3 참고 ] 호스트컨트롤러초기화 호스트컨트롤러초기화과정은전원이 xhc 에인가된이후최초에수행되어져야하는작업이다. 또한, 새로운 USB 디바이스가검색되기전에반드시먼저수행되어져야하는작업이기도하다.

17 그림 10-9 xhc 호스트컨트롤러 PCI Configuration Space [ 그림 10-9] 는실제 xhci 인터페이스를충실하게따르는알려진호스트컨트롤러하드웨어를사용 해서실전에서어떻게 PCI(PCIe) 버스에서사용되는지를보여주는그림이다. 그림을보면, xhc 하드웨어가제공하는 BAR1 의값이 0xFE300004( 메모리주소로는 0xFE300000) 인 것을알수있다. 호스트컨트롤러를초기화하려면이와같은주소를먼저할당받아야한다. 그림에서이주소는 0xFE 번지가된다. 레지스터맵에대한구체적인내용은이후에다시설명할예정이지만, 이번절에서초기화과정을 설명하는데필요한부분만큼은미리설명을하도록하겠다.

18 그림 xhci 레지스터맵의개요 [ 그림 10-10] 을보자. BAR 기준주소 0xFE 번지를따라가면, 제일먼저 Capability Registers 와이어지는 Operational Registers 가나타난다. 이후나머지레지스터들과자료구조들은포인터들에의해서찾 아가게된다. 표 10-1 Capability Registers 오프셋 바이트크기 별칭 이름 00h 1 CAPLENGTH Capability Register Length 01h 1 사용안함 02h 2 HCIVERSION Interface Version Numbre 04h 4 HCSPARAMS1 자료구조파라미터 08h 4 HCSPARAMS2 자료구조파라미터

19 0Ch 4 HCSPARAMS3 자료구조파라미터 10h 4 HCCPARAMS1 Capability 파라미터 14h 4 DBOFF Doorbell 오프셋 18h 4 RTSOFF 런타임레지스터공간오프셋 1Ch 4 HCCPARAMS2 Capability 파라미터 20h CAPLENGTH 20h 사용안함 [ 표 10-1] 에서보여주는 Capability Registers 의전체길이는 CAPLENGTH 필드에의해서결정된다. 이곳에기록된크기만큼 Capability Registers 가존재한뒤, 이어서 Operational Registers 가나타난 다. 표 10-2 Operational Registers 오프셋 별칭 이름 00h USBCMD USB Command 04h USBSTS USB Status 08h PAGESIZE Page Size 0Ch-13h 사용안함 14h DNCTRL Device Notification Control 18h CRCR Command Ring Control 20h-2Fh 사용안함 30h DCBAAP Device Context Base Address Array Pointer 38h CONFIG Configure 3Ch-3FFh 사용안함 400h-13FFh Port Register 집합 1부터 MaxPorts까지기술됨 표 10-3 Port Register(Host Controller USB Port Register 집합 ) 오프셋 별칭 이름 00h PORTSC Port 상태와제어 04h PORTPMSC Port 전원관리상태와제어 08h PORTLI Port 링크정보 0Ch PORTHLPMC Port 하드웨어 LPM 제어

20 그림 Capability Registers 와 Operational Registers 의내용, 예시 [ 그림 10-11] 은 [ 표 10-1], [ 표 10-2] 에서보여준레지스터중에서중요한것들을선택적으로보여 주고있다. 1) 전원이공급된이후, USBSTS 레지스터의 CNR(Controller Not Ready) 플래그의값이 0 이될때 까지기다려야한다. 2) CONFIG 레지스터의 MaxSlotsEn 필드의값을 ENABLE 값으로기록하여시스템소프트웨어가앞 으로 Device Slot 을사용할수있도록한다. 3) Device Context Base Address Array Pointer(DCBAAP) 레지스터의값을적당한메모리주소값으로 기록한다. 기록된공간은앞으로 Device Slot 을위한공간으로사용된다. 4) Command Ring Control Register(CRCR) 을프로그래밍하여 Command Ring Dequeue Pointer 가 적당한메모리주소값을가리키도록한다. 이곳은 Command Ring 의첫번째 TRB(Transfer Request

21 Block) 을가리키게된다. 5) MSI, MSI-X 인터럽트관련초기화작업을수행한다.( 관련내용은 PCI 스팩을참고한다 ) 6) MSI, MSI-X 에서사용하려는인터럽트메시지의개수만큼인터럽터 (Interrupter) 를초기화한다. 이작업은 Event Ring 관련된초기화작업을의미한다. 7) USBCMD 레지스터의 INTE 필드의값을 1 로기록하여인터럽트 (Interrupter) 를가능하도록한 다. 8) 런타임레지스터, Interrupter Management 레지스터의 IE 필드의값을 1 로기록한다. 9) USBCMD 레지스터의 Run/Stop(R/S) 필드의값을 1 로기록하여호스트컨트롤러가동작을시작 하도록하고, 도어벨 (Doorbell) 참조가가능하도록한다. 이제호스트컨트롤러는초기화되었다. 루트허브포트도함께준비가된다. 루트허브는포트에 특정디바이스가연결되는것을기다리는상황이되었다. [ 표 10-3] 을보면, 루트허브와관련된레지스터정보를확인할수있다. 루트허브정보는허브가지원하는포트수에따라서가변적인크기를가지고있다. 하나의포트는 16 바이트의정보로구성된다. [ 표 10-4] 는허브포트레지스터들중에서본절을설명하는데필요한레지스터만간추려서정리해 보았다. 대부분의내용은 USB 3.0, USB 2.0 스팩에서설명하는내용이므로중복설명은피하도록 하겠다. 표 10-4 Port 상태와제어레지스터 (PORTSC) PLS PR OCA 사용안함 PED CCS 이어짐 PIC Port Speed PP

22 CEC PLC PRC OCC WRC PEC CSC LWS WPR DR 사용안함 WOE WDE WCE CAS 요약이름 전체이름 값 의미 CCS Current Connect Status 0 포트에디바이스가연결되어있지않다 1 포트에디바이스가연결되어있다 PED Port Enabled/Disabled 0 포트가사용금지되어있다 1 포트가사용허용되어있다 OCA Over Current Active 0 포트가과전류상태가아니다 1 포트가과전류상태이다 PR Port Reset 0 포트가리셋과정중이아니다 1 포트가리셋과정중이다 PLS Port Link State 0 읽기 링크상태가 U0 상태임 쓰기 링크상태를 U0 상태로전환 1 읽기 링크상태가 U1 상태임 쓰기 사용안함 2 읽기 링크상태가 U2 상태임 쓰기 USB2에서만사용. 링크상태를 U2 상태로전환 3 읽기 링크상태가 U3 상태임 쓰기 링크상태를 U3 상태로전환 4 읽기 링크상태가 U0 상태임 쓰기 사용안함 5 읽기 링크상태가 RxDetect 상태임 쓰기 USB3에서만사용. 링크상태를 RxDetect상태, Port상태를 Disconnected상태로전환 6 읽기 링크상태가 Inactive 상태임 쓰기 사용안함 7 읽기 링크상태가 Polling 상태임 쓰기 사용안함 8 읽기 링크상태가 Recovery 상태임 쓰기 사용안함 9 읽기 링크상태가 Hot Reset 상태임 쓰기 사용안함

23 10 읽기 링크상태가 Compliance 상태임 쓰기 USB3에서만사용. 링크상태를 Compliance상태로전환 11 읽기 링크상태가 Test Mode 상태임 쓰기 사용안함 12 읽기 사용안함 쓰기 사용안함 13 읽기 사용안함 쓰기 사용안함 14 읽기 사용안함 쓰기 사용안함 15 읽기 링크상태가 Resume 상태임 쓰기 USB2에서만사용. 링크상태를 U3상태, Port상태를 Resume상태로전환 PP Port Power 0 Port상태가 Power Off상태 1 Port상태가 Power Off상태가아님 Port Speed Port Speed 0 사용안함 1-15 Protocol Speed ID(PSI) 값 PIC Port Indicator Control 0 Port Indicators(PIND) Off 1 Amber 2 Breen 3 사용안함 LWS Port Link State Write Strobe 0 PLS필드의내용을변경하는것을금지 1 PLS필드의내용을변경하는것을허용 CSC Connect Status Change 0 CCS 필드값이변하지않았다 1 CCS 필드값이변함 1을기록하면클리어됨 PEC Port Enabled/Disabled 0 PED 필드값이변하지않았다 Change 1 PED 필드값이변함 1을기록하면클리어됨 WRC Warm Port Reset Change 0 Warm Reset 과정이진행중이지않다 1 Warm Reset 과정이끝났다 1을기록하면클리어됨 OCC Over Current Change 0 OCA 필드값이변하지않았다 1 OCA 필드값이변함 1을기록하면클리어됨 PRC Port Reset Change 0 PR 필드값이변하지않았다

24 1 PR 필드값이변함 1을기록하면클리어됨 PLC Port Link State Change 0 PLS 필드값이변하지않았다 1 PLS 필드값이다음의조건으로변함 U3 -> Resume Resume -> Recovery -> U0 Resume -> U0 U3 -> Recovery -> U0 U3 -> U0 U2 -> U0 U1 -> U0 Any State -> Inactive Any State -> U3 1을기록하면클리어됨 CEC Port Config Error Change 0 링크파트너설정상태변화없음 1 링크파트너설정상태에러발생 1을기록하면클리어됨 CAS Cold Attach Status 0 변화없음 1 링크상의 Far End Receiver Termincation 이발견됨 (Super Speed Transmitter 발견됨 ) WCE Wake on Connect Enable 0 기능을사용안함 1 디바이스연결시, 시스템깨우기기능활성 WDE Wake on Disconnect Enable 0 기능을사용안함 1 디바이스제거시, 시스템깨우기기능활성 WOE Wake on Over Current Enable 0 기능을사용안함 1 과전류시, 시스템깨우기기능활성 DR Device Removable( 읽기전용 ) 0 연결된디바이스를제거할수없는상태 1 연결된디바이스를제거할수있는상태 WPR Warm Port Reset 0 기능을사용안함 1 USB3에서만사용 Warm Reset기능을시작한다 표 10-5 Port 전원상태와제어레지스터 (PORTSC) 사용안함 FLA U2 Timeout U1 Timeout

25 U1 Timeout Super Speed Link U1 Timeout 값. 단위 us 사용범위 00h 7Fh, FFh : 무한시간 U2 Timeout Super Speed Link U2 Timeout 값. 단위 256us 사용범위 00h FEh, FFh : 무한시간 FLA Force Link PM Accept. 값 0 : 루트허브는연결된디바이스로 Set Link Function LPM 패킷을전송할때, Force_LinkPM_Accept 비트를 0 으로사용한다. 값 1 : 루트허브는연결된디바이스로 Set Link Function LPM 패킷을전송할때, Force_LinkPM_Accept 비트를 1 으로사용한다 특정디바이스가허브에연결될때수행하는작업 본절에서는특정디바이스가루트허브에연결될때수행하는작업에초점을맞춘다. HCRST 필드의값이 1 이거나 PLS 필드의값이 RxDetect 인상태에서, 루트허브의모든포트는 Disconnect 상태를유지한다. 이때는 PP 필드의값이 1 이고, 디바이스가포트에연결되는상태를 기다리는상황이다. 디바이스가포트에연결되는상황은 USB3 과 USB2 가조금다르게시작한다 * USB3, 루트허브의포트가 Polling 상태가된다. Polling 작업이성공적으로끝나면, 포트는 Enabled 상태가되고, CCS 와 CSC 는모두 1 값을가진다. * USB2, 루트허브의포트가 Disabled 상태가된다. CCS 와 CSC 는모두 1 값을가진다.

26 포트의상태가 Disabled 상태가된다는의미는 USB3 과 USB2 가다른의미로해석된다. USB3 에서포트가 Disabled 상태가되면, 포트상태다이아그램의 DSPORT.Disabled 상태를의미한 다. 다음이어지는과정은디바이스가연결된이후에호스트측면에서수행하는작업이다. 1) 디바이스가허브의포트에연결되면, CCS 와 CSC 필드의값이 1 이된다. CSC 필드의값이 0 에서 1 로바뀌면 xhc 는 Port Status Change Event 를발생시킨다. 2) Port Status Change Event 가발생하면, 시스템소프트웨어는이벤트를발생시킨포트를확인한 다.(Port ID) 3) 시스템소프트웨어는이벤트를발생시킨포트의 PORTSC 레지스터값을읽는다. CCS 값이 1 인지 0 인지를확인하여디바이스가연결된상태를확인한다. * USB3에서, 포트의상태는자동으로 Enabled상태로바뀐다. PED필드의값은 1 이된다. PR필드의값은 0 이된다. PLS필드의값은 0 이된다. 연결된디바이스의상태는 Default 상태가된다. 에러가발생하면, 포트의상태는자동으로 Disconnected상태로바뀐다. PED필드의값은 0 이된다. PR 필드의값은 0 이된다. PLS필드의값은 5 (RxDetect) 가된다. 에러가발생한다하더라도연결된디바이스에게전원을계속공급한다. * USB2에서, 시스템소프트웨어는포트를리셋한다. 이작업은포트의상태를 Enabled 상태로바꾸고, 디바이스의상태를 Powered 상태에서 Default 상태로바꾸게된다. 연결이성공하면 PED와 PR필드의값은모두 0 이되고, PLS필드의값은 7 (Polling) 이된다. 시스템소프트웨어는포트를리셋한뒤, PRC필드의값이바뀌는이벤트로인해 Port Status Change Event가발생하기를기다린다. 포트리셋과정이끝나면, PRC와 PED필드의값은모두 1 이되고 PR필드의값은 0, PLS필드의값은 0 (U0) 상태가된다. PRC필드의값이 0 에서 1 로바뀌면, xhc는 Port Status Change Event 사건을발생시킨다. 리셋과정은 USB2 디바이스의상태를 Default 상태로만들고, SET_ADDRESS 명령을기다리게한다. 4) 포트의상태가성공적으로 Enabled 상태가되면, 시스템소프트웨어는 Enable Slot Command(Command Ring) 명령을사용해서새로운디바이스슬롯 (Device Slot) 을얻는다. 5) 디바이스슬롯을얻은뒤, 시스템소프트웨어는슬롯과관련된모든자료구조를준비한다.

27 디바이스슬롯과관련된자료구조를준비하는과정을조금더세부적으로살펴보도록한다. 5-1) Input Context 를위한메모리를할당하고값 0 으로초기화한다. 5-2) Input Context 의 Input Control Context 의 A0, A1 필드의값을 1 로기록한다. 이것은 Input Context 의내용중에서 Slot Context 와디폴트엔드포인트 Context 만변경하도록요청한다. 5-3) Slot Context 자료구조의내용을초기화한다. 5-4) 디폴트엔드포인트를위한 Transfer Ring 을할당하고초기화한다. 5-5) 디폴트엔드포인트 Context 를초기화한다. 5-6) Output Device Context 자료구조를할당하고값 0 으로초기화한다. 6) 슬롯을위한자료구조들의초기화과정이끝나면, 시스템소프트웨어는 Address Device Command(Command Ring) 명령을사용해서연결된디바이스에게주소를할당한다. 7) LS, HS, SS 디바이스의디폴트엔드포인트의 MaxPacketSize는각각 8, 64, 512 를사용한다. 하지만, FS의값은 8, 16, 32, 64중에임의의값을사용하기때문에, 적당한값을얻어내기위해, FS의디바이스는시스템소프트웨어로부터 GET_DSCRIPTOR 명령을통해 Device Descriptor를제공한다. 이곳에기록된 MaxPacketSize0 필드의값을읽은시스템소프트웨어는이값을사용해서 xhc의디바이스슬롯정보를변경요청한다. 이와같은변경요청은 Evaluate Context Command(Command Ring) 명령어에의해서수행된다. 8) 디바이스의상태를 Configured 상태로바꾸기위해서, 시스템소프트웨어는디바이스로부터필 요로하는모든디스크립터정보를충분하게얻는다. 여기에는 Configuration Descriptor 가포함된 다. 9) 시스템소프트웨어는 Evaluate Context Command(Command Ring) 명령어를사용해서추가적 으로변경할디바이스슬롯자료를준비한다. 여기에는 Max Exit Latency 시간정보가포함된다. 10) 보통여기서부터는시스템소프트웨어보다는클래스드라이버 (Class Driver) 가작업을주도하는 것이일반적이다.( 리눅스운영체제는이작업역시시스템소프트웨어가처리한다 ) 클래스드라이버는 Configure Endpoint Command(Command Ring) 명령어를사용해서 xhc 가디바 이스로 SET_CONFIGURATION 명령을전달하도록요청한다. 이작업을통해디바이스의상태는 Addressed 상태에서 Configured 상태로전환된다. 11) 클래스드라이버는선택적으로 Alternate Interface 를지정하는작업을요구할수있다.

28 특정디바이스가허브에서제거될때수행하는작업 본절에서는루트허브에연결된특정디바이스가제거되는작업에초점을맞춘다. 디바이스가 Root Hub Port로부터제거될때, PORTSC의 CCS필드는값 0 으로초기화될것이다. 그리고 CSC필드는값 1 로기록될것이다. 만일 PSCEG필드의값이값 0 이값 1 로바뀌면, xhc는 Port Status Change Event를통해서변화사실을알릴것이다. 디바이스가제거된것을인식하고나면, 시스템소프트웨어는 Disable Slot Command명령어 (Command Ring을사용 ) 를사용해서디바이스슬롯을금지시킬것이다 디바이스슬롯관리 xhci 인터페이스는최대 255 개의디바이스를지원한다. 각각의디바이스는 Device Slot 값을할당 받는다. 디바이스슬롯은크게 3 부분으로나누어진다. Device Context Base Address Array, Device Context 그리고 Doorbell Array 이다. Device Context Base Address Array 는 USB 디바이스혹은허브를최대 255 개까지지원할수있다. 각각의항목배열은 Device Context 를가리키는 64 비트포인터를가진다. 슬롯 ID 란 Device Context Base Address Array 의인덱스를나타낸다. 슬롯 ID 를사용해서 Device Context 를가져오거나 Doorbell Register 에접근할수있다. Device Context 자료구조는호스트컨트롤러에연결된각각의 USB 디바이스의특성과현재상태를설명한다. Device Context는 32개의 Context 자료구조의배열로구성된다. 각각의배열은첫번째항목을 Slot Context 이라고부르며, 나머지배열 1-31을 Endpoint Context 자료구조라고부른다. 시스템소프트웨어가 Device Context 자료구조를할당하면, 모든필드의값을 0 으로기록한다. Device Context 의첫번째배열내용을 Slot Context 라고부른다. 이것은디바이스를전체적인관 점에서바로보는경우와전체엔드포인트에게영향을미칠수있는정보를정의하고있다. 각각의엔드포인트를위한 Endpoint Context 자료구조는엔드포인트의특성을정의한다. 엔드포인트의특성은엔드포인트의유형, 방향, 요구하는대역폭, Transfer Ring의포인터또는 Stream Context( 벌크엔드포인트의경우 ) 배열의포인터를나타낸다. Endpoint Context는디바이스의엔드포인트를위해서존재한다. 예를들어, Endpoint Context 0 은디폴트엔드포인트와관련된정보를

29 사용한다. 그림 Device Context 구조 Device Context Index DCI(Device Context Index) 는 Device Context 내부에서각각의 Context 자료구조를접근하는데사 용되는인덱스를의미한다. DCI 의값은 0 부터 31 까지가진다.

30 DCI 의값이 0 인경우, Slot Context 라고부른다. 벌크, 등시성, 인터럽트전송을위한엔드포인트를위해 DCI 값은다음과같은공식으로정의된 다. DCI = (Endpoint Number * 2) + Direction Direction = 0, OUT 방향 Direction = 1, IN 방향을의미한다. 예를들어, Endpoint Address 0x82( 벌크 ) 의경우, Endpoint Number 는 0x02, 전송유형은벌크, 방향은 IN 이기때문에, DCI = (0x02 *2) + 1 = 5 가된다. Device Context 내의 5 번째인덱스배열항목이해당하는엔드포인트를위한 Endpoint Context 가 된다 슬롯상태 그림 슬롯상태다이아그램 [ 그림 10-13] 을보면, 디바이스슬롯의상태가어떤사건에따라서변하게되는지를알수있다.

31 Disabled 상태 디바이스슬롯의상태가 Disabled 되면, 슬롯을위한 Doorbell 레지스터도사용금지되고, Device Context 의내용은의미를가지지못한다. 반드시 Enable Slot 명령에의해서만슬롯상태가 Enabled 상태로전환된다 Enabled 상태 이상태는 Enable Slot 명령에의해서 Device Slot 이할당되지만, 아직까지 Device Context 의내 용과 Doorbell 레지스터는의미가없다. 이상태는 Address Device 명령어와 Disable Slot 명령어만수행될수있다. 시스템소프트웨어가 Address Device 명령어를사용할때, Block Set Address Request(BSR) 필드의 값을 1 로사용하면상태는 Default 상태로전환된다. BSR 필드의값을 0 로사용하면상태는 Addressed 상태로전환된다 Default 상태 이상태에는 USB 디바이스의상태가 Default 상태가된다. Device Slot 의내용중에 Slot Context 와디폴트엔드포인트를위한 Endpoint Context의내용이유효하다. 또한디폴트엔드포인트를위한 Doorbell 레지스터가유효한상태가된다. 이상태에서는 Address Device 명령어 (BSR필드의값이 0 ), Reset Endpoint, Stop Endpoint, Set TR Dequeue Pointer, Disable Slot 명령만처리될수있다. Address Device 명령어 (BSR 필드의값이 0 ) 에의해서상태는 Addressed 상태로전환된다. Disable Slot 명령어에의해서상태는 Disabled 상태로전환된다. 나머지명령어는상태를변화시키지않는다 Addressed 상태 이상태에는 USB 디바이스의상태가 Addressed 상태가된다. 이상태에서는 Evaluated Context, Configure Endpoint, Reset Endpoint, Stop Endpoint, Negotiate Bandwidth, Reset Device, Set TR

32 Dequeue Pointer, Disable Slot 명령만처리될수있다. Configure Endpoint 명령어 (Deconfigure - DC 필드의값이 0 ) 에의해서상태는 Configured 상태로 전환된다. Reset Device 명령어에의해서상태는 Default 상태로전환된다. Disable Slot 명령어에의해서상태는 Disabled 상태로전환된다. 나머지명령어는상태를변화시키지않는다 Configured 상태 이상태에는 USB 디바이스의상태가 Configured 상태가된다. 사실상 Device Context 에보관된모든의미있는내용들이유효하다. 실제로사용되는엔드포인트 (1-15) 를위한 Endpoint Context 가모두유효하다. 이상태에서는 Evaluate Context, Configure Endpoint, Reset Endpoint, Stop Endpoint, Negotiate Bandwidth, Reset Device, Set TR Dequeue Pointer, Disable Slot 명령만처리될수있다. Configure Endpoint 명령어 (Deconfigure - DC 필드의값이 1 ) 에의해서상태는 Addressed 상태로 전환된다. Reset Device 명령어에의해서상태는 Default 상태로전환된다. Disable Slot 명령어에의해서상태는 Disabled 상태로전환된다. 나머지명령어는상태를변화시키지않는다 USB 표준명령과 xhci 명령의관계 USB 표준명령은제어전송을사용하는전송으로서, Setup TD형태로 xhci 를사용하는대표적인명령어이다. 이말은시스템소프트웨어에의해서소프트웨어적으로이런명령을발생시킨다는의미이다. 하지만, SET_CONFIGURATION 명령과 SET_ADDRESS 명령은 xhci 가자체적으로지원하는 Command Ring을통한지원요소와중복되는특징을가지고있다. * Address Device 명령어 : BSR = 0, 이명령어를사용하면 xhc 는 Device Context 에기록된디바 이스주소를사용해서자체적으로 SET_ADDRESS 명령어를만들어서디바이스에게전송한다.

33 * Configure Endpoint 명령어 : DC = 0, 이명령어를사용하면 xhc 는자체적으로 SET_CONFIGURATION 명령어를만들어서디바이스에게전송한다 Command Interface Command Ring 은하나의 xhc 에하나만존재한다. 시스템소프트웨어는 Command Ring 을사용 하는 TRB 를제공하는제공자이고, xhc 는이것을소비하는소비자로동작한다. 초기에시스템소프트웨어는 Command Ring의 Command Ring Dequeue Pointer 레지스터의초기값을설정한다. 이것은 Command Ring Control Register(CRCR) 을사용한다. Command Ring Running 필드의값이 0 인경우에만시스템소프트웨어는 Command Ring Dequeue Pointer의값을변경할수있다. 시스템소프트웨어가새로운 Command 를 xhc 에게전송하려면, 명령과관련된 TRB 를준비한뒤, 해당하는 TRB 를 Command Ring 에넣는다. 준비가끝나면 xhc 의 Doorbell 레지스터를기록한다. Doorbell 레지스터를기록하는작업을, 초인종을울린다! 로해석하는편이더편하게들린다. Command 를위해초인종을울리는작업은 Doorbell Register 배열의첫번째항목에들어있는 xhc Doorbell 레지스터를기록한다는의미이다. 이후 xhc 는해당하는명령을해석한다. 해석이끝나면, Command Completion Event 사건을발생 시킨다. 사건과함께 xhc 는사건이관련된 TRB 를 Command TRB Pointer 필드를사용해서시스템 소프트웨어에게알려준다. xhc 는 Command Ring 이비워지거나멈추는요청이있을때까지, 계속해서 Command Ring 속에 TRB 를끄집어내면서해석을계속한다. 해석되는순서는 TRB 가접수되는순서를그대로사 용하고, 복수개의 TRB 가동시에접수되는것도허용된다. * 현재동작중인 Command Ring 을멈추기 Command Ring Control Register(CRCR) 의 Command Stop(CS) 필드의값을 1 로기록하는행동은 현재동작중인 Command Ring 의동작을멈추는결과를가져온다. * 현재동작중인 Command 를취소하기

34 Command Ring Control Register(CRCR) 의 Command Abort (CA) 필드의값을 1 로기록하는행동 은현재동작중인 Command 의해석이취소되는결과를가져온다. Command Completion Event 사건이발생되면, Command Ring 의 Dequeue Pointer 는이어지는 다음 TRB 를가리키도록옮겨진다 No Op Command Ring 의동작을확인하는목적으로사용하는명령어이다. xhc 는해당하는명령을담은 TRB 를 Command Ring 에서끄집어낸뒤, 별다른해석없이 Command Completion Event 를발생시 킨다. 테스트용도이다. 표 10-6 No Op 명령처리방식 시스템소프트웨어가준비하는방법 xhc 가반응하는방법 TRB Type = No Op 명령나머지 TRB 필드 = 0 Cycle 비트 = Command Ring 의 PCS 플래그 [Host Controller Doorbell] DB Target = Host Controller Command Command Completion Event -> Event Ring Command TRB Pointer = No Op Command TRB Completion Code = 성공나머지 TRB 필드 = 0 Cycle 비트 = Event Ring의 PCS 플래그 Enable Slot Enable Slot 명령어는사용가능한디바이스슬롯 (Device Slot) 을할당하는명령이다. 할당된디바이 스슬롯의상태가 Disable 상태에서 Enable 상태로전환한다. 이명령을받은 xhc 는사용가능한디바이스슬롯을찾는다. 해당하는슬롯을발견하면, 선택된 슬롯을찾을수있는인덱스 (ID) 가 Command Completion Event 에 Slot ID 필드에담겨져서리턴 된다. 시스템소프트웨어는얻어진슬롯인덱스를사용해서 Device Context Base Address Array 배열의

35 해당하는위치를찾아서새로준비한 Device Context 구조체의주소를기입한다. 표 10-7 Enable Slot 명령처리방식 시스템소프트웨어가준비하는방법 xhc 가반응하는방법 TRB Type = Enable Slot 명령 Slot Type = 0 나머지 TRB 필드 = 0 Cycle 비트 = Command Ring 의 PCS 플래그 [Host Controller Doorbell] DB Target = Host Controller Command Command Completion Event -> Event Ring Command TRB Pointer = Enable Slot Command TRB 나머지 TRB 필드 = 0 Cycle 비트 = Event Ring의 PCS 플래그 [ 성공 ] Slot ID = 사용가능한 Device Slot ID Completion Code = 성공 [ 실패 ] Slot ID = 0 Completion Code = No Slots Avaliable 상태코드 Disable Slot Disable Slot 명령어는사용하던디바이스슬롯의상태를 Disabled 상태로전환한다. 보통사용중 인 USB 디바이스를호스트에서제거할때이와같은명령어가사용될것이다. 해당하는명령을받으면 xhc 는다음과같이행동할것이다. * 사용중인슬롯을위한 Doorbell 레지스터를사용금지시킨다. * 디바이스의주기적인통신을요구하는엔드포인트에게할당된대역폭을제거한다. * 해당하는디바이스와통신중인그어떤패킷전송도전부종료시킨다. * 슬롯과관련된모든내부자원을해제한다. 표 10-8 Disable Slot 명령처리방식

36 시스템소프트웨어가준비하는방법 xhc 가반응하는방법 TRB Type = Disable Slot 명령 Slot ID = 해제할디바이스슬롯 ID 나머지 TRB 필드 = 0 Cycle 비트 = Command Ring 의 PCS 플래그 [Host Controller Doorbell] DB Target = Host Controller Command Command Completion Event -> Event Ring Command TRB Pointer = Disable Slot Command TRB 나머지 TRB 필드 = 0 Slot ID = 해제요청한디바이스슬롯 ID Cycle 비트 = Event Ring의 PCS 플래그 [ 성공 ] Completion Code = 성공 [ 실패 ] Completion Code = Slot Not Enabled 상태코드 Address Device Address Device 명령어는디바이스슬롯에연결된디바이스의상태를 BSR(Block Set Address Request) 의값에따라서, Enabled 상태에서 Default 상태혹은 Addressed 상태로전환하거나, Default 상태에서 Addressed 상태로전환한다. 함께사용하는 Block Set Address Register(BSR) 필드의값에따라서 xhc 의동작이달라진다. 만일 BSR 필드의값이 1 인경우, 디바이스의상태는 Enabled 상태에서 Default 상태로전환된다. 이때 xhc 는별다른실제패킷을만들어서디바이스에게전송하지않는다. 이경우, 디바이스의 주소는값 0 으로간주된다. BSR 필드의값이 0 인경우, 디바이스의상태는 Addressed 상태로전환된다. 이때 xhc 는 SET_ADDRESS 명령어를만들어서디바이스에게전송한다. 적당한디바이스의주소값이할당된다. 이명령어가성공적으로처리되면, 디폴트엔드포인트는 xhc 의엔드포인트스케쥴링리스트에포 함되고늘사용이가능하도록준비된다. 디폴트엔드포인트의 Endpoint Context Doorbell 이사용 가능하도록허용된다. 표 10-9 Address Device 명령처리방식

37 시스템소프트웨어가준비하는방법 xhc 가반응하는방법 TRB Type = Address Device 명령 Slot ID = 디바이스슬롯 ID Input Context Pointer = Input Context 구조체주소나머지 TRB 필드 = 0 Cycle 비트 = Command Ring 의 PCS 플래그 [Host Controller Doorbell] DB Target = Host Controller Command Command Completion Event -> Event Ring Command TRB Pointer = Address Device Command TRB 나머지 TRB 필드 = 0 Slot ID = 디바이스슬롯 ID Cycle 비트 = Event Ring의 PCS 플래그 <BSR 플래그 = 1 의경우 > [ 성공 ] 모든 Input Slot Context 의내용이 Output Slot Context 로복사됨 Input Endpoint 0 Context 의내용이 Output Endpoint 0 Context 로복사됨 Output Endpoint 0 Context 의 Endpoint State(EP State) 값이 Running 상태로기록됨 Output Slot Context의 Slot State 값이 Default 상태로기록됨 Output Slot Context의 USB Device Address 필드값이 0 으로기록됨 Completion Code = 성공 [ 실패 ] Completion Code = Context State Error 상태코드 <BSR 플래그 = 0 의경우 > 대상의디바이스에게할당할적당한주소값이준비 SET_ADDRESS 명령어준비 (bmrequesttype, wvalue( 주소 ), windex, wvalue) Input Slot Context로부터 Route String 가져오기 SET_ADDRESS 명령어를디바이스로전송 [ 성공 ] 모든 Input Slot Context 의내용이 Output Slot Context 로복사됨 Input Endpoint 0 Context 의내용이 Output Endpoint 0 Context 로복사됨 Output Endpoint 0 Context 의 Endpoint State(EP State)

38 값이 Running 상태로기록됨 Output Slot Context의 Slot State 값이 Addressed 상태로기록됨 Output Slot Context의 USB Device Address 필드값이적당한주소값으로기록됨 Completion Code = 성공 [ 실패 ] Completion Code = Context State Error 상태코드 Configure Endpoint Configure Endpoint 명령어는연결된디바이스를셋업 (Configuring) 하거나반대로 Deconfiguring 하는명령어이다. 파라미터로함께사용되는 DC(Deconfigure) 필드의값이 1 인경우 xhc 는연결 된디바이스를대상으로 Deconfiguring 작업을시도한다. 셋업 (Configuring) 작업은디바이스가준비하고있는엔드포인트가실제로활성화되는과정이기때 문에, 시스템소프트웨어는이명령어를사용할때디바이스가준비한엔드포인트중에서사용하 고자하는엔드포인트와사용하지않으려하는엔드포인트정보를구분해야한다. 그림 슬롯상태다이아그램

39 [ 그림 10-14] 를보자. Input Context 의내용은 Device Context와비교해서, 앞부분의내용 (Input Control Context) 이다르다. 이곳에는비트맵형태의배열이존재한다. 디바이스가가지는엔드포인트는디폴트엔드포인트와나머지엔드포인트 (1-15, 양방향모두 ) 를합쳐서모두 31개이다. 이들에대한비트맵정보가존재하는데, 그림에서는이중에서 Endpoint 3( 주소는 0x81) 과 Endpoint 30( 주소는 0x0F) 에대해서만값 1 을기록하고나머진값 0 을기록하고있다. 해당하는두개의엔드포인트만사용하는명령어를작성하기때문이다. Configure Endpoint 명령어의처리가성공하면, 각각의엔드포인트를설명하는 Endpoint Context 의값이 Device Context 내부로복사되는것을알수있다. 그림 Input Context 와 Input Control Context

40 [ 그림 10-15] 를보면, Input Control Context의내용을알수있다. Drop Context는 Device Context 내용중에서사용하지않을 Context를지정하고, Add Context는새롭게사용하거나변경할 Context를지정한다. Add Context로지정되는 Context의값은명령어가성공적으로처리되면 Device Context로복사된다. Add Context로지정가능한비트맵과 Drop Context로지정가능한비트맵이조금다른것을알수있다. A0필드는 Slot Context, A1필드는디폴트엔드포인트를나타낸다. 이것들은 Drop 될수없는종류의것들로정의해놓았기때문이다. Configure Endpoint 명령어가 SET_INTERFACE 명령어로사용되는경우, [ 그림 10-15] 의 Input Control Context 의 Interface Number, Alternate Setting 값이사용될수있다. 다만, 이런경우반드시 Operational Registers 중에서 Config 레지스터의 Configuration Information Enable(CIE) 필드의값을 1 로기록해야한다. 그림 Slot Context 와 Endpoint Context

41 [ 그림 10-16] 을보자. Slot Context 는디바이스전체적으로영향을미칠수있는속성을정의하고 있다. Endpoint Context 는사용하는엔드포인트와관련된속성만정의를하고있다. 대부분의필드는 USB3, USB2 스팩에서언급되는내용이므로관련된내용은 1 부를참고하도록한 다. [Slot Context] 에서, * Max Exit Latency : us 초단위의지연시간. 디바이스가사용하는현재링크의상태가저전력상태 에서정상상태로회복하는데소요되는최대지연시간을의미한다. * Root Hub Port Number : 해당하는디바이스가연결된최상위포트 ( 루트허브포트 ) 의값을의미 한다.

42 * Number of Ports : 해당하는디바이스가외장허브인경우, 허브가지원하는포트개수 * Interrupter Target : 해당하는디바이스슬롯에서발생하는이벤트의 ID * Slot State : 디바이스슬롯의상태를나타냄. Disabled/Enabled (0), Default (1), Addressed (2), Configured (3) [Endpoint Context] 에서, * Endpoint State(EP State) : 엔드포인트의상태를나타냄. Disabled (0), Running (1), Halted (2), Stopped (3), Error (4) * Mult : USB Super Speed 등시성전송에서사용되는 Burst 개수를의미한다. 값이 0 이면하나, 값이 1 이면둘, 값이 2 이면셋을의미한다. Super Speed 등시성전송은하나의서비스인터벌안에서하나의 Burst 당최대 16개의패킷을전송할수있기때문에, 최대 Burst 개수로값 2 즉셋을사용하면, 3 * 16 = 48개의패킷을하나의서비스인터벌안에서전송할수있다. * Max Primary Streams(MaxPStream) : USB Super Speed 벌크전송에서, 해당하는벌크엔드포인트가스트림전송을사용하는경우, TR Dequeue Pointer 필드는 Primary Stream Context Array를가리키게된다. 지원가능한스트림수를결정한다. 값 0 은사용하지않는다는의미이고, 값 1 부터 15 까지사용할수있다. 사용되는값을 N 이라고라면, Primary Stream Context Array 배열은 2 ^ (N+1) 의크기를가진다. * Linear Stream Array(LSA) : 보조 Stream Array 의사용유무를결정한다. 이값이 1 이면보조 Stream Array 를사용하지않는다. 이값이 0 이면보조 Stream Array 을사용한다.

43 * Host Initiated Disable(HID) : Host 가시작요청하는스트림데이터전송명령의사용유무를결정한다. 이값이 1 이면사용금지이다. USB 3 스팩에서정의되는 General Stream Protocol State Machine(SPSM) 에서정의된 Idle 상태에서 Data Move 상태로전환요청을호스트가시작하는기능을허용할지여부를결정한다. 보통하드웨어자원이추가적으로요청되는기능이기때문에특별한경우를제외하고는이기능을사용하지않는다. 이말은기본적으로 HID 값이 1 인것으로간주한다는뜻이다. * Max Burst Size : 서비스인터벌안에수행할수있는 Burst 데이터패킷수. * Dequeue Cycle State(DCS) : TR Deque Pointer 가가리키는 TRB 의 xhc 소비자 Cycle 상태값을나 타낸다. * TR Dequeue Pointer : Endpoint Context 가 Input 용도로사용되는경우, MaxPStream 값이사용되면이필드는 Stream Context Array 배열을가리키고, 그렇지않으면 Transfer Ring 의주소를가리킨다. Endpoint Context 가 Output 용도로사용되는경우, MaxPStream값이사용되면이필드는 Stream Context Array 배열을가리키고, 그렇지않으면 TR Dequeue Pointer는대부분의미없는값으로사용되지만, 해당하는엔드포인트의상태가멈추거나에러가발생하면, 그당시에 Endpoint를위한 Transfer Ring의 Dequeue Pointer위치정보를제공하는목적으로사용된다 * Average TRB Length : 해당하는엔드포인트에의해서실행되는 TRB 의평균데이타바이트크기를 나타낸다. 이값은 System Bus Bandwidth 정보에사용된다.

44 그림 Stream Context Array Stream Context [ 그림 10-17] 을보면, Stream Context Array 가 Primary 와 Secondary 로나누어사용되는경우를알 수있다. 이와같이나누어사용되지않고 Primary Stream Context Array 만사용되는경우를 Linear Stream Array(LSA) 라고부른다. Stream Context 구조체에는 PSID, SSID 필드가없다. 이것은논리적으로판단해야하는 ID 값이다. 시스템소프트웨어는계층적인방식의 Stream Array 를사용하는경우, PSID 8 비트와 SSID 8 비트 의인덱스위치를계산해서 Stream ID 값으로사용해야한다.

45 Stream Context 구조체의필드는다음과같은의미로사용된다. * TR Dequeue Pointer : SCT 값이 0 또는 1 의경우, Stream Context 가 Input 용도로사용되는경우, Stream 을위한 Transfer Ring 의주소를가리킨다. Stream Context 가 Output 용도로사용되는경우, 대부분의미없는값으로사용되지만, 해당하는 엔드포인트의상태가멈추거나에러가발생하면, 그당시에 Stream 을위한 Transfer Ring 의 Dequeue Pointer 위치정보를제공하는목적으로사용된다 SCT 값이 0 또는 1 이아닌경우, Secondary Stream Array 의주소를담는다. * SCT(N) : Stream Context Type, Stream Context 가 Primary 혹은 Secondary 에속한것인지정보 를제공한다. 값 0 : Secondary Stream Array 에속함 값 : Primary Stream Array 에속함. TR Dequeue Pointer 의의미는 SCT 값 (N-1) * 8 개의 Stream Context 를가지는 Seconary Stream Array 의주소를담는다. * DCS : Dequeue Cycle State, xhc 가해석하는용도로사용하는 TRB 의 Consumer Cycle State(CCS) 값으로사용된다. * Stopped EDTLA : xhc 는스트림의동작 ( 스트림을위한 Transfer Ring) 이멈출때, 해당하는스트 림을위한엔드포인트가사용하던총전송량 (EDTLA) 값을기록한다 Evaluate Context Evaluate Context 명령어는 Device Context 의특정필드의값을변경하도록시스템소프트웨어가 호스트컨트롤러에게알리는명령이다.

46 표 Evaluate Context 명령처리방식 시스템소프트웨어가준비하는방법 xhc 가반응하는방법 TRB Type = Evaluate Context 명령 Add Context 플래그 = 수정될엔드포인트를명시 Drop Context 플래그 = 모두값 0 으로기록함 Slot ID = 대상이되는디바이스의슬롯 ID Input Context Pointer = Input Context 구조체주소나머지 TRB 필드 = 0 Cycle 비트 = Command Ring 의 PCS 플래그 [Host Controller Doorbell] DB Target = Host Controller Command Command Completion Event -> Event Ring Command TRB Pointer = Evaluate Context Command TRB 나머지 TRB 필드 = 0 Slot ID = 디바이스슬롯 ID Cycle 비트 = Event Ring의 PCS 플래그 [ 성공 ] Input Endpoint 0 Context 의내용이 Output Endpoint 0 Context 로복사됨 Completion Code = 성공 [ 실패 ] Completion Code = Error 상태코드 Reset Endpoint Reset Endpoint 명령어는엔드포인트 ( 스트림혹은 Transfer Ring 이정지함 ) 의상태가정지하거나 에러가발생하였을때, 해당하는상황을정상상태로회복하도록시스템소프트웨어가요청하는 명령이다. 이명령어는디바이스슬롯의상태가 Default, Addressed, Configured 상태에서만사용할수있다. 표 Reset Endpoint 명령처리방식 시스템소프트웨어가준비하는방법 TRB Type = Reset Endpoint 명령

47 xhc 가반응하는방법 Endpoint ID = 대상엔드포인트 Slot ID = 대상이되는디바이스의슬롯 ID 나머지 TRB 필드 = 0 Cycle 비트 = Command Ring 의 PCS 플래그 [Host Controller Doorbell] DB Target = Host Controller Command Command Completion Event -> Event Ring Command TRB Pointer = Reset Endpoint Command TRB 나머지 TRB 필드 = 0 Slot ID = 디바이스슬롯 ID Cycle 비트 = Event Ring의 PCS 플래그 [ 성공 ] 만일 EP State가 Halted 인경우, EP State = Sopped 만일 Transfer State Preserve(TSP) 플래그가 0 인경우, USB2 Data Packet Toggle값을 0 USB3 Data Packet Sequence Number값을 0 Doorbell 레지스터를활성화 Completion Code = 성공 [ 실패 ] Completion Code = Error 상태코드 Stop Endpoint Stop Endpoint 명령어는엔드포인트를위한동작상태를멈추도록요청하는명령이다. 이명령어 가수행되기이전에처리중인전송이취소된다. Endpoint 가중지되면, 관련된 Transfer Ring 의동작이중지된다. 이때, 시스템소프트웨어는보다우선순위가높은 TD(Transfer Descriptor) 를준비해서 Transfer Ring의 Dequeue Pointer로옮길수있다. 이명령어에의해서동작중인 TRB가멈춘경우라면, 해당하는 TRB를가리키는 Event TRB를만들어서 Event Ring에추가한다. 표 Stop Endpoint 명령처리방식 시스템소프트웨어가준비하는방법 TRB Type = Stop Endpoint 명령 Endpoint ID = 대상엔드포인트 Slot ID = 디바이스의슬롯 ID 나머지 TRB 필드 = 0

48 Cycle 비트 = Command Ring 의 PCS 플래그 [Host Controller Doorbell] DB Target = Host Controller Command xhc 가반응하는방법이명령어에의해서진행중인전송이취소되는경우, 취소되는전송을위해서새로운 Transfer Event 를만들어서 Event Ring 에포함시킨다. TRB Type = Transfer Event Endpoint ID = 대상엔드포인트 Slot ID = 디바이스의슬롯 ID Completion Code = Stopped 나머지 TRB 필드 = 0 Cycle 비트 = Event Ring의 PCS 플래그 [ 만일취소된전송이 Event Data TRB라면 ] ED = 1 TRB Pointer = 64비트 Event Data TRB 파라미터 Length = 누적된 EDTLA 전송길이값 [ 그렇지않은경우라면 ] ED = 0 TRB Pointer = 전송이취소된 TRB Length = 전송중에취소된 TRB가요구하는나머지데이터전송크기 이후에는다음과같은과정이진행된다. Command Completion Event -> Event Ring Command TRB Pointer = Stop Endpoint Command TRB 나머지 TRB 필드 = 0 Slot ID = 디바이스슬롯 ID Cycle 비트 = Event Ring의 PCS 플래그 [ 성공 ] xhc내부에서수행될해당하는엔드포인트의파이프스케쥴링작업이제외됨 EP State = Stopped Completion Code = 성공 Endpoint Context 혹은 Stream Context의 Dequeue Pointer는멈춘 TR Ring의위치를알려준다. [ 실패 ] Completion Code = Error 상태코드

49 Stop Endpoint 명령어에의해서사용되던 Endpoint Context 혹은 Stream Context의동작이멈추는경우, 해당하는 Transfer Ring에서수행되던 TRB는취소된다. 통상적으로이렇게취소되는작업은즉시이루어진다. 이때, xhc는 Transfer Event TRB를만들어서취소된 TRB의주소를 TRB Pointer가가리키도록설정한다. 이때, Transfer Event TRB의상태코드의값은통상적으로 Stopped 값을가지게된다. 이와관련해서 Stopped Short Packet Capability (SPC) 기능과 Stopped EDTLA Capability (SEC) 기능을잠시설명하고넘어가도록하겠다. Endpoint Data Transfer Length Accumulator(EDTLA) 기능은엔드포인트별로전송하는데이터크기를 계속해서누적하는기능을말한다. 이렇게누적되는값은 16MB 1 의값을초과할때, 다시값 0 을가지도록 Wrap 된다. 시스템소프트웨어는 EDTLA 기능을사용하면상황에따라서전송되는데이터크기를추적하는도 움을받을수있다. Stopped EDTLA Capability (SEC) 기능은스트림통신을사용하는경우에필요한기능이다. 하나의벌크엔드포인트가복수개의스트림을사용하는경우, Stop Endpoint 명령어에의해서엔드포인트의동작이멈추게되면, 자연스럽게엔드포인트에속한모든스트림의동작이함께멈추게된다. 이럴때, 엔드포인트가사용하던최근의 EDTLA값을각각의스트림을위한 Stream Context내의 Stopped EDTLA 필드의값으로복사를해주는기능을의미한다. 하나의벌크 IN TD(Transfer Descriptor) 가복수개의 TRB 를가지고있는경우를가정해보자. 호스트가디바이스로부터데이터를읽어오는과정중에, Stop Endpoint 명령어가사용되었다면사 용되던당시의 TRB 를위한동작이멈춘다. 이때, 생성되는 Transfer Event TRB 의 TRB Transfer Length 필드는보통전송을끝내지못하고남아있는전송량의정보를담게된다. 시스템소프트웨어입장에서이값을해석하는데자칫하면혼동을가져올요인이있다. 방금 Stop Endpoint 명령어가사용될때, 마침그때디바이스로부터 Short Packet 이호스트로전 송되었다고가정해보자. Short Packet 을디바이스가호스트로전송했다는것은현재의 TD 자체가 끝나야한다는것을나타낸다. 더이상전송할데이터가없다는뜻이다. 이때, Stop Endpoint 명령어가사용되었다면, 이와관련된 Transfer Event TRB 의 TRB Transfer

50 Length 필드는남아있는데이터양을나타내고있기때문에, 시스템소프트웨어가볼때지금현 재받은데이터가마지막 Short Packet 의데이터인지, 아니면중간에멈추는일로인해서남아있 는데이터양인지혼동을하게된다. 이와같은혼동을피하기위해서사용하는기능이 Stopped Short Packet Capability (SPC) 기능이다. 이기능을활성화하면, 이와같은상황이발생할때, Transfer Event TRB의상태코드는 Stopped Short Packet 값을가지게되고, TRB Transfer Length 필드는현재멈춘상태의 EDTLA 값을담게된다 Set TR Dequeue Pointer Set TR Dequeue Pointer 명령어는엔드포인트혹은스트림 Context 의 TR Dequeue Pointer 필드의 값을변경하는명령어이다. 반드시해당하는엔드포인트의상태는 Stopped 된상태가되어야이 명령어를실행할수있다. 디바이스슬롯의상태는 Default, Addressed, Configured 상태여야한다. 표 Set TR Dequeue Pointer 명령처리방식 시스템소프트웨어가준비하는방법 xhc 가반응하는방법 TRB Type = Set TR Dequeue Pointer 명령 Endpoint ID = 대상엔드포인트만일 MaxPStreams 값이 0 이아닌경우라면, Stream ID = 대상스트림 ID Slot ID = 디바이스의슬롯 ID New TR Dequeue Pointer = 새롭게변경하려는 TR Dequeue Pointer값 Dequeue Cycle State(DCS) = TR Dequeue Pointer 필드가가리키는 TRB를위한 xhci CCS 플래그상태값나머지 TRB 필드 = 0 Cycle 비트 = Command Ring 의 PCS 플래그 [Host Controller Doorbell] DB Target = Host Controller Command Command Completion Event -> Event Ring Command TRB Pointer = Set TR Dequeue Pointer Command TRB 나머지 TRB 필드 = 0 Slot ID = 디바이스슬롯 ID

51 Cycle 비트 = Event Ring의 PCS 플래그 [ 성공 ] 만일스트림 ID가사용되는경우, 새로운 TR Dequeue Pointer값이대상스트림 Context에반영된다. DCS값이대상스트림 Context의 Dequeue Cycle State값으로반영된다. 스트림 ID가사용되지않는경우, 새로운 TR Dequeue Pointer값이대상엔드포인트 Context 에반영된다. DCS값이대상엔드포인트 Context의 Dequeue Cycle State(DCS) 값으로반영된다. Completion Code = 성공 [ 실패 ] Completion Code = Error 상태코드 Reset Device Reset Device 명령어는 xhc 에게디바이스슬롯에연결된디바이스가리셋되었다는사실을알리는 명령어이다. 이명령어에의해, xhc 는슬롯의상태를 Default 상태로전환하고, USB Device Address 필드값을 0 으로사용한다. 디바이스슬롯의상태는다음과같이설정된다. * 디바이스를위한모든트랜잭션이취소된다. * 슬롯의상태가 Default 상태로전환된다. * Slot Context 의 Context Entries 필드값이 1 로기록된다. * Slot Context 의 USB Device Address 필드값이 0 로기록된다. 또한, 이명령어는디폴트엔드포인트 Context 를제외한나머지모든엔드포인트 Context 의상태 를 Disabled 로전환하여사용금지시킨다. 시스템소프트웨어는이명령어를사용하기이전에반드 시사용중이던모든엔드포인트의사용이멈춘것을확인해야한다.

52 디폴트엔드포인트를제외한나머지모든엔드포인트는다음과같이설정된다. * 패킷전송등을하는모든 USB 행동이멈춘다. * 엔드포인트의 Doorbell 기능이꺼진다. * Event Ring 에대기중인사건들이모두취소된다. * 주기적인전송을위해서사용되는대역폭예약이해제된다. * 엔드포인트를위해서사용되던내부적인자원이해제된다. 표 Reset Device 명령처리방식 시스템소프트웨어가준비하는방법 xhc 가반응하는방법 TRB Type = Reset Device 명령 Slot ID = 디바이스의슬롯 ID 나머지 TRB 필드 = 0 Cycle 비트 = Command Ring 의 PCS 플래그 [Host Controller Doorbell] DB Target = Host Controller Command Command Completion Event -> Event Ring Command TRB Pointer = Reset Device Command TRB 나머지 TRB 필드 = 0 Slot ID = 디바이스슬롯 ID Cycle 비트 = Event Ring의 PCS 플래그 [ 성공 ] Completion Code = 성공 [ 실패 ] Completion Code = Error 상태코드 Force Event Force Event 명령어는가상머쉰관리자 (Virtual Machine Manager) 와관련된명령으로써, 실제 USB 디바이스가연결된것처럼시뮬레이션하는용도로사용하는명령이다. 본책의범위를벗어나므로 생략하도록한다. 사용은선택적이다 Negotiate Bandwidth

53 xhc 로하여금주기적인통신을필요로하는엔드포인트를가진모든디바이스에게 Bandwidth Request Event 사건을알려주는용도로사용하는명령어이다. 사용은선택적이다 Set Latency Tolerance Value 시스템소프트웨어가 Best Effort Latency Tolerance(BELT) 값을 xhc 에게제공하는용도로사용된다. BELT 값은디바이스가견딜수있는최대지연시간값으로링크의전원관리를효과적이고적극적 으로수행할수있는방법을제공한다. 관련된내용은 1 부를참고한다. 사용은선택적이다 Get Port Bandwidth Get Port Bandwidth 명령어는루트허브혹은외장허브의각각의다운스트림포트 (Downstream Port) 의사용가능한대역폭퍼센트값을구하는목적으로사용된다. 이값은주기적인전송을필요 로하는엔드포인트를위해서사용된다. 이명령어는 Port Bandwidth Context 자료구조를 xhc 에게제공한다. xhc 는이곳에각각의포트를 위해서사용가능한대역폭정보를담아준다. 표 Get Port Bandwidth 명령처리방식 시스템소프트웨어가준비하는방법 xhc 가반응하는방법 TRB Type = Get Port Bandwidth 명령 Dev Speed = 대상디바이스의속도 Hub Slot ID = 해당하는디바이스가연결된허브슬롯ID Port Bandwidth Context Pointer = Port Bandwidth Context 자료구조의주소나머지 TRB 필드 = 0 Cycle 비트 = Command Ring 의 PCS 플래그 [Host Controller Doorbell] DB Target = Host Controller Command Command Completion Event -> Event Ring Command TRB Pointer = Get Port Bandwidth Command TRB 나머지 TRB 필드 = 0 Slot ID = 0

54 Cycle 비트 = Event Ring의 PCS 플래그 [ 성공 ] Completion Code = 성공 [ 실패 ] Completion Code = Error 상태코드 표 Port Bandwidth Context 자료구조의구조 Port 3 Port 2 Port 1 Port H Port 7 Port 6 Port 5 Port H. Port n Port n-1 Port n-2 Port n Force Header Force Header 명령어는 USB3 에서사용되는 TP(Transaction Packet), LMP(Link Management Packet) 등을만들어서디바이스에게전송하는목적으로사용된다. 디버그용도로사용될수있다. 표 Force Header 명령처리방식 시스템소프트웨어가준비하는방법 xhc 가반응하는방법 TRB Type = Force Header 명령 Root Hub Port Number = 루트허브포트번호 Packet Type = Super Speed 패킷의유형 Header Info = USB3 에서정의하는패킷데이타구조나머지 TRB 필드 = 0 Cycle 비트 = Command Ring 의 PCS 플래그 [Host Controller Doorbell] DB Target = Host Controller Command Command Completion Event -> Event Ring Command TRB Pointer = Force Header Command TRB 나머지 TRB 필드 = 0 Slot ID = 0 Cycle 비트 = Event Ring의 PCS 플래그 [ 성공 ] Completion Code = 성공

55 [ 실패 ] Completion Code = Error 상태코드 Doorbells( 초인종 ) xhc 는 256 개의 32 비트 Doorbell 레지스터를지원하고있다. 이것은 Device Slot ID 인덱스를사용 해서찾을수있는 Memory Mapped IO 공간에존재한다. Doorbell 레지스터배열의기준주소는 xhci Capability 레지스터그룹의 DBOFF(Doorbell Offset) 레지 스터를통해서찾을수있다. 그림 Doorbell 레지스터 비트설명 7:0 DB Target RW. Doorbell Target. 값설명 0 사용안함 1 디폴트엔드포인트 Enqueue Pointer Update 2 엔드포인트 #1 OUT Enqueue Pointer Update 3 엔드포인트 #1 IN Enqueue Pointer Update 4 엔드포인트 #2 OUT Enqueue Pointer Update 5 엔드포인트 #2 IN Enqueue Pointer Update 30 엔드포인트 #15 OUT Enqueue Pointer Update 31 엔드포인트 #15 IN Enqueue Pointer Update 15:8 사용안함 31:16 DB Stream ID RW. Doorbell Stream ID 스트림프로토콜을사용하는경우, Doorbell 초인종을울리는목적이 Stream ID때문인경우에사용함 Doorbell 레지스터배열이담고있는각각의 Doorbell 레지스터는저마다 DB Target 필드를가지 고있다. 이것은시스템소프트웨어가 Doorbell 레지스터를사용해서초인종을누를때 (ring), 구 체적인이유를기록하는필드이다. 설명을쉽게하기위해서 Doorbell 레지스터의초인종을누르

56 는작업을 Doorbell 레지스터를기록한다 라고부르도록하겠다. Doorbell 레지스터 #0 은호스트컨트롤러를위해서할당되어있다. 이레지스터의 DB Target 필 드값은 0 (Host Controller Command) 값만사용하도록되어있다. 나머지 Doorbell 레지스터 #1 - #255 는각각 Device Context Doorbell 레지스터로사용된다. 이들은각각 1:1 로매핑된다. 시스템소프트웨어는엔드포인트 / 스트림 Context 의 Transfer Ring 위 로새로운 TRB(Transfer Request Block) 를추가하고 Doorbell 레지스터를기록한다. 주의할점은디바이스슬롯의상태가 Disabled 상태일때는 Doorbell 레지스터를기록하지말아야 한다. Doorbell 레지스터를읽으면값은 0 이읽혀진다 엔드포인트 (Endpoint) USB 디바이스는총 31 개, 즉하나의 Control 엔드포인트와 15 개의 IN, 15 개의 OUT 엔드포인트를 가지고있다. 그림 디바이스 Context 와엔드포인트 Context

57 엔드포인트 Context 초기화 디폴트엔드포인트, 벌크엔드포인트, 인터럽트엔드포인트그리고등시성엔드포인트를위한 Context 를초기화하는방법을살펴보도록한다 디폴트엔드포인트 원칙적으로 USB 디바이스는복수개의컨트롤엔드포인트를가질수있다. 하지만, 실전에서는디 폴트엔드포인트만컨트롤엔드포인트로사용된다. 엔드포인트 Context 의내용은다음과같은값으로준비한다. EP Type : Control Max Packet Size : USB2, Device Descriptor 의 bmaxpacketsize0

58 USB3, 2 ^ (Device Descriptor 의 bmaxpacketsize0) TR Dequeue Pointer : 미리할당한 Transfer Ring 의첫번째세그먼트주소 Dequeue Cycle State(DCS) : 값 1. TRB 의 Cycle 비트를반영한다 벌크엔드포인트 EP Type : Bulk IN 또는 Bulk OUT Max Packet Size : Endpoint Descriptor 의 wmaxpacketsize Max Burst Size : USB3, Super Speed Endpoint Companion Descriptor 의 bmaxburst [ 스트림이사용되는경우 ] Primary Stream Array 를할당하고초기화한다. MaxPStreams : Primary Stream Array 의크기 TR Dequeue Pointer : Primary Stream Array 의시작주소 HID : Host Initiated Move Data 기능을허용할것인가여부. 보통은값 1 을사용한다. LSA : Stream Array 의형태를선형 ( 1 ) 으로사용할것인지, Secondary 를사용 ( 0 ) 할것인지를나타낸 다. [ 스트림이사용되지않는경우 ] MaxPStreams : 0 TR Dequeue Pointer : 미리할당한 Transfer Ring 의첫번째세그먼트주소 Dequeue Cycle State(DCS) : 값 1. TRB 의 Cycle 비트를반영한다 등시성또는인터럽트엔드포인트 등시성또는인터럽트엔드포인트는주기적전송에사용되는엔드포인트이다.

59 EP Type : 등시성 (Isoch) IN, 등시성 OUT, 인터럽트 (Interrupt) IN 또는인터럽트 OUT Max Packet Size : Endpoint Descriptor 의 wmaxpacketsize & 07FFh Max Burst Size : Super Speed Endpoint Companion Descriptor 의 bmaxburst 또는 (Endpoint Descriptor 의 wmaxpacketsize & 1800h) >> 11 Mult : Super Speed Endpoint Companion Descriptor 의 bmattributes(mult) 값. 인터럽트엔드포인트 에서는사용되지않는다. TR Dequeue Pointer : Primary Stream Array 의시작주소 Dequeue Cycle State(DCS) : 값 1. TRB 의 Cycle 비트를반영한다 엔드포인트 Context State 엔드포인트 Context 의상태는다양한사건에따라서변한다. 엔드포인트 Context 의상태는총 5 가지상태가존재한다. Disabled, Running, Error, Stopped, Halted 상태이다. 1) Address Device 명령어는디폴트엔드포인트의상태를 Disabled 상태에서 Running 상태로전 환한다. 2) Configure Endpoint 명령어 (Add= 1, Drop= 0 ) 는디폴트엔드포인트를제외하고다른엔드포인 트의상태를 Disable 상태에서 Running 상태로전환한다. 3) Configure Endpoint 명령어 (Add= 0, Drop= 1 ) 또는 Reset Device 명령어는디폴트엔드포인트 의상태를 Stopped 상태에서 Running 상태로전환한다. 다른엔드포인트의상태를 Disabled 상태 로전환한다. 4) Disable Slot 명령어는디바이스슬롯의모든엔드포인트의상태를 Disabled 상태로전환한다. 5) Running 상태에서, Set TR Dequeue Pointer 명령어는비활성화된스트림엔드포인트를위한 Transfer Ring 으로만사용될수있다. 6) Configure Endpoint 명령어 (Add= 1, Drop= 0 ) 는디폴트엔드포인트를제외하고다른엔드포인 트의상태를 Stopped 상태에서 Running 상태로전환한다. 7) Stopped 상태에서, Set TR Dequeue Pointer 명령어는 Doorbell 을울리기전에비활성화된스트 림엔드포인트를위한 Transfer Ring 의시작위치를변경하는데사용될수있다.

60 그림 엔드포인트상태다이아그램 TRB(Transfer Request Block) Ring TRB Ring 은환형큐 (Queue) 를정의하고있는자료구조이다. 큐에넣는항목을 TRB 라고부른다. TRB 를큐에넣는대상을생산자 (Producer), 큐에서제거하는대상을소비자 (Comsumer) 라고부른 다. TRB Ring 은 3 가지형태가존재한다. Transfer Ring : USB 디바이스와데이터를송, 수신하는주목적을가지고있는환형큐로서, 시스 템소프트웨어가생산자, xhc 가소비자의역할을수행한다. 디바이스슬롯내부의엔드포인트 Context 혹은스트림 Context 마다하나씩의 Ring 을가질수있다. Command Ring : xhc 호스트컨트롤러는하나의 Command Ring 을지원한다. USB 디바이스의열 거과정에참여하는목적으로사용되는환형큐로서, 시스템소프트웨어가생산자, xhc 가소비자의 역할을수행한다. Operational 레지스터그룹에포함된 Command Ring Control 레지스터에의해서

61 관리된다. Event Ring : xhc 가 Transfer Ring 혹은 Command Ring 에접수된 TRB 를해석한결과를담아주거 나새로운사건을담아주는용도로환형큐로서, xhc 가생산자, 시스템소프트웨어가소비자의역 할을수행한다. Runtime 레지스터에의해서관리된다. 그림 TRB Ring 의유형 Transfer Descriptor(TD) 하나의 TD 는하나혹은복수개의 TRB 로구성된다. 복수개의 TRB 가하나의 TD 를구성하는경우 TRB 속에 Chain(C) 비트를사용한다. 특별한 TD 로서, Zero Length USB Transaction 을발생시키고자하는경우, 하나의 TRB 를가지는 TD 를구성한다. TRB 의 Transfer Length 값은 0 을가진다.

62 TRB Ring을유지하는포인터 (Enqueue Pointer, Dequeue Pointer) 가움직이는원칙은 TRB단위이지만, 특별한상황에서 TD단위로움직일수있다. 이런상황은전송중에러가발생하는 TRB가있거나, 기대보다짧은데이터만디바이스로부터전송되는 Short Packet 상황이발생하는경우이다. 물론전송이정상적으로완료된경우도여기에포함된다. 이런경우, 기대보다짦은데이터가수신됐지만, 호스트입장에서는하나의기대하는 TD를완료해야하는상황이기때문에, TD 자체를제거한다 ( 이말은 TD를구성하는복수개의 TRB가있다면, 한번에이들모두가제거된다는뜻 ) Transfer Ring, Command Ring 관리 그림 Transfer Ring 의운영방식 [ 그림 10-22] 를보자. TRB 를만들어내는생산자 ( 시스템소프트웨어 ) 와 TRB 를소비하는소비자 (xhc) 는각각자신의내 부에 Enqueue Pointer 와 Dequeue Pointer 를유지하고있어서, Transfer Ring 속으로새로운 TRB 를 기입 (Enqueue Pointer ) 하거나끄집어 (Dequeue Pointer) 내는용도로사용하고있다. 그리고각각 Cycle State 비트를유지하고있다. 생산자가가진 Cycle State 비트를 PCS(Producer

63 Cycle State) 비트라고부르고, 소비자가가진 Cycle State 비트를 CCS(Consumer Cycle State) 비트 라고부른다. Transfer Ring 에새로운 TRB 를기입하려는생산자는 TRB 를기입할때, 함께 PCS 값을기입한다. Transfer Ring 으로부터 TRB 를끄집어내는소비자는끄집어낸 TRB 와함께존재하는 Cycle 비트 의값을읽어서, 자신이가진 CCS 값과비교한다. 이값이동일한경우에만 TRB 를해석한다. Transfer Ring 에기입되는 TRB중에서특별한목적이부가된종류의것이있다. 이것이 Link TRB 이다. Link TRB는불가피하게현재의연속적인메모리로더이상 TRB를담을수없거나, 환형큐형태로동작하도록하기위해서현재메모리의시작부분으로다음포인터를연결시키는목적으로가지고있다. Link TRB는 Toggle Cycle 비트를가지고있다. 이비트의값이 1 이면, 생산자와소비자가 Link TRB를참조할때는자신의 Cycle 비트의값을토글 (1의보수 ) 해야한다. 이와같이토글된자신의 Cycle 비트값은이후생산자의역할로인해, TRB를 Transfer Ring 에넣을때, 함께기록된다는특징으로인해, 소비자가 Transfer Ring으로부터 TRB를끄집어낼때, Transfer Ring 의상태가비어있는상태임으로알수있도록돕는다. 이것은자연스럽게 Dequeue Pointer 로부터시작해서계속해서포인터를증가시켜나가다보면, 각각의포인터에포함된 Cycle 비트의값이변하는상황을만나게될것이고, 이곳이마지막 Dequeue Pointer로사용된다는의미가되기때문이다. Transfer Ring 을위해서사용하는소비자의 CCS 플래그값은 Endpoint Context DCS 필드값으로결 정된다. Command Ring 을위해서사용하는소비자의 CCS 플래그값은 Command Ring Control 레지스터 RCS 필드값으로결정된다. Event Ring 을위해서사용하는소비자의 CCS 플래그값은 1 로초기화된다. Transfer Ring 에포함되는 TD 는하나혹은복수개의 TRB 로구성되지만, Command Ring 과 Event Ring 에포함되는 TD 는하나의 TRB 가하나의 TD 역할을수행한다. Transfer Ring, Command Ring 을통해서요청된 TRB 는처리가완료되면, Event Ring 을통해서시 스템소프트웨어에게보고된다. 이때, Event Ring 을통해서 Transfer Ring, Command Ring 각각의 수정된 Dequeue Pointer 주소가보고된다. 이값을시스템소프트웨어가사용해야한다. Transfer Ring 으로새로운 TRB 가기입되면, 시스템소프트웨어는해당하는디바이스슬롯의 Doorbell 레지스터를기록한다. Command Ring 으로새로운 TRB 가기입되면, 시스템소프트웨어는 Host Controller Doorbell 레지

64 스터를기록한다 Event Ring 관리 xhc Runtime 레지스터에포함된 Event Ring Segment Table 주소는 Event Ring 세그먼트를찾아 가는기준정보를제공하고있다. 그림 Event Ring 의운영방식 [ 그림 10-23] 을보면, Event Ring Dequeue Pointer(ERDP) 레지스터가존재한다. 이것은현재 Event Ring의 Dequeue Pointer를가리키는용도로사용된다. Event Ring의소비자는시스템소프트웨어이기때문에소프트웨어가 Event Ring으로부터 TRB를끄집어낸뒤에 Dequeue Pointer 레지스터의값을변경 ( 증가 ) 해주어야한다.

65 TRB(Transfer Request Block) TRB 구조체는 TRB Ring 에기입되는 16 바이트로준비되는핵심내용이다. 그림 TRB 의구성요소 [ 그림 10-24] 를보면, TRB 가크게 3 가지 (Parameter, Status, Control) 로구분된다는것을알수있다. TRB 의종류에따라서이들 3 가지필드의값들이달라진다 Transfer TRBs Transfer Ring 에접수되는기본적인요청단위를 Transfer Descriptor(TD) 라고부른다. 하나의 TD 는 하나혹은복수개의 Transfer TRB 로구성된다 Normal TRB Normal TRB 는벌크, 인터럽트전송등에사용되고 Scatter/Gather 동작을지원하는 TRB 이다. 그림 Normal TRB 의구성요소

66 비트설명 63:0 Data Buffer Pointer Hi/Lo. TRB의데이터버퍼를가리키는 64비트주소. IDT 필드의값이 1 인경우, 이곳은버퍼의주소가아니라 8바이트의임시데이타공간으로사용될수있다 80:64 TRB Transfer Length. xhc가처리하는데이터바이트크기 85:81 TD Size. 현재 TD입장에서 TRB를해석한뒤, 남아있는이어지는몇개의 TRB를해석해야하는지를알려준다. 최대값 31 이므로, 31이상의 TRB를사용해야한다면 31 값을사용해야한다. 95:86 Interrupter Target. 현재 TRB가처리되는결과로발생하는이벤트 (Event) 가발생시킬인터럽터인덱스를지정한다 96 Cycle bit. Transfer Ring 의 Enqueue Pointer를찾는용도로사용된다 97 Evaluate Next TRB(ENT). 이필드의값이 1 이면 xhc는엔드포인트상태를변경하지않고이어지는다음 TRB를처리한다. 98 Interrupt on Short Packet(ISP). 짧은패킷이전송되면인터럽트를발생시킬것인지여부를알린다 99 No Snoop(NS). 기본적으로값 0 을사용한다. PCIe Transaction의 No Snoop 비트의값을결정한다. 100 Chain bit. 현재 TRB가하나의 TD를구성하는일부 TRB임을알림. 101 Interrupt on Completion(IOC). 현재 TRB가처리완료되면인터럽트를발생시킬것인것여부를알린다. 속도문제로보통 TD의마지막 TRB만이기능을사용한다 102 Immediate Data(IDT). 이필드의값이 1 이면, Data Buffer Pointer 필드 64비트가주소를나타내는목적이아닌, 8바이트변수의역할로바뀐다. 104:103 사용안함 105 Block Event Interrupt(BEI). TRB 처리결과이벤트로인해서인터럽트가발생하지않도록막는다 111:106 TRB Type. Normal TRB 유형 (1) 127:112 사용안함 Control TRBs 제어전송에사용되는 TRB 는, 제어전송이 3 가지단계를사용하기때문에각각의단계에맞는 TRB 가존재한다 Setup Stage TRB 컨트롤전송 (TD) 에서사용하는 8 바이트셋업명령어를전송하는목적으로사용하는 TRB 를의미한

67 다. 그림 Setup Stage TRB 의구성요소 비트 설명 7:0 bmrequesttype. USB2, USB3 에서정의하는셋업명령어의 bmrequest Type값 15:8 brequest. USB2, USB3 에서정의하는셋업명령어의 brequest값 31:16 wvalue. USB2, USB3 에서정의하는셋업명령어의 wvalue값 47:32 windex. USB2, USB3 에서정의하는셋업명령어의 windex값 63:48 wlength. USB2, USB3 에서정의하는셋업명령어의 wlength값 80:64 TRB Transfer Length. xhc가처리하는데이터바이트크기 85:81 사용안함 95:86 Interrupter Target. 현재 TRB가처리되는결과로발생하는이벤트 (Event) 가발생시킬 인터럽터인덱스를지정한다 96 Cycle bit. Transfer Ring 의 Enqueue Pointer를찾는용도로사용된다 100:97 사용안함 101 Interrupt on Completion(IOC). 현재 TRB가처리완료되면인터럽트를발생시킬것인 것여부를알린다. 속도문제로보통 TD의마지막 TRB만이기능을사용한다 102 Immediate Data(IDT). 이필드의값이 1 이면, Data Buffer Pointer 필드 64비트가주 소를나타내는목적이아닌, 8바이트변수의역할로바뀐다. 104:103 사용안함 105 Block Event Interrupt(BEI). TRB 처리결과이벤트로인해서인터럽트가발생하지않도 록막는다 111:106 TRB Type. Setup Stage TRB 유형 (2) 113:112 TRT. Transfer Type. 값 의미 0 Data 단계가아님 1 사용안함 2 OUT Data 단계 3 IN Data 단계 127:114 사용안함

68 Data Stage TRB 제어전송에서사용되는데이터전송단계를위한 TRB 를정의한다. 그림 Data Stage TRB 의구성요소 비트설명 63:0 Data Buffer Pointer Hi/Lo. TRB의데이터버퍼를가리키는 64비트주소. IDT 필드의값이 1 인경우, 이곳은버퍼의주소가아니라 8바이트의임시데이타공간으로사용될수있다 80:64 TRB Transfer Length. xhc가처리하는데이터바이트크기 85:81 TD Size. 현재 TD입장에서 TRB를해석한뒤, 남아있는이어지는몇개의 TRB를해석해야하는지를알려준다. 최대값 31 이므로, 31이상의 TRB를사용해야한다면 31 값을사용해야한다. 95:86 Interrupter Target. 현재 TRB가처리되는결과로발생하는이벤트 (Event) 가발생시킬인터럽터인덱스를지정한다 96 Cycle bit. Transfer Ring 의 Enqueue Pointer를찾는용도로사용된다 97 Evaluate Next TRB(ENT). 이필드의값이 1 이면 xhc는엔드포인트상태를변경하지않고이어지는다음 TRB를처리한다. 98 Interrupt on Short Packet(ISP). 짧은패킷이전송되면인터럽트를발생시킬것인지여부를알린다 99 No Snoop(NS). 기본적으로값 0 을사용한다. PCIe Transaction의 No Snoop 비트의값을결정한다. 100 Chain bit. 현재 TRB가하나의 TD를구성하는일부 TRB임을알림. 101 Interrupt on Completion(IOC). 현재 TRB가처리완료되면인터럽트를발생시킬것인것여부를알린다. 속도문제로보통 TD의마지막 TRB만이기능을사용한다 102 Immediate Data(IDT). 이필드의값이 1 이면, Data Buffer Pointer 필드 64비트가주소를나타내는목적이아닌, 8바이트변수의역할로바뀐다. 104:103 사용안함 105 Block Event Interrupt(BEI). TRB 처리결과이벤트로인해서인터럽트가발생하지않도록막는다 111:106 TRB Type. Data Stage TRB 유형 (3)

69 112 Direction(DIR). 데이터통신의방향을결정함. 값 0 OUT, 값 1 IN 127:113 사용안함 Status Stage TRB 제어전송에서사용되는 Status 단계를위한 TRB 를준비한다. 그림 Status Stage TRB 의구성요소 비트 설명 85:0 사용안함 95:86 Interrupter Target. 현재 TRB가처리되는결과로발생하는이벤트 (Event) 가발생시킬 인터럽터인덱스를지정한다 96 Cycle bit. Transfer Ring 의 Enqueue Pointer를찾는용도로사용된다 97 Evaluate Next TRB(ENT). 이필드의값이 1 이면 xhc는엔드포인트상태를변경하지 않고이어지는다음 TRB를처리한다. 99:98 사용안함 100 Chain bit. 현재 TRB가하나의 TD를구성하는일부 TRB임을알림. 101 Interrupt on Completion(IOC). 현재 TRB가처리완료되면인터럽트를발생시킬것인 것여부를알린다. 속도문제로보통 TD의마지막 TRB만이기능을사용한다 105:102 사용안함 111:106 TRB Type. Status Stage TRB 유형 (4) 112 Direction(DIR). Status 단계의통신방향을결정함. 값 0 OUT, 값 1 IN 127:113 사용안함 Isoch TRB 지정된프레임시간에맞추어서등시성데이터통신을하고자할때사용하는 TRB 구조이다. 그림 Isoch TRB 의구성요소

70 비트설명 63:0 Data Buffer Pointer Hi/Lo. TRB의데이터버퍼를가리키는 64비트주소. IDT 필드의값이 1 인경우, 이곳은버퍼의주소가아니라 8바이트의임시데이타공간으로사용될수있다 80:64 TRB Transfer Length. xhc가처리하는데이터바이트크기 85:81 TD Size. 현재 TD입장에서 TRB를해석한뒤, 남아있는이어지는몇개의 TRB를해석해야하는지를알려준다. 최대값 31 이므로, 31이상의 TRB를사용해야한다면 31 값을사용해야한다. 95:86 Interrupter Target. 현재 TRB가처리되는결과로발생하는이벤트 (Event) 가발생시킬인터럽터인덱스를지정한다 96 Cycle bit. Transfer Ring 의 Enqueue Pointer를찾는용도로사용된다 97 Evaluate Next TRB(ENT). 이필드의값이 1 이면 xhc는엔드포인트상태를변경하지않고이어지는다음 TRB를처리한다. 98 Interrupt on Short Packet(ISP). 짧은패킷이전송되면인터럽트를발생시킬것인지여부를알린다 99 No Snoop(NS). 기본적으로값 0 을사용한다. PCIe Transaction의 No Snoop 비트의값을결정한다. 100 Chain bit. 현재 TRB가하나의 TD를구성하는일부 TRB임을알림. 101 Interrupt on Completion(IOC). 현재 TRB가처리완료되면인터럽트를발생시킬것인것여부를알린다. 속도문제로보통 TD의마지막 TRB만이기능을사용한다 102 Immediate Data(IDT). 이필드의값이 1 이면, Data Buffer Pointer 필드 64비트가주소를나타내는목적이아닌, 8바이트변수의역할로바뀐다. 104:103 Transfer Burst Count(TBC). 현재의 TD를전송하는데소요되는 Burst 개수 Block Event Interrupt(BEI). TRB 처리결과이벤트로인해서인터럽트가발생하지않도록막는다 111:106 TRB Type. Isoch TRB 유형 (5) 115:112 Transfer Last Block Packet Count(TLBPC). 현재 TD의마지막 Burst에사용되는패킷수 1 126:116 Frame ID. ms 단위. [ 표 10-18] MFINDEX 레지스터의비트 13:3을기준으로사용한다. 전송을시작하고싶은시간정보를제공한다. 127 Start Isoch As Soon As Possible(SIA). Frame ID를고려하지않고가능하면빨리전송하도록요청한다.

71 표 xhc Runtime Register 와 MFINDEX 오프셋 약어 레지스터이름 0000h MFINDEX Microframe Index 001Fh:0004h 사용안함 0020h IR0 Interrupter Register Set h IR1023 Interrupter Register Set 1023 등시성전송에서사용하는 TD 를위한 Frame ID 는다음과같은규칙을가지고있다. ESIT(Endpoint Service Interval Time) 값에따라서가질수있는 Frame ID 규칙이정해져있다. * ESIT 값이 1ms 이상의경우, 이어지는등시성전송 (TD) 의 Service Interval 시간이 1ms 보다큰경우에는, ESIT 시간의배수값이 Frame ID 값으로사용이가능하다. 예를들어, ESIT 값이 1ms 이면, Frame ID 는다음과같이사용될수있다. 1, 2, 3, 4, 5, ESIT 값이 2ms 이면, Frame ID 는다음과같이사용될수있다. 2, 4, 6, ESIT 값이 4ms 이면, Frame ID 는다음과같이사용될수있다. 4, 8, 12, 유의할점은, Frame ID 가 4, 8, 12, 형태로가질수있다는것은정확하게그시간에패킷전송을 시작한다는뜻이아니라, 그사이에전송을한다는뜻이다. Frame ID 가 4, 8, 12, 의경우를보면, 전송은현재기준시간 Frame 으로부터, 4 Frame 시간부터 8 Frame 시간이되기이전에전송을시작한다는뜻이다.

72 * ESIT 값이 1ms 이하의경우, 이런경우 125us 의배수만가능하다. 이어지는등시성전송 (TD) 의 Service Interval 시간이 1ms 보다작은경우에는, ESIT 시간의배수값 의 ms 시간부분이 Frame ID 값으로사용이가능하다. 예를들어, ESIT 값이 125us 이면, Frame ID 는다음과같이사용될수있다. 시간정보를기준으로보면, 125us, 250us, 375us, 500us, 625us, 750us, 875us, 1000us, 1125us, Frame ID 로보면, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, ESIT 값이 250us 이면, Frame ID 는다음과같이사용될수있다. 시간정보를기준으로보면, 250us, 500us, 750us, 1000us, 1250us, Frame ID 로보면, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, ESIT 값이 500us 이면, Frame ID 는다음과같이사용될수있다. 시간정보를기준으로보면, 500us, 1000us, 1500us, Frame ID 로보면, 0, 1, 1, 2, 2, 처음시작만 0 이하나부족한상황이지만, 이어지는 1 부터는발견되는개수가규칙적이다 Event TRBs Event Ring 에접수되는기본적인요청단위를 Event Descriptor(ED) 라고부른다. 하나의 ED 는하나 의 Event TRB 로구성된다 Transfer Event TRB Transfer TRB 에대한결과로 xhc 는 Transfer Event TRB 를만들어서시스템소프트웨어에게알려 준다. 그림 Transfer Event TRB 의구성요소

73 비트 설명 63:0 TRB Buffer Pointer Hi/Lo. Transfer TRB를가리키는 64비트주소. Transfer Event TRB가만들어진이유를제공하는 Transfer TRB이다. ED 필드의값이 1 인경우, Event Data 의 64비트를담은변수로사용된다. 87:64 TRB Transfer Length. Transfer TRB가요구하는전송요청크기중에실제처리된크기 95:88 Completion Code. [ 표 10-19] 96 Cycle bit. Event Ring 의 Dequeue Pointer를찾는용도로사용된다 97 사용안함 98 ED. Event Data. TRB Pointer 영역 64비트가 Event Data의영역으로사용됨 105:99 사용안함 111:106 TRB Type. Transfer Event TRB 유형 (32) 116:112 Endpoint ID. 이벤트가관련된엔드포인트 Context의 ID 119:117 사용안함 127:120 Slot ID. 이벤트를발생시킨디바이스슬롯 ID 표 Completion Code 값정의 0 Invalid 1 Success 2 Data Buffer Error 3 Babble Detected Error 4 USB Transaction Error 5 TRB Error 6 Stall Error 7 Resource Error 8 Bandwidth Error 9 No Slots Availiable Error 10 Invalid Stream Type Error 11 Slot Not Enabled Error 12 Endpoint Not Enabled Error 13 Short Packet

74 14 Ring Underrun 15 Ring Overrun 16 VF Event Ring Full Error 17 Parameter Error 18 Bandwidth Overrun Error 19 Context State Error 20 No Ping Response Error 21 Event Ring Full Error 22 Incompatible Device Error 23 Missed Service Error 24 Command Ring Stopped 25 Command Aborted 26 Stopped 27 Stopped Length Invalid 28 Stopped Short Packet 29 Max Exit Latency Too Large Error 30 사용안함 31 Isoch Buffer Overrun 32 Event Lost Error 33 Undefined Error 34 Invalid Stream ID Error 35 Secondary Bandwidth Error 36 Split Transaction Error Command Completion Event TRB Command TRB 에대한결과로 xhc 는 Command Completion Event TRB 를만들어서시스템소프 트웨어에게알려준다. 그림 Command Completion Event TRB 의구성요소

75 비트 설명 3:0 사용안함 63:4 Command TRB Pointer Hi/Lo. Command TRB를가리키는 64비트주소. Command Completion Event TRB가만들어진이유를제공하는 Command TRB이다. 87:64 Command Completion Parameter. 통상사용안함 95:88 Completion Code. [ 표 10-19] 96 Cycle bit. Event Ring 의 Dequeue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. Command Completion Event TRB 유형 (33) 119:112 VF ID. Virtual Function ID. 가상머쉰환경에서이벤트를발생시킨가상 Function ID 127:120 Slot ID. 이벤트와관련있는디바이스슬롯 ID No Op, Set Latency Tolerance Value, Get Port Bandwidth, Force Event Command를 사용하는경우, Slot ID = Port Status Change Event TRB 루트허브의포트에연결된디바이스가사용중일때, 해당하는포트의상태가변화를가질때해 당하는이벤트 TRB 가전달된다. 그림 Port Status Change Event TRB 의구성요소 비트 설명 23:0 사용안함 31:24 Port ID. 루트허브포트의포트 Number 63:32 사용안함 87:64 사용안함 95:88 Completion Code. [ 표 10-19] 96 Cycle bit. Event Ring 의 Dequeue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. Port Status Change Event TRB 유형 (34) 127:112 사용안함

76 Bandwidth Request Event TRB xhc 가 Negotiate Bandwidth Command 를실행하면 Bandwidth Request Event TRB 를만들어서, 허 브에연결되어사용중인모든디바이스를대상으로 Event Ring 에넣는다. 그림 Bandwidth Request Event TRB 의구성요소 비트 설명 23:0 사용안함 63:24 사용안함 87:64 사용안함 95:88 Completion Code. [ 표 10-19] 96 Cycle bit. Event Ring 의 Dequeue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. Bandwidth Request Event TRB 유형 (35) 119:112 사용안함 127:120 Slot ID. 해당하는이벤트가전달되는대상의디바이스슬롯 ID Doorbell Event TRB 가상머쉰환경에서사용하는이벤트. 이책의범위를벗어나기때문에생략한다 Host Controller Event TRB 호스트컨트롤러 (xhc) 의상태변화를알리기위해서사용되는 TRB 이다. 그림 Host Controller Event TRB 의구성요소

77 비트 설명 23:0 사용안함 63:24 사용안함 87:64 사용안함 95:88 Completion Code. [ 표 10-19] 96 Cycle bit. Event Ring 의 Dequeue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. Host Controller Event TRB 유형 (37) 127:112 사용안함 Device Notification Event TRB 그림 Device Notification Event TRB 의구성요소 비트 설명 3:0 사용안함 7:4 Notification Type. USB3 Device Notification TP의 Notification Type값 63:8 Device Notification Data Hi/Lo. USB3 Device Notification TP Data값 87:64 사용안함 95:88 Completion Code. [ 표 10-19] 96 Cycle bit. Event Ring 의 Dequeue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. Device Notification Event TRB 유형 (38) 119:112 사용안함 127:120 Slot ID. Device Notification Event 를발생시킨디바이스슬롯 ID MFINDEX Wrap Event TRB

78 MFINDEX 레지스터의값이최대값 (3FFFh) 이되어서, 다시처음값 (0) 으로되돌아간다는의미로시 스템소프트웨어에게전달하기위해서만들어지는 Event TRB 이다. 그림 MFINDEX Wrap Event TRB 의구성요소 비트 설명 23:0 사용안함 63:24 사용안함 87:64 사용안함 95:88 Completion Code. [ 표 10-19] 96 Cycle bit. Event Ring 의 Dequeue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. MFINDEX Wrap Event TRB 유형 (39) 127:112 사용안함 Command TRBs Command Ring 에접수되는기본적인요청단위를 Command Descriptor(CD) 라고부른다. 하나의 CD 는하나의 Command TRB 로구성된다 No Op Command TRB Command Ring 의동작을확인하는목적으로사용하는명령어이다. xhc 는해당하는명령을담은 TRB 를 Command Ring 에서끄집어낸뒤, 별다른해석없이 Command Completion Event 를발생시 킨다. 테스트용도이다. 그림 No Op Command TRB 의구성요소

79 비트 설명 95:0 사용안함 96 Cycle bit. Command Ring 의 Enqueue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. No Op Command TRB 유형 (8) 127:112 사용안함 Enable Slot Command TRB Enable Slot 명령어는사용가능한디바이스슬롯 (Device Slot) 을할당하는명령이다. 할당된디바이 스슬롯의상태가 Disable 상태에서 Enable 상태로전환한다. 그림 Enable Slot Command TRB 의구성요소 비트 설명 95:0 사용안함 96 Cycle bit. Command Ring 의 Enqueue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. Enable Slot Command TRB 유형 (9) 116:112 Slot Type. (0) 127:117 사용안함 Disable Slot Command TRB

80 Disable Slot 명령어는사용하던디바이스슬롯의상태를 Disabled 상태로전환한다. 그림 Disable Slot Command TRB 의구성요소 비트 설명 95:0 사용안함 96 Cycle bit. Command Ring 의 Enqueue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. Disable Slot Command TRB 유형 (10) 119:112 사용안함 127:120 Slot ID. 관련된디바이스슬롯 ID Address Device Command TRB Address Device 명령어는디바이스슬롯에연결된디바이스의상태를 BSR(Block Set Address Request) 의값에따라서, Enabled 상태에서 Default 상태혹은 Addressed 상태로전환하거나, Default 상태에서 Addressed 상태로전환한다. 그림 Address Device Command TRB 의구성요소 비트 설명 3:0 사용안함 63:4 Input Context Pointer Hi/Lo. 수정하고자하는 Device Context(Input Context로서 ) 의 주소를지정한다 95:64 사용안함

81 96 Cycle bit. Command Ring 의 Enqueue Pointer를찾는용도로사용된다 104:97 사용안함 105 BSR. Block Set Address Request. 값 의미 0 실제 SET_ADDRESS 명령패킷을만는다 1 실제 SET_ADDRESS 명령패킷을만들지않는다 111:106 TRB Type. Address Device Command TRB 유형 (11) 119:112 사용안함 127:120 Slot ID. 관련된디바이스슬롯 ID Configure Endpoint Command TRB Configure Endpoint 명령어는연결된디바이스를셋업 (Configuring) 하거나반대로 Deconfiguring 하는명령어이다. 파라미터로함께사용되는 DC(Deconfigure) 필드의값이 1 인경우 xhc 는연결 된디바이스를대상으로 Deconfiguring 작업을시도한다. 그림 Configure Endpoint Command TRB 의구성요소 비트 설명 3:0 사용안함 63:4 Input Context Pointer Hi/Lo. 수정하고자하는 Device Context(Input Context로서 ) 의 주소를지정한다 95:64 사용안함 96 Cycle bit. Command Ring 의 Enqueue Pointer를찾는용도로사용된다 104:97 사용안함 105 DC. Deconfigure 필드. 값 의미 0 Configuration, SET_CONFIGURATION 명령 (bconfigvalue = N,!=0) 1 Deconfiguration, SET_CONFIGURATION 명령 (bconfigvalue = 0) 111:106 TRB Type. Configure Endpoint Command TRB 유형 (12) 119:112 사용안함

82 127:120 Slot ID. 관련된디바이스슬롯 ID Evaluate Context Command TRB Evaluate Context 명령어는 Device Context 의특정필드의값을변경하도록시스템소프트웨어가 호스트컨트롤러에게알리는명령이다. 그림 Evaluate Context Command TRB 의구성요소 비트 설명 3:0 사용안함 63:4 Input Context Pointer Hi/Lo. 수정하고자하는 Device Context(Input Context로서 ) 의 주소를지정한다 95:64 사용안함 96 Cycle bit. Command Ring 의 Enqueue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. Evaluate Context Command TRB 유형 (13) 119:112 사용안함 127:120 Slot ID. 관련된디바이스슬롯 ID Reset Endpoint Command TRB Reset Endpoint 명령어는엔드포인트 ( 스트림혹은 Transfer Ring 이정지함 ) 의상태가정지하거나 에러가발생하였을때, 해당하는상황을정상상태로회복하도록시스템소프트웨어가요청하는명 령이다. 그림 Reset Endpoint Command TRB 의구성요소

83 비트 설명 95:0 사용안함 96 Cycle bit. Command Ring 의 Enqueue Pointer를찾는용도로사용된다 104:97 사용안함 105 TSP, Transfer State Preserve. 엔드포인트의상태다이아그램상의현재상태를그대로 유지할지여부를결정 111:106 TRB Type. Reset Endpoint Command TRB 유형 (14) 116:112 Endpoint ID. 관련된엔드포인트 Context ID 119:117 사용안함 127:120 Slot ID. 관련된디바이스슬롯 ID Stop Endpoint Command TRB Stop Endpoint 명령어는엔드포인트를위한동작상태를멈추도록요청하는명령이다. 이명령어가수행되기이전에처리중인전송이취소된다. SP 필드의값에따라서해당하는디바이스가 Suspend되도록할수있다. Endpoint 가중지되면, 관련된 Transfer Ring 의동작이중지된다. 이때, 시스템소프트웨어는보다우선순위가높은 TD(Transfer Descriptor) 를준비해서 Transfer Ring 의 Dequeue Pointer로옮길수있다. 그림 Stop Endpoint Command TRB 의구성요소 비트 설명 95:0 사용안함 96 Cycle bit. Command Ring 의 Enqueue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. Reset Endpoint Command TRB 유형 (14)

84 116:112 Endpoint ID. 관련된엔드포인트 Context ID 118:117 사용안함 119 SP. Suspend. 해당하는디바이스의상태를 Suspend 시키도록요청한다. 127:120 Slot ID. 관련된디바이스슬롯 ID Set TR Dequeue Pointer Command TRB Set TR Dequeue Pointer 명령어는엔드포인트혹은스트림 Context 의 TR Dequeue Pointer 필드의 값을변경하는명령어이다. 시스템소프트웨어는엔드포인트를위한 TR Ring 을처음사용할때, 반드시 Ring 의 Dequeue Pointer 초기값을지정해주어야한다. 그림 Set TR Dequeue Pointer Command TRB 의구성요소 비트 설명 0 Dequeue Cycle State(DCS). xhc가사용할 TR Ring의 Dequeue Pointer를위한 CCS값 3:1 Stream Context Type(SCT). 스트림 Context를지정하는지아니면엔드포인트 Context를지정하는지를결정함. 값 의미 0 Endpoint Context 1 Stream Context 63:4 New TR Dequeue Pointer Hi/Lo. 새로지정하는 TR Ring의 Dequeue Pointer 주소 79:64 사용안함 95:80 Stream ID. 스트림을위한 TR Ring을사용하는경우에지정함. 96 Cycle bit. Command Ring 의 Enqueue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. Set TR Dequeue Pointer Command TRB 유형 (16) 116:112 Endpoint ID. 관련된엔드포인트 Context ID 119:117 사용안함 127:120 Slot ID. 관련된디바이스슬롯 ID Reset Device Command TRB

85 Reset Device 명령어는 xhc 에게디바이스슬롯에연결된디바이스가리셋되었다는사실을알리는 명령어이다. 그림 Reset Device Command TRB 의구성요소 비트 설명 95:0 사용안함 96 Cycle bit. Command Ring 의 Enqueue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. Reset Device Command TRB 유형 (17) 119:112 사용안함 127:120 Slot ID. 관련된디바이스슬롯 ID Get Port Bandwidth Command TRB Get Port Bandwidth 명령어는루트허브혹은외장허브의각각의다운스트림포트 (Downstream Port) 의사용가능한대역폭퍼센트값을구하는목적으로사용된다. 이값은주기적인전송을필요 로하는엔드포인트를위해서사용된다. 그림 Get Port Bandwidth Command TRB 의구성요소 비트 설명 3:0 사용안함 63:4 Port Bandwidth Context Pointer Hi/Lo. [ 표 10-16] 참고 95:64 사용안함

86 96 Cycle bit. Command Ring 의 Enqueue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. Get Port Bandwidth Command TRB 유형 (21) 115:112 Dev Speed. 대역폭을알고싶은관심속도를지정한다 값 의미 0 사용안함 1-15 Protocol Speed ID(PSI). 119:112 사용안함 127:120 Hub Slot ID. 해당하는디바이스가연결된허브의디바이스슬롯 ID Protocol Speed ID(PSI) 는 Lane 속도를정의하는 4 바이트 (DWORD) 의배열항목을찾는용도로사 용된다. 이값 PSID 는 1-15 까지사전에속도를지정할수있다. 기본적으로 1 4 까지는디폴트로다음과같은속도로지정되어있다. 표 사전에정의된디폴트 PSID(1-4) PSID 정의 Bit Rate 프로토콜 관련된 PSI DWORD 값 PLT PFD PSIE PSIM 1 Full Speed 12Mb/s USB Low Speed 1.5Mb/s USB High Speed 480Mb/s USB Super Speed 5Gb/s USB Force Header Command TRB Force Header 명령어는 USB3 에서사용되는 TP(Transaction Packet), LMP(Link Management Packet) 등을만들어서디바이스에게전송하는목적으로사용된다. 그림 Force Header Command TRB 의구성요소

87 비트 설명 4:0 Type. USB3 에서정의하는 Packet Type 95:5 Header Info. Transaction Packet 또는 Link Management Packet 형태의데이터. 96 Cycle bit. Command Ring 의 Enqueue Pointer를찾는용도로사용된다 105:97 사용안함 111:106 TRB Type. Force Header Command TRB 유형 (22) 119:112 사용안함 127:120 Root Hub Port Number. 루트허브포트번호 그밖에 TRBs Link TRB 세그먼트내부에 TRB 는다음에인접한 TRB 와연결되지만, 더이상인접한 TRB 가없다면다른세 그먼트로혹은현재세그먼트의처음부분으로연결시켜야한다. 이때사용하는 TRB 를 Link TRB 라고부른다. 그림 Link TRB 의구성요소 비트 설명 3:0 사용안함 63:4 Ring Segment Pointer Hi/Lo. 새로운 Ring의세그먼트로연결하기위한주소 85:64 사용안함 95:86 Interrupter Target. Link TRB가해석된뒤에발생시킬인터럽터의인덱스를지정한다 96 Cycle bit. Transfer 혹은 Command Ring 의 Enqueue Pointer를찾는용도로사용된 다 97 Toggle bit. 현재 TRB를참조하는생산자혹은소비자의 Cycle State값을토글시킬것 인지여부를결정함 99:98 사용안함 100 Chain bit. 현재 TRB가하나의 TD를구성하는일부 TRB임을알림. 101 Interrupt on Completion(IOC). 현재 TRB가처리완료되면인터럽트를발생시킬것인

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)

More information

untitled

untitled 1... 2 System... 3... 3.1... 3.2... 3.3... 4... 4.1... 5... 5.1... 5.2... 5.2.1... 5.3... 5.3.1 Modbus-TCP... 5.3.2 Modbus-RTU... 5.3.3 LS485... 5.4... 5.5... 5.5.1... 5.5.2... 5.6... 5.6.1... 5.6.2...

More information

Microsoft PowerPoint - o8.pptx

Microsoft PowerPoint - o8.pptx 메모리보호 (Memory Protection) 메모리보호를위해 page table entry에 protection bit와 valid bit 추가 Protection bits read-write / read-only / executable-only 정의 page 단위의 memory protection 제공 Valid bit (or valid-invalid bit)

More information

Chapter ...

Chapter ... Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준

More information

SRC PLUS 제어기 MANUAL

SRC PLUS 제어기 MANUAL ,,,, DE FIN E I N T R E A L L O C E N D SU B E N D S U B M O TIO

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

일반적인 네트워크의 구성은 다음과 같다

일반적인 네트워크의 구성은 다음과 같다 W5200 Errata Sheet Document History Ver 1.0.0 (Feb. 23, 2012) First release (erratum 1) Ver 1.0.1 (Mar. 28, 2012) Add a solution for erratum 1, 2 Ver 1.0.2 (Apr. 03, 2012) Add a solution for erratum 3

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The 4 th Lecture 유명환 ( yoo@netplug.co.kr) 1 시간 (Time) 에대한정의 INDEX 2 왜타이머 (Timer) 와카운터 (Counter) 인가? 3 ATmega128 타이머 / 카운터동작구조 4 ATmega128 타이머 / 카운터관련레지스터 5 뻔뻔한노하우 : 레지스터비트설정방법 6 ATmega128

More information

Microsoft PowerPoint - 30.ppt [호환 모드]

Microsoft PowerPoint - 30.ppt [호환 모드] 이중포트메모리의실제적인고장을고려한 Programmable Memory BIST 2010. 06. 29. 연세대학교전기전자공학과박영규, 박재석, 한태우, 강성호 hipyk@soc.yonsei.ac.kr Contents Introduction Proposed Programmable Memory BIST(PMBIST) Algorithm Instruction PMBIST

More information

를수있다. * 링크명령어 링크는양쪽파트너사이에지정된링크명령어 ( 프로토콜계층에서정의하지않은 ) 을별도로준비해 서사용한다. 링크명령어는링크상태의전환및흐름제어 (Flow Control) 등에사용된다. * 링크전원관리 USB 3 SS 에서는링크의버스전원사용상태가어떤상태인지를

를수있다. * 링크명령어 링크는양쪽파트너사이에지정된링크명령어 ( 프로토콜계층에서정의하지않은 ) 을별도로준비해 서사용한다. 링크명령어는링크상태의전환및흐름제어 (Flow Control) 등에사용된다. * 링크전원관리 USB 3 SS 에서는링크의버스전원사용상태가어떤상태인지를 4 장 USB 링크 (Link) USB 프로토콜에서링크가중요한역할로부각되기시작한것은 USB 3 슈퍼스피드 (SS) 로부터이 다. 링크는호스트 ( 루트허브포트 ) 또는외장허브의다운스트림포트 (DP) 와외장허브또는디바이스의 업스트림포트 (UP) 간의연결을의미한다. 이들간의서로를링크파트너 (Link Partner) 라고부른다. 이번장에서는 USB 링크에대한전체적인개념을배우도록한다.

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The 6 th Lecture 유명환 ( yoo@netplug.co.kr) 1 2 통신 관련이야기 시리얼통신 관련이야기 INDEX 3 ATmega128 시리얼통신회로도분석 4 ATmega128 시리얼통신컨트롤러 (USART) 분석 5 ATmega128 시리얼통신관련레지스터분석 6 ATmega128 시리얼통신실습 1 통신 관련이야기 동기

More information

[ 네트워크 1] 3 주차 1 차시. IPv4 주소클래스 3 주차 1 차시 IPv4 주소클래스 학습목표 1. IP 헤더필드의구성을파악하고요약하여설명할수있다. 2. Subnet ID 및 Subnet Mask 를설명할수있고, 각클래스의사용가능한호스트수와사설 IP 주소및네트

[ 네트워크 1] 3 주차 1 차시. IPv4 주소클래스 3 주차 1 차시 IPv4 주소클래스 학습목표 1. IP 헤더필드의구성을파악하고요약하여설명할수있다. 2. Subnet ID 및 Subnet Mask 를설명할수있고, 각클래스의사용가능한호스트수와사설 IP 주소및네트 3 주차 1 차시 IPv4 주소클래스 학습목표 1. IP 헤더필드의구성을파악하고요약하여설명할수있다. 2. Subnet ID 및 Subnet Mask 를설명할수있고, 각클래스의사용가능한호스트수와사설 IP 주소및네트워크주소와 브로드캐스트주소를설명할수있다. 학습내용 1 : IP 헤더필드구성 1. Network Layer Fields 2. IP 헤더필드의구성 1)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State

More information

RVC Robot Vaccum Cleaner

RVC Robot Vaccum Cleaner RVC Robot Vacuum 200810048 정재근 200811445 이성현 200811414 김연준 200812423 김준식 Statement of purpose Robot Vacuum (RVC) - An RVC automatically cleans and mops household surface. - It goes straight forward while

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

Microsoft Word - release note-VRRP_Korean.doc

Microsoft Word - release note-VRRP_Korean.doc VRRP (Virtual Router Redundancy Protocol) 기능추가 Category S/W Release Version Date General 7.01 22 Dec. 2003 Function Description VRRP 는여러대의라우터를그룹으로묶어하나의가상 IP 어드레스를부여해마스터로지정된라우터장애시 VRRP 그룹내의백업라우터가마스터로자동전환되는프로토콜입니다.

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

슬라이드 제목 없음

슬라이드 제목 없음 ETOS-DPS-X Guide AC&T SYSTEM 1 ETOS-DPS-X 개요 ETOS-DPS-X Field Bus Network 중 Profibus-DP Network 에연결되는장비. ProfiBus-DP Network 시스템에 DP 통신을지원하지않는현장장비에대한통신서버기능구현. Profibus-DP Slave 동작하기때문에반드시 DP-Master 모듈이있는시스템에서적용가능.

More information

歯FDA6000COP.PDF

歯FDA6000COP.PDF OPERATION MANUAL AC Servo Drive FDA6000COP [OPERATION UNIT] Ver 1.0 (Soft. Ver. 8.00 ~) FDA6000C Series Servo Drive OTIS LG 1. 1.1 OPERATION UNIT FDA6000COP. UNIT, FDA6000COP,,,. 1.1.1 UP DOWN ENTER 1.1.2

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

PCServerMgmt7

PCServerMgmt7 Web Windows NT/2000 Server DP&NM Lab 1 Contents 2 Windows NT Service Provider Management Application Web UI 3 . PC,, Client/Server Network 4 (1),,, PC Mainframe PC Backbone Server TCP/IP DCS PLC Network

More information

2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예

2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예 Mitsubishi FX Series Computer Link 2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK... 1 1. 시스템구성... 3 2. 시스템설정... 4 3. 사용예... 6 3.1. 사용예 1... 6 3.2. 사용예 2... 9 4. 케이블연결도... 13 4.1.

More information

1. GigE Camera Interface를 위한 최소 PC 사양 CPU : Intel Core 2 Duo, 2.4GHz이상 RAM : 2GB 이상 LANcard : Intel PRO/1000xT 이상 VGA : PCI x 16, VRAM DDR2 RAM 256MB

1. GigE Camera Interface를 위한 최소 PC 사양 CPU : Intel Core 2 Duo, 2.4GHz이상 RAM : 2GB 이상 LANcard : Intel PRO/1000xT 이상 VGA : PCI x 16, VRAM DDR2 RAM 256MB Revision 1.0 Date 11th Nov. 2013 Description Established. Page Page 1 of 9 1. GigE Camera Interface를 위한 최소 PC 사양 CPU : Intel Core 2 Duo, 2.4GHz이상 RAM : 2GB 이상 LANcard : Intel PRO/1000xT 이상 VGA : PCI x

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 USB Communication - Packet Structure 2004. 1. 김현수 (mclapd) 세미나를시작하기전에 USB 의 Low Level Communication 에관련한사항만다루기때문에펌웨어또는드라이버, 애플리케이션에관련된것은언급하지않습니다. * 몇페이지의내용은 DevGuru 송지호님의글을인용하였습니다. USB Bus Topology 1.

More information

10X56_NWG_KOR.indd

10X56_NWG_KOR.indd 디지털 프로젝터 X56 네트워크 가이드 이 제품을 구입해 주셔서 감사합니다. 본 설명서는 네트워크 기능 만을 설명하기 위한 것입니다. 본 제품을 올바르게 사 용하려면 이 취급절명저와 본 제품의 다른 취급절명저를 참조하시기 바랍니다. 중요한 주의사항 이 제품을 사용하기 전에 먼저 이 제품에 대한 모든 설명서를 잘 읽어 보십시오. 읽은 뒤에는 나중에 필요할 때

More information

CPX-E-EC_BES_C_ _ k1

CPX-E-EC_BES_C_ _ k1 CPX-E CPX-E-EC EtherCAT 8071155 2017-07 [8075310] CPX-E-EC CPX-E-EC-KO EtherCAT, TwinCAT (). :, 2 Festo CPX-E-EC-KO 2017-07 CPX-E-EC 1... 4 1.1... 4 1.2... 4 1.3... 4 1.4... 5 1.5... 5 2... 6 2.1... 6

More information

OPCTalk for Hitachi Ethernet 1 2. Path. DCOMwindow NT/2000 network server. Winsock update win95. . . 3 Excel CSV. Update Background Thread Client Command Queue Size Client Dynamic Scan Block Block

More information

Microsoft PowerPoint - polling.pptx

Microsoft PowerPoint - polling.pptx 지현석 (binish@home.cnu.ac.kr) http://binish.or.kr Index 이슈화된키보드해킹 최근키보드해킹이슈의배경지식 Interrupt VS polling What is polling? Polling pseudo code Polling 을이용한키로거분석 방어기법연구 이슈화된키보드해킹 키보드해킹은연일상한가! 주식, 펀드투자의시기?! 최근키보드해킹이슈의배경지식

More information

03_queue

03_queue Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,

More information

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_ Sena Technologies 백서 : Latency/Throughput Test September 11, 2008 Copyright Sena Technologies, Inc 2008 All rights strictly reserved. No part of this document may not be reproduced or distributed without

More information

untitled

untitled Embedded System Lab. II Embedded System Lab. II 2 RTOS Hard Real-Time vs Soft Real-Time RTOS Real-Time, Real-Time RTOS General purpose system OS H/W RTOS H/W task Hard Real-Time Real-Time System, Hard

More information

API 매뉴얼

API 매뉴얼 PCI-TC03 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations

More information

T100MD+

T100MD+ User s Manual 100% ) ( x b a a + 1 RX+ TX+ DTR GND TX+ RX+ DTR GND RX+ TX+ DTR GND DSR RX+ TX+ DTR GND DSR [ DCE TYPE ] [ DCE TYPE ] RS232 Format Baud 1 T100MD+

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

歯A1.1함진호.ppt

歯A1.1함진호.ppt The Overall Architecture of Optical Internet ETRI ? ? Payload Header Header Recognition Processing, and Generation A 1 setup 1 1 C B 2 2 2 Delay line Synchronizer New Header D - : 20Km/sec, 1µsec200 A

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

untitled

untitled CAN BUS RS232 Line Ethernet CAN H/W FIFO RS232 FIFO IP ARP CAN S/W FIFO TERMINAL Emulator COMMAND Interpreter ICMP TCP UDP PROTOCOL Converter TELNET DHCP C2E SW1 CAN RS232 RJ45 Power

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

Microsoft Word - logic2005.doc

Microsoft Word - logic2005.doc 제 8 장 Counters 실험의목표 - Catalog counter 의동작원리에대하여익힌다. - 임의의 counter를통하여 FSM 구현방법을익힌다. - 7-segment display 의동작원리를이해한다. 실험도움자료 1. 7-segment display 7-segment는디지털회로에서숫자를표시하기위하여가장많이사용하는소자이다. 이름에서알수있듯이 7개의 LED(

More information

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp l Y ( X g, Y g ) r v L v v R L θ X ( X c, Yc) W (a) (b) DC 12V 9A Battery 전원부 DC-DC Converter +12V, -12V DC-DC Converter 5V DC-AC Inverter AC 220V DC-DC Converter 3.3V Motor Driver 80196kc,PWM Main

More information

Smart Power Scope Release Informations.pages

Smart Power Scope Release Informations.pages v2.3.7 (2017.09.07) 1. Galaxy S8 2. SS100, SS200 v2.7.6 (2017.09.07) 1. SS100, SS200 v1.0.7 (2017.09.07) [SHM-SS200 Firmware] 1. UART Command v1.3.9 (2017.09.07) [SHM-SS100 Firmware] 1. UART Command SH모바일

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

CPX-E-SYS_BES_C_ _ k1

CPX-E-SYS_BES_C_ _ k1 CPX-E 8727 27-7 [875294] CPX-E-SYS-KO CODESYS, PI PROFIBUS PROFINET (). :, 2 Festo CPX-E-SYS-KO 27-7 ... 5.... 5.2... 5.3... 5.4... 5.5... 5 2... 6 2.... 6 2..... 6 2..2 CPX-E... 7 2..3 CPX-E... 9 2..4...

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

Mango220 Android How to compile and Transfer image to Target

Mango220 Android How to compile and Transfer image to Target Mango220 Android How to compile and Transfer image to Target http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys

More information

인켈(국문)pdf.pdf

인켈(국문)pdf.pdf M F - 2 5 0 Portable Digital Music Player FM PRESET STEREOMONO FM FM FM FM EQ PC Install Disc MP3/FM Program U S B P C Firmware Upgrade General Repeat Mode FM Band Sleep Time Power Off Time Resume Load

More information

1217 WebTrafMon II

1217 WebTrafMon II (1/28) (2/28) (10 Mbps ) Video, Audio. (3/28) 10 ~ 15 ( : telnet, ftp ),, (4/28) UDP/TCP (5/28) centralized environment packet header information analysis network traffic data, capture presentation network

More information

Microsoft Word - Installation and User Manual_CMD V2.2_.doc

Microsoft Word - Installation and User Manual_CMD V2.2_.doc CARDMATIC CMD INSTALLATION MANUAL 씨앤에이씨스템(C&A SYSTEM Co., Ltd.) 본사 : 서울특별시 용산구 신계동 24-1(금양빌딩 2층) TEL. (02)718-2386( 代 ) FAX. (02) 701-2966 공장/연구소 : 경기도 고양시 일산동구 백석동 1141-2 유니테크빌 324호 TEL. (031)907-1386

More information

PRO1_09E [읽기 전용]

PRO1_09E [읽기 전용] Siemens AG 1999 All rights reserved File: PRO1_09E1 Information and - ( ) 2 3 4 5 Monitor/Modify Variables" 6 7 8 9 10 11 CPU 12 Stop 13 (Forcing) 14 (1) 15 (2) 16 : 17 : Stop 18 : 19 : (Forcing) 20 :

More information

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - (Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

BridgeWare Introduction

BridgeWare Introduction How to use MET OPC Server 브릿지웨어 0505-303-1963 info@opchub.com 1. HY Starting 헤드라인 MET M(20pt) & Registration MET OPC Server 가 Capture 한 Product Code Number 를 info@opchub.com 으로보내어 Authorization code 를받아

More information

Remote UI Guide

Remote UI Guide Remote UI KOR Remote UI Remote UI PDF Adobe Reader/Adobe Acrobat Reader. Adobe Reader/Adobe Acrobat Reader Adobe Systems Incorporated.. Canon. Remote UI GIF Adobe Systems Incorporated Photoshop. ..........................................................

More information

Microsoft Word doc

Microsoft Word doc TCP/IP 구조 1. I.P 구조설명 2. ARP 구조설명 3. TCP 구조설명 4. UDT 구조설명 5. RIP 구조설명 6. BOOTP 구조설명 7. TFTP 구조설명 destination addr source addr type data CRC 6 6 2 46-1500 4 type 0X0800 IP datagram 2 46-1500 type 0X0806

More information

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

Microsoft Word - FS_ZigBee_Manual_V1.3.docx FirmSYS Zigbee etworks Kit User Manual FS-ZK500 Rev. 2008/05 Page 1 of 26 Version 1.3 목 차 1. 제품구성... 3 2. 개요... 4 3. 네트워크 설명... 5 4. 호스트/노드 설명... 6 네트워크 구성... 6 5. 모바일 태그 설명... 8 6. 프로토콜 설명... 9 프로토콜 목록...

More information

SMB_ICMP_UDP(huichang).PDF

SMB_ICMP_UDP(huichang).PDF SMB(Server Message Block) UDP(User Datagram Protocol) ICMP(Internet Control Message Protocol) SMB (Server Message Block) SMB? : Microsoft IBM, Intel,. Unix NFS. SMB client/server. Client server request

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,

More information

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Tablespace On-Offline 테이블스페이스 온라인/오프라인 2018/11/10 12:06 1/2 Tablespace On-Offline 테이블스페이스온라인 / 오프라인 목차 Tablespace On-Offline 테이블스페이스온라인 / 오프라인... 1 일반테이블스페이스 (TABLESPACE)... 1 일반테이블스페이스생성하기... 1 테이블스페이스조회하기... 1 테이블스페이스에데이터파일 (DATA FILE) 추가

More information

PowerPoint Template

PowerPoint Template SOFTWARE ENGINEERING Team Practice #3 (UTP) 201114188 김종연 201114191 정재욱 201114192 정재철 201114195 홍호탁 www.themegallery.com 1 / 19 Contents - Test items - Features to be tested - Features not to be tested

More information

PRO1_04E [읽기 전용]

PRO1_04E [읽기 전용] Siemens AG 1999 All rights reserved File: PRO1_04E1 Information and S7-300 2 S7-400 3 EPROM / 4 5 6 HW Config 7 8 9 CPU 10 CPU : 11 CPU : 12 CPU : 13 CPU : / 14 CPU : 15 CPU : / 16 HW 17 HW PG 18 SIMATIC

More information

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서 PowerChute Personal Edition v3.1.0 990-3772D-019 4/2019 Schneider Electric IT Corporation Schneider Electric IT Corporation.. Schneider Electric IT Corporation,,,.,. Schneider Electric IT Corporation..

More information

(SW3704) Gingerbread Source Build & Working Guide

(SW3704) Gingerbread Source Build & Working Guide (Mango-M32F4) Test Guide http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys CRZ Technology 1 Document History

More information

Microsoft Word - PLC제어응용-2차시.doc

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Text-LCD Device Control - Device driver Jo, Heeseung M3 모듈에장착되어있는 Tedxt LCD 장치를제어하는 App 을개발 TextLCD 는영문자와숫자일본어, 특수문자를표현하는데사용되는디바이스 HBE-SM5-S4210 의 TextLCD 는 16 문자 *2 라인을 Display 할수있으며, 이 TextLCD 를제어하기위하여

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

슬라이드 제목 없음

슬라이드 제목 없음 2006-09-27 경북대학교컴퓨터공학과 1 제 5 장서브넷팅과슈퍼넷팅 서브넷팅 (subnetting) 슈퍼넷팅 (Supernetting) 2006-09-27 경북대학교컴퓨터공학과 2 서브넷팅과슈퍼넷팅 서브넷팅 (subnetting) 하나의네트워크를여러개의서브넷 (subnet) 으로분할 슈퍼넷팅 (supernetting) 여러개의서브넷주소를결합 The idea

More information

The Self-Managing Database : Automatic Health Monitoring and Alerting

The Self-Managing Database : Automatic Health Monitoring and Alerting The Self-Managing Database : Automatic Health Monitoring and Alerting Agenda Oracle 10g Enterpirse Manager Oracle 10g 3 rd Party PL/SQL API Summary (Self-Managing Database) ? 6% 6% 12% 55% 6% Source: IOUG

More information

PowerPoint Presentation

PowerPoint Presentation Korea Tech Conference 2005 년 5 월 14 일, 서울 2005 년 5 월 14 일 CE Linux Forum Korea Tech Conference 1 Parallel port 를이용한가전제품 제어 임효준 LG 전자 imhyo@lge.com 2005 년 5 월 14 일 CE Linux Forum Korea Tech Conference 2

More information

1 장 USB(Universal Serial Bus) 기본개요 이번장에서는앞으로책에서소개하는 USB 와관련된개념을가볍게살펴보는시간을가진다. 구체적인내용은이어지는뒷장에서자세하게다룰것이다. [ 글을읽기전에잠시확인하자!] 저자의한마디 * USB 2.0 USB 릴리즈버젼의종류

1 장 USB(Universal Serial Bus) 기본개요 이번장에서는앞으로책에서소개하는 USB 와관련된개념을가볍게살펴보는시간을가진다. 구체적인내용은이어지는뒷장에서자세하게다룰것이다. [ 글을읽기전에잠시확인하자!] 저자의한마디 * USB 2.0 USB 릴리즈버젼의종류 1 부 USB 2(Low Speed, Full Speed, High Speed) 와 USB 3(Super Speed, Super Speed Plus) 를소개한다. 다양한 USB 트랜잭션을소개하고, USB 버스에서전원을효과적으로사용하는방법이어떻게소 개되어있는지를살펴본다. 1 장 USB(Universal Serial Bus) 기본개요 이번장에서는앞으로책에서소개하는

More information

Microsoft PowerPoint - 알고리즘_1주차_2차시.pptx

Microsoft PowerPoint - 알고리즘_1주차_2차시.pptx Chapter 2 Secondary Storage and System Software References: 1. M. J. Folk and B. Zoellick, File Structures, Addison-Wesley. 목차 Disks Storage as a Hierarchy Buffer Management Flash Memory 영남대학교데이터베이스연구실

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS ( PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (http://ddns.hanwha-security.com) Step 1~5. Step, PC, DVR Step 1. Cable Step

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED

More information

Microsoft Word - JAVS_UDT-1_상세_메뉴얼.doc

Microsoft Word - JAVS_UDT-1_상세_메뉴얼.doc UDT-1 TRANSPORTER 한글 상세 제품 설명서 SoundPrime. 저작권 본 저작권은 Soundprime 이 소유하고 있습니다. Soundprime 의 허가 없이 정보 검색 시스템상에서 복사, 수정, 전달, 번역, 저장을 금지하며, 컴퓨터언어나 다른 어떠한 언어로도 수정될 수 없습니다. 또한 다른 형식이나 전기적, 기계적, 자기적, 광학적, 화학적,

More information

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

MicrocontrollerAcademy_Lab_ST_040709

MicrocontrollerAcademy_Lab_ST_040709 Micro-Controller Academy Program Lab Materials STMicroelectronics ST72F324J6B5 Seung Jun Sang Sa Ltd. Seung Jun Sang Sa Ltd. Seung Jun Sang Sa Ltd. Seung Jun Sang Sa Ltd. Seung Jun Sang Sa Ltd. Seung Jun

More information

USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl C

USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl C USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC Step 1~5. Step, PC, DVR Step 1. Cable Step

More information

R50_51_kor_ch1

R50_51_kor_ch1 S/N : 1234567890123 Boot Device Priority NumLock [Off] Enable Keypad [By NumLock] Summary screen [Disabled] Boor-time Diagnostic Screen [Disabled] PXE OPROM [Only with F12]

More information

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1 IP 심화 º 각 P 의게이트웨이는해당네트워크의마지막주소를사용한다. - P1 (210.220.10.1/26) 의게이트웨이 (5의 Fa0/0) : 210.220.10.63 /26 = 255.255.255.192 호스트비트수 : 32-26 = 6 비트 => = 64 그러므로 P1의 IP 210.220.10.1 중서브넷마스크에의거 26비트는변함이없고, 나머지 6비트가호스트비트로변하므로

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다 이장에서사용되는 MATLAB 명령어들은비교적복잡하므로 MATLAB 창에서명령어를직접입력하지않고확장자가 m 인 text 파일을작성하여실행을한다. 즉, test.m 과같은 text 파일을만들어서 MATLAB 프로그램을작성한후실행을한다. 이와같이하면길고복잡한 MATLAB 프로그램을작성하여실행할수있고, 오류가발생하거나수정이필요한경우손쉽게수정하여실행할수있는장점이있으며,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

Microsoft PowerPoint - T1 ERS (Elevator Reservation System)SASD2.pptx

Microsoft PowerPoint - T1 ERS (Elevator Reservation System)SASD2.pptx Team : T1 Member : 김영훈, 남장우, 황규원 Presenter : 김영훈 Statement of Purpose System Context Diagram Event List Data Flow Diagram Process Specification i Structured Charts Elevator Reservation System(ERS) -ERS는입력이들어오면입력을스케줄에저장한다.

More information

Microsoft Word - How to make a ZigBee Network_kr

Microsoft Word - How to make a ZigBee Network_kr 1 단계 ZigBee 네트워크설정방법 이보기는 ProBee 기기를이용해 ZigBee 네트워크를설정하는방법을보여줍니다. 2 단계 이보기에서사용된 SENA 제품입니다 : ProBee ZE10 Starter Kit ProBee ZS10 ProBee ZU10 3 단계 ZigBee 네트워크입니다. SE1 SE2 SE3 ZS10 ZS10 ZS10 R4 R5 R3 R1

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2 제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.

More information

1아이리포 기술사회 모의고사 참조답안

1아이리포 기술사회 모의고사 참조답안 아이리포지식창고 Data Link 계층프로토콜 STP 김우태컴퓨터시스템응용기술사 (matica5127@naver.com) STP(Spanning Tree Protocol) Concept + STP 을이해하기위한세가지개념 + STP 개요 - STP 정의 - Bridged LAN 에서의 Spanning Tree Algorithm - Bridge 구성에서의 Looping

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 A 반 T2 - 김우빈 (201011321) 임국현 (201011358) 박대규 (201011329) Robot Vacuum Cleaner 1 Motor Sensor RVC Control Cleaner Robot Vaccum Cleaner 2 / Event Format/ Type Front Sensor RVC 앞의장애물의유무를감지한다. True / False,

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

untitled

untitled CAN BUS RS232 Line CAN H/W FIFO RS232 FIFO CAN S/W FIFO TERMINAL Emulator COMMAND Interpreter PROTOCOL Converter CAN2RS232 Converter Block Diagram > +- syntax

More information