Contents

21 Mar

Contents
Acknowledgements xi
Introduction xiii
1 Mass Storage Basics 1
When to Use a Storage Device 1
Benefits 2
Other Considerations 3
Requirements 4
Devices 4
Embedded Hosts 5
Selecting a Media Type 7
Drive Mechanisms 8
Addressing Methods 10
Reading and Writing Considerations 10
Removable Media and Devices 12
Hardware Interfaces 12
Hard Drives 13
Technology 13
Interfaces 13
Flash Memory 13
Technology 14
Options for Flash Memory 15
MultiMediaCard 16
SD Memory Card 20
CompactFlash 22

2 Supporting USB 25
The Interface in Brief 26
Hosts and Devices 26
Host Responsibilities 27
Device Responsibilities 29
Bus Speeds 31
Endpoints 31
Transfer Types 32
Transactions 32
The Data Toggle 33
Descriptors 34
Mass Storage Requirements 34
Choosing a Device Controller 37
Controllers with Support for Flash Memory 37
Controllers with support for ATA/ATAPI 38
Firmware Options 38
Microchip PIC18F4550 39
Architecture 39
Firmware Support 39
The USB Controller 39
3 The USB Mass Storage Class 45
Requirements 45
Specifications 45
Logical Block Addressing 46
Mass Storage Requests 46
Descriptors 46
Device Descriptor 47
Configuration Descriptor 49
Interface Descriptor 51
Endpoint Descriptors 53
String Descriptors 54

v
Responding to Commands 55
The Command Block Wrapper 56
The Command Status Wrapper 60
Managing Communications on the Bulk Endpoints 62
More about STALL 72
Thirteen Cases for Any Situation 73
PC Support 76
Windows 76
Linux 77
4 Accessing Flash Memory Cards 79
The Interface 79
Signals and Power 80
Example Circuit 80
Host Programming 83
Configuring 83
Hardware Ports 85
Firmware-controlled Ports 86
Transferring Data 86
Default States 86
SPI on the PIC18F4550 86
Configuring the Port 88
Writing a Byte 89
Reading a Byte 91
5 MultiMediaCard Protocol 93
Command and Response Formats 93
Commands 94
Response Types 94
Token Formats 98
The Commands 99
Classes 99
Commands Used by Mass-storage Devices 100
Registers 101
Contents
vi
Sending Commands 101
Timing Considerations 102
Commands with No Data Transfer 105
Commands that Read Data from the Storage Media 105
Commands that Write Data to the Storage Media 106
Application Example 107
Detecting and Selecting a Card 107
Sending a Command 109
Reading a Sector 118
Writing a Sector 120
Initializing Communications 123
6 SCSI Commands 131
About the Commands 131
Specifications 131
Which Commands to Implement? 132
Sense Data 135
Fixed-format Sense Data 137
Setting Default Values 138
Primary Commands 139
INQUIRY 139
MODE SELECT 143
MODE SENSE 143
PREVENT ALLOW MEDIUM REMOVAL 145
REPORT LUNS 146
REQUEST SENSE 146
SEND DIAGNOSTIC 147
TEST UNIT READY 147
Contents
vii
Block Commands 148
FORMAT UNIT 148
READ 149
READ CAPACITY 152
START STOP UNIT 154
SYNCHRONIZE CACHE 154
VERIFY 155
WRITE 155
Multimedia Commands 159
READ FORMAT CAPACITIES 159
READ TOC/PMA/ATIP 159
Handling Commands and Events 160
Decoding Commands 160
The UNIT ATTENTION Condition 161
Informing the Host about Media Changes 162
Reset Behavior 163
7 Media Structure 165
A Look Inside 165
Components of Formatted Media 166
Drives without an MBR Sector 168
Byte Order 168
The Master Boot Record Sector 168
Executable Code 169
The Partition Table 169
Extended Partitions 170
The Boot Signature 172
8 FAT File Systems 175
Inside a FAT16 Volume 175
Reserved Region 176
File Allocation Table Region 179
Root Directory Region 180
File and Directory Data Region 180
Contents
viii
Inside a FAT32 Volume 181
Reserved Region 181
File Allocation Table Region 184
File and Directory Data Region 185
Selecting a File System 185
Cluster Sizes 185
A Hardware Solution 186
The File Allocation Table 188
The First Two Entries 188
Data Clusters 188
Accessing the FAT 190
Volume Information 190
File Information 191
Obtaining a Cluster’s Logical Block Address 192
Reading from the FAT 192
Writing to the FAT 194
Finding a File’s Next Cluster 195
Performing Sequential Reads 197
Finding an Empty Cluster 198
9 Directories 201
The Contents of an Entry 201
File Entries 202
Directory Entries 205
The Volume Label Entry 206
Subdirectory Entries 207
Handling Long File Names 207
LFN Entries 207
The Checksum 209
Creating a Short File Name 210
Contents
ix
Using Directories 211
Storing an Entry 211
Reading an Entry 212
Getting the Main Entry 217
Updating an Entry 219
Updating the Time and Date 220
10 File Operations 223
Cluster Operations 224
Erasing a Cluster 224
Reserving an Available Cluster 225
Allocating a File’s First Cluster 226
Allocating Additional Clusters 226
Managing Files 228
Obtaining File Information 228
Finding a File 231
Creating a Directory Entry 234
Finding an Available Entry 235
Creating a File 238
Deleting a File 239
Opening a File 243
Reading from a File 246
Tasks 246
Performing a Read Operation 247
Writing to a File 250
Tasks 250
Performing a Write Operation 251
Closing a File 257
Contents
11 Embedded Hosts 259
Inside an Embedded Host 259
OTG Devices and Conventional Hosts 260
General Host Functions 260
Mass Storage Functions 261
Handling Non-compliant Devices 263
Host Options 266
Cypress EZ-HOST 266
Host Software 267
A Mass-storage Host Module 267
Index 271

Acknowledgements
Many people helped in the development and writing of this book. My technical reviewers helped to keep me on track, pointed out errors, suggestedadditions to improve the book, and answered many questions. (With that said, any errors that remain are my fault alone.) Thanks to Paul E. Bergof MCCI and USB-IF Device Working Group Chair for encouragement and help in finding reviewers. Thanks also to John Hyde of USB Design by Example, to Pat LaVarre, to Hiromichi Oribe of Hagiwara Sys-Com Co., Ltd., to Rawin Rojvanit and Gurinder Singh of Microchip Technology, Inc., and to Alan Stern of the Rowland Institute at Harvard. For their help in obtaining products used in the writing of the book, thanks to Laurent Guinnard of Ellisys, Gus Issa of GHI Electronics, and Alan Lowne of Saelig Co. Inc.

Random Posts

No comments yet

Leave a Reply

You must be logged in to post a comment.