From: JMC on 11 Feb 2010 05:11 On Feb 11, 10:32 am, Wolfgang Draxinger <Wolfgang.Draxin...(a)physik.uni- muenchen.de> wrote: > JMC wrote: > > and I could assume that it is the same in other x86 boards. The kernel > > uses the PCI driver at the lower level and the USB host driver > > communicates with it. > > > Then, why some devices, like USB hard disks, use so much CPU time in > > data transfers if USB can send data directly to RAM? > > Because USB, and I mean the bus itself, does neither provide direct access > to host resources or even device initiated transfer. In fact the USB host > controller must continously poll each device connected, querying if there is > data to be transferred. If so, then the data is transferred from a so called > "endpoint" into a buffer allocated by the operating systems USB subsystem.. > After the transfer has been finished some other program does its thing with > the data, depending on which kind of device delivered. In case of a USB > storage device, its the USB storage driver, which then again copies stuff > around. > > This is much unlike IEEE1394, aka FireWire, aka iLink which has been very > popular between 1998 and 2005 - and still can be found on higher class > motherboards. IEEE1394 allows for device initiated transfer and DMA to any > device, which has mapped (some of) its memory to the IEEE1394 controller. > Whilst being a design feature, today this is also seen as a security hole, > since it allows to freely extract and manipulate any part of the accessible > memories' contents, potentially containing secret data like passwords, > cryptographic keys and such. But it also provides some neat methods of > system debugging. > > Wolfgang Ok, I think that I got it. Thanks Wolfgang, Aragorn and Clemens again. JMC
From: Tecknode on 16 Feb 2010 16:44
JMC wrote: > Hi all, > > Maybe a newbie question for you: In x86 motherboards there is a DMA > controller in the Shouthbridge chip that allows DMA transactions > between peripherals and RAM. I have read some manuals about these > chips, like Intel's ICH7, and I can't see that it can (or can't) be > assigned a DMA channel to an USB interface. I think that all modern > chipsets can do this. Am I wrong? Where can I learn more about this? > > Let's assume that DMA supports USB. Then the USB host driver handles > the configuration of the channel and the specific device driver > configures the transactions, isn't it? > > Greetings, > > JMC Try: http://en.wikipedia.org/wiki/Direct_memory_access |