I'm working on a device that will function as a digital
camera and harddisk unit at the same time on firewire
using the SBP-2 protocol under Win2000/XP. As a single
camera or single harddisk logical unit it works fine. As
two units, XP SP1 finds both and installs them in the
device manager. But it takes long time to install and
using them both creates problems.
This happens because of the way Windows work as stated
in "SBP-2 Support and Windows" document (dec. 4, 2001)
under "Session Management":
2. An ORB_POINTER write only occurs just after login,
because the operating system uses the DOORBELL register
all other times.
The targets Command ORB Fetch Agent only has one ORB
Pointer register per agent, so it is overwritten by the
last login/logout to LUN 1 (camera), and the next
DOORBELL to LUN 0 (harddisk) will use the wrong ORB
Pointer from LUN 1. The ORB_POINTER register in my device
is read-only and controlled by hardware.
Solution:
Host write to the ORB_POINTER register in the target,
whenever it changes focus from one LUN to another. Is
this possible (the agent has to be in reset or suspended
state), or is there a workaround?
Thanks,
Sune Jorgensen, MS EE
Firmware developer
Imacon AS
sjorgensen@imacon.dk
http://www.imacon.dk