Making USB Device Drivers Easier Using the HID Class
|
|
- Martin Casey
- 6 years ago
- Views:
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
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 informationPEI 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 informationHuman 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 informationUSB 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 informationDEVELOPER 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 informationChapter 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 informationChapter 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 informationAn 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 informationChapter 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 informationChapter 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 informationUSB 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 informationUSB 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 informationM 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 informationObjectives. 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 informationDavid 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 informationthe 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 informationPDF 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 informationChapter 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 informationBus 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 informationChapter 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 informationUniversal 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 informationChapter 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 informationGENOVATION. 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 informationChapter 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 informationRicardo 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 informationUSB2 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 informationChapter 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 informationDesigning 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 informationLibUSB - 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 informationPart 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 informationDesigning 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 informationUSB 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 informationCHAPTER 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 informationProject 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 informationUSB 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 informationThe 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 informationCY3660-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 informationIntroduction 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 informationPIC-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 informationAuthor: 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 informationFully 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 informationBulk 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 informationSerial 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 informationCopyright 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 informationTesting 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 informationEZ-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 informationStatic 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 informationUsing 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 informationHow 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 informationPLX 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 informationOPERATING 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 informationPart 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 informationChapter 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 informationUnderstand 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 informationOPERATING 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 informationOperating 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 informationDeveloping 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 informationOperating-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 informationAN 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 information4-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 informationUSB 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 informationChapter 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 informationMSP430 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 informationFuture 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 informationCS 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 informationDesign 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 informationFPGA 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 informationFour 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 informationAccelerometer 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 informationComputers 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 informationPresentation 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)
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 informationHacking 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 informationCypress 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 informationData 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 informationUnit 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 informationCreating 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 informationArithmetic/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 informationProgramming 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 informationUnit 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 informationIntroducing 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 informationFastboot 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 informationThe 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 informationMain 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 information10 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 informationLast 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 informationI2C 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 informationCS307: 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 informationAN1814 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 informationOperating 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 informationUSB: 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 informationCMSC131. 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 informationCMSC131. 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 informationI2C 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 informationAn 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 informationMain 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 informationCY4615B 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 informationResource 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 informationmikropascal 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 informationChapter 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