Arquitetura de Hardware e Subsistema de Áudio
O System-on-Chip (SoC) V853 possui um subsistema de áudio versátil que atende a diversas demandas de processamento de sinal. Ele integra um AudioCodec (interface de áudio analógico interna), duas interfaces digitais I2S/PCM e uma interface para microfones digitais externos (DMIC). As placas de desenvolvimento baseadas nesta arquitetura normalmente dispõem de microfones embutidos e pinos de saída para alto-falantes. Para a reprodução sonora via saída analógicca, basta conectar um módulo de alto-falante ao conector disponível na placa.
Habilitando o Framework ALSA no Tina Linux
O ecossistema Tina Linux adota a API padrão ALSA (Advanced Linux Sound Architecture) para o gerenciamento de áudio. Para interagir com os dispositivos, é essencial incluir o pacote alsa-utils na imagem do sistema. Acesse o diretório raiz do SDK e invoque o menu de configuração:
developer@workstation:~/tina-sdk$ make menuconfig
Navegue até a seção de som e ative os utilitários:
> Sound
<*> alsa-utils............ ALSA (Advanced Linux Sound Architecture) utilities
Após salvar as alterações, recompile o firmware e atualize a placa para que as ferramentas amixer, aplay e arecord fiquem disponíveis no ambiente.
Controle de Mixagem e Rotas de Áudio (amixer)
O amixer é o utilitário de linha de comando responsável por ajustar os controles do driver ALSA, permitindo ativar ou desativar canais e modificar níveis de volume. Para inspecionar os dispositivos de áudio registrados, execute:
amixer controls
Para configurar os microfones internos (MIC1 e MIC2) e preparar o sistema para gravação, defina os seletores de entrada, ative os canais e ajuste o ganho:
# Selecionar entrada diferencial para os microfones
amixer -D hw:audiocodec cset name='MIC1 Input Select' 0
amixer -D hw:audiocodec cset name='MIC2 Input Select' 0
# Ativar os switches dos microfones
amixer -D hw:audiocodec cset name='MIC1 Switch' 1
amixer -D hw:audiocodec cset name='MIC2 Switch' 1
# Ajustar o ganho de captação (valores entre 0 e 31)
amixer -D hw:audiocodec cset name='MIC1 gain volume' 28
amixer -D hw:audiocodec cset name='MIC2 gain volume' 28
Para habilitar a saída de áudio analógica (LINEOUT) e definir o volume do alto-falante, utilize os seguintes parâmetros:
# Configurar a rota de saída e ativar o canal
amixer -D hw:audiocodec cset name='LINEOUT Output Select' 1
amixer -D hw:audiocodec cset name='LINEOUT Switch' 1
# Definir o volume de reprodução
amixer -D hw:audiocodec cset name='LINEOUT volume' 24
Captação de Sinal com arecord
A ferramenta arecord é empregada para digitalizar e salvar o fluxo de áudio dos microfones. É possível especificar a taxa de amostragem, a profundidade de bits e o formato do arquivo. Para verificar os dispositivos de captura disponíveis:
arecord -l
Com as rotas de mixagem previamente configuradas via amixer, inicie a gravação em estéreo com qualidade de CD (44.1 kHz):
arecord -D hw:audiocodec -f S16_LE -t wav -c 2 -r 44100 -d 5 environment_audio.wav
Este comando capturará cinco segundos de áudio em formato WAV, codificado em 16-bit Little Endian, e salvará o resultado no arquivo environment_audio.wav.
Reprodução Sonora com aplay
O utilitário aplay realiza a operação inversa, enviando arquivos de áudio para o DAC do codec. Liste os dispositivos de reprodução com:
aplay -l
Certifique-se de que a rota LINEOUT esteja ativa e reproduza o arquivo recém-gravado:
aplay -D hw:audiocodec environment_audio.wav
Validação Completa: Gravação e Reprodução a Partir de Mídia Externa
Para um teste de integração, é possível automatizar a gravação e, em seguida, reproduzir um arquivo armazenado em um cartão microSD. Primeiro, execute o pipeline de captura:
amixer -D hw:audiocodec cset name='MIC1 Switch' 1 && \
amixer -D hw:audiocodec cset name='MIC2 Switch' 1 && \
amixer -D hw:audiocodec cset name='MIC1 gain volume' 26 && \
amixer -D hw:audiocodec cset name='MIC2 gain volume' 26 && \
arecord -D hw:audiocodec -f S16_LE -t wav -c 2 -r 48000 -d 4 validation_clip.wav
O sistema processará os comandos sequencialmente e gerará o arquivo validation_clip.wav no diretório atual.
Para reproduzir uma faixa de áudio externa, monte a partição do cartão de memória:
root@TinaLinux:/# mount /dev/mmcblk1p1 /mnt/sdcard/
Verifique o conteúdo e execute a reprodução com o volume ajustado:
root@TinaLinux:/# ls /mnt/sdcard/media/
custom_track.wav
root@TinaLinux:/# amixer -D hw:audiocodec cset name='LINEOUT Switch' 1 && \
amixer -D hw:audiocodec cset name='LINEOUT volume' 28 && \
aplay -D hw:audiocodec /mnt/sdcard/media/custom_track.wav
Substituição do Som de Inicialização do Sistema
O Tina Linux pode ser configurado para reproduzir um áudio de boas-vindas durante o processo de boot. O script de inicialização responsável por essa tarefa geralmenet está localizado em /etc/init.d/S03audio. Os arquivos de mídia padrão residem no diretório /home/res/audio/.
root@TinaLinux:/# ls /home/res/audio/
shutdown.wav startup.wav
Para personalizar a experiência de boot, substitua o arquivo startup.wav por uma faixa de sua preferência. Copie o novo arquivo da mídia externa para o diretório de recursos do sistema e sincronize o sistema de arquivos:
root@TinaLinux:/# cp /mnt/sdcard/media/custom_track.wav /home/res/audio/startup.wav
root@TinaLinux:/# sync
Após reiniciar o dispositivo com o comando reboot, o novo áudio será reproduzido pelo alto-falante durante a sequência de inicialização.