Texas Instruments' TM4C123G microcontroller based on ARM-CORTEX M4 processor has been made to act as a USB device. With the help of Firmware level coding in Embedded C, different USB classes such as CDC and Bulk have been implemented onto the device. Later a composite USB device incorporating 2 Bulk Interfaces and 1 CDC Interface has implemented using the Firmware level coding. An x-86 based Linux machine is acting as a host, and the USB device is being accessed with the help of a user-space application on the host side.Under this user-space application,different static and dynamic Driver modules have been loaded to make the transfer of data "to and from" the USB device happen.We succeeded in making 3 simultaneous transfers of data at a time independently using 2 Bulk Interfaces and 1 CDC interface in the Composite mode.
2. 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.
3. 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.
5. 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.
6. 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.
7. 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.
9. BULK DEVICE CLASS EVENTS
THE BULK DEVICE CLASS DRIVER SENDS THE FOLLOWING EVENTS TO THE APPLICATION
CALLBACK FUNCTIONS:
RECEIVE CHANNEL EVENTS
USB_EVENT_RX_AVAILABLE
USB_EVENT_ERROR
USB_EVENT_CONNECTED
USB_EVENT_DISCONNECTED
USB_EVENT_SUSPEND
USB_EVENT_RESUME
TRANSMIT CHANNEL EVENTS
USB_EVENT_TX_COMPLETE
10. 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.
12. 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
DATA
TO 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.
14. CDC DEVICE CLASS EVENTS
• THE CDC DEVICE CLASS DRIVER SENDS THE FOLLOWING EVENTS TO THE APPLICATION CALLBACK FUNCTIONS:
RECEIVE CHANNEL EVENTS
USB_EVENT_RX_AVAILABLE
USB_EVENT_DATA_REMAINING
USB_EVENT_ERROR
TRANSMIT CHANNEL EVENTS
USB_EVENT_TX_COMPLETE
CONTROL CHANNEL EVENTS
USB_EVENT_CONNECTED
USB_EVENT_DISCONNECTED
USB_EVENT_SUSPEND
USB_EVENT_RESUME
USBD_CDC_EVENT_SEND_BREAK
USBD_CDC_EVENT_CLEAR_BREAK
USBD_CDC_EVENT_SET_LINE_CODING
USBD_CDC_EVENT_GET_LINE_CODING
USBD_CDC_EVENT_SET_CONTROL_LINE_STATE
15. 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.
18. 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.
19. 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:
•
20. 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.