| Author |
Message |
Guest
|
Posted:
Mon Dec 20, 2004 7:55 am Post subject:
Design of a flash memory drive |
|
|
Hi all:
I am an Electrical Engineering student working on the design of a USB
flash drive as part of my Digital Electronics design class. Among the
specifications for the project is that the drive has to work with
Windows XP default drivers (needs to be "Plug and Play"). For doing
this I will need to understand the inner workings of windows default
driver. I am looking at the Microsoft website but still haven't found
anything...
I will appreciate if anyone provides some useful information!
Best Regards,
-Omar |
|
| Back to top |
|
 |
Tom
Guest
|
Posted:
Mon Dec 20, 2004 7:33 pm Post subject:
Re: Design of a flash memory drive |
|
|
<Bungar17@hotmail.com> wrote in message news:1103523560.184636.57780@c13g2000cwb.googlegroups.com...
| Quote: | Hi all:
I am an Electrical Engineering student working on the design of a USB
flash drive as part of my Digital Electronics design class. Among the
specifications for the project is that the drive has to work with
Windows XP default drivers (needs to be "Plug and Play"). For doing
this I will need to understand the inner workings of windows default
driver. I am looking at the Microsoft website but still haven't found
anything...
I will appreciate if anyone provides some useful information!
Best Regards,
-Omar
|
Your flash device needs to implement the Mass Storage class specification
http://www.usb.org/developers/devclass_docs/usbmassbulk_10.pdf
The default driver is called USBSTOR.SYS
http://www.microsoft.com/whdc/device/storage/usbfaq.mspx
According to this
http://www.centrillium-it.com/Projects/MassStorage.htm
...it looks like the Bulk Only variant, bInterfaceSubClass = 06h (SCSI Transparent command
set) is the way to go. You should probably get hold of a USB flash disk, and some software
which can display the USB protocol to see which SCSI commands are used when the device
is read/written or formatted.
You can get chips that will do this, and also do the logical->physical translation you need
for flash memory -
http://www.metatech.com.hk/datasheet/sonix/pdf/SN11085spec_for%20public.pdf
I've crossposted to comp.os.ms-windows.programmer.nt.kernel-mode where you've got more
chance of reaching someone who's actually done this.
Tom. |
|
| Back to top |
|
 |
Guest
|
Posted:
Tue Dec 21, 2004 10:16 pm Post subject:
Re: Design of a flash memory drive |
|
|
Wow! Thanks Tom... You gave me a great jumpt start!
I will keep asking more questions as my readings opens my curiosity...
Cheers,
-Omar |
|
| Back to top |
|
 |
alexi
Guest
|
Posted:
Thu Dec 23, 2004 1:16 pm Post subject:
Re: Design of a flash memory drive |
|
|
"Tom" <tom.thornhill-REMOVETHIS@freenet.de> wrote in message
news:41c6e294$0$1364$9b622d9e@news.freenet.de...
| Quote: |
Bungar17@hotmail.com> wrote in message
news:1103523560.184636.57780@c13g2000cwb.googlegroups.com...
Hi all:
I am an Electrical Engineering student working on the design of a USB
flash drive as part of my Digital Electronics design class. Among the
specifications for the project is that the drive has to work with
Windows XP default drivers (needs to be "Plug and Play"). For doing
this I will need to understand the inner workings of windows default
driver. I am looking at the Microsoft website but still haven't found
anything...
I will appreciate if anyone provides some useful information!
Best Regards,
-Omar
Your flash device needs to implement the Mass Storage class specification
http://www.usb.org/developers/devclass_docs/usbmassbulk_10.pdf
The default driver is called USBSTOR.SYS
http://www.microsoft.com/whdc/device/storage/usbfaq.mspx
According to this
http://www.centrillium-it.com/Projects/MassStorage.htm
..it looks like the Bulk Only variant, bInterfaceSubClass = 06h (SCSI
Transparent command
set) is the way to go. You should probably get hold of a USB flash disk,
and some software
which can display the USB protocol to see which SCSI commands are used
when the device
is read/written or formatted.
You can get chips that will do this, and also do the logical->physical
translation you need
for flash memory -
http://www.metatech.com.hk/datasheet/sonix/pdf/SN11085spec_for%20public.pdf
I've crossposted to comp.os.ms-windows.programmer.nt.kernel-mode where
you've got more
chance of reaching someone who's actually done this.
|
I am surprised that a project of this scale is assigned as a class task.
Typically this project would take one year of a team of 4-5 seasoned
designers. Assuming they can't design any PHY, so they need to start with
a given PHY chip with UTMI. UTMI is just a byte-streamed interface, so you
need
to implement a USB command decoder/encoder with CRC, all basic control
endpoints,
descriptors, provide enumeration, suspend-resume-reset, etc. Then you need
to
implement the application interface, with some SRAM buffering to handle
block
operations of flash, etc. To make something to simulate, you would need a
USB
test environment, another man-year. I don't think that EE students are up to
this level, sorry.
As a practical option, they need to get an IP, say
http://www.synopsys.com/products/designware/docs/ds/c/dwcore_usb2_device.htm
l
but it is not free. Still, there will be a lot of work.
Alternatively, one may try one of OpenCore projects,
http://opencores.nnytech.net/projects.cgi/web/usb1_funct/
http://opencores.nnytech.net/projects.cgi/web/usb/
to get the general idea.
- aap |
|
| Back to top |
|
 |
Marc Reinig
Guest
|
Posted:
Thu Dec 23, 2004 9:48 pm Post subject:
Re: Design of a flash memory drive |
|
|
First, you don't need to know anything about the internal workings of the
Windows default drivers. You only need to follow the spec. mentioned below.
Second, you don't need a UTMI interface, use a standard full speed USB 1.1
device, available from multiple manufacturers.
If you do use a UTMI interface, CRC is provided by the UTMI chip.
This is a reasonable project for 1 to 2 University students and has been
done many times. In fact, it is one of the more popular choices involving
USB.
Visit the USB-IF developers forum for help, http://www.usb.org/phpbb/ .
Marc Reinig
System Solutions
"alexi" <apredtechenski.no.spam@austin.rr.com> wrote in message
news:w9vyd.3351$wD4.2470@fe1.texas.rr.com...
| Quote: | I am an Electrical Engineering student working on the design of a USB
flash drive as part of my Digital Electronics design class. Among the
specifications for the project is that the drive has to work with
Windows XP default drivers (needs to be "Plug and Play"). For doing
this I will need to understand the inner workings of windows default
driver. I am looking at the Microsoft website but still haven't found
anything...
Your flash device needs to implement the Mass Storage class specification
http://www.usb.org/developers/devclass_docs/usbmassbulk_10.pdf
I am surprised that a project of this scale is assigned as a class task.
Typically this project would take one year of a team of 4-5 seasoned
designers. Assuming they can't design any PHY, so they need to start with
a given PHY chip with UTMI. UTMI is just a byte-streamed interface, so you
need
to implement a USB command decoder/encoder with CRC, all basic control
endpoints,
descriptors, provide enumeration, suspend-resume-reset, etc. Then you need
to
implement the application interface, with some SRAM buffering to handle
block
operations of flash, etc. To make something to simulate, you would need a
USB
test environment, another man-year. I don't think that EE students are up
to
this level, sorry. |
|
|
| Back to top |
|
 |
alexi
Guest
|
Posted:
Fri Dec 24, 2004 12:07 am Post subject:
Re: Design of a flash memory drive |
|
|
"Marc Reinig" <nospam@nospam.com> wrote in message
news:HFCyd.2127$yV1.318@newssvr14.news.prodigy.com...
| Quote: | First, you don't need to know anything about the internal workings of the
Windows default drivers. You only need to follow the spec. mentioned
below. |
You need to read with more attention. I never mentioned any internals
of Microsift drivers in my post.
| Quote: |
Second, you don't need a UTMI interface, use a standard full speed USB 1.1
device, available from multiple manufacturers.
|
If you go with 1.1 FS small chip, you will need to implement several
additional blocks like NRZI encoder and decoder with bit-stuffing logic,
DLL and data recovery circuitry, multi-phase clock generator, etc.
| Quote: |
If you do use a UTMI interface, CRC is provided by the UTMI chip.
|
You are mistaken. UTMI does not provide CRC, your have to have your own
CRC blocks, CRC5 for short packets, and CRC16 for others.
http://developer.intel.com/technology/usb/download/2_0_Xcvr_Macrocell_1_05.p
df
| Quote: |
This is a reasonable project for 1 to 2 University students and has been
done many times. In fact, it is one of the more popular choices involving
USB.
|
I'd like to see links to successful projects.
Thanks. I don't think I need one.
| Quote: |
Marc Reinig
System Solutions
"alexi" <apredtechenski.no.spam@austin.rr.com> wrote in message
news:w9vyd.3351$wD4.2470@fe1.texas.rr.com...
I am an Electrical Engineering student working on the design of a USB
flash drive as part of my Digital Electronics design class. Among the
specifications for the project is that the drive has to work with
Windows XP default drivers (needs to be "Plug and Play"). For doing
this I will need to understand the inner workings of windows default
driver. I am looking at the Microsoft website but still haven't found
anything...
Your flash device needs to implement the Mass Storage class
specification
http://www.usb.org/developers/devclass_docs/usbmassbulk_10.pdf
I am surprised that a project of this scale is assigned as a class task.
Typically this project would take one year of a team of 4-5 seasoned
designers. Assuming they can't design any PHY, so they need to start
with
a given PHY chip with UTMI. UTMI is just a byte-streamed interface, so
you
need to implement a USB command decoder/encoder with CRC, all basic
control
endpoints, descriptors, provide enumeration, suspend-resume-reset, etc.
Then you need
to implement the application interface, with some SRAM buffering to
handle
block operations of flash, etc. To make something to simulate, you would
need a
USB test environment, another man-year. I don't think that EE students
are up
to this level, sorry.
|
|
|
| Back to top |
|
 |
|
|
|
|