지난번에 한번 질문을 드렸는데 답변이 없어서 다시 한번 질문드립니다.
현재 EZ-X5에 포팅된 리눅스 커널의 DMA를 사용하려고 하는데 관련 소스들 중 어떤 것을 참고를 해야하는지 감이 오지 않아 질문드립니다.
현재 제가 확인하기에는 dma.c라는 파일이 커널의 루트 디렉토리 아래의 $(KENEL_DIR)/ kernel/과 $(KENEL_DIR)/arch/arm/kernel/, $(KENEL_DIR)arch/arm/mach-pxa/의 3개의 디렉토리 아래에 있었습니다.
그런데 이중 $(KENEL_DIR)/ kernel/ 아래에 있는 dma.c는 커널 컴파일시 포함되지 않아서인지 dma.o 파일이 없었습니다. 그래서 현재 컴파일된 커널에서 dma가 사용이 가능한지 알고 싶습니다. 사용이 가능하다면 $(KENEL_DIR)/arch/arm/kernel/와 $(KENEL_DIR)arch/arm/mach-pxa/ 아래의 dma.c 중 어느 파일에 있는 함수를 이용하여 dma를 등록하고 해제하면 되는 것인지 궁금합니다. 그리고 사용이 가능하지 않다면 드라이버를 새로 프로그래밍해야 하는 것인지 포팅된 커널에서 이용할 수 있다면 어떤 설정이 필요한지 궁금합니다.
또한 DMA와 관련하여 640x480x16bit 크기의 프레임 버퍼를 할당하려고 하는데 이와 관련하여 고려해야 될 것이 있다면 조언 부탁드립니다.
마지막으로 DMA 컨트롤러가 버스 제어권을 가지면 지정된 크기를 데이터 전송을 완료할 때까지는 버스 제어권을 계속가지고 있는 것인지, 아니면 CPU의 필요에 의해 데이터를 전송하는 중간에 버스의 제어권이 CPU로 넘어갔다가 다시 DMA 컨트롤러로 제어권이 반환되는 것인지 궁금합니다.
질문의 내용이 전달이 되도록 자세한지 모르겠지만 추가적인 설명이 필요하시다면 다시 글을 올리도록 하겠습니다.
아무쪼록 자세한 답변 부탁드립니다.