인터럽트 기반 UART IO를 사용하면 CPU 개입없이 데이터 전송이 가능합니다. 이제이 문제를 제어하는 CPU가 아닌 경우 질문은 무엇입니까? DMA 컨트롤러 또는 CPU에서 메모리 버스를 통해 제어를받는 일부 외부 마스터입니까? 적절한 답을 얻지 못했습니다 here. DMA 컨트롤러 인 경우 DMA 및 인터럽트 기반 전송을 다른 것으로 만드는 이유인터럽트 기반 UART IO 용 마스터
답변
정답 인 here을 얻지 못했습니다.
가 DMA를 만들고 다른 전송을 기반 인터럽트 후 어떤 DMA 컨트롤러 인 경우
문제는 잘못된 표현이 있기 때문에 그 질문은, IMO 어떤 좋은 답변을하지 않았다.
사실, 나는이 영역에서 지식/경험이 부족하기 때문에 "인터럽트 구동"의 설명을 이해할 수 없기 때문에 이해하지 못합니다.
"DMA"은 "인터럽트"의 대안이 아닙니다.
대신 그들은 직각 개념이고 두 개념은 모두 함께 사용됩니다..
DMA의 대안은 프로그래밍 된 I/O, 일명 PIO입니다.
인터럽트의 대안은 폴링입니다.
DMA 전송은 거의 항상 DMA 컨트롤러에서 completion interrupt
을 사용하여 버퍼 전송이 완료되었음을 CPU에 알립니다.
PIO는 종종 장치로부터의 인터럽트를 사용하여 각 바이트/워드 데이터 전송을 시작합니다. 이를 통해 PIO의 CPU 집약적 특성을 완화 할 수 있습니다. 폴링 된 PIO 전송은 그렇지 않으면 CPU 리소스를 완전히 소모합니다.
그러나 "인터럽트가있는 PIO"는 간단히 "인터럽트"로 참조하는 것이 부정확하고 오해의 소지가 있습니다.
인터럽트 기반 UART IO를 사용하면 CPU 개입없이 데이터 전송이 가능합니다. 이제이 문제를 제어하는 CPU가 아닌 경우 질문은 무엇입니까?
인터럽트의 원인을 지정하지 않았습니다. 따라서 귀하의 질문은 모호합니다.
"인터럽트 기반"은 "UART로부터 인터럽트가있는 PIO"를 가리키는 것으로 가정하면 문제가 전혀 발생하지 않습니다. 이는 전송을 제어하는 CPU이기 때문입니다.
"인터럽트 기반"이 DMA 컨트롤러에서 인터럽트가있는 DMA 전송을 가리키는 것으로 가정하면 이전에 사용자 또는 연결된 질문에서 사용되지 않은 컨텍스트에서이 용어를 사용하고있는 것입니다.
UART의 경우 :
DMA 전송에서 각 바이트는 UART에서 읽혀지고 (UART가 해당 데이터를 사용할 수 있다고 신호를 보내면) DMA 컨트롤러가 메모리에 씁니다. 이 작업을 수행하려면 DMA 컨트롤러를 설정해야합니다. DMA 컨트롤러가이 전송을 감독하는 동안 CPU는 다른 (예를 들어 관련이없는) 명령어 (예 : 다른 프로세스)를 실행합니다.
PIO 전송에서 CPU는 전체 시간을 제어하며 장치에서 읽고 메모리에 쓰는 명령을 실행합니다.
CPU에서 메모리 버스를 제어하는 DMA 컨트롤러 또는 일부 외부 마스터입니까?
메모리 버스는 메모리 컨트롤러에 의해 유지 관리됩니다. 다른 장치는 메모리 버스를 제어하지 못합니다.
실제로 메모리에서 읽거나 메모리에 쓰려면 DMA 전송 중에 메모리에 대한 액세스를 요청하는 DMA 컨트롤러입니다.
또한 버스 마스터 또는 보조 프로세서/GPU와 같이 메모리 액세스를 요청할 수있는 권한있는 장치가 있음에 유의하십시오.
그러나 일반적으로 CPU는 메모리 액세스 우선 순위가 가장 높게 지정됩니다.
- 1. msp430 uart 및 타이머 인터럽트
- 2. 문자 수신시 트리거 할 UART 인터럽트 설정
- 3. 인터럽트 구동 UART 전송을 조절하는 방법 PIC24H?
- 4. Uart 수신 버퍼 인터럽트 대 폴링 확인
- 5. FPGA 기반 PCI IO 카드 용 dma
- 6. 대하여 인터럽트 기반 통신
- 7. 인터럽트 기반 키보드 드라이버?
- 8. UART 용 시계의 역할은 무엇입니까
- 9. UART 용 데이터 모드 활성화
- 10. AVR32 UC3C USART 인터럽트 기반
- 11. 비 IO 이벤트, 신호 없음으로 epoll_wait 인터럽트
- 12. 높은 보율에서 순환 버퍼가있는 PIC 인터럽트 구동 UART
- 13. Linux 사용자 공간에서 16550A UART 하드웨어 FIFO 인터럽트 레벨을 설정하십시오.
- 14. 직접 액세스 IO (UART 없음)가있는 FT232R USB IC
- 15. UART 데이터가 손실됩니다
- 16. 뷰어 IO 용 도구?
- 17. IO-APIC-fasteoi와 IO-APIC-edge의 차이점
- 18. Linux 용 하드웨어 인터럽트 API
- 19. Matlab 용 타이머 및 인터럽트
- 20. 차이점은 무엇입니까 인터럽트 기반 및 폴 기반 SPI 트랜잭션
- 21. 웹 서버 인터럽트 기반 파일 전송
- 22. STM32F411RE 직렬 포트 인터럽트 모드에서
- 23. 의 UART
- 24. 는 UART
- 25. Android 용 IO 차단 없음
- 26. 파이썬 용 io 모듈의 문제점
- 27. 파일 IO 용 PrintWriter 사용
- 28. GNUPlot 용 MPI IO 포맷
- 29. 하나의 스레드 기반 작업에서 여러 IO 기반 작업의 데이터 수집
- 30. 비글 본 시리얼 포트 인터럽트
* "적절한 답변을 얻지 못했습니다 (http://stackoverflow.com/questions/25318145/dma-vs-interrupt-driven-io/38165400#38165400)"* - FWIW 그 질문에 [답변] (http://stackoverflow.com/questions/25318145/dma-vs-interrupt-driven-io/38165400#38165400)을 추가했습니다. – sawdust