multifunctional usb firmware

Post on 18-Aug-2015

80 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

MULTIFUNCTIONAL USB FIRMWARE

PRESENTED BY:

SACHIN GROVER

DISHANT AKSHAY

SHUBHAM KUMAR

MANOHAR JAGANI

VERSHA CHAUDHARY

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.

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.

A LINUX USB HOST STACK

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.

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.

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.

USB GENERIC BULK DEVICE MODEL

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

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.

FIRMWARE CODE SNIPPET

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.

USB CDC DEVICE MODEL

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

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.

FIRMWARE CODE SNIPPET

FIRMWARE CODE SNIPPET

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.

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:

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.

FIRMWARE CODE SNIPPET

top related