DMA에서 "wrap around"는 무엇을 의미합니까?

DMA에서 "wrap around"는 무엇을 의미합니까?

최근에는 PCI 드라이버 프로젝트를 진행하며 Scatter Gather DMA를 이해하려고 노력하고 있습니다.

내 프로젝트에서 PCI 장치(PC의 PCI 슬롯에 있음)는 DMA 마스터이고 PC 메모리에 DMA 쓰기를 수행하려고 합니다. 따라서 분산/수집 dma의 경우 PC 드라이버는 "불연속" 또는 "세그먼트화된" 물리적 메모리에 대한 연결 목록을 생성하고 연결 목록의 첫 번째 주소를 장치에 써야 합니다. 따라서 장치의 DMA 컨트롤러는 PC에 다음 여유 메모리 블록을 요청하지 않고 연결 목록을 통해 쓸 수 있습니다. 내가 썼나요?

위 장면에는 "surround"라는 표현이 나오는데, 무슨 뜻인지 잘 모르겠습니다.

이것은 쓰기 포인터가 메모리 블록의 끝에 도달한다는 것을 의미합니까?

또는

현재 전송할 데이터 패킷이 전송되었습니다. 다음 데이터 패킷을 시작해야 합니까?

또는

다른 건 없나요?

답변1

이는 다음 중 하나를 의미할 수 있습니다.선택하다읽고 있는 문서에 따라 분산 수집 DMA:

  • 단일 메모리 버퍼로 포장합니다.

    메모리 내 데이터의 물리적 표현은 하드웨어 보조 프로세서에 따라 다릅니다. 메모리의 고정된 위치, 메모리의 시작/끝 주소가 있는 fifo 및둘러 싸다, 데이터를 물리적 메모리에 분산시킬 수 있는 분산 수집 DMS입니다.

    비분산/수집 스트리밍의 경우 호스트 시스템 메모리로 또는 호스트 시스템 메모리에서 전송되는 데이터는 호스트 메모리의 순환 버퍼에 저장되며 지속적으로 채워지고 고갈됩니다. 따라서 이 경우의 PCI 트랜잭션은 연속적인 더블 워드 메모리 주소 세트에 걸쳐 있는 버스트 전송이며, DMA 컨트롤러(208)는 순환 버퍼의 위치에 도달할 때마다 새로운 PCI 트랜잭션을 요청합니다.둘러 싸다출발 주소로 이동합니다. 이러한 순환 버퍼의 최대 크기는 2014 더블 워드 또는 하나의 호스트 페이지로 설정됩니다.

  • 메모리 버퍼의 "링"으로 둘러싸여 있음

    링 버퍼가 자유 실행 모드에 있고 애플리케이션이 가능한 한 빨리 데이터를 처리할 수 없는 경우 DMA는둘러 싸다참조된 버퍼를 덮어씁니다. 애플리케이션은 오버플로를 방지하기 위해 버퍼의 데이터가 적시에 처리되거나 복사되도록 해야 합니다.

관련 정보