Hi,
We are manufacturers of a 1394 based flash memory card reader. It is
presented to Windows as a generic SBP2 device and as such, uses the standard
Windows 1394 SBP2 device drivers.
The reader is currently being shipped and works well with Windows XP SP 1/1a
and Windows 2000 SP4.
However, with Windows XP SP2, our embedded 1394 software stack crashes
during the initial startup phase. Windows XP continues to run, but the
device is not detected.
We have tried different 1394 PCI host controllers without seing any
difference.
Our device presents itself to Windows as a single LUN with 6 Management
Agents, one for each media type. We use a 1394 software protocol stack
running in VxWorks on a Toshiba TMR3927 microcontroller.
We have used a 1394 CATC hardware bus analyser to capture and compare the
traffic between the PC and our device under XP SP1a and XP SP2.
With XP SP1a we see a bus reset followed by logons to each of the 6
Management Agents.
With XP SP2 the above also happens but is followed by another bus reset
followed quickly by 6 reconnects to each of the Management Agents. Shortly
after this things start to go badly wrong.
The 1394 bus topology following enumeration after each reset is different.
Our suspicion is that there is not enough time for our software to recover
from the second bus reset before Windows starts communications with the new
configuration.
What is the purpose of the second bus reset?
Is it necessary?
This is only a theory; from the embedded device side of the bus, we see
multiple errors and eventually a total system crash. The errors are not
repeatable and vary from test to test. The symptoms would suggest that we
are being overloaded with unexpected events and can't keep up. Keep in mind
that we are running a relatively slow software protocol stack and need time
to respond.
Any advice/suggestions/explanations ?
Regarsd,
Sysyphus