Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:3
Поисковых ботовПоисковых ботов:2
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9260-SIMXXX
работа со звуком
Dmil
Добавлено 19.08.2010 18:31 Редактировалось 19.08.2010 19:35
0
Сообщение: 1
Dmil
0

Пункты: 27
Регистрация: 25.10.2009
понадобилось подключить звук к плате.
никодга до этого со звуком в линуксе не работал. 0 полный.
сделал следующее:
в ядре
Включил Device Drivers -> Misc devices -> Device driver for Atmel SSC periferal
Включил Device Drivers -> Sound card support -> Advanced Linux Sound Architecture
Включил Device Drivers -> Sound card support -> Advanced Linux Sound Architecture -> OSS PCM (digital audio) API чтобы при сборке модуля звуковой карты были доступны функции из заголовка pcm.h

подключил к SSC простейший DAC cs4334. на MCK дал ему 12.288 MHz (отдельный генератор)

правкой драйвера at73с213 сделал свой модуль.

сделал узлы устройств:
/dev/snd # ls -l
crw-r--r-- 1 root root 116, 0 Aug 19 16:01 controlC0
crw-r--r-- 1 root root 116, 8 Aug 19 16:01 midiC0D0
crw-r--r-- 1 root root 116, 24 Aug 19 16:02 pcmC0D0c
crw-r--r-- 1 root root 116, 16 Aug 19 16:02 pcmC0D0p
crw-r--r-- 1 root root 116, 17 Aug 19 16:02 pcmC0D1p
crw-r--r-- 1 root root 116, 1 Aug 19 16:01 seq
crw-r--r-- 1 root root 116, 33 Aug 19 16:01 timer

загружаю свой модуль:
# insmod cs4334_mod.ko
cs4334: supported bitrate is 47348 (66 divider)

попробовал что-то выдать на DAC:
# cat pcm_48000-16-stereo.wav > /dev/snd/pcmC0D0p
cat: write error: File descriptor in bad state

# aplay pcm_48000-16-stereo.wav
Playing WAVE 'pcm_48000-16-stereo.wav' : Signed 16 bit Little Endian, Rate
48000 Hz, Stereo
aplay: set_params:1053: Unable to install hw params:
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: 16
FRAME_BITS: 32
CHANNELS: 2
RATE: 48000
PERIOD_TIME: (86487 86488)
PERIOD_SIZE: (4151 4152)
PERIOD_BYTES: (16604 16608)
PERIODS: (3 5)
BUFFER_TIME: (345937 345938)
BUFFER_SIZE: 16605
BUFFER_BYTES: 66420
TICK_TIME: 0

проверил осцилографом:
MCK есть,
с SSC идет LRCK около 48 кГц
на данных тоже что-то прыгает.

не подскажете, куда копать?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 19.08.2010 19:14 Сообщение: 2
sasamy
4.71

Пункты: 83556
Регистрация: 14.08.2009
Когда-то давно подключал неуправляемый кодек wm8725 по такому же пути - из драйвера a73с213 убирал все лишнее, но частоту clk брал с платы - так же как у a73с213. Отлично пел пока я его не спалил при перепайке :)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 19.08.2010 19:17 Сообщение: 3
sasamy
4.71

Пункты: 83556
Регистрация: 14.08.2009
Скорей всего дело в том что частоты несинхронизированы, делайте по подобию a73с213, для некоторых кодеков требуется чтобы даже фронты клоков были синхронизированы неговоря о том что у вас частоты вообще не совпадают - кодек скорей всего битрейт не может сдетектировать.
Спуститься к концу Подняться к началу
Персональная информация
Dmil
Добавлено 19.08.2010 19:32 Редактировалось 19.08.2010 19:41 Сообщение: 4
Dmil
0

Пункты: 27
Регистрация: 25.10.2009
cs4334 это не кодек. это просто DAC. вообще без управления.
я бы понял, если бы он хрюкал, а не играл.
но в данном случае похоже, что что-то не так с устройством, как его видит система.
меня смущает, что aplay пишет, что не может параметры установить.
можно как-то звук по простому попробовать проиграть?

а можно пропросить посмотреть код вашего драйвера?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 19.08.2010 20:03 Сообщение: 5
sasamy
4.71

Пункты: 83556
Регистрация: 14.08.2009
Цитата

cs4334 это не кодек. это просто DAC. вообще без управления.


Я это и имел ввиду, терминология страдает :) wm8725 - то же самое.

Цитата

а можно пропросить посмотреть код вашего драйвера?


На старом форуме я прямо все шаги расписывал - что и как сделать, нужно тему откопать, но если что я поищу на компе сами драйверы и что правил - просто на форуме все подробно было описано, я ко всему прочему менял частоту plla чтобы под 48 кГц ровно подходило.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 19.08.2010 20:09 Сообщение: 6
sasamy
4.71

Пункты: 83556
Регистрация: 14.08.2009
Вот тема на старом форуме
http://www.starterkit.ru/new/index.php?name=Forums&op=showtopic&id=187&pagenum=1#15
вот тут я частоту перекинул с clk0 на tc0, но суть та же
http://www.starterkit.ru/html/index.php?name=forum&op=view&id=4109&word=wm8725
Спуститься к концу Подняться к началу
Персональная информация
Dmil
Добавлено 19.08.2010 20:29 Редактировалось 19.08.2010 20:37 Сообщение: 7
Dmil
0

Пункты: 27
Регистрация: 25.10.2009
все глаза проглядел.
ну не вижу разницы в драйвере.
разница только в том, что у вас он драйвер платформы, а у меня модуль.
почему aplay и madplay ругаются?
вы чем звук играете?
можно как-то другими способами проверить правильно ли откликается драйвер на обращения к нему?
может, у меня в dev/snd не хватает какого-то устройства? или с их номерами какая-то проблема?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 19.08.2010 20:36 Сообщение: 8
sasamy
4.71

Пункты: 83556
Регистрация: 14.08.2009
Я через madplay играл раньше - он есть в buildroot - воспроизводит mp3 используяя libmad, заточена под мелкоконтроллеры без fpu.
Спуститься к концу Подняться к началу
Персональная информация
Dmil
Добавлено 23.08.2010 20:10 Сообщение: 9
Dmil
0

Пункты: 27
Регистрация: 25.10.2009
кто-нибудь разбирался как звук работает на линуксе вообще?
для /dev/snd/pcmC0D0p имею:
# cat /app/pcm_48000-16-stereo.wav > /dev/snd/pcmC0D0p
cat: write error: File descriptor in bad state

при этом выполняются вызовы
open, hw_free, close
почему не выполняются другие - непонятно.

сделал /dev/dsp.
если теперь отправляю файл туда, выполняется полная последовательность:
open, hw_params, prepare, trigger, pointer..., interrupt, pointer..., trigger, interrupt, hw_free, close

aplay и madplay ничего сыграть не могут, хотя карту видят.

ALSA вообще работает???
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.08.2010 21:58 Редактировалось 23.08.2010 22:00 Сообщение: 10
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
давайте интеграл брать по частям :)
для предметного разговора нужны будут некоторые сведения о вашей конфигурации
(забегая вперед) я бы попробовал то, что Саша (sasamy) предложил - тактировать кодек от АРМа. вероятность 90-95%
(пардон, отвлекся) у меня кит на 9260 с самоподпаянным кодеком tlv320 - все вполне работает.
ядро
Код
Linux version 2.6.32.8 (root@armmaker) (gcc version 4.2.0 20070413

рутфс на Debian 5.0
вот вывод устройств относящихся к звуку:
Код
armets:~# ls -l /dev/ds*
crw-rw---- 1 root audio 14, 3 Aug 23 09:32 /dev/dsp
armets:~# ls -l /dev/snd/*
crw-rw---- 1 root audio 116, 6 Aug 23 09:32 /dev/snd/controlC0
crw-rw---- 1 root audio 116, 5 Aug 23 09:32 /dev/snd/pcmC0D0c
crw-rw---- 1 root audio 116, 4 Aug 23 09:32 /dev/snd/pcmC0D0p
crw-rw---- 1 root audio 116, 3 Aug 23 09:32 /dev/snd/seq
crw-rw---- 1 root audio 116, 2 Aug 23 09:32 /dev/snd/timer

ничего руками не прописывал - все "выдумывала" система
при попытке аналогичной вашей забросить файл на устройство pcmC0D0p (или с) следует такая же ругань
при засылке *.wav на /dev/dsp мерзко хрипит
madplay, mplayer отлично играют музыку, громкость ими регулируется. так же она регулируется утилитой alsa-mixer
т.о. можно сделать вывод, что у вас два три варианта проблемы
- аппаратная - частота не та, частота не вовремя, частоты нет
- проблема драйвера - (вроде самописный) выложите хотя бы функцию регистрации типа _probe и кусок лога для нее
- проблема настройки ядра - выложите или я могу выложить часть конфига для звука и сопутствующие места.
как-то так..

зы и фрагменты из board-sam9260ek.c где прописан кодек в конфиге платы и функции его инита..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9260-SIMXXX