multifunctional usb firmware

21
MULTIFUNCTIONAL USB FIRMWARE PRESENTED BY: SACHIN GROVER DISHANT AKSHAY SHUBHAM KUMAR MANOHAR JAGANI VERSHA CHAUDHARY

Upload: shubham-kumar

Post on 18-Aug-2015

79 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Multifunctional usb firmware

MULTIFUNCTIONAL USB FIRMWARE

PRESENTED BY:

SACHIN GROVER

DISHANT AKSHAY

SHUBHAM KUMAR

MANOHAR JAGANI

VERSHA CHAUDHARY

Page 2: Multifunctional usb firmware

OVERVIEW OF THE PROJECT

• IMPLEMENTING BULK, CDC AND A COMBINATION OF BULK AND CDC DEVICE CLASSES ON A DEVICE.

• THE DEVICE SENDS SOME DATA TO THE HOST BY USING USB PROTOCOLS.

• CORTEX-M4 PROCESSOR BASED TI-TM4C123G BOARD ACTING AS A DEVICE.

• LINUX MACHINE ACTING AS A HOST.

• THE DATA COMING FROM THE DEVICE IS READ BY A USER-SPACE APPLICATION RUNNING ON THE HOST SIDE.

• THE SPECIFIC-CLASS DRIVERS ARE MANAGING THE DATA COMING TO AND FROM THE HOST.

Page 3: Multifunctional usb firmware

DEVICE CLASSES AND ITS DRIVERS

• BULK DEVICES ARE BEING MANAGED BY A DYNAMIC MODULE USB_SKELETON.C ,SINCE BULK IS NOT A STANDARD DEVICE CLASS.

• CDC DEVICES ARE MANAGED BY THE STATIC MODULE CDC-ACM.C ,SINCE IT IS A STANDARD DEVICE CLASS.

• BOTH THESE CLASS DRIVERS ARE MANAGED BY USBCORE.C ,WHICH IS A GENERIC USB DRIVER.

Page 4: Multifunctional usb firmware

A LINUX USB HOST STACK

Page 5: Multifunctional usb firmware

LAYERS IN THE USB HOST STACK

• USB HOST DRIVER ->THE USB HOST DRIVER FRAMEWORK IMPLEMENTS USB TRANSFERS AND OTHER USB HOST REQUIREMENTS. THE HOST DRIVER ALSO MANAGES USB REQUEST BLOCK (URB) TRANSFER FROM THE CLASS DRIVERS TO THE HCDS.

• HCD INTERFACES->THE HCD INTERFACES FRAMEWORK IMPLEMENTS ROUTINES BETWEEN THE USBCORE AND THE USB HCD, WHICH FACILITATES URB TRANSFER TO THE HCD.

Page 6: Multifunctional usb firmware

USB DEVICE

• TI-TM4C123G IS ACTING AS A USB DEVICE.

• THIS BOARD CAN ACT AS A USB DEVICE OF A PARTICULAR CLASS ON LOADING ITS FLASH MEMORY WITH THE SPECIFIC FIRMWARE.

• WE HAVE CUSTOMIZED THESE FIRMWARES AS PER OUR REQUIREMENTS.

Page 7: Multifunctional usb firmware

DEVICE AS A BULK CLASS TYPE

• THIS DEVICE IS ENUMERATED WITH A PAIR OF BULK ENDPOINTS-BULK IN AND BULK OUT.

• A BULK TRANSFER IS USED BY APPLICATIONS THAT TRANSFER LARGE AMOUNTS OF DATA TO AND FROM THE USB HOST TO THE DEVICE WITH NO STRICT TIME REQUIREMENTS.

• A USB BULK TRANSFER HAS A MAXIMUM TRANSFER SIZE OF 512 BYTES, IS NON-PERIODIC , AND USES ANY AVAILABLE BUS BANDWIDTH. BECAUSE BULK TRANSFERS OCCUR ONLY ON THE BASIS OF THE BANDWIDTH AVAILABLE, THE TRANSFERS ARE FASTER WHEN THERE ARE LARGE AMOUNTS OF FREE BANDWIDTH.

Page 8: Multifunctional usb firmware

USB GENERIC BULK DEVICE MODEL

Page 9: Multifunctional usb firmware

BULK DEVICE CLASS EVENTS

THE BULK DEVICE CLASS DRIVER SENDS THE FOLLOWING EVENTS TO THE APPLICATION CALLBACK FUNCTIONS:

RECEIVE CHANNEL EVENTSUSB_EVENT_RX_AVAILABLEUSB_EVENT_ERRORUSB_EVENT_CONNECTEDUSB_EVENT_DISCONNECTEDUSB_EVENT_SUSPENDUSB_EVENT_RESUME

TRANSMIT CHANNEL EVENTSUSB_EVENT_TX_COMPLETE

Page 10: Multifunctional usb firmware

WHAT WE ARE DOING IN BULK

• WE ARE READING THE DATA FROM THE ON-CHIP TEMPERATURE SENSOR BY ADC CONVERSION AND SENDING IT TO THE HOST AT A PERIOD OF 1 SECOND USING TIMER INTERRUPT.

• SO, THE NEW TEMPERATURE IS GETTING UPDATED EVERY 1 SECOND ON THE HOST SIDE, WHERE WE ARE READING THE TEMPERATURE BY ACCESSING THE DEVICE FILE /DEV/SKEL0 CREATED BY THE USB_SKELETON.C DRIVER.

Page 11: Multifunctional usb firmware

FIRMWARE CODE SNIPPET

Page 12: Multifunctional usb firmware

DEVICE AS A CDC CLASS TYPE• THE USB COMMUNICATION DEVICE CLASS (CDC) CLASS DRIVER SUPPORTS THE CDC ABSTRACT CONTROL MODEL

VARIANT AND ALLOWS A CLIENT APPLICATION TO BE SEEN AS A VIRTUAL SERIAL PORT TO THE USB HOST SYSTEM.

• THE DRIVER PROVIDES TWO CHANNELS, ONE TRANSMIT AND ONE RECEIVE. THE CHANNELS MAY BE USED IN CONJUNCTION WITH USB BUFFERS TO PROVIDE A SIMPLE READ/WRITE INTERFACE FOR DATA TRANSFER TO AND FROM THE HOST.

• THIS DEVICE CLASS USES 3 ENDPOINTS IN ADDITION TO ENDPOINT ZERO. 2 BULK ENDPOINTS CARRY DATATO AND FROM THE HOST AND 1 INTERRUPT IN ENDPOINT IS USED TO SIGNAL ANY SERIAL ERRORS SUCH AS BREAK,FRAMING ERROR OR PARITY ERROR DETECTED BY THE DEVICE.

• ENDPOINT ZERO CARRIES STANDARD USB REQUESTS AND ALSO CDC-SPECIFIC REQUESTS WHICH TRANSLATE TO EVENTS PASSED TO THE APPLICATION VIA THE CONTROL CHANNEL CALLBACK.

Page 13: Multifunctional usb firmware

USB CDC DEVICE MODEL

Page 14: Multifunctional usb firmware

CDC DEVICE CLASS EVENTS

• THE CDC DEVICE CLASS DRIVER SENDS THE FOLLOWING EVENTS TO THE APPLICATION CALLBACK FUNCTIONS:

RECEIVE CHANNEL EVENTSUSB_EVENT_RX_AVAILABLEUSB_EVENT_DATA_REMAININGUSB_EVENT_ERROR

TRANSMIT CHANNEL EVENTSUSB_EVENT_TX_COMPLETE

CONTROL CHANNEL EVENTSUSB_EVENT_CONNECTEDUSB_EVENT_DISCONNECTEDUSB_EVENT_SUSPENDUSB_EVENT_RESUMEUSBD_CDC_EVENT_SEND_BREAKUSBD_CDC_EVENT_CLEAR_BREAKUSBD_CDC_EVENT_SET_LINE_CODINGUSBD_CDC_EVENT_GET_LINE_CODINGUSBD_CDC_EVENT_SET_CONTROL_LINE_STATE

Page 15: Multifunctional usb firmware

WHAT WE ARE DOING IN CDC

• WE ARE READING THE DATA FROM THE ON-CHIP TEMPERATURE SENSOR BY ADC CONVERSION AND SENDING IT TO THE HOST ONLY WHEN THERE IS A CHANGE IN THE TEMPERATURE.

• SO, THE NEW TEMPERATURE IS GETTING UPDATED ONLY WHEN IT CHANGES FROM ITS PREVIOUS VALUE. WE ARE READING THE TEMPERATURE BY ACCESSING THE DEVICE FILE /DEV/TTYACM0 CREATED BY THE CDC-ACM.C DRIVER.

Page 16: Multifunctional usb firmware

FIRMWARE CODE SNIPPET

Page 17: Multifunctional usb firmware

FIRMWARE CODE SNIPPET

Page 18: Multifunctional usb firmware

COMPOSITE DEVICE

• OUR CUSTOMIZED COMPOSITE DEVICE CONSISTS OF 2 BULK INTERFACES(2 PAIRS OF BULK ENDPOINTS) AND 2 CDC INTERFACES(CONTAINING 1 PAIR OF BULK ENDPOINTS AND 1 INTERRUPT-IN ENDPOINT).

• SO, OUR DEVICE IS GETTING ENUMERATED WITH 2 MINOR NUMBERS-192 AND 193 FOR 2 BULK INTERFACES BY USB_SKELETON.C

• SO, 2 DEVICE FILES /DEV/SKEL0 AND /DEV/SKEL1 ARE BEING CREATED FOR 2 BULK LOGICAL DEVICES AND /DEV/TTYACM0 IS BEING CREATED FOR 1 CDC ACM DEVICE.

Page 19: Multifunctional usb firmware

COMPOSITE DEVICE

• IN ORDER FOR OUR DEVICE TO GET ENUMERATED AS A COMPOSITE BULK & CDC DEVICE,WE HAD TO REGISTER WITH THE ADDITIONAL DEVICE INSTANCES ON THE FIRMWARE SIDE.

• API’S USED FOR COMPOSITE:

Page 20: Multifunctional usb firmware

WHAT WE ARE DOING IN COMPOSITE

• WE IMPLEMENTED THE SAME CDC FUNCTIONALITY , THE SAME BULK FUNCTIONALITY AND AN ADDITIONAL GPIO CONTROL FUNCTIONALITY, WHERE THE LEDS ON THE BOARD ARE GETTING CONTROLLED AS PER THE COMMAND GIVEN FROM THE HOST SIDE.

• THE FIRMWARE IS SENDING A MESSAGE AS A PART OF ACKNOWLEDGEMENT. SO, 2-WAY COMMUNICATION HAS BEEN IMPLEMENTED.

Page 21: Multifunctional usb firmware

FIRMWARE CODE SNIPPET