Eu tenho um periférico conectado ao meu PC Linux via PCIe que reproduz uma forma de onda (por exemplo, pode ser um fluxo de música).
Eu gostaria de criar um gerador de forma de onda programável que armazene blocos de formas de onda pré-gerados em RAM e use DMA para reprodução contínua rápida através do meu periférico. Eu gostaria de implementar um driver Linux para fazer isso com os seguintes requisitos:
- Eu pré-gero um conjunto de blocos de formas de onda N de comprimento arbitrário e os salvo na RAM.
- Eu gostaria de reproduzir esses blocos de forma de onda em uma ordem arbitrária onde a ordem de reprodução é determinada em tempo de execução.
- Não deve haver intervalos na reprodução entre blocos. Em alguns casos, os blocos podem ser tão curtos quanto 1 milissegundo.
- Eu gostaria de fazer alterações nos blocos na RAM durante a execução.
- Eu posso implementar um buffer no hardware periférico para facilitar a transferência de dados quando o sistema está ocupado. Mas eu prefiro não ter que fazer isso.
Alguém tem um exemplo de um driver (ou esquema) que implementa tal protocolo?