O que significa "envolver" em DMA?

0

Trabalhando recentemente em um projeto de driver PCI e tentando entender o DMA do Scatter Gather.

No meu projeto, o dispositivo PCI (no slot PCI do PC) é o mestre DMA e eu quero fazer uma gravação DMA na memória do PC. Para um dma scatter / gather, o driver do PC deve criar uma lista vinculada para a memória física "não contígua" ou também chamada de "segmentada" e gravar o primeiro endereço da lista vinculada no dispositivo. assim, o controlador de dma do dispositivo pode realizar a operação de gravação através da lista vinculada sem solicitar ao PC o próximo bloco de memória livre. eu escrevo?

No senário acima, há uma expressão "envolvente" envolvida e não posso ter certeza do que isso significa.

Isso significa: o ponteiro de escrita chegou ao fim do bloco de memória?

ou

o pacote de dados atual a ser enviado é feito enviando e deve iniciar o próximo?

ou

alguma outra coisa?

    
por Cong Li 21.11.2015 / 19:50

1 resposta

1

Isso pode significar que ambos são uma alternativa para coletar dados DMA, dependendo da documentação que você está lendo:

  • envolvida em um único buffer de memória, por exemplo,

    The physical representation of the data in memory depends on the HW co-processor. It can vary from one fixed place in memory, a fifo in memory with a start/end address and a wrap around, to a scatter-gather DMS that allows the data to be scattered in physical memory.

    For non-scatter/gather streams, data being transferred to/from the host system memory is stored in the host memory in a circular buffer which is constantly filled and drained. Hence, PCI transactions in this situation are burst transfers which range over a contiguous set of doubleword memory addresses, the DMA controller 208 requesting a new PCI transaction each time the position in the circular buffer wraps around to the starting address. The maximum size of these circular buffers is set at 2014 doublewords or one host page.

  • wraparound em um "anel" de buffers de memória

    If the ring buffer is in free-running mode and the application cannot process data as fast as it is acquired, DMA will wrap around and overwrite the referenced buffer. The application must ensure that the data in the buffer is processed or copied out in time to prevent overrun.

por 14.10.2016 / 01:11