Making USB Device Drivers Easier Using the HID Class

Size: px
Start display at page:

Download "Making USB Device Drivers Easier Using the HID Class"

Transcription

1 Making USB Device Drivers Easier Using the HID Class Stuart Allman Cypress Semiconductor Avenue of Science San Diego, CA (858) One of the major barriers that exist in the adoption of the Universal Serial Bus (USB) is the difficulty in writing device drivers. As a typical embedded engineer, I think I speak for a large percentage of embedded developers who can comfortably design embedded systems all day long, but get nervous at the thought of writing a PC device driver. Things are just not quite as simple as using the parallel port or serial port anymore. However the USB offers quite a few advantages; including multi-platform support, standard device classes, and support for vendor defined devices. Motherboard vendors are also ma king an attempt to eliminate the legacy connections in favor of the USB, which forces a large number of us to accept the evolution of technology. Move to the USB, or become obsolete. This article focuses on encapsulating the concepts of a Windows based application to talk to an embedded device using the Human Interface Device (HID) class. The HID class is a standard device classification for the USB; however don t let the words standard or classification fool you. The HID class doesn t represent a set of fixed function devices; rather it supports a wide variety of devices with widely varying characteristics. Some examples include a computer mouse, keyboard, sports equipment, medical instruments, AV devices, vendor defined functions, and more. HID also supports device primitives like an LED, button, and standard measurements like time, temperature, distance etc. The general idea is that the HID class can be used to support a wide range of vendor specific applications that aren t currently supported by a USB device class. To add to this, Microsoft supports the HID class with a well rounded library; included as part of the Windows DDK. This article explains how to use the library in a typical situation for a vendor defined HID usage. The end goal of the example Windows application and USB device shown in this article is to show the basic steps of data exchange across the USB using the HID driver. How Does a Device Get on the USB? The whole process begins with the act of a simple pull up resistor. After the device is plugged into an active USB host, the device turns on a pull up resistor onto one of the USB data signals. D- is pulled up if the device is low speed, D+ is pulled up if the device is full- or high-speed. The USB host detects this condition and begins a startup process on the USB 1. This process is called device enumeration. During enumeration the host requests a number of data structures called descriptors from the device. These descriptors contain information about the number and type of communication channels that the USB device desires to use, as well as information about any device class information. These communication channels are referred to as endpoints. Enumeration itself takes place on the default endpoint, known as endpoint 0, or the control endpoint. The host also assigns a unique 7-bit address to the device, so that communications can be directed to a particular device. On PC or Mac platforms the first part of the enumeration process takes place without class specific or custom device drivers. During the first part of enumeration the USB driver retrieves the general descriptors that all devices support and gives the device a unique address on the USB. If the descriptors indicate that the device belongs to a particular USB device class, the USB driver hands off the rest of the enumeration process to the specified class driver. In the example for this article the driver handoff will be 1 Note that high-speed hosts go through additional processes.

2 to the HID class driver. If no class is specified, then the device VID (vendor ID) and PID (product ID) gathered from the descriptors is used to identify an appropriate driver for the USB device. If everything is designed properly on the USB device end, you will not need to worry about the driver process. The enumeration process and class driver handoff are handled for you. The device is simply enumerated and ready to use with your application. However, if the descriptors are not properly formatted or the device fails to respond properly the device is disabled by the USB or class driver; depending on when the failure occurred during enumeration. What is a HID? HID turns on Pull up System transfers control to HID Class Driver, gathers HID descriptors & starts HID reports USB Host Starts General Enumeration The host sets the USB device address and gathers general descriptors. Figure 1. HID Device Enumeration Process Don t let the name confuse you. A USB device that claims to belong to the Human Interface Device class doesn t necessarily have to have a human interface at all. The HID class supports a wide variety of devices that you would generally never associate with a human interface. Devices can be as obvious as a mouse or keyboard, but also as unexpected as an IC programmer or thermometer. The class also supports a variety of device primitives that you would associate with a general digital device, such as a LED, button, vector, or LCD display. The HID class allows you to create a collection of HID usages to describe a device. This collection is described within the HID report descriptor, which is gathered by the host during the enumeration process. The report descriptor describes what the input and output stream of bits mean. For instance, a clock could be described as an input stream of three bytes corresponding to hours, minutes, and seconds. The clock could also have an output report in the collection that describes how to write to device s LCD display. The HID class also has the capacity to allow vendor defined usages. Even if your device cannot be described by any of the pre-defined usages in the HID usage tables (see references), you can still reserve a generic vendor defined slot in the HID report collection. The downside to using the HID class is that the typical class drivers only support one type of endpoint communication (i.e. interrupt) and the bandwidth is limited well below the USB s maximum throughput. For low-speed devices the bandwidth is limited to 800 bytes/s/report (8 bytes every 10ms per input/output report), for full-speed devices it is limited to 64,000 bytes/s /report (64 bytes every millisecond per input/output report), and for high-speed the limit is approximately 23.4 Mbytes/s/report (3072 bytes per micro-frame per input/output report). A HID may specify multiple reports if more than the *per report* bandwidth is required. Don t let this immediately discourage you. Using an intelligent USB controller often helps pre-sort data and lower the bandwidth required to support an application. The low-speed bandwidth limit was far, far more than was needed for the example application given later in this article. So what is the bottom line of using the HID class? No Windows/Mac/Linux device driver to write! If that s not encouragement enough, the rest of this article explains the steps to get your device up and running quickly. How Do We Make a HID? Many steps are required to make a HID device enumerate and be able to communicate using HID reports on the USB. I have no intention of Makin g USB Device Drivers Easier 2 of 8

3 implying that this is easy, however the example application presented later in this article is a framework that can be copied and edited as a starting point (see references at the end of this article for the example design package). The references at the end of this article also serve as a good starting point if you wish to further explore the possibilities of the HID class. This section describes the pieces of the puzzle that are necessary to get a HID working. All USB devices handle a standard set of requests, commonly referred to as the Chapter 9 tests. These requests are literally described in chapter 9 of the USB specification. The requests include tasks like retrieving a standard set of descriptors from the device and setting standard device parameters. The first specific to making a HID is specifying the HID class in the USB interface descriptor s binterfaceclass field. A value of 0x03 corresponds to the HID class. This lets the general USB driver know which class driver the application will need to be passed on to after the general enumeration process is complete. A HID class descriptor is also supplied as a subsection of the configuration descriptor in between the interface and endpoint descriptor sub-sections (see the example device firmware). This descriptor basically contains the HID specification version information and the length of the HID report descriptor. The second aspect of making a HID is the HID report descriptor itself. These can actually be quite complex. The HID descriptor is made up of a collection of HID usages, each of which describe a field in an input or output report. The HID usage table document shows a large number of useful examples of how to create a HID report descriptor. When the chapter 9 requests and HID specific parameters are correctly handled the remainder of the work lies in the application itself. For this part, the article concentrates on a Microsoft Windows based application. Examples are also available elsewhere for MacOS and Linux (see references). Usage Page (vendor defined) Collection (application) End Collection ** input report Logical Minimum (-128) Logical Maximum (127) Report Size (8) Input (Data) ** output report Logical Minimum (-128) Logical Maximum (127) Report Size (8) Output (Data) Figure 2. Minimal HID Report Descriptor. This Descriptor calls for a one byte input report and a one byte output report with a completely vendor defined usage. The descriptor could also consist of only an input report or only an output report. The first thing an application must be able to do is to open the device for communications. This actually turns out to be a fairly lengthy process however the example application encapsulates the process into a reusable function called bopenhiddevice(). The procedure is mostly taken from Jan Axelson s description in the book USB Complete. The bopenhiddevice function takes a device handle reference, a target device VID, and a target device PID as function arguments. If a device is found that matches the desired VID and PID, then the function returns TRUE and the device handle is assigned a valid value. If the function returns false, it more than likely means that the either the device is not plugged in or the device failed enumeration. The process of opening a device consists of seven steps as described below and in figure 3. [See Figure 3. Opening a HID device within Windows at the end of this document] 1. Obtain the Windows Globally Unique ID (GUID) for HID devices via a call to HidD_GetHidGuid(). Makin g USB Device Drivers Easier 3 of 8

4 2. Get an array of structures that contain information about all attached HIDs via a call to SetupDiGetClassDevs(). This uses the previously obtained HID GUID to specify that the list should only contain HID devices 3. Use the Windows function SetupDiEnumDeviceInterfaces() to get information about a particular device in the list. We need to step through each index of device information until we find one with the correct VID & PID. If this function returns FALSE, then we have gone to the end of the list without finding the desired device. 4. A call to SetupDiGetDeviceInterfaceDetail() returns detailed data about the particular device indexed in the previous step. We want to use the device path to open the device in the next step. 5. Call CreateFile() to open the device using the path obtained in the previous step. If a valid handle is returned, then we can examine the VID & PID to determine if this is the device we want. 6. Compare the open device s VID & PID to determine if this is the device we want. If so, then we should return the device handle and a TRUE condition. 7. If the VID & PID are not correct, then we need to close the device handle and return to step 3 to check the next device indexed in the list. The next function that the HID application must handle is device attach/detach notification. This process is encapsulated with the bhiddevicenotify() function in the example application. This causes the Windows USB system to send a WM_DEVICECHANGE message to the application any time a USB HID device is plugged or unplugged from the system. The notification system is not quite intelligent enough to indicate a HID device change for a particular VID & PID, so the application must check if the device is still attached on any notification message. The process for setting up device notifications is a five part process: 1. Obtain the Windows Globally Unique ID (GUID) for HID devices via a call to HidD_GetHidGuid(). 2. Clear the contents of a DEV_BROADCAST_DEVICEINTERFA CE structure Assign the members of the structure such that the HID GUID is specified 4. Register the application for device notifications by calling the function RegisterDeviceNotification(). 5. If the handle returned from the previous step is invalid, then an error has occurred and the function should return an error. Otherwise return success. The Windows DDK provides a number of functions that allow you to find devices with certain capabilities and retrieve particular pieces of data from the USB device. The library functions are too numerous to mention here, but they can be found by performing a search for HID Support Routines for Clients on the MSDN web. Obviously the next functionality that the application needs to have is the ability to read input reports and write output reports. To do this an application uses the ReadFile() and WriteFile() functions respectively. Each of these functions use the device handle returned by the CreateFile() function. The example application uses a concept called overlapped transactions. An overlapped transaction allows the application to go into a low CPU overhead state while waiting for a requested USB transaction to occur. By default, up to eight overlapped transactions can be queued at once; mo re if specified. If an application doesn t use overlapped transactions, then the whole application has to wait until the USB transaction finishes before the application can perform any additional tasks. Obviously this is a bad state to be in when an application spends most of it s time waiting for data to be returned from a USB device. The bopenhiddevice() function opens the device with the FILE_FLAG_OVERLAPPED parameter, so all transactions are assumed to be overlapped ones in the example application. A second aspect of data transfer is the use of multiple threads. Because the main application needs to remain responsive even while waiting for USB transactions, it is highly desirable to put Makin g USB Device Drivers Easier 4 of 8

5 the USB reads and writes in a separate thread. This allows the main application to continue processing messages while the USB transaction thread waits for overlapped transactions to complete. An Example HID Thermometer The example presented in this article is a thermometer that communicates with a PC via the HID class driver. The goal of this article was to show an unconventional use of the versatile HID class. This thermometer has three main components: an LED, a button, and a temperature measurement. The button and thermometer are grouped into an input report, and the LED is controlled by the host application via an output report. A design package for this example application is on the web site listed in the references section. An LED is a pre-defined usage page (i.e. collection of LED related functions) of the HID class (see the HID usage tables specification). For the purposes of this application the LED usage is defined as a Ready LED. The intention of providing this control is to show how to use a HID output report. The report is made up of a single byte that turns the LED on (0x01) or off (0x00). The LED is turned on when the computer starts taking measurements and it turned off when the measurements stop (i.e. when the application closes). WriteFile() is used to send an overlapped HID output report to the USB device. The button is also a pre-defined usage page of the HID class. A general purpose button can be defined without a particular usage in mind. The format of the button report is shown in figure 4. In order to request button information from the USB device, the windows application uses an overlapped transaction via a call to ReadFile(). The temperature measurement is a bit more complex. The generic desktop usage page contains a usage called a non-oriented vector. The intended use of a non-oriented vector is for measurement of time, distance, temperature, light intensity etc where spatial locality is not important. The HID report descriptor also indicates the units for the measurement (i.e. SI linear Kelvin) and the exponent (10 0 ) for the reported value. The temperature measurement IC used on the USB device reports in Celsius, so reporting in Kelvin was simply a matter of adding 273 to the IC s measured value. The example application does not actually look for units, exponents and other information because the application searches for a specific USB device. However, the Windows HID DDK allows your application to search for devices with certain capabilities instead of a dedicated device. See the Windows DDK documentation for more information on this subject. Both the button and temperature measurement are provided as one report. Any time the button changes or a temperature measurement is complete, the USB device reports these values back to the host in the format shown in figure 4. Byte 0 Byte 1 Byte 2 Button state (LSB) Temperature Low Byte Temperature High Byte Figure 4. Format of HID input report The format of the HID report descriptor is shown in figure 5. This shows the vendor defined usage and a collection of three reports, two of which are combined into a single input report. The Windows HID driver follows the conventions set in the HID class specification to parse the HID report descriptor. Even if the host side application doesn t use some of the information in the HID report descriptor, it is still required for the HID driver to accept your device. Detailed information about how to format HID report descriptors is beyond the scope of this article. This HID class and HID Usage table specifications provide complete information on this subject. A HID descriptor tool is also available to help you with this task. Makin g USB Device Drivers Easier 5 of 8

6 Usage Page (vendor defined) Collection (application) Usage Page (button) Usage Minimum (1) Usage Maximum (1) Logical Minimum (0) Logical Maximum (1) Report Size (1) Input (Data) Report Size (7) Input (Constant) Vector Report Provides Temperature Measurement Button Report Selects Temperature Units End Collection Usage Page (Generic Desktop) Usage (non-oriented vector) Logical Minimu m (218) Logical Maximum (393) Units (SI Linear Kelvin) Units Exponent (0) Report Size (16) Input (Data) Usage Page (LED) Usage (Ready) Logical Minimum (0) Logical Maximum (1) Report Size (1) Output (Data) Report Size (7) Output (Constant) Figure 5. Thermometer HID Report Descriptor Figure 6 contains a screen shot of the example HID thermometer application. The host application was written using the VisualC++ v6.0 tools and the Win98 DDK. The Win98 DDK certainly isn t the most up to date, but I wanted to ensure that the application could be built using all versions of the Windows DDK and would run with all USB enabled versions of Windows. The USB device side was developed for the CY7C63743 USB microcontroller from Cypress. The CY3644 applications board that comes with the microcontroller s development kit has buttons, LEDs, and a temperature IC already installed. The microcontroller s source code, assembler, and ROM image are provided as part of the design package. Debug Messages Summary Figure 5. Example HID Thermometer Hopefully by now you have realized that the USB HID class is a powerful and versatile way to get your device on the USB. Even if your device doesn t fit into one of the pre-defined HID usages, there is always the possibility of using a completely vendor defined usage. The example design package for this article is available on the web site listed in the references section. If your USB device can exist within the bandwidth limits of the HID driver, then using this driver may save your sanity and your schedule in the long run. References Output Report Turns On/Off LED Design package for this article ist.cfm?pr_type=techarticles USB specification Makin g USB Device Drivers Easier 6 of 8

7 USB HID specification, HID usages tables, HID descriptor tool Microsoft DDK reference Apple USB reference Linux USB reference USB Complete, Jan Axelson, Lakeview Research USB Design by Example, John Hyde, Intel Makin g USB Device Drivers Easier 7 of 8

8 Get the Windows Globally Unique ID for HID devices. HidD_GetHidGuid() Gather an array of structures describing all HID devices. SetupDiGetClassDevs() Gather info about HID device with index i, starting at 0. SetupDiGetClassDevs() FALSE HID Device Not Found Get detailed info about device pointed to by index i. TRUE SetupDiGetDeviceInterface Detail() Open a handle to the device CreateFile() Check VID and PID of open device to see if it s the device we want Desired VID & PID? TRUE HID Device Found FALSE (increment index i and try again) Figure 3. Opening a HID device within Windows Makin g USB Device Drivers Easier 8 of 8

Using the HID class eases the job of writing USB device drivers

Using the HID class eases the job of writing USB device drivers designfeature By Stuart Allman, Cypress Semiconductor THE USB HID CLASS IS A POWERFUL AND VERSATILE WAY TO GET YOUR DEVICE ON THE USB. IF YOUR USB DEVICE CAN EXIST WITHIN THE BANDWIDTH LIMITS OF THE HID

More information

PEI TEL Communications GmbH Potsdamer Str. 12 b, D Teltow, Tel: , Fax: ,

PEI TEL Communications GmbH Potsdamer Str. 12 b, D Teltow, Tel: , Fax: , PEI TEL Communications GmbH Potsdamer Str. 12 b, D-14513 Teltow, Tel: +49 3328 3516 0, Fax: +49 3328 3516 16, E-Mail: info@peitel.de, www.peitel.de Quickreference Interfacing PEI TEL USB Audio Devices

More information

Human Interface Devices: Using Control and Interrupt Transfers

Human Interface Devices: Using Control and Interrupt Transfers Human Interface Devices: Using Control and Interrupt Transfers 11 Human Interface Devices: Using Control and Interrupt Transfers The human interface device (HID) class was one of the first USB classes

More information

USB for Embedded Devices. Mohit Maheshwari Prashant Garg

USB for Embedded Devices. Mohit Maheshwari Prashant Garg USB for Embedded Devices Mohit Maheshwari 200601008 Prashant Garg 200601144 USB : An Introduction The Universal Serial Bus (USB) is a specification developed by Compaq, Intel, Microsoft and NEC, joined

More information

DEVELOPER FRIENDLY USB: A detailed look at how easily a USB-based device can be developed

DEVELOPER FRIENDLY USB: A detailed look at how easily a USB-based device can be developed Reprinted by permission of T&L Publications Inc. Copyright 2003 DEVELOPER FRIENDLY USB: A detailed look at how easily a USB-based device can be developed By Don L. Powrie As the popularity of USB continues

More information

Chapter 2: Operating-System Structures

Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures 2.1 Silberschatz, Galvin and Gagne 2009 Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System

More information

Chapter 2: Operating-System Structures

Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Silberschatz, Galvin and Gagne 2009 Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System

More information

An Introduction to Universal Serial Bus

An Introduction to Universal Serial Bus An Introduction to Universal Serial Bus Neil Scott June 27, 2008 NEIL SCOTT JUNE 27, 2008 1 Overview Introduction History Hierarchy Enumeration Demonstration Circuit Conclusions Questions NEIL SCOTT JUNE

More information

Chapter 2: System Structures

Chapter 2: System Structures Chapter 2: System Structures Chapter 2: System Structures 2.1 Operating-System Services 2.2 User and Operating-System Interface 2.3 System Calls 2.4 Types of System Calls 2.5 System Programs 2.6 Operating-System

More information

Chapter 2: Operating-System Structures

Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls (important!) Types of System Calls (important!) System

More information

USB Interrupt Transfer Example PSoC 3 / PSoC 5

USB Interrupt Transfer Example PSoC 3 / PSoC 5 USB Interrupt Transfer Example PSoC 3 / PSoC 5 Project Objective This code example demonstrates how to perform USB Interrupt Transfer from a PC using the USB HID driver and PSoC 3 device. Overview USB

More information

USB Complete. The Developer's Guide Fifth Edition. Jan Axelson. Lakeview Research LLC Madison, WI 53704

USB Complete. The Developer's Guide Fifth Edition. Jan Axelson. Lakeview Research LLC Madison, WI 53704 USB Complete The Developer's Guide Fifth Edition Jan Axelson Lakeview Research LLC Madison, WI 53704 Contents Introduction 1 USB Basics 1 Uses and limits 1 Benefits for users 2 Benefits for developers

More information

M Tech credit seminar report, Electronic Systems group, EE Dept, IIT Bombay, submitted Nov 2002 UNIVERSAL SERIAL BUS

M Tech credit seminar report, Electronic Systems group, EE Dept, IIT Bombay, submitted Nov 2002 UNIVERSAL SERIAL BUS M Tech credit seminar report, Electronic Systems group, EE Dept, IIT Bombay, submitted Nov 2002 UNIVERSAL SERIAL BUS Bandaru Raja Sekhar (02307046) Supervisor: rof.c.andey Abstract Universal Serial Bus

More information

Objectives. Chapter 2: Operating-System Structures. 2.1 Operating System Services

Objectives. Chapter 2: Operating-System Structures. 2.1 Operating System Services Objectives Chapter 2: Operating-System Structures To describe the services an operating system provides to users, processes, and other systems To discuss the various ways of structuring an operating system

More information

David Harrison, Design Engineer for Model Sounds Inc.

David Harrison, Design Engineer for Model Sounds Inc. David Harrison, Design Engineer for Model Sounds Inc. 1 History -1 In 1994 an alliance of four industry partners (Compaq, Intel, Microsoft and NEC) started to specify the Universal Serial Bus (USB). The

More information

the NXT-G programming environment

the NXT-G programming environment 2 the NXT-G programming environment This chapter takes a close look at the NXT-G programming environment and presents a few simple programs. The NXT-G programming environment is fairly complex, with lots

More information

PDF created with pdffactory Pro trial version How USB Ports Work by Marshall Brain. Introduction to How USB Ports Work

PDF created with pdffactory Pro trial version  How USB Ports Work by Marshall Brain. Introduction to How USB Ports Work Main > Computer > Hardware How USB Ports Work by Marshall Brain Introduction to How USB Ports Work Just about any computer that you buy today comes with one or more Universal Serial Bus connectors on the

More information

Chapter 2: Operating-System Structures. Operating System Concepts Essentials 8 th Edition

Chapter 2: Operating-System Structures. Operating System Concepts Essentials 8 th Edition Chapter 2: Operating-System Structures Operating System Concepts Essentials 8 th Edition Silberschatz, Galvin and Gagne 2011 Chapter 2: Operating-System Structures Operating System Services User Operating

More information

Bus Example: Pentium II

Bus Example: Pentium II Peripheral Component Interconnect (PCI) Conventional PCI, often shortened to PCI, is a local computer bus for attaching hardware devices in a computer. PCI stands for Peripheral Component Interconnect

More information

Chapter 2: Operating-System

Chapter 2: Operating-System Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Operating System Services! User Operating System Interface! System Calls! Types of System Calls! System Programs! Operating

More information

Universal Serial Bus - USB 2.0

Universal Serial Bus - USB 2.0 USB Packet Types USB has four packet types Token packets (type of transaction) Data Packets (payload / information) Handshake Packets (ack & error correction) Start of Frame packets (flag start of a new

More information

Chapter 2: Operating-System Structures

Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System Calls System Programs Operating System

More information

GENOVATION. Application Note: MiniTerm USB Low-Level Programming

GENOVATION. Application Note: MiniTerm USB Low-Level Programming GENOVATION Application Note: MiniTerm USB Low-Level Programming Revision B April 2008 DISCLAIMER The sample code is provided on an "as is" basis, and Genovation, Inc. expressly disclaims any or all warranties

More information

Chapter 2: Operating-System Structures. Chapter 2: Operating-System Structures. Objectives. Operating System Services

Chapter 2: Operating-System Structures. Chapter 2: Operating-System Structures. Objectives. Operating System Services Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System Calls System Programs Operating System

More information

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto Ricardo Rocha Department of Computer Science Faculty of Sciences University of Porto Slides based on the book Operating System Concepts, 9th Edition, Abraham Silberschatz, Peter B. Galvin and Greg Gagne,

More information

USB2 Debug Device A Functional Device Specification

USB2 Debug Device A Functional Device Specification USB2 Debug Device A Functional Device Specification Date: March 25, 2003 Revision: 0.9 The information is this document is under review and is subject to change. USB2 Revision 0.9 3/25/2003 Scope of this

More information

Chapter 5 - Input / Output

Chapter 5 - Input / Output Chapter 5 - Input / Output Luis Tarrataca luis.tarrataca@gmail.com CEFET-RJ L. Tarrataca Chapter 5 - Input / Output 1 / 90 1 Motivation 2 Principle of I/O Hardware I/O Devices Device Controllers Memory-Mapped

More information

Designing a Low-Cost USB Interface for an Uninterruptable Power Supply with the Cypress Semiconductor CY7C63001 USB Controller

Designing a Low-Cost USB Interface for an Uninterruptable Power Supply with the Cypress Semiconductor CY7C63001 USB Controller fax id: 3456 Designing a Low-Cost USB Interface for an Uninterruptable Power Supply with the Cypress Semiconductor C7C63001 USB Controller Introduction The Universal Serial Bus (USB) is an industrial standard

More information

LibUSB - Create a Solution Without the Class Struggle

LibUSB - Create a Solution Without the Class Struggle LibUSB - Create a Solution Without the Class Struggle Carl Stenquist, Staff AE Class ID: 2L01I Renesas Electronics America Inc. Carl Stenquist Applications Engineer USB Development & support of RX USB

More information

Part 1 Using Serial EEPROMs

Part 1 Using Serial EEPROMs Part 1 Using Serial EEPROMs copyright 1997, 1999 by Jan Axelson If you have a project that needs a modest amount of nonvolatile, read/write memory, serial EEPROM may be the answer. These tiny and inexpensive

More information

Designing a USB Keyboard with the Cypress Semiconductor CY7C63413 USB Microcontroller

Designing a USB Keyboard with the Cypress Semiconductor CY7C63413 USB Microcontroller fax id: 3452 Designing a USB Keyboard with the Cypress Semiconductor CY7C6343 USB Microcontroller Introduction The Universal Serial Bus (USB) is an industry standard serial interface between a computer

More information

USB 3.0 A Cost Effective High Bandwidth Solution for FPGA Host Interface Introduction

USB 3.0 A Cost Effective High Bandwidth Solution for FPGA Host Interface Introduction USB 3.0 A Cost Effective High Bandwidth Solution for FPGA Host Interface Introduction The USB 3.0 has revolutionized the world of desktops and mobile devices by bringing much higher bandwidth and better

More information

CHAPTER 2: SYSTEM STRUCTURES. By I-Chen Lin Textbook: Operating System Concepts 9th Ed.

CHAPTER 2: SYSTEM STRUCTURES. By I-Chen Lin Textbook: Operating System Concepts 9th Ed. CHAPTER 2: SYSTEM STRUCTURES By I-Chen Lin Textbook: Operating System Concepts 9th Ed. Chapter 2: System Structures Operating System Services User Operating System Interface System Calls Types of System

More information

Project Final Report Internet Ready Refrigerator Inventory Control System

Project Final Report Internet Ready Refrigerator Inventory Control System Project Final Report April 25, 2006 Dustin Graves, dgraves@gwu.edu Project Abstract Appliance vendors have started producing internet enabled refrigerators which allow users to keep track of refrigerator

More information

USB Framework, IP Core and related software Tropea S.E., Melo R.A.

USB Framework, IP Core and related software Tropea S.E., Melo R.A. USB Framework, IP Core and related software Tropea S.E., Melo R.A. Why? We develop embedded systems that usually connect to a PC. Parallel and serial ports obsolete in favor of USB. Faster Plug & play

More information

The Microcontroller Idea Book

The Microcontroller Idea Book The following material is excerpted from: The Microcontroller Idea Book Circuits, Programs, & Applications featuring the 8052-BASIC Microcontroller by Jan Axelson copyright 1994, 1997 by Jan Axelson ISBN

More information

CY3660-enCoRe V and encore V LV DVK Kit Guide

CY3660-enCoRe V and encore V LV DVK Kit Guide CY3660-enCoRe V and encore V LV DVK Kit Guide Doc. # 001-41500 Rev. ** Cypress Semiconductor 198 Champion Court San Jose, CA 95134-1709 Phone (USA): 800.858.1810 Phone (Intnl): 408.943.2600 http://www.cypress.com

More information

Introduction to USB/LPC23xx

Introduction to USB/LPC23xx Introduction to USB/LPC23xx Amitkumar (Amit) Bhojraj Business Line Standard IC s Product Line Microcontrollers October 2007 Introduction to USB Agenda LPC23xx Block diagram MCB2300 demo 2 Introduction

More information

PIC-P28-USB development board Users Manual

PIC-P28-USB development board Users Manual PIC-P28-USB development board Users Manual Rev.A, June 2007 Copyright(c) 2007, OLIMEX Ltd, All rights reserved INTRODUCTION: PIC-P28-USB board was designed in mind to create board which to allow easy interface

More information

Author: Steve Gorman Title: Programming with the Intel architecture in the flat memory model

Author: Steve Gorman Title: Programming with the Intel architecture in the flat memory model Author: Steve Gorman Title: Programming with the Intel architecture in the flat memory model Abstract: As the Intel architecture moves off the desktop into a variety of other computing applications, developers

More information

Fully Mobile Telephony Using VoIP Computer Software

Fully Mobile Telephony Using VoIP Computer Software Fully Mobile Telephony Using VoIP Computer Software Tyler Ross, Habib Hamam, Yassine Bouslimani Université de Moncton, Moncton, NB, Canada Abstract Our global objective is to profit from the technology

More information

Bulk endpoints transport data whenever required and reliably; bulk data is acknowledged and therefore fault tolerant.

Bulk endpoints transport data whenever required and reliably; bulk data is acknowledged and therefore fault tolerant. DIY IN THIS DOCUMENT The way of thinking Specifying and discovering device capabilities What to do with your data Programming Devices Summary The (Universal Serial Bus) standard has been with us for many

More information

Serial Port Complete

Serial Port Complete Serial Port Complete COM Ports, USB Virtual COM Ports, and Ports for Embedded Systems Second Edition Jan Axelson Lakeview Research LLC Madison, WI 53704 Serial Port Complete: COM Ports, USB Virtual COM

More information

Copyright 2006 Prentice-Hall. All rights reserved. 1

Copyright 2006 Prentice-Hall. All rights reserved. 1 PC Basics CPSC 100 Hardware Software Networking Copyright 2006 Prentice-Hall. All rights reserved. 1 Objectives Identify basic components of a computer (hardware) Gain insight into how computers work (software)

More information

Testing and Debugging

Testing and Debugging Testing and Debugging 17 Testing and Debugging Tools In addition to the chip-specific development boards and debugging software described in Chapter 6, a variety of other hardware and software tools can

More information

EZ-Link (AN2720SC) Single-Chip USB-to-USB Networking Solution FEATURES OVERVIEW

EZ-Link (AN2720SC) Single-Chip USB-to-USB Networking Solution FEATURES OVERVIEW Single-Chip USB-to-USB Networking Solution FEATURES Smallest completely integrated solution in the market 32 pin TQFP Only requires a single crystal and small 16 byte serial EEPROM for full implementation

More information

Static Methods. Why use methods?

Static Methods. Why use methods? Static Methods A method is just a collection of code. They are also called functions or procedures. It provides a way to break a larger program up into smaller, reusable chunks. This also has the benefit

More information

Using Images in FF&EZ within a Citrix Environment

Using Images in FF&EZ within a Citrix Environment 1 Using Images in FF&EZ within a Citrix Environment This document explains how to add images to specifications, and covers the situation where the FF&E database is on a remote server instead of your local

More information

How to Choose the Right Bus for Your Measurement System

How to Choose the Right Bus for Your Measurement System 1 How to Choose the Right Bus for Your Measurement System Overview When you have hundreds of different data acquisition (DAQ) devices to choose from on a wide variety of buses, it can be difficult to select

More information

PLX USB Development Kit

PLX USB Development Kit 870 Maude Avenue Sunnyvale, California 94085 Tel (408) 774-9060 Fax (408) 774-2169 E-mail: www.plxtech.com/contacts Internet: www.plxtech.com/netchip PLX USB Development Kit PLX Technology s USB development

More information

OPERATING SYSTEMS & UTILITY PROGRAMS

OPERATING SYSTEMS & UTILITY PROGRAMS OPERATING SYSTEMS & UTILITY PROGRAMS System Software System software consists of the programs that control the operations of the computer and its devices. Functions that system software performs include:

More information

Part 2 (Disk Pane, Network Pane, Process Details & Troubleshooting)

Part 2 (Disk Pane, Network Pane, Process Details & Troubleshooting) Note: This discussion is based on MacOS, 10.12.5 (Sierra). Some illustrations may differ when using other versions of macos or OS X. Credits: See the list at the end of this presentation Part 2 (Disk Pane,

More information

Chapter Two - SRAM 1. Introduction to Memories. Static Random Access Memory (SRAM)

Chapter Two - SRAM 1. Introduction to Memories. Static Random Access Memory (SRAM) 1 3 Introduction to Memories The most basic classification of a memory device is whether it is Volatile or Non-Volatile (NVM s). These terms refer to whether or not a memory device loses its contents when

More information

Understand USB (in Linux)

Understand USB (in Linux) Understand USB (in Linux) Krzysztof Opasiak Samsung R&D Institute Poland 1 Agenda What USB is about? Plug and Play How BadUSB works? May I have my own USB device? Q & A What USB is about? What Internet

More information

OPERATING SYSTEMS CS136

OPERATING SYSTEMS CS136 OPERATING SYSTEMS CS136 Jialiang LU Jialiang.lu@sjtu.edu.cn Based on Lecture Notes of Tanenbaum, Modern Operating Systems 3 e, 1 Chapter 5 INPUT/OUTPUT 2 Overview o OS controls I/O devices => o Issue commands,

More information

Operating Systems. Designed and Presented by Dr. Ayman Elshenawy Elsefy

Operating Systems. Designed and Presented by Dr. Ayman Elshenawy Elsefy Operating Systems Designed and Presented by Dr. Ayman Elshenawy Elsefy Dept. of Systems & Computer Eng.. AL-AZHAR University Website : eaymanelshenawy.wordpress.com Email : eaymanelshenawy@yahoo.com Reference

More information

Developing Reusable Device Drivers for MCU's

Developing Reusable Device Drivers for MCU's Embedded Systems Conference East 2012 Page 1 of 20 Developing Reusable Device Drivers for MCU's By Jacob Beningo www.beningo.com http://www.linkedin.com/in/jacobbeningo twitter : Jacob_Beningo EDN Blog

More information

Operating-System Structures

Operating-System Structures Recap Chapter 2: Operating-System Structures Presented By: Dr. El-Sayed M. El-Alfy Note: Most of the slides are compiled from the textbook and its complementary resources From: OS by Tanenbaum, 2008 March

More information

AN EZ-USB FX3 I 2 C Boot Option. Application Note Abstract. Introduction. FX3 Boot Options

AN EZ-USB FX3 I 2 C Boot Option. Application Note Abstract. Introduction. FX3 Boot Options EZ-USB FX3 I 2 C Boot Option Application Note Abstract AN68914 Author: Shruti Maheshwari Associated Project: No Associated Part Family: EZ-USB FX3 Software Version: None Associated Application Notes: None

More information

4-Port USB 3.1 (10Gbps) Card - 4x USB-A with Two Dedicated Channels - PCIe

4-Port USB 3.1 (10Gbps) Card - 4x USB-A with Two Dedicated Channels - PCIe 4-Port USB 3.1 (10Gbps) Card - 4x USB-A with Two Dedicated Channels - PCIe Product ID: PEXUSB314A2V This USB 3.1 PCIe card lets you add four USB Type-A ports to your computer, through a PCI Express slot.

More information

USB 3.0 pco camera interface

USB 3.0 pco camera interface USB 3.0 pco camera interface This application note USB 3.0 camera interface discusses features and issues of the PCO USB 3.0 interface. Included in this discussion is the configuration of recommended hardware

More information

Chapter 2. Operating-System Structures

Chapter 2. Operating-System Structures Chapter 2 Operating-System Structures 2.1 Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System Calls System Programs Operating System

More information

MSP430 Microcontroller Basics

MSP430 Microcontroller Basics MSP430 Microcontroller Basics John H. Davies AMSTERDAM BOSTON HEIDELBERG LONDON NEW YORK OXFORD PARIS SAN DIEGO SAN FRANCISCO SINGAPORE SYDNEY TOKYO Newnes is an imprint of Elsevier N WPIGS Contents Preface

More information

Future Additions: USB: The Universal Serial Bus Dated: 30 August 2017

Future Additions: USB: The Universal Serial Bus Dated: 30 August 2017 Future Additions: USB: The Universal Serial Bus Dated: 30 August 2017 Notes and Items Planned for the Next Edition This document is a list of subjects that I plan to add to a future edition of the book,

More information

CS 179: GPU Computing LECTURE 4: GPU MEMORY SYSTEMS

CS 179: GPU Computing LECTURE 4: GPU MEMORY SYSTEMS CS 179: GPU Computing LECTURE 4: GPU MEMORY SYSTEMS 1 Last time Each block is assigned to and executed on a single streaming multiprocessor (SM). Threads execute in groups of 32 called warps. Threads in

More information

Design Of Linux USB Device Driver For LPC2148 Based Data Acquisition System Including GSM.

Design Of Linux USB Device Driver For LPC2148 Based Data Acquisition System Including GSM. Design Of Linux USB Device Driver For LPC2148 Based Data Acquisition System Including GSM. Snehal A. More, Tejashree R. Padwale, Anuja B. Sapkal, Prof. Pradeep R. Taware Abstract- Among several other advantages

More information

FPGA Augmented ASICs: The Time Has Come

FPGA Augmented ASICs: The Time Has Come FPGA Augmented ASICs: The Time Has Come David Riddoch Steve Pope Copyright 2012 Solarflare Communications, Inc. All Rights Reserved. Hardware acceleration is Niche (With the obvious exception of graphics

More information

Four Components of a Computer System

Four Components of a Computer System Four Components of a Computer System Operating System Concepts Essentials 2nd Edition 1.1 Silberschatz, Galvin and Gagne 2013 Operating System Definition OS is a resource allocator Manages all resources

More information

Accelerometer with Analog and Digital I/O for StackableUSB USB1600

Accelerometer with Analog and Digital I/O for StackableUSB USB1600 The USB1600 accelerometer module provides the ideal mix of sensing ranges, resolutions, and sampling rates for rugged, compact embedded systems. The module stacks directly onto any StackableUSB Host computer

More information

Computers and Microprocessors. Lecture 34 PHYS3360/AEP3630

Computers and Microprocessors. Lecture 34 PHYS3360/AEP3630 Computers and Microprocessors Lecture 34 PHYS3360/AEP3630 1 Contents Computer architecture / experiment control Microprocessor organization Basic computer components Memory modes for x86 series of microprocessors

More information

Presentation to Linux Users of Victoria Beginner's Workshop. August 20, Dedicated to Christopher Espinosa

Presentation to Linux Users of Victoria Beginner's Workshop. August 20, Dedicated to Christopher Espinosa An Introduction to Computer Hardware With Linux Presentation to Linux Users of Victoria Beginner's Workshop August 20, 2011 http://levlafayette.com Dedicated to Christopher Espinosa It's About Knowledge

More information

(Refer Slide Time 00:01:09)

(Refer Slide Time 00:01:09) Computer Organization Part I Prof. S. Raman Department of Computer Science & Engineering Indian Institute of Technology Lecture 3 Introduction to System: Hardware In the previous lecture I said that I

More information

Hacking USB HID for Easy Tethered Ubicomp. Tod E. Kurt / ThingM

Hacking USB HID for Easy Tethered Ubicomp. Tod E. Kurt / ThingM Hacking USB HID for Easy Tethered Ubicomp Tod E. Kurt / ThingM Sketching2010 24 July 2010 WineM todbot does... Spooky Arduino Crystal Monster CRASH Space ScrewShield BlinkM family Wiichuck adapter http://thingm.com/

More information

Cypress HX2VL Configuration Utility Blaster User Guide

Cypress HX2VL Configuration Utility Blaster User Guide Cypress HX2VL Configuration Utility Blaster User Guide Doc. # 001-70672 Rev. *B Cypress Semiconductor 198 Champion Court San Jose, CA 95134-1709 Phone (USA): 800.858.1810 Phone (Intnl): 408.943.2600 http://www.cypress.com

More information

Data Sheet. Packet-Master USB12 Bus Analyser

Data Sheet. Packet-Master USB12 Bus Analyser Packet-Master USB12 Bus Analyser The Packet-Master USB12 is a Hardware USB Bus Analyser, intended for development of Low and Full Speed USB devices and hubs etc. It comes complete with our Windows application

More information

Unit 1. Aries Technology Course

Unit 1. Aries Technology Course Unit 1 Aries Technology Course Unit 1.1 Computers are all around us... (since 1950s) Personal computers are called PCs Access to technology creates an unfair gap between haves and have nots in the world

More information

Creating a USB to Serial Bridge Solution using Cypress Low and Full-speed M8 USB Devices

Creating a USB to Serial Bridge Solution using Cypress Low and Full-speed M8 USB Devices 1. Introduction Peripheral manufacturers have historically used RS- 232 as a communications channel to control and to pass data to and from their devices. The adoption of the Universal Serial Bus () as

More information

Arithmetic/logic Unit (ALU)

Arithmetic/logic Unit (ALU) 3D Printer Arithmetic/logic Unit (ALU) Barcode Barcode Printer Barcode Reader Biometric Reader BIOS (Basic input/output system) Bit Bus Bus Interface Unit A printer that uses molten plastic during a series

More information

Programming with MPI

Programming with MPI Programming with MPI p. 1/?? Programming with MPI Miscellaneous Guidelines Nick Maclaren Computing Service nmm1@cam.ac.uk, ext. 34761 March 2010 Programming with MPI p. 2/?? Summary This is a miscellaneous

More information

Unit 2 : Computer and Operating System Structure

Unit 2 : Computer and Operating System Structure Unit 2 : Computer and Operating System Structure Lesson 1 : Interrupts and I/O Structure 1.1. Learning Objectives On completion of this lesson you will know : what interrupt is the causes of occurring

More information

Introducing Class-Level Decoding Video See a video demonstration of the new real-time class-level decoding feature of the Data Center Software.

Introducing Class-Level Decoding Video See a video demonstration of the new real-time class-level decoding feature of the Data Center Software. Debug USB Faster with USB Class-Level Decoding Introducing Class-Level Decoding Video See a video demonstration of the new real-time class-level decoding feature of the Data Center Software. What are USB

More information

Fastboot Techniques for the x86 Architecture. Ben Biron QNX Software Systems

Fastboot Techniques for the x86 Architecture. Ben Biron QNX Software Systems Ben Biron bbiron@qnx.com Abstract With the introduction of the Intel Atom processor, the x86 architecture has become a viable contender as a low-power embedded platform. The problem is, x86 designs have

More information

The personal computer system uses the following hardware device types -

The personal computer system uses the following hardware device types - EIT, Author Gay Robertson, 2016 The personal computer system uses the following hardware device types - Input devices Input devices Processing devices Storage devices Processing Cycle Processing devices

More information

Main Parts of Personal Computer

Main Parts of Personal Computer Main Parts of Personal Computer System Unit The System Unit: This is simply the box like case called the tower, which houses the motherboard, which houses the CPU. It also houses all the drives, such as

More information

10 C Language Tips for Hardware Engineers

10 C Language Tips for Hardware Engineers 10 C Language Tips for Hardware Engineers Jacob Beningo - March 05, 2013 On its own, the software development process has numerous hazards and obstacles that require navigation in order to successfully

More information

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 4, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts

More information

I2C and SPI Foundation

I2C and SPI Foundation Revision 30 September 2010 Release I2C and SPI Foundation 17 March 2018 changed ref: command f to x Introduction I2C (I squared C) and SPI (Serial peripheral Interface) are two main ways that microcontrollers

More information

CS307: Operating Systems

CS307: Operating Systems CS307: Operating Systems Chentao Wu 吴晨涛 Associate Professor Dept. of Computer Science and Engineering Shanghai Jiao Tong University SEIEE Building 3-513 wuct@cs.sjtu.edu.cn Download Lectures ftp://public.sjtu.edu.cn

More information

AN1814 APPLICATION NOTE

AN1814 APPLICATION NOTE AN1814 APPLICATION NOTE USB Demonstration for DK3200 with µpsd3234a (Inside View of Windows Demo-Application) The µpsd32xx family, from ST, consists of Flash programmable system devices with a 8032 Microcontroller

More information

Operating System Services

Operating System Services CSE325 Principles of Operating Systems Operating System Services David Duggan dduggan@sandia.gov January 22, 2013 Reading Assignment 3 Chapter 3, due 01/29 1/23/13 CSE325 - OS Services 2 What Categories

More information

USB: Features and Circuits Manoj Purohit ( ) Supervisor: Prof P.C.Pandey

USB: Features and Circuits Manoj Purohit ( ) Supervisor: Prof P.C.Pandey M.Tech. Credit seminar report, Electronic Systems Group, EE Dept, IIT Bombay, submitted Nov 2003 USB: Features and Circuits Manoj Purohit (03307410) Supervisor: Prof P.C.Pandey Abstract Universal Serial

More information

CMSC131. Hardware and Software. Hardware

CMSC131. Hardware and Software. Hardware CMSC131 Hardware and Software Hardware Hardware is what makes up the physical machine. Two of the same type of machines can have different brands of hardware used to build them. eg : Hayes Modem -vs- US

More information

CMSC131. Hardware and Software

CMSC131. Hardware and Software CMSC131 Hardware and Software Hardware Hardware is what makes up the physical machine. Two of the same type of machines can have different brands of hardware used to build them. eg : Hayes Modem -vs- US

More information

I2C a learn.sparkfun.com tutorial

I2C a learn.sparkfun.com tutorial I2C a learn.sparkfun.com tutorial Available online at: http://sfe.io/t82 Contents Introduction Why Use I2C? I2C at the Hardware Level Protocol Resources and Going Further Introduction In this tutorial,

More information

An open-source, multi-parameter, full fledged human body vital sign monitoring HAT for Raspberry Pi as well as standalone use.

An open-source, multi-parameter, full fledged human body vital sign monitoring HAT for Raspberry Pi as well as standalone use. HealthyPi v3 An open-source, multi-parameter, full fledged human body vital sign monitoring HAT for Raspberry Pi as well as standalone use. HealthyPi is the first fully open-source, full-featured vital

More information

Main Window. June 25, 2017, Beginners SIG Activity Monitor (Part 1 of 2)

Main Window. June 25, 2017, Beginners SIG Activity Monitor (Part 1 of 2) Note: This discussion is based on MacOS, 10.12.5 (Sierra). Some illustrations may differ when using other versions of macos or OS X. Credit 1: Activity Monitor Help Credit 2: Use Activity Monitor on your

More information

CY4615B AT2LP DDK User s Guide

CY4615B AT2LP DDK User s Guide CY4615B AT2LP DDK User s Guide The AT2LP DDK board is a tool to demonstrate the features of the AT2LP (CY7C68300C and CY7C68320C) mass storage bridge chips. Since the 100-pin CY7C68320C device is a superset

More information

Resource Guide Implementing QoS for WX/WXC Application Acceleration Platforms

Resource Guide Implementing QoS for WX/WXC Application Acceleration Platforms Resource Guide Implementing QoS for WX/WXC Application Acceleration Platforms Juniper Networks, Inc. 1194 North Mathilda Avenue Sunnyvale, CA 94089 USA 408 745 2000 or 888 JUNIPER www.juniper.net Table

More information

mikropascal PRO for 8051

mikropascal PRO for 8051 mikropascal PRO for 8051 PID: MIKROE 740 mikropascal PRO for 8051 is a full-featured Pascal compiler for 8051 devices. The feature rich environment you can experience today is the result of 15 years of

More information

Chapter Operation Pinout Operation 35

Chapter Operation Pinout Operation 35 68000 Operation 35 Chapter 6 68000 Operation 6-1. 68000 Pinout We will do no construction in this chapter; instead, we will take a detailed look at the individual pins of the 68000 and what they do. Fig.

More information