implementing advanced usb interrupt transfersuefi summerfest –july 15-19, 2013 presented by...

23
presented by Implementing Advanced USB Interrupt Transfers UEFI Summerfest – July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest July 2013 www.uefi.org 1 Updated 2011-06-01

Upload: others

Post on 20-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

presented by

Implementing Advanced USB Interrupt Transfers

UEFI Summerfest – July 15-19, 2013Presented by Zachary Bobroff (AMI)

UEFI Summerfest – July 2013 www.uefi.org 1

Updated 2011-06-01

Page 2: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Agenda

• Introduction• USB Background• Isochronous Transfers• Connection with UEFI

Specification• Potential Use Cases• Demonstration• Further Thoughts• Questions?

UEFI Summerfest – July 2013 www.uefi.org 2

Page 3: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

IntroductionSection Heading

UEFI Summerfest – July 2013 www.uefi.org 3

Page 4: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Introduction

• USB is a highly utilized bus in all computer systems today• Typically UEFI USB transfers are done through control and

bulk transfers• These types of transfers limit the devices that can be used

by UEFI to simple devices like:– Mass storage– Mice– Keyboards– Pointers– USB->Serial Adapters– CCIDs

• Other device types exist and can be utilized in new ways if their UEFI interfaces are properly implemented

UEFI Summerfest – July 2013 www.uefi.org 4

Page 5: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

USB BackgroundSection Heading

UEFI Summerfest – July 2013 www.uefi.org 5

Page 6: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Basics of USB Operation

• USB is a serial bus that transfers data one bit at a time at a high clock rate

• USB Devices are connected to USB controllers that preform data transactions to communicate with connected devices

• USB is a polled bus– No device initiates a transaction

• When a USB device is connected, the software stack uses the host controller to read device capabilities and initialize the device

www.uefi.org 6UEFI Summerfest – July 2013

Page 7: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Basics of USB Transactions

• Depending on the type of the device, different transaction types are used

• For Mass Storage, the transaction is a one time transfer that goes until completion

• For Input devices like keyboard and mice, devices are checked periodically to see if new data is available

• Transactions are scheduled and completed through something called a Transfer Descriptor (TD)

www.uefi.org 7UEFI Summerfest – July 2013

Page 8: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Transfer Descriptors

• TDs schedule a transfer to complete with a specific device

• TDs are prepared for one time transfers and devices that need to be checked for data again need to setup a new TD when earlier ones complete

www.uefi.org 8

USB HC

TDTD

TD

USB Device

UEFI Summerfest – July 2013

Page 9: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Isochronous Transfers

www.uefi.org 9UEFI Summerfest – July 2013

Page 10: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Isochronous Transfers

• Some classes of USB devices transfer large amounts of data at a defined schedule and the previously mentioned transfers do not fit

• Isochronous transfers ensure that data flows at a defined rate so that applications can process it when time is available

• Devices requiring this type of transfer tend to be Audio or Video related

www.uefi.org 10UEFI Summerfest – July 2013

Page 11: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

USB Video Class

• USB Video Class is industry standard defined by usb.org

• UVC devices are USB video cameras

• UVC Specification defines the interface to communicate with UVC device

– Set camera streaming parameters

–Get video stream

www.uefi.org 11UEFI Summerfest – July 2013

Page 12: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

UEFI USB Interface

www.uefi.org 12UEFI Summerfest – July 2013

Page 13: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

USB IO Interface

typedef struct _EFI_USB_IO_PROTOCOL { EFI_USB_IO_CONTROL_TRANSFER UsbControlTransfer; EFI_USB_IO_BULK_TRANSFER UsbBulkTransfer;EFI_USB_IO_ASYNC_INTERRUPT_TRANSFER UsbAsyncInterruptTransfer; EFI_USB_IO_SYNC_INTERRPUT_TRANSFER UsbSyncInterruptTransferEFI_USB_IO_ISOCHRONOUS_TRANSFER UsbIsochronousTransfer; EFI_USB_IO_ASYNC_ISOCHRONOUS_TRANSFER UsbAsyncIsochronousTransfer; EFI_USB_IO_GET_DEVICE_DESCRIPTOR UsbGetDeviceDescriptor; EFI_USB_IO_GET_CONFIG_DESCRIPTOR UsbGetConfigDescriptor; EFI_USB_IO_GET_INTERFACE_DESCRIPTOR UsbGetInterfaceDescriptor; EFI_USB_IO_GET_ENDPOINT_DESCRIPTOR UsbGetEndpointDescriptor; EFI_USB_IO_GET_STRING_DESCRIPTOR UsbGetStringDescriptor; EFI_USB_IO_GET_SUPPORTED_LANGUAGES UsbGetSupportedLanguages; EFI_USB_IO_PORT_RESET UsbPortReset;

} EFI_USB_IO_PROTOCOL;

UEFI Plugfest – February

2012www.uefi.org 13

Page 14: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

UEFI API Usage by UVC

• UsbIo ControlTransfer to set up the parameters– Focus

– Brightness

– Gamma saturation

– Etc…

• UsbIo IsochronousTransfer to stream the data

• Data output– GOP can be used to display the image on the monitor

– Network stack can be used to transfer the video stream over the network

www.uefi.org 14UEFI Summerfest – July 2013

Page 15: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

EHCI Specific Concern

• The specification should make assumptions about controller architecture

• These sorts of information can be hidden from the caller and a simple buffer can be provided with length– The implementation can make use of hardware specifics on the

back end

www.uefi.org 15

Very EHCI

Specific

UEFI Summerfest – July 2013

Page 16: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Potential Use Cases

www.uefi.org 16UEFI Summerfest – July 2013

Page 17: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Use cases in BIOS?

• Camera can be used to:

–Check for user presence

–Do facial recognition for a password

– Take a photograph if your laptop has been reported stolen

www.uefi.org 17UEFI Summerfest – July 2013

Page 18: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Demonstration

www.uefi.org 18UEFI Summerfest – July 2013

Page 19: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Demonstration

• USB video camera running:

– In background in Shell

– In background of Post Screen

– In background of Setup

• The camera display can also change:

–Resolution within video screen

– Location within the video screen

UEFI Plugfest – February

2012www.uefi.org 19

Page 20: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Further Thoughts

www.uefi.org 20UEFI Summerfest – July 2013

Page 21: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Further Development

• USB video cameras do not transfer data in raw BLT format GOP is expecting– Video protocols could be created to accept

different video buffers types

• Video cards could publish helper protocols to convert video data buffers between formats more quickly than the CPU alone

• Develop useful image processing libraries for user presence and facial recognition

www.uefi.org 21UEFI Summerfest – July 2013

Page 22: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Questions?

www.uefi.org 22UEFI Summerfest – July 2013

Page 23: Implementing Advanced USB Interrupt TransfersUEFI Summerfest –July 15-19, 2013 Presented by Zachary Bobroff (AMI) UEFI Summerfest –July 2013 1 Updated 2011-06-01 Agenda •Introduction

Thanks for attending the UEFI Summerfest 2013

For more information on the Unified EFI Forum and UEFI Specifications, visit http://www.uefi.org

presented by

www.uefi.org 23UEFI Summerfest – July 2013