USB MASS STORAGE
CONTENTS MASS STORAGE BASICS WHEN TO USE A STORAGE DEVICE BENEFITS OTHER CONSIDERATIONS REQUIREMENTS DEVICES EMBEDDED HOSTS SELECTING A MEDIA TYPE DRIVE MECHANISMS ADDRESSING METHODS READING AND WRITING CONSIDERATIONS REMOVABLE MEDIA AND DEVICES HARDWARE INTERFACES HARD DRIVES TECHNOLOGY INTERFACES FLASH MEMORY OPTIONS FOR FLASH MEMORY MULTIMEDIACARD SD MEMORY CARD COMPACTFLASH SUPPORTING USB THE INTERFACE IN BRIEF HOSTS AND DEVICES HOST RESPONSIBILITIES DEVICE RESPONSIBILITIES BUS SPEEDS ENDPOINTS TRANSFER TYPES TRANSACTIONS THE DATA TOGGLE DESCRIPTORS MASS STORAGE REQUIREMENTS CHOOSING A DEVICE CONTROLLER CONTROLLERS WITH SUPPORT FOR FLASH MEMORY CONTROLLERS WITH SUPPORT FOR ATA/ATAPI FIRMWARE OPTIONS MICROCHIP PIC18F4550 ARCHITECTURE FIRMWARE SUPPORT THE USB CONTROLLER THE USB MASS STORAGE CLASS SPECIFICATIONS LOGICAL BLOCK ADDRESSING MASS STORAGE REQUESTS DEVICE DESCRIPTOR CONFIGURATION DESCRIPTOR INTERFACE DESCRIPTOR ENDPOINT DESCRIPTORS STRING DESCRIPTORS CONTENTS RESPONDING TO COMMANDS THE COMMAND BLOCK WRAPPER THE COMMAND STATUS WRAPPER MANAGING COMMUNICATIONS ON THE BULK ENDPOINTS MORE ABOUT STALL THIRTEEN CASES FOR ANY SITUATION PC SUPPORT WINDOWS LINUX ACCESSING FLASH MEMORY CARDS THE INTERFACE SIGNALS AND POWER EXAMPLE CIRCUIT HOST PROGRAMMING CONFIGURING HARDWARE PORTS FIRMWARE-CONTROLLED PORTS TRANSFERRING DATA DEFAULT STATES SPI ON THE PIC18F4550 CONFIGURING THE PORT WRITING A BYTE READING A BYTE MULTIMEDIACARD PROTOCOL COMMAND AND RESPONSE FORMATS COMMANDS RESPONSE TYPES TOKEN FORMATS THE COMMANDS CLASSES COMMANDS USED BY MASS-STORAGE DEVICES REGISTERS CONTENTS SENDING COMMANDS TIMING CONSIDERATIONS COMMANDS WITH NO DATA TRANSFER COMMANDS THAT READ DATA FROM THE STORAGE MEDIA COMMANDS THAT WRITE DATA TO THE STORAGE MEDIA APPLICATION EXAMPLE DETECTING AND SELECTING A CARD SENDING A COMMAND READING A SECTOR WRITING A SECTOR INITIALIZING COMMUNICATIONS SCSI COMMANDS ABOUT THE COMMANDS WHICH COMMANDS TO IMPLEMENT? SENSE DATA FIXED-FORMAT SENSE DATA SETTING DEFAULT VALUES PRIMARY COMMANDS INQUIRY MODE SELECT MODE SENSE PREVENT ALLOW MEDIUM REMOVAL REPORT LUNS REQUEST SENSE SEND DIAGNOSTIC TEST UNIT READY CONTENTS BLOCK COMMANDS FORMAT UNIT READ READ CAPACITY START STOP UNIT SYNCHRONIZE CACHE VERIFY WRITE MULTIMEDIA COMMANDS READ FORMAT CAPACITIES READ TOC/PMA/ATIP HANDLING COMMANDS AND EVENTS DECODING COMMANDS THE UNIT ATTENTION CONDITION INFORMING THE HOST ABOUT MEDIA CHANGES RESET BEHAVIOR MEDIA STRUCTURE A LOOK INSIDE COMPONENTS OF FORMATTED MEDIA DRIVES WITHOUT AN MBR SECTOR BYTE ORDER THE MASTER BOOT RECORD SECTOR EXECUTABLE CODE THE PARTITION TABLE EXTENDED PARTITIONS THE BOOT SIGNATURE FAT FILE SYSTEMS INSIDE A FAT16 VOLUME RESERVED REGION FILE ALLOCATION TABLE REGION ROOT DIRECTORY REGION FILE AND DIRECTORY DATA REGION CONTENTS INSIDE A FAT32 VOLUME SELECTING A FILE SYSTEM CLUSTER SIZES A HARDWARE SOLUTION THE FILE ALLOCATION TABLE THE FIRST TWO ENTRIES DATA CLUSTERS ACCESSING THE FAT VOLUME INFORMATION FILE INFORMATION OBTAINING A CLUSTER’S LOGICAL BLOCK ADDRESS READING FROM THE FAT WRITING TO THE FAT FINDING A FILE’S NEXT CLUSTER PERFORMING SEQUENTIAL READS FINDING AN EMPTY CLUSTER DIRECTORIES THE CONTENTS OF AN ENTRY FILE ENTRIES DIRECTORY ENTRIES THE VOLUME LABEL ENTRY SUBDIRECTORY ENTRIES HANDLING LONG FILE NAMES LFN ENTRIES THE CHECKSUM CREATING A SHORT FILE NAME CONTENTS USING DIRECTORIES STORING AN ENTRY READING AN ENTRY GETTING THE MAIN ENTRY UPDATING AN ENTRY UPDATING THE TIME AND DATE 10 FILE OPERATIONS CLUSTER OPERATIONS ERASING A CLUSTER RESERVING AN AVAILABLE CLUSTER ALLOCATING A FILE’S FIRST CLUSTER ALLOCATING ADDITIONAL CLUSTERS MANAGING FILES OBTAINING FILE INFORMATION FINDING A FILE CREATING A DIRECTORY ENTRY FINDING AN AVAILABLE ENTRY CREATING A FILE DELETING A FILE OPENING A FILE READING FROM A FILE TASKS PERFORMING A READ OPERATION WRITING TO A FILE PERFORMING A WRITE OPERATION CLOSING A FILE CONTENTS 11 EMBEDDED HOSTS INSIDE AN EMBEDDED HOST OTG DEVICES AND CONVENTIONAL HOSTS GENERAL HOST FUNCTIONS MASS STORAGE FUNCTIONS HANDLING NON-COMPLIANT DEVICES HOST OPTIONS CYPRESS EZ-HOST HOST SOFTWARE A MASS-STORAGE HOST MODULE MASS STORAGE BASICS A MASS-STORAGE DEVICE IS ELECTRONIC HARDWARE THAT STORES INFORMATION AND SUPPORTS A PROTOCOL FOR SENDING AND RETRIEVING THE INFORMATION OVER A HARD- WARE INTERFACE THE INFORMATION CAN BE ANYTHING THAT CAN BE STORED ELECTRON- ICALLY: EXECUTABLE PROGRAMS, SOURCE CODE, DOCUMENTS, IMAGES, SPREADSHEET NUMBERS, DATABASE ENTRIES, DATA LOGGER OUTPUT, CONFIGURATION DATA, OR OTHER TEXT OR NUMERIC DATA MASS-STORAGE DEVICES TYPICALLY STORE INFORMATION IN FILES A FILE SYSTEM DEFINES HOW THE FILES ARE ORGANIZED IN THE STORAGE MEDIA IN WINDOWS COMPUTERS, MASS-STORAGE DEVICES APPEAR AS DRIVES IN MY COM- PUTER FROM WINDOWS EXPLORER, USERS CAN COPY, MOVE, AND DELETE FILES IN THE DEVICES PROGRAM CODE CAN ACCESS FILES USING FILE-SYSTEM APIS OR NET’S FILE CLASS WHEN TO USE A STORAGE DEVICE IMPLEMENTING A MASS-STORAGE FUNCTION IS A SOLUTION FOR SYSTEMS THAT NEED TO READ OR WRITE MODERATE TO LARGE AMOUNTS OF DATA CHAPTER IF THE DEVICE HAS A UNIVERSAL SERIAL BUS (USB) INTERFACE, ANY PC OR OTHER USB HOST CAN ACCESS THE STORAGE MEDIA GENERIC USB MASS-STORAGE DEVICES INCLUDE THE HARD DRIVES, FLASH DRIVES, CD DRIVES, AND DVD DRIVES AVAILABLE FROM ANY COMPUTER-HARDWARE STORE TABLE 1-1 LISTS POPULAR DEVICE TYPES THESE DEVICES HAVE JUST ONE FUNCTION: TO PROVIDE STORAGE SPACE FOR THE SYS- TEMS THEY CONNECT TO ANOTHER TYPE OF USB MASS-STORAGE DEVICE (OR STORAGE DEVICE FOR SHORT) IS THE SPECIAL-PURPOSE DEVICE WITH STORAGE CAPABILITIES FOR EXAMPLE, A CAMERA CAN CAPTURE IMAGES AND STORE THE IMAGES IN FILES A DATA LOGGER CAN COLLECT AND STORE SENSOR READINGS IN FILES A ROBOTIC DEVICE CAN RECEIVE FILES CONTAINING CONFIGURATION PARAMETERS WITH THE ADDITION OF A USB MASS-STORAGE INTER- FACE, ANY OF THESE DEVICES CAN USE USB TO EXCHANGE FILES WITH PCS AND OTHER USB HOSTS GENERIC STORAGE DEVICES ARE READILY AVAILABLE AND INEXPENSIVE UNLESS YOU’RE EMPLOYED BY A STORAGE-DEVICE MANUFACTURER, THERE ISN’T MUCH POINT IN DESIGNING AND PROGRAMMING YOUR OWN GENERIC DEVICES BUT SPECIAL-PURPOSE USB STORAGE DEVICES ARE USEFUL IN MANY EMBEDDED SYSTEMS, INCLUDING ONE-OF-A-KIND PROJECTS AND PRODUCTS MANUFACTURED IN SMALL QUANTITIES ANOTHER OPTION FOR SOME SYSTEMS IS TO ADD USB HOST-CONTROLLER HARDWARE AND MASS-STORAGE FIRMWARE THE EMBEDDED SYSTEM CAN THEN STORE AND READ FILES IN OFF-THE-SHELF USB STORAGE DEVICES BENEFITS ADDING STORAGE-DEVICE CAPABILITIES TO A SYSTEM HAS SEVERAL BENEFITS: WITH A USB DEVICE CONTROLLER, A SYSTEM CAN MAKE THE CONTENTS OF ITS STOR- AGE MEDIA AVAILABLE TO ANY PC OR OTHER USB HOST COMPUTER FILE SYSTEMS PROVIDE A STANDARD WAY TO STORE AND ACCESS DATA A PC OR OTHER USB HOST CAN FORMAT THE MEDIA IN A USB STORAGE DEVICE TO USE THE FAT16 OR FAT32 FILE SYSTEM WHEN THE DEVICE IS CONNECTED TO A PC, THE OPERATING SYSTEM ENABLES READING AND WRITING TO FILES USERS CAN ACCESS THE FILES WITHOUT HAVING TO INSTALL AND LEARN A VENDOR-SPECIFIC APPLICATION STORAGE MEDIA IS READILY AVAILABLE FLASH-MEMORY CARDS ARE CONVENIENT AND HAVE ENOUGH CAPACITY FOR MANY APPLICATIONS SOME CARDS REQUIRE ONLY A FEW PORT PINS TO ACCESS DEVICES THAT NEED LARGE AMOUNTS OF STORAGE CAN INTERFACE TO HARD DRIVES MASS STORAGE BASICS