Bachelor's Thesis Nr. 198B

Total Page:16

File Type:pdf, Size:1020Kb

Bachelor's Thesis Nr. 198B Bachelor’s Thesis Nr. 198b Systems Group, Department of Computer Science, ETH Zurich Device Queues for USB by Joël Busch Supervised by Prof. Timothy Roscoe, Reto Achermann, Roni Häcki Systems Group, ETH Zurich November 2017–May 2018 Abstract The motivation behind this thesis is that we want to provide the research operating system Barrelfish with a useful feature and in the course of implementing it we want to prove that some of Barrelfish’s newer systems work well. Therefore the goal we chose was to develop a USB mass storage service. The implementation of the service provides an opportunity to use the newly introduced Device Queues for inter-process bulk communication. Demonstrating their functionality and effi- ciency is part of our aim. Furthermore, in the course of developing the USB mass storage driver we can show how well the system knowledge base and the device manager cooperate to enable event based driver startup. Our approach was to first reorganize the existing USB subsystem to conform to the new driver model for Barrelfish and to change its initialization to be based around events dispatched by the system knowledge base. Next we added a USB mass storage driver to the subsystem and used Device Queues for providing clients with access to the service over a zero-copy channel. Finally Barrelfish’s FAT implemen- tation was extended to include write support and its back-end was modified to use the aforementioned communication channel. The resulting mass storage service achieves better performance than Linux when both are run virtualized on the same host with the same USB hardware being passed through. Some stability issues, particularly based around FAT, still need to be ad- dressed and performance can still be improved, but the core functionality has been demonstrated. We further provide evidence that the Device Queues do not add any measurable communication overhead. Finally we show that the device manager and the system knowledge base robustly solve the problem of device initialization on a discoverable bus. 1 2 Contents 1 Introduction 5 1.1 Thesis Outline . .7 2 Background 9 2.1 Barrelfish . .9 2.1.1 Inter-domain communication . 10 2.1.2 System initialization . 11 2.2 Protocols . 14 2.2.1 USB . 14 2.2.2 SCSI . 17 2.2.3 FAT . 18 2.3 Previous USB subsystem . 19 3 Design 21 3.1 New driver model . 21 3.2 Queue setup . 22 3.3 Initialization . 24 3.4 USB mass storage driver . 25 3.5 FAT ................................. 26 4 Implementation 27 4.1 New driver model and Initialization . 27 4.2 USB mass storage driver . 29 4.3 Queue setup . 30 4.4 FAT ................................. 30 5 Evaluation 33 5.1 Aim . 33 5.2 Testing Setup . 34 5.2.1 Systems and Hardware . 34 5.2.2 Testing the full stack . 34 5.2.3 Isolating FAT . 35 5.2.4 Isolating the Device Queue . 36 3 4 CONTENTS 5.2.5 Generating a baseline . 37 5.3 Test failures . 37 5.4 Results . 38 5.5 Interpretation . 40 6 Conclusion and Future Work 41 6.1 Conclusion . 41 6.2 Future Work . 42 Chapter 1 Introduction The Barrelfish research operating system [16] runs many of its services, includ- ing its drivers, in user-space processes. This necessitates efficient communication between processes, especially when facing large amounts of data to transfer. Previ- ously Barrelfish had a variety of small tools to enable bulk transfer of data between processes, but they all had various drawbacks. As a formal solution to the problem Device Queues [6] were recently added to Barrelfish. They allow for sending mem- ory buffers between processes without copying the data. Instead, ownership of a buffer that both processes have access to is passed back and forth. Only the current owner of a location is allowed to access the buffer. Since there is no effective safe- guard against access by the non-owner, the queue is intended to be used between cooperative processes. When using a hardware specific back-end, the same func- tionality can be used to write directly into hardware buffers of the device, enabling zero-copy usage. File systems communicating with user programs are a common use case that in- volves shifting large amounts of data between a driver in one process to a user application in another. This project specifically targets a file system on a USB mass storage device [10], because it is a good opportunity to demonstrate the use of Device Queues in a real world scenario. Another new addition to Barrelfish is the specification of a more unified driver interface [5] that also allows for drivers to share a process and employ local direct communication within the same virtual memory space. This is of interest to the USB subsystem, because there are various drivers typically running that are tightly coupled and could benefit from sharing a process. At a minimum three drivers must be running and working together if any functionality of a USB device needs to be used. The situation before the project was that one application called the USB man- ager [1] was running driver code for the host controller, who is responsible for 5 6 CHAPTER 1. INTRODUCTION enabling communication with all other USB devices, and for the hubs, which are port multipliers for USB. It was directly responsible for bringing up the drivers of USB devices that were connected. Startup of the USB manager was hard coded into the device manager [4] and the USB manager had it’s own stub mechanism for locating USB driver binaries that was working only for the case of the keyboard driver. A better solution can be achieved with two mechanisms in tandem: Firstly the common interface in the new driver model [5] allows the device manager to start various drivers in a more unified way. Secondly the publish-subscribe server Oc- topus [20] can asynchronously inform the device manager of new device records appearing in the system knowledge base [7]. Based on these we can design a system where the device manager reacts to events signifying the appearance of new devices. It can then easily and dynamically load drivers for the device, because they conform to the new interface. This also means that the discovery code running in the hub driver can be made agnostic of driver startup routines. It only needs to put a device record into the system knowledge base. For these reasons the project is aimed at transforming the existing USB implemen- tation in Barrelfish in multiple ways. First of all the existing driver is ported to the new device driver model, including the addition of new instantiation routines by the device manager. The second change is allowing communication with the USB driver over Device Queues for efficient bulk data transfers. And finally, to enable testing of the queues a USB mass storage driver is added, including supporting in- frastructure such as a partial SCSI [15] implementation to encapsulate in the USB transport and changes to the existing FAT file system [14]. The contributions of the thesis are: • Splitting all the USB code into driver modules conforming to the new driver interface • Having the device manager perform event based initialization of devices in the USB subsystem • Producing a USB mass storage driver that allows clients to connect over a Device Queue interface • Merging write support into the FAT library and making adjustments allowing it to connect to the aforementioned Device Queue 1.1. THESIS OUTLINE 7 1.1 Thesis Outline Beyond this introduction the thesis is split into five chapters. Chapter 2 contains explanations of various relevant Barrelfish subsystems and some of the protocols and standards used. Chapter 3 provides the new design of the USB subsystem as it relates to initialization and inter domain communication, including the reasoning behind design choices. Chapter 4 describes various implementation details that may be relevant primarily in system maintenance. Chapter 5 presents the testing setup used for performance evaluation and the results obtained from it. Finally, chapter 6 draws conclusions from the data and experiences and casts a gaze forward towards possible future improvements. 8 CHAPTER 1. INTRODUCTION Chapter 2 Background 2.1 Barrelfish Barrelfish is a research operating system developed by researchers in the Systems Group of ETH Zürich. The main goal behind Barrelfish is exploring designs for better scalability as well as system heterogeneity. It finds further use as a platform which to base related research and teaching in the area of operating system design on [16]. The base design chosen for Barrelfish is that of the multikernel [8], where each core independently runs a small kernel. The kernels do not share memory and do not need to be identical. In fact they are regarded simply as CPU drivers within Barrelfish. They do not enjoy special treatment and are simply started by the device manager like other device drivers. This allows kernels for different architectures to run within a single system. The kernels are minimal by design, much like those of microkernel [12] operating systems. They only provide access to kernel objects and memory, access to the core system hardware, a channel for local communication within a CPU core, and scheduling to user space dispatchers. Such a dispatcher is, from the kernel’s perspective, akin to a process in other op- erating systems, but with the limitation of being fixed to the single core the kernel that controls it lives on. One or multiple dispatchers, interacting over various means of message passing, form a domain together. A domain is the abstraction that is mostly equivalent to a process from the user’s perspective.
Recommended publications
  • QEMU Version 2.10.2 User Documentation I
    QEMU version 2.10.2 User Documentation i Table of Contents 1 Introduction ::::::::::::::::::::::::::::::::::::: 1 1.1 Features :::::::::::::::::::::::::::::::::::::::::::::::::::::::: 1 2 QEMU PC System emulator ::::::::::::::::::: 2 2.1 Introduction :::::::::::::::::::::::::::::::::::::::::::::::::::: 2 2.2 Quick Start::::::::::::::::::::::::::::::::::::::::::::::::::::: 2 2.3 Invocation :::::::::::::::::::::::::::::::::::::::::::::::::::::: 3 2.3.1 Standard options :::::::::::::::::::::::::::::::::::::::::: 3 2.3.2 Block device options ::::::::::::::::::::::::::::::::::::::: 9 2.3.3 USB options:::::::::::::::::::::::::::::::::::::::::::::: 19 2.3.4 Display options ::::::::::::::::::::::::::::::::::::::::::: 19 2.3.5 i386 target only::::::::::::::::::::::::::::::::::::::::::: 26 2.3.6 Network options :::::::::::::::::::::::::::::::::::::::::: 27 2.3.7 Character device options:::::::::::::::::::::::::::::::::: 35 2.3.8 Device URL Syntax::::::::::::::::::::::::::::::::::::::: 39 2.3.9 Bluetooth(R) options ::::::::::::::::::::::::::::::::::::: 42 2.3.10 TPM device options ::::::::::::::::::::::::::::::::::::: 42 2.3.11 Linux/Multiboot boot specific ::::::::::::::::::::::::::: 43 2.3.12 Debug/Expert options ::::::::::::::::::::::::::::::::::: 44 2.3.13 Generic object creation :::::::::::::::::::::::::::::::::: 52 2.4 Keys in the graphical frontends :::::::::::::::::::::::::::::::: 58 2.5 Keys in the character backend multiplexer ::::::::::::::::::::: 58 2.6 QEMU Monitor ::::::::::::::::::::::::::::::::::::::::::::::: 59 2.6.1 Commands :::::::::::::::::::::::::::::::::::::::::::::::
    [Show full text]
  • Performance and Innovation of Storage Advances Through SCSI Express © 2014 Storage Networking Industry Association
    Performance and Innovation of Storage PRESENTATION TITLE GOES HERE Advances through SCSI Express Marty Czekalski President, SCSI Trade Association - Emerging Interface and Architecture Program Manager, Seagate Technology Greg McSorley Vice President, SCSI Trade Association Technical Business Development Manager, Amphenol SNIA Legal Notice The material contained in this tutorial is copyrighted by the SNIA unless otherwise noted. Member companies and individual members may use this material in presentations and literature under the following conditions: Any slide or slides used must be reproduced in their entirety without modification The SNIA must be acknowledged as the source of any material used in the body of any document containing material from these presentations. This presentation is a project of the SNIA Education Committee. Neither the author nor the presenter is an attorney and nothing in this presentation is intended to be, or should be construed as legal advice or an opinion of counsel. If you need legal advice or a legal opinion please contact your attorney. The information presented herein represents the author's personal opinion and current understanding of the relevant issues involved. The author, the presenter, and the SNIA do not assume any responsibility or liability for damages arising out of any reliance on or use of this information. NO WARRANTIES, EXPRESS OR IMPLIED. USE AT YOUR OWN RISK. Performance and Innovation of Storage Advances through SCSI Express © 2014 Storage Networking Industry Association. All Rights Reserved. 2 Abstract Performance and Innovation of Storage Advances through SCSI Express SCSI Express represents the natural evolution of enterprise storage technology building upon decades of customer and industry experience.
    [Show full text]
  • Vt6306 Driver Download
    vt6306 driver download DRIVERS VIA VT6306 FIREWIRE FOR WINDOWS 8 DOWNLOAD (2020) See the release notes in the file for installation instructions, supported hardware, what's new, bug fixes, and known issues. I just selected these completely different models to illustrate the current situation. Welcome to the VIA Driver Download Portal. IEEE 1394 Host Controller in lspci, but rev. The IEEE 1394 high-speed serial bus known as Firewire is a leading PCI peer-to-peer interconnect system and is widely acclaimed as the primary interface for digital audio and video applications. Uploaded on, downloaded 367 times, receiving a 93/100 rating by 286 users. Purchased a FireWire IEEE 1394 PCI card with the VIA Technologies, Inc. Fire VT6306/L IEEE 1394 Link-Layer / PHY Chipset Solution The VIA Fire II VT6306/L is a complete single chip IEEE1394 solution that provides high-speed seamless plug and play connection to. The VT6306 IEEE 1394 OHCI Host Controller provides high performance serial connectivity. EasyCAP Driver is a file conversion software tool that converts the RCA or S-video source to the USB video. The VIA VT6306 and peripheral controllers show up to. Add FireWire connectivity to any computer with this 3+1-port IEEE 1394 FireWire card. The VIA Vt6306 3-port FireWire card. Simplicity, Provides a simple low cost interconnect system for multimedia applications such as video cameras. Featuring the size displayed will provide the FW ones don't. VIA Firewire Chipsets. Drivers in supported hardware, Inc. Note the updates below as well as the operating systems. Initial Driver Support for Windows 7, Vista, and XP - USB Attached SCSI Protocol UASP - Supports various Linux kernels - Supports Windows 10, Windows 8 inbox driver, BACK.
    [Show full text]
  • USB 3.0 to SATA Hard Drive Lay-Flat Enclosure for 3.5-In. HDD And
    USB 3.0 to SATA Hard Drive Lay-Flat Enclosure Highlights for 3.5-in. HDD and SSD ● Compact, stable lay-flat design ● No software or drivers to MODEL NUMBER: U339-001-FLAT download or install ● Compliant with USB 3.0, USB 2.0 and USB 1.1 transfer rates ● Compliant with SATA HDD or SSD drives up to SATA III ● Protective cover keeps SATA drive free of dust System Requirements ● Computer with available USB port (USB 3.0 port required to achieve USB 3.0 data transfer speeds) ● 2.5-in. or 3.5-in. SATA HDD or SSD ● UASP-enabled host controller (for UASP data transfer speeds only) Quickly and easily add storage and transfer data to your computer or laptop by connecting a SATA drive Package Includes to your computer’s USB port. Compact lay-flat design takes up little space and maintains stability on most ● U339-001-FLAT USB 3.0 to surfaces. SATA Hard Drive Lay-Flat Enclosure Description ● USB 3.0 A/B cable, 4-ft. (1.22 m) length The U339-001-FLAT USB 3.0 to SATA Hard Drive Lay-Flat Enclosure allows you to quickly and easily add ● External Power Supply with storage and transfer data to your computer or laptop from a SATA hard drive. It lays flat to take up little NEMA 1-15P Plug (Input: 100- space and maintain stability. Just insert a 2.5-in. or 3.5-in. SATA HDD (Hard Disk Drive) or SSD (Solid 240V, 50/60 Hz, 0.8A; Output: 12V, 2A, 5-ft.
    [Show full text]
  • Qemu USB Status Report 2012
    USB Status report 2012 Gerd Hoffmann Red Hat KVM Forum, Nov 7th 1 Gerd Hoffmann <[email protected]> Outline ● Some USB Basics. ● What is new / updated / improved in QEMU USB support? ● Future plans / TODO list. ● Using the new bits. 2 Gerd Hoffmann <[email protected]> USB Basics: Endpoints ● Communicate with the host using endpoints ● Each endpoint is a data pipe. ● One control endpoint. ● Up to 15 IN (device -> host) endpoints ● Up to 15 OUT (host ->device) endpoints. ● Four Endpoint types ● Control ● Bulk (bulky data: usb sticks) ● Isochronous (streaming data: usb speakers) ● Interrupt (events: mouse) 3 Gerd Hoffmann <[email protected]> USB Basics: Functions ● Functional unit, OS typically has one driver per function. ● Each function has a set of endpoints. ● Multifunction examples: ● Webcam with mic: one video, one audio. ● Extra HID function for buttons. ● Extra storage function with windows drivers. ● Most devices have a single function only. 4 Gerd Hoffmann <[email protected]> USB Core changes ● Model endpoints & packet queues. ● move from packet-by-packet to datapipe processing (next slides). ● USB3 descriptor support ● generate endpoint companion descriptors. ● generate binary object store descriptors. ● Usual share of cleanups. 5 Gerd Hoffmann <[email protected]> Packet queues: without pipelining #1 #2 #1 #1 QEMU Guest #1 usb-host Device or #2 redirect #2 #2 6 Gerd Hoffmann <[email protected]> Packet queues: with pipelining #1 #2 #1 #2 QEMU #1 Guest usb-host #2 Device or redirect #1 #2 7 Gerd Hoffmann <[email protected]> uhci host controller ● Bandwidth accounting (next slides). ● Support queuing & pipelining. ● Fix ich9 companion irq routing. ● Use all 4 intx pins for multifunction device to reduce IRQ sharing.
    [Show full text]
  • JMS583 USB 3.1 Gen 2 to Pcie Gen3x2 Bridge
    DATASHEET JMS583 USB 3.1 Gen 2 to PCIe Gen3x2 Bridge Document No.: PDS-17001/ Revision: 1.0 / Date: 6/30/2018 JMicron Technology Corporation 1F, No. 13, Innovation Road 1, Science-Based Industrial Park, Hsinchu, Taiwan 300, R.O.C. Tel: 886-3-5797389 Fax: 886-3-5799566 Website: http://www.jmicron.com JMS583 Datasheet Copyright © 2017, JMicron Technology Corp. All Rights Reserved. Printed in Taiwan 2017 JMicron and the JMicron Logo are trademarks of JMicron Technology Corporation in Taiwan and/or other countries. Other company, product and service names may be trademarks or service marks of others. All information contained in this document is subject to change without notice. The products described in this document are NOT intended for use implantation or other life supports application where malfunction may result in injury or death to persons. The information contained in this document does not affect or change JMicron’s product specification or warranties. Nothing in this document shall operate as an express or implied license or environments, and is presented as an illustration. The results obtained in other operating environments may vary. THE INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED ON AN “AS IS” BASIS. In no event will JMicron be liable for damages arising directly or indirectly from any use of the information contained in this document. For more information on JMicron products, please visit the JMicron web site at http://www.JMicron.com or send e-mail to [email protected]. For product application support, please send e-mail to [email protected]. JMicron Technology Corporation 1F, No.13, Innovation Road 1, Science-Based Industrial Park, Hsinchu, Taiwan 300, R.O.C.
    [Show full text]
  • JMS583 USB 3.1 Gen 2 to Pcie Gen3x2 Bridge Controller
    PRODUCT BRIEF JMS583 USB 3.1 Gen 2 to PCIe Gen3x2 Bridge Controller Document No.: PDB-18001 / Revision: 1.00 / Date: 5/15/2018 JMicron Technology Corporation 1F, No. 13, Innovation Road 1, Science-Based Industrial Park, Hsinchu, Taiwan 300, R.O.C. Tel: 886-3-5797389 Fax: 886-3-5799566 Website: http://www.jmicron.com Certificate No.: TW16/00614 JMS583 Product Brief Copyright © 2017, JMicron Technology Corp. All Rights Reserved. Printed in Taiwan 2017 JMicron and the JMicron Logo are trademarks of JMicron Technology Corporation in Taiwan and/or other countries. Other company, product and service names may be trademarks or service marks of others. All information contained in this document is subject to change without notice. The products described in this document are NOT intended for use implantation or other life supports application where malfunction may result in injury or death to persons. The information contained in this document does not affect or change JMicron’s product specification or warranties. Nothing in this document shall operate as an express or implied license or environments, and is presented as an illustration. The results obtained in other operating environments may vary. THE INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED ON AN “AS IS” BASIS. In no event will JMicron be liable for damages arising directly or indirectly from any use of the information contained in this document. For more information on JMicron products, please visit the JMicron web site at http://www.JMicron.com or send e-mail to [email protected]. For product application support, please send e-mail to [email protected].
    [Show full text]
  • TCG Storage Interface Interactions Specification (SIIS) Version 1.05
    TCG Storage Interface Interactions Specification (SIIS) Specification Version 1.05 Revision 1.00 March 16, 2016 Final Contact: [email protected] TCG TCG PUBLISHED Copyright © TCG 2016 Storage Interface Interactions Specification TCG Copyright 2016 Specification Version 1.05 Revision 1.00 Disclaimers, Notices, and License Terms THIS SPECIFICATION IS PROVIDED "AS IS" WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. Without limitation, TCG disclaims all liability, including liability for infringement of any proprietary rights, relating to use of information in this specification and to the implementation of this specification, and TCG disclaims all liability for cost of procurement of substitute goods or services, lost profits, loss of use, loss of data or any incidental, consequential, direct, indirect, or special damages, whether under contract, tort, warranty or otherwise, arising in any way out of use or reliance upon this specification or any information herein. This document is copyrighted by Trusted Computing Group (TCG), and no license, express or implied, is granted herein other than as follows: You may not copy or reproduce the document or distribute it to others without written permission from TCG, except that you may freely do so for the purposes of (a) examining or implementing TCG specifications or (b) developing, testing, or promoting information technology standards and best practices, so long as you distribute the document with these disclaimers, notices, and license terms. Contact the Trusted Computing Group at www.trustedcomputinggroup.org for information on specification licensing through membership agreements.
    [Show full text]
  • TUSB9261-Q1 USB 3.0 to SATA Bridge Datasheet
    TUSB9261-Q1 www.ti.com SLLSEE2A –JANUARY 2014–REVISED JANUARY 2014 USB 3.0 TO SATA BRIDGE Check for Samples: TUSB9261-Q1 1FEATURES • Qualified for Automotive Applications • Integrated ARM Cortex M3 Core • AEC-Q100 Qualified with the Following – Customizable Application Code Loaded Exceptions: From EEPROM Via SPI Interface – Device CDM ESD Classification Level C3 – Two Additional SPI Port Chip Selects for • Ideal for bridging Serial ATA (SATA) Devices, Peripheral Connection Such as Hard Disk Drives (HDD), Solid State – Up to 5 GPIOs for End-User Configuration Drives (SSD), or Optical Drives (OD) to via HID Universal Serial Bus (USB) – Serial Communications Interface for Debug • USB Interface (UART) – Integrated Transceiver Supports SS/HS/FS • General Features Signaling – Integrated Spread Spectrum Clock – Best in Class Adaptive Equalizer Generation Enables Operation from a – Allows for Greater Jitter Tolerance in the Single Low Cost Crystal or Clock Oscillator Receiver – Supports 20, 25, 30 or 40 MHz – USB Class Support – JTAG Interface for IEEE1149.1 and – USB Attached SCSI Protocol (UASP) for IEEE1149.6 Boundary Scan HDD and SSD – Available in a Fully RoHS Compliant – USB Mass Storage Class Bulk-Only Package (PAP) Transport (BOT) Including Support for Error Conditions Per the 13 Cases APPLICATIONS (Defined in the BOT Specification) • Automotive – USB Bootability Support • External HDD/SSD – USB Human Interface Device (HID) • External DVD – Supports Firmware Update Via USB Using a • HDD-Based Portable Media Player TI Provided Application
    [Show full text]
  • Anyplaceusb Linux User Manual Content Introduction
    AnyplaceUSB Linux User Manual Copyright © 2018 by TITAN Electronics Inc. All Rights Reserved. AnyplaceUSB Linux User Manual Content Introduction .......................................................................................................................................... 3 Installation on Linux ............................................................................................................................ 4 To install a package along with dependencies, open a terminal and run: ........................................ 4 Uninstallation on Linux ....................................................................................................................... 5 To uninstall USB Network Gate: ....................................................................................................... 5 Quick starting guide ............................................................................................................................. 6 Sharing a USB device ....................................................................................................................... 6 Connecting to a shared USB device remotely .................................................................................. 7 Share Local USB Devices .............................................................................................................. 9 Unshare Local USB Devices ....................................................................................................... 12 Disable current connection ......................................................................................................
    [Show full text]
  • USB Flash Drive Writer Student: David Labský Supervisor: Ing
    CZECH TECHNICAL UNIVERSITY IN PRAGUE FACULTY OF INFORMATION TECHNOLOGY ASSIGNMENT OF BACHELOR’S THESIS Title: USB Flash Drive Writer Student: David Labský Supervisor: Ing. Miroslav Hrončok Study Programme: Informatics Study Branch: Computer engineering Department: Department of Digital Design Validity: Until the end of summer semester 2017/18 Instructions Design and implement an open source hardware box for writing a provided bootable disk image of a Linux distribution such as Fedora to USB flash drives. The box should have a button to start the write operation and an indicator of the progress. • Study existing implementations. • Consider and compare different types of hardware for use in the project. • Write full instructions for construction of the box from scratch. • Construct a functional physical prototype. When making decisions, consider the following criteria for use in the Fedora Project: • Ease of build: Even users without significant previous knowledge about used hardware should be able to build the device. • Price and availability of the components on various continents. • Extensibility. References Will be provided by the supervisor. L.S. doc. Ing. Hana Kubátová, CSc. prof. Ing. Pavel Tvrdík, CSc. Head of Department Dean Prague February 13, 2017 Czech Technical University in Prague Faculty of Information Technology Department of Digital Design Bachelor’s thesis USB Flash Drive Writer David Labský Supervisor: Ing. Miroslav Hrončok 16th of May, 2017 Acknowledgements A sincere thank you to my supervisor Miroslav Hrončok for his ideas, advice, and continued mentoring. Thank you to Petr Viktorin for his ethusiasm and pieces of hardware. Sorry I didn’t reach out more! Many thanks to Marek Žehra for incredibly professional photos on short notice.
    [Show full text]
  • Universal Serial Bus Mass Storage Class Specification Overview
    Universal Serial Bus Mass Storage Class Specification Overview Revision 1.4 February 19, 2010 MSCO Revision 1.4 February 19, 2010 Document Status Revision History Rev Date Author Description 1.0 October 22, 1998 1) Initial release 1.1 June 28, 2000 1) Update 1.2 June 23, 2003 1) Update list of specs 2) Restrict CBI to full-speed floppies only 1.3 September 5, 2008 John Geldman 1) Updated related documents & subclass refer- ences, 2) added MSC-Lock & IEEE 1667 subclasses, 3) added Vendor Specific subclass & protocol, 4) updated protocol list, added section on Request Codes 1.4rc1 June 23, 2009 John Geldman 1) Corrected references to obsolete SubClass Codes Curtis E. Stevens in Table 2.1 2) Adds USB Attached SCSI Protocol Reference 3) Adds Protocol UASP subgroup approved for usage in T10 UAS work 4) Updated list of contributors 5) Performed spelling and grammar check 6) Updated formatting for consistency. 1.4rc2 August 5, 2009 Curtis E. Stevens 1) Updated with letter ballot comment corrections 2) Added list of previous contributors 3) Added USB-2 as “core Spec” 1.4rc3 February 19, 2010 Curtis E, Stevens 1) Changed the introduction to the contributers list to match USB-IF requirements. ii Specification Overview February 19, 2010 MSCO Revision 1.4 The authors of this specification would like to thank the people from the Promoter companies, the people who participated in the UASP Specification technical working group, and those throughout the industry who contributed to the development of this specification. The following people have contributed to the Mass Storage Overview Class Specification.
    [Show full text]