2012-02-11 2 views
1

DMA을 구현해야하는 Linux에 장치 드라이버를 쓰고 있습니다.Linux에서 DMA에 액세스하는 방법

pci_alloc_consistent()을 호출하여 DMA 개의 버퍼를 할당 할 수 있습니다. 그런데 어떻게 사용자 수준에서 버퍼에 명령을 쓸 수 있습니까?

작업에는 특정 레지스터에 값을 쓰는 작업이 포함되어 있는데이 작업은 DMA 명령을 사용하여 어떻게 구현됩니까?

+0

사용자 수준을 말하면 사용자 공간에서 무엇을 의미합니까? 일반적으로 사용자 공간을 사용할 수있는 방법이 있지만 DMA 하드웨어에 대한 가시성은 없습니다. – stsquad

답변

1

저는 여러분이 GNU C 라이브러리를 통해 액세스 할 수있는 I/O 작업을 통해 DMA로 작성할 수 있다고 생각합니다. ioperm이나 iopl과 같은 시스템 호출을 사용하고 DMA 레지스터에 액세스하려면 루트로 실행해야합니다. 최소한 DMA 액세스에 사용될 수있는 IO 공간에 대한 액세스 권한을 얻는 방법. 비록 제가이 질문에 완전히 대답하지는 못하지만, 이것은 좋은 방향으로 여러분을 안내해줍니다.