Allan
Allan

Reputation: 3251

how DMA works -- in ARM -- using linux

Can some Linux DMA expert can help me ... to understand this concept.

a> I am new to DMA programming. How does DMA actually works for an ARM controller?

b> If we are using mmap to send data to driver. How can we syncronize this with DMA ?

c> To use DMA what actually we have to do in our software ?

d> What is this dma input output channel ?

Is there some example code .. being new to DMA it will be helpful for me to understand the concept.

Upvotes: 1

Views: 3459

Answers (1)

sgupta
sgupta

Reputation: 1272

a> ARM is not strict about DMA, most manufacturers have various implementations and have their own driver in the kernel for their respective devices. Some of them don't even call it DMA (DMOV, DataMover is actually DMA unit on Qcom's SoCs).

b> I am not sure if userspace has access to DMA, You would need help from kernel to do that. Besides most DMA occurs ONLY in a special area reserved for DMA which is marked as uncached in the MMU pagetables so as to prevent synchronisation issues.

c> You can't access DMA controller, hardware is abstracted by kernel and most manufacturers use different APIs, Although there is a notable attempt to move such non-standard implementations to the kernel's standard DMA driver model.

d> I don't understand your question.

Upvotes: 3

Related Questions