Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
IMX53 и Jack Audio Connection Kit JACKD
xaba
Добавлено 23.07.2013 19:33 Редактировалось 24.07.2013 09:04
0
Сообщение: 1
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Привет всем!

Пытаюсь наладить работу этого "Демона")))
Это отличный звуковой сервер проверенный и очень надежный. Стоит на Федоре (проц Интел), уже год не выключаю сервер и без проблем.

Захотел перенести на IMX комбайн, но не в какую не хочет нормально работать. 3 дня пытаюсь....

Версия - Jack Audio connection Kit 0.121.3
Параметры GCC Linaro

Так не работает :
  • -pipe -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard -O2

    Ошибка ILL или SEGV..

    А так на половину :
  • -O0 -mcpu=cortex-a8 -mfloat-abi=hard -mfpu=vfpv3 -mthumb -mno-thumb-interwork -mhard-float

    Захват с карты работает. а вот, Проигрывание не работает и сыпит ошибки

  • [ 214.125865] imx_ssi_irq mxc_ssi SISR f333 SIER 780500 fifo_errs=100001
  • [ 214.153219] imx_ssi_irq mxc_ssi SISR f333 SIER 780500 fifo_errs=101001
  • [ 214.180573] imx_ssi_irq mxc_ssi SISR f33b SIER 780500 fifo_errs=102001
  • [ 214.207927] imx_ssi_irq mxc_ssi SISR b333 SIER 780500 fifo_errs=103001
    и тд....

    Убиваю демон и при повторном запуске начинает работать Проигрывание)))

    Ошибка возможно кроется в параметрах GCC, но вот как ещё пробовать...?

    При компиляции смущает вот такая строчка
  • /config/cpu/generic/atomicity.h:23:2: warning: #warning "stub atomicity functions are not atomic on this platform"

    понятно что нет поддержки...но все же на половину запустить удалось.

    Может кто подскажет как подобные функции прописать? Если конечно дело в этом...
    Вот тут пример на i386

    //////////////////////////////////////////////////////////////////////////////////////////////
    #ifndef _GLIBCXX_ATOMICITY_H
    #define _GLIBCXX_ATOMICITY_H 1

    typedef int _Atomic_word;

    static inline _Atomic_word
    __attribute__ ((__unused__))
    __exchange_and_add(volatile _Atomic_word* __mem, int __val)
    {
    register _Atomic_word __result;
    __asm__ __volatile__ ("lock; xaddl %0,%1"
    : "=r" (__result), "=m" (*__mem)
    : "0" (__val), "m" (*__mem));
    return __result;
    }

    static inline void
    __attribute__ ((__unused__))
    __atomic_add(volatile _Atomic_word* __mem, int __val)
    {
    __asm__ __volatile__ ("lock; addl %1,%0"
    : "=m" (*__mem) : "ir" (__val), "m" (*__mem));
    }
    //////////////////////////////////////////////////////////////////////////////////////////////

    Можно же переделать под этот проц ?
    Сейчас стоит Заглушка типа:

    //////////////////////////////////////////////////////////////////////////////////////////////
    #ifndef _ATOMICITY_H
    #define _ATOMICITY_H 1

    #warning "stub atomicity functions are not atomic on this platform"

    typedef int _Atomic_word;

    static inline _Atomic_word
    __attribute__ ((__unused__))
    __exchange_and_add(volatile _Atomic_word* mem, int val)
    {
    int result = *mem;
    *mem += val;
    return result;
    }

    static inline void
    __attribute__ ((__unused__))
    __atomic_add(volatile _Atomic_word* mem, int val)
    {
    *mem += val;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////

    Или может есть ещё варианты параметров?

    PS Нашел еще одну особенность.
    Если запустить отдельно два демона на запись и проигрывание, то работает, а если все в одном демоне то ошибка...
  • Спуститься к концу Подняться к началу
    Персональная информация
    xaba
    Добавлено 23.07.2013 20:59 Редактировалось 20.03.2014 09:49 Сообщение: 2
    xaba
    4

    Пункты: 15268
    Регистрация: 23.04.2012
    И так.

    3 демона работают раздельно.

    1-й на выход Аналог.
    2-й на выход SPDIF.
    3-й на вход Аналога.
    Запустил два mplayer на 1-й и 2-й.

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    1280 root 20 0 38004 36m 18m S 4.8 16.8 0:12.30 mp-client2
    1205 root 20 0 22828 22m 4600 S 3.9 10.2 0:23.22 jackd
    1212 root 20 0 22828 22m 4600 S 3.9 10.2 0:13.82 jackd
    1240 root 20 0 38404 36m 18m S 3.9 17.0 0:22.61 mp-client1
    1219 root 20 0 22824 22m 4596 S 1.0 10.2 0:03.58 jackd
    1229 root 20 0 6112 1852 1508 S 1.0 0.8 0:00.71 sshd

    /tmp/root # free
    total used free shared buffers cached
    222136 145436 76700 0 0 32016

    Хм... как я и думал демоны съели памяти 30 %
    жадные демоны... не удивительно, без оптимизации.

    Но мне главное работа и стабильность.

    Оставляю работать до утра...посмотрим.

    На запись буду пробовать завтра...а пока спааать

    Не сдержался и запустил мега комбайн VLC на 3-й демон ))))

    Утром проверю)))
    Спуститься к концу Подняться к началу
    Персональная информация
    xaba
    Добавлено 24.07.2013 09:02 Редактировалось 20.03.2014 09:49 Сообщение: 3
    xaba
    4

    Пункты: 15268
    Регистрация: 23.04.2012
    Утро... OOM Killer не выдержал и убил syslogd

    В общем пока РАБОТАЮТ 3 демона JackD, память жалко. Проблем не наблюдаю, все четко.

    Будем использовать mplayer и ffmpeg проверено и надежно работает.
    Спуститься к концу Подняться к началу
    Персональная информация
    xaba
    Добавлено 25.07.2013 21:32 Редактировалось 01.08.2013 22:16 Сообщение: 4
    xaba
    4

    Пункты: 15268
    Регистрация: 23.04.2012
    Ну вот вроде бы все шоколадно работает уже пару суток.

    Добиться лучшего результата с этим демоном пока не удалось. Конечно без вмешательств в код и написание каких то патчей..
    Единственный минус это просто больше памяти уходит на дополнительный демон.

    Пришлось дорабатывать mplayer, а точнее его модуль ao_jack.c.
    Они или забили или забыли дописать поддержку названия сервера. Может в других версиях есть...не узнавал.
    Короче, в версии Mplayer 1.1-4.7.1, точно нет такого.
    Если JACKD запустить без параметра "-n name_server", то сервер будет называться как default и все клиенты будут его видеть.
    А если в моем случае, то не получится несколько демонов запустить не меняя название сервера. Меняем название сервера и все клиенты его соответственно не видят(((

    этот патч для Mplayer-1.1 исправит эту мелкую не доработку.
    Attachment file: uploads/forum/forum-xfngcSJBY0-10061.rar


    Теперь можно будет указать название сервера.
    Пример:
    mplayer -ao jack:server=name_server:port=system

    Конечно если не указывать название, то он будет искать сервер по умолчанию.

    Победа!
    Спуститься к концу Подняться к началу
    Персональная информация
    xaba
    Добавлено 01.08.2013 19:50 Редактировалось 03.08.2013 10:23 Сообщение: 5
    xaba
    4

    Пункты: 15268
    Регистрация: 23.04.2012
    9-й день работает стабильно.

    Написал патч для ffmpeg. Если кто захочет использовать в качестве записи с JACKD.

    И тут забыли написать поддержку названия сервера...не думали что такие как я будут использовать парачку демонов JACK. Ну да ладно, проще пареной репки)))

    Выкладываю.... в следующем сообщении

    Параметры следующие:
    Версия 0.10
    ffmpeg - f jack -i name_server бла бла бла...

    Если не указывать name_server то автоматом будет загружаться сервер default.

    Все. Надеюсь пригодится))
    Спуститься к концу Подняться к началу
    Персональная информация
    xaba
    Добавлено 03.08.2013 10:15 Редактировалось 03.08.2013 10:22 Сообщение: 6
    xaba
    4

    Пункты: 15268
    Регистрация: 23.04.2012
    Пришлось доработать patch для ffmpeg)

    Attachment file: uploads/forum/forum-jHmKTwuUTL-10061.rar
    Спуститься к концу Подняться к началу
    Персональная информация
    xaba
    Добавлено 20.03.2014 09:55 Сообщение: 7
    xaba
    4

    Пункты: 15268
    Регистрация: 23.04.2012
    Прошел практически ГОД. Нашлась причина почему JACKD не хотел работать в дуплексном режиме. Сам придумал себе работы))) ...и сам же решил её.

    В ядре есть галочка CONFIG_MXC_SSI_DUAL_FIFO раздел ALSA for SoC audio support, те использовать два фифо вместо одного.
    Выключил ее и не глючит. Охринеть одним словом...
    Спуститься к концу Подняться к началу
    Персональная информация
    Форум » starterkit.ru » Embedded Linux