LINUX.ORG.RU

7
Всего сообщений: 23

Server для Видеоконференции.

Доброго времени суток всем.

Есть необходимость в программном сервере многоточечных видеоконференций. Кто нибудь пробовал такой собрать на базе Linux. Если такие есть, то поделитесь ссылкой или хотя бы названием. Просто готовые программные сервера ужасно дорогие, и ограничены в количестве абонентов.

P.S. Просьба глючный Open MCU не предлагать.

Буду очень очень благодарен, если у кого то найдется мануал по сборке и установке.

 , , , ,

KOTTOK ()

Ubuntu 16.04.5 проблема с компилированием MCU Media Server

Пытаю собрать MCU Media Server, дошел уже до компилирования самого сервера, и вот тебе на.

root@ubuntu:/usr/local/src/mcumediaserver-code/media-server# make

/usr/local/src/mcumediaserver-code/media-server/include/rtp/RTPDepacketizer.h: In constructor ‘DummyAudioDepacketizer::DummyAudioDepacketizer(uint32_t)’:

/usr/local/src/mcumediaserver-code/media-server/include/rtp/RTPDepacketizer.h:55:119: error: no matching function for call to ‘AudioFrame::AudioFrame(AudioCodec::Type, int)’

DummyAudioDepacketizer(DWORD codec) : RTPDepacketizer(MediaFrame::Audio,codec), frame((AudioCodec::Type)codec,8000)

In file included from /usr/local/src/mcumediaserver-code/media-server/include/rtp/RTPDepacketizer.h:18:0,

from /usr/local/src/mcumediaserver-code/media-server/include/rtp.h:20,

from /usr/local/src/mcumediaserver-code/media-server/src/vp9/VP9Depacketizer.h:3,

from /usr/local/src/mcumediaserver-code/media-server/src/vp9/VP9Decoder.h:8,

from /usr/local/src/mcumediaserver-code/media-server/src/VideoCodecFactory.cpp:11:

/usr/local/src/mcumediaserver-code/media-server/include/audio.h:41:2: note: candidate: AudioFrame::AudioFrame(AudioCodec::Type, const std::shared_ptr<Buffer>&)

AudioFrame(AudioCodec::Type codec,const std::shared_ptr<Buffer>& buffer) : MediaFrame(MediaFrame::Audio,buffer)

/usr/local/src/mcumediaserver-code/media-server/include/audio.h:41:2: note: no known conversion for argument 2 from ‘int’ to ‘const std::shared_ptr<Buffer>&’

/usr/local/src/mcumediaserver-code/media-server/include/audio.h:35:2: note: candidate: AudioFrame::AudioFrame(AudioCodec::Type) AudioFrame(AudioCodec::Type codec) : MediaFrame(MediaFrame::Audio,2048)

/usr/local/src/mcumediaserver-code/media-server/include/audio.h:35:2: note: candidate expects 1 argument, 2 provided

/usr/local/src/mcumediaserver-code/media-server/include/audio.h:32:7: note: candidate: AudioFrame::AudioFrame(const AudioFrame&)

class AudioFrame : public MediaFrame

/usr/local/src/mcumediaserver-code/media-server/include/audio.h:32:7: note: candidate expects 1 argument, 2 provided

/usr/local/src/mcumediaserver-code/media-server/include/audio.h:32:7: note: candidate: AudioFrame::AudioFrame(AudioFrame&&)

/usr/local/src/mcumediaserver-code/media-server/include/audio.h:32:7: note: candidate expects 1 argument, 2 provided

Makefile:218: recipe for target 'VideoCodecFactory.o' failed make: *** [VideoCodecFactory.o] Error 1

 , , , ,

KOTTOK ()

Не могу сконфигурировать mp4v2 для MCU Media Server

/bin/bash ./libtool –tag=CXX –mode=compile g++

-DHAVE_CONFIG_H -I./include -I./include -I. -I. -Wall -Wformat

-g -O2 -fvisibility=hidden -c -o src/mp4track.lo src/mp4track.cpp

libtool: compile: g++ -DHAVE_CONFIG_H -I./include -I./include

-I. -I. -Wall -Wformat -g -O2 -fvisibility=hidden -c

src/mp4track.cpp -fPIC -DPIC -o src/.libs/mp4track.o

src/mp4track.cpp:911:8: warning: identifier ‘nullptr’ is a

keyword in C++11 [-Wc++0x-compat]

    if ( pFtypAtom == nullptr )
    ^

src/mp4track.cpp: In member function ‘mp4v2::platform::io::File*

mp4v2::impl::MP4Track::GetSampleFile(MP4SampleId)’:

src/mp4track.cpp:911:26: error: ‘nullptr’ was not declared in

this scope

    if ( pFtypAtom == nullptr )
                      ^

src/mp4track.cpp:918:23: warning: unused variable ‘majorBrand’

[-Wunused-variable]

       const char *majorBrand = 

pFtypAtom->majorBrand.GetValue(); ^ GNUmakefile:1318: recipe for target ‘src/mp4track.lo’ failed

make: *** [src/mp4track.lo] Error 1

root@ubuntu:/usr/local/src/mp4v2#

 , , , ,

KOTTOK ()

Лорчик, а чем прошивать контроллеры Atmel серии SAM4S под гнулинуксом?

Желательно из консоли, без свистоперделок.

Сабж. Atmel Studio официально только под винду.

И чем это всё конпелять в удобный для программатора вид?

 , , ,

Harald ()

Apache TOMCAT SIP-SERVLET

Всем привет.

Проблема с Apache TOMCAT SIP-SERVLET.

Делаю следующее:

# yum install -y maven git ant subversion

# cd /usr/local/src

# git clone https://github.com/RestComm/sip-servlets.git

# cd sip-servlets

# cd ./build/release

# ant -buildfile ./build.xml

Запускается довольно долгий процесс, результат таков:

[exec] [ERROR] Failed to execute goal on project sip-servlets-core-api: Could not resolve dependencies for project

org.mobicents.servlet.sip:sip-servlets-core-api:jar:3.0.0-SNAPSHOT: Failed to collect dependencies for

[org.mobicents.servlet.sip:sip-servlets-spec:jar:3.0.0-SNAPSHOT (compile),

org.mobicents.servlet.sip:sip-servlets-jruby:jar:3.0.0-SNAPSHOT (compile),

org.mobicents.servlet.sip:sip-servlets-client:jar:3.0.0-SNAPSHOT (compile)

org.mobicents.servlet.sip:sip-servlets-annotations:jar:3.0.0-SNAPSHOT (compile), log4j:log4j:jar:1.2.17 (provided),

javax.sip:jain-sip-api:jar:1.2.0 (provided), javax.sip:jain-sip-ri:jar:[1.3,1.4) (provided),

org.mobicents.javax.sip:restcomm-jain-sip-ext:jar:[1.4,1.5) (provided),

org.mobicents.ha.javax.sip:restcomm-jain-sip-ha-core:jar:[1.5,1.6) (provided), junit:junit:jar:3.8.1 (test),

javax:javaee-web-api:jar:6.0 (provided)]: No versions available for

org.mobicents.javax.sip:restcomm-jain-sip-ext:jar:[1.4,1.5) within specified range -> [Help 1]

[exec] [ERROR]

[exec] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.

[exec] [ERROR] Re-run Maven using the -X switch to enable full debug logging.

[exec] [ERROR]

[exec] [ERROR] For more information about the errors and possible solutions, please read the following articles:

[exec] [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

[exec] [ERROR]

[exec] [ERROR] After correcting the problems, you can resume the build with the command

[exec] [ERROR] mvn <goals> -rf :sip-servlets-core-api

BUILD FAILED

/usr/local/src/sip-servlets/build/release/build.xml:125: exec returned: 1

Total time: 23 minutes 2 seconds

Уже замучился менять релизы и системы, результат всегда одинаковый.

 , , , ,

KOTTOK ()

MCU Media Server ошибка сборки

Всем привет, столкнулся с такой проблемой, собирая MCU Media Server на MINT18 все шло отлично без единой проблемы и ошибок, но дойдя до места компилирования вылезла вот такая проблема.

Media-Server media-server # make

mkdir -p /usr/local/src/mcumediaserver-code/media- server/build/release

mkdir -p /usr/local/src/mcumediaserver-code/media- server/build/release/test

mkdir -p /usr/local/src/mcumediaserver-code/media-server/bin/release

[CXX] release /usr/local/src/mcumediaserver-code/media-server/src/mcu.cpp

In file included from /usr/local/src/mcumediaserver-code/media-server/include/RTPTransport.h:22:0,

from /usr/local/src/mcumediaserver-code/media-server/include/rtpsession.h:18,

from /usr/local/src/mcumediaserver-code/media-server/include/participant.h:14,

from /usr/local/src/mcumediaserver-code/media-server/include/multiconf.h:9,

from /usr/local/src/mcumediaserver-code/media-server/include/mcu.h:6,

from /usr/local/src/mcumediaserver-code/media-server/src/mcu.cpp:5:

/usr/local/src/mcumediaserver-code/media-server/include/EventLoop.h:11:20: fatal error: Buffer.h: Нет такого файла или каталога

compilation terminated.

Makefile:215: ошибка выполнения рецепта для цели «mcu.o» make: *** [mcu.o] Ошибка 1 Media-Server media-server #

Вот кусок из make файла с проблемной 215 строкой

#For abyss

OPTS += -D_UNIX -D__STDC_CONSTANT_MACROS

CFLAGS += $(INCLUDE) $(OPTS)

CXXFLAGS+= $(INCLUDE) $(OPTS)

%.o: %.c @echo «[CC ] $(TAG) $<»

@gcc $(CFLAGS) -c $< -o $(BUILD)/$@

%.o: %.cpp

@echo "[CXX] $(TAG) $<" \\ 215 СТРОКА

@$(CXX) $(CXXFLAGS) -c $< -o $(BUILD)/$@

%.o: %.cc

@echo "[CXX] $(TAG) $<"

@$(CXX) $(CXXFLAGS) -c $< -o $(BUILD)/$@

Помогите разобраться в чем дело, я в этом сильно не понимаю.

 , , ,

KOTTOK ()

Есть ли реализация LLVM для восьмибитной архитектуры avr?

Вроде как с четвертой версии сабжа есть реализация LLVM target AVR, но я не уверен точно, к каким именно AVR-кам это относится: только к AVR32 или доступно больше архитектур?

Кто в теме, откликнитесь, пожалуйста.

 , ,

LongLiveUbuntu ()

Программный MCU сервер для видео конференций

Есть в природе нормальный опенсорсный, либо халявный MCU для SIP-клиентов ? Нагрузка будет небольшая, до 4 терминалов.

 ,

ovax ()

Посоветуйте как прокинуть периферию между микроконтроллерами.

Нужно сделать оптоизоляцию на входах управления в регуляторе оборотов. Если развязывать высоковольстную часть в лоб - будет до фига оптронов и усилителей.

Вроде получается намного проще поставить 2 микроконтроллера с отдельными питаниями, и соединить цифровым каналом (тогда надо всего 2 опторазвязки). Один контроллер на силовую часть, и второй на ручки-кнопочки. Звучит странно, но проще и по деталям и по размерам.

А теперь вопрос - есть ли для C и/или Rust решения, чтобы прозрачно прокидывать пины, АЦП и UART в подобных связках? То есть, чтобы дергать в коде регулятора HAL и не заморачиваться, что данные на самом деле берутся из буфера, куда они прилетели от другого микроконтроллера.

Можно конечно на коленке это все накостылять, но что-то мне подсказывает, что подобное должны были давно сделать и как следует отладить.

 , ,

Vit ()

Открыт сбор денег на полностью открытый микроконтроллер RISC-V

Про RISC-V читаем здесь: https://riscv.org
Про конкретный контроллер смотрим здесь: https://www.youtube.com/watch?v=v2Urc4kWPyE и https://github.com/onchipuis/
Денег даем здесь: https://www.crowdsupply.com/onchip/open-v
Особо проникшимся RISC-V и желающим пощупать его на fpga: https://www.sifive.com, https://github.com/ucb-bar, https://github.com/riscv/
Для Ъ: дядьки из Колумбии запилили полностью открытый RISC-V совместимый микроконтроллер, испекли и показали его на ORCONF'16 и теперь хотят запустить массовую печать этих чипов.

 , , , ,

Deleted ()

Тулчайн CMake

Хочу попробовать использовать CMake для сборки прошивок для микроконтроллеров. Разумеется, для этого требуется другой тулчайн (arm-none-eabi) вместо системного. Как я понимаю, есть два варианта:

1) Тупой. Сделать SET(CMAKE_C_COMPILER «arm-none-eabi») внутри CMakeLists.txt проекта.

2) Умный. Сделать специальный файлик тулчайна, где прописать все необходимые опции. А затем подсунуть его в переменную CMAKE_TOOLCHAIN_FILE.

Проблема в том, что второй вариант рекомендуют делать с помощью опций запуска CMake. Типа cmake -DCMAKE_TOOLCHAIN_FILE=...

Однако в случае с прошивкой для микроконтроллера возможность лёгкого выбора целевой платформы не имеет смысла, так как весь код всё равно заточен под конкретный МК. Более того, попытка компиляции с нативным тулчайном гарантированно обломается. Соответственно, хотелось бы как-нибудь прописать тулчайн прямо внутри CMakeLists.txt, а не указывать его явно. Однако SET(CMAKE_TOOLCHAIN_FILE ...) не срабатывает. Вероятно, чтение этой переменной происходит раньше, чем исполнение команд из файла проекта.

Что делать? Как правильно сменить тулчайн и при этом по возможности как-то жёстко это зафиксировать, а не указывать в опциях командной строки при запуске CMake?

 , ,

KivApple ()

Rust как язык для программирования микроконтроллеров

Собственно сабж. А то часто вижу всякие статьи, где Rust пиарится как «убийца сишечки». Вот даже недавно ОС на Rust вышла. А программирование микроконтроллеров - как раз одна из тех областей, где C на сегодняшний день практически не имеет конкурентов.

Ну так насколько он годен для этого? Сильно ли распухнет код? А что с производительностью? Как со всякими специфичными фичами (обработчики прерываний часто требуют иных прологов/эпилогов, также нужна возможность пихать функции и переменные в не стандартные секции линкера и т. д.)?

Насколько он юзабелен без кучи рантайма? Вот попробовал простую программу кросс-компилировать под STM32 с #![no_std] - так не собралось же. Требует как минимум библиотеку core (и в стабильной версии вроде как нет возможности её отрубить). Насколько эта библиотека жирна?

А что со всякими микроконтроллерами послабее типа всяких AVR, PIC, STM8, MSP430. Как я понимаю, тут уже всё зависит напрямую от LLVM. Для AVR порт есть, для MSP430 тоже (правда, экспериментальный). Вроде как запилить в случае чего LLVM-backend не очень сложно, но есть важный вопрос - насколько оно будет хорошо работать. Есть ли какие-то проигрыши по эффективности или размеру кода, если вместо прямой компиляции (с помощью gcc или sdcc) использовать llvm?

 , ,

KivApple ()

Каталог микроконтроллеров в машиночитаемом виде

Можно ли раздобыть обновляемый каталог информации о микроконтроллерах различных производителей (STM, Atmel, TI и т. д.) в машиночитаемом формате (XML, например)?

А именно - объём ОЗУ, флеша, количество модулей I2C, SPI, UART и т. д.

Нет ничего страшного, если для разных производителей придётся загружать файлы из разных источников, главное чтобы формат был единый.

 

KivApple ()

Не могу уяснить порядок блоков в JPEG

Картинка из спецификации ITU-T.81.

Как я понимаю (поправьте, если что не так), здесь мы имеем изображение шириной 4*8 = 32 пикселя и высотой 5*8 = 40 пикселей (4 на 5 блоков 8x8).

Горизонтальный (?) сэмплинг-фактор первого компонента на рисунке - 2, второго и третьего - 1, вертикальные равны 1 (?), поэтому получается такой порядок:

A1, A2, B1, C1, (конец первого MCU) A3, A4, B2, C2 (конец второго MCU), ...

Если бы сэмплинг-факторы были 4x2x2, было бы A1, A2, A3, A4, B1, B2, C1, C2, A5, ... (правильно, нет?)

А если бы вертикальные сэмплинг-факторы были не равны единице, что получилось бы?

А еще здесь, как я понимаю, 1 MCU = 1 iMCU. В каком случае iMCU содержала бы больше одного MCU?

 ,

punksnotdead ()

STM32 - определить отключение USB

Дано: микроконтроллер STM32F407, при программировании используется библиотека libopencm3, реализован USB CDC ACM Device. Плата питается НЕ от USB.

Надо: определить, собственно, пропадание USB подключения. Момент его появления определить легко - вызывается callback выбора активной конфигурации.

 , , , ,

KivApple ()

двойное питание микроконтроллера

В общем, такое дело. Есть микроконтроллер, который должен работать от аккумулятора когда включен выключатель питания платы, и должен работать независимо от состояния выключателя, когда подключено внешнее питание на плату. Как это правильно сделать? Пока что пришло в голову такое. VCC_1 идет от разъёма внешнего питания, а VCC_2 от аккумулятора через выключатель. 555 тут просто для образца, вместо неё будет микроконтроллер. Сомневаюсь, что это правильное решение. Наставьте на путь истинный. Linux тут при том, что программироваться микроконтроллер будет из-под него.

cast Zubok, Eddy_Em, beastie, qbe, Dron

 , , ,

WRG ()

делаю блок питания....

Решил тут собрать свой блок питания. Стал вопрос как сделать защиту от КЗ. Стандартное решение: усиленный сигнал с шунта подаётся на компаратор, выход компаратора на kill switch. Проблема в том где достать образцовый сигнал для компаратора. Можно ли использовать PWM с ноги МК (с low-pass filter)? А то у моего МК (stm32f302k8) единственный DAC уже занят как источник образцового напряжения.

Кастую гуру электроники Zubok :)

 , , ,

true_admin ()

Проблема с I2C в MSP430

Имею MSP430F5529 Launchpad. Хочу считывать данные с датчиков по I2C и столкнулся с проблемой - I2C работает нормально только после перепрошивки. То есть, загружаю я прошивку с помощью программатора-отладчика Ez-FET, установленного на плате, - всё работает нормально. Можно жать кнопочку RESET, можно запускать отладку - всё будет работать нормально. Но если ввести МК в режим BSL (зажать кнопки BSL и RESET, затем отпустить сначала RESET и только потом BSL), а потом перезагрузить или отключить питание платы, а потом подключить снова, то I2C не работает. И не будет работать, сколько не перезагружай плату. Но стоит залить ТУ ЖЕ САМУЮ прошивку и всё начинает работать. При этом таймеры, UART и GPIO работают как надо всегда (другие модули не использую пока что). Если не заливать заново прошивку, а подключиться для отладки это проблему не решает. Надо именно перезалить прошивку. То есть какая-то инициализация осуществляется программатором при заливке прошивки, а я в своей программе её не делаю. Для того чтобы внешние датчики всегда были в одинаковом состоянии запитал их от GPIO микроконтроллера, благо они жрут единицы миллиампер. Так что на них никак не влияет перепрошивка - они начинают работать с нуля каждый сброс МК (МК при старте сначала выдаёт 0 на питание датчиков, ждёт кучу времени, чтобы точно разрядились все конденсаторы и лишь потом запитывает датчики).

Если плату отключить от питания и быстро подключить снова, то она может и заработать. Также она работает, если отключали только питание, а внешний переходник на UART остался подключен и мог питать МК с помощью паразитного питания через подтяжки линий (но при этом МК не исполнял программу, для этого питания не хватало, но, возможно, мог сохранить состояние ОЗУ или какой-то периферии), а затем подали питание вновь.

Вот код моей библиотеки для работы с I2C: http://pastebin.com/M1WtDKQb. Я не нашёл отличий в инициализации от примеров TI.

«Не работает» - значит любые попытки чтения по I2C возвращают не то, что нужно. Обычно это нули. Но после режима BSL это значение 0xC7.

В чём может быть дело? Какое состояние МК может инициализировать программатор при прошивки и оно сохраняется при перезагрузках, но не сохраняется при пропадании питания.

Смотрел с помощью mspdebug содержимое памяти по тем адресам, где находятся регистры, которые отвечают за I2C - различия между ситуациями, когда работает и когда нет, нету, всё настроено идентично. Больше не знаю, что посмотреть.

 , , ,

KivApple ()

Пара вопросов по программированию mcu lpc1788 + gcc

Здравствуйте! Мне досталась плата с контроллером lpc1788, в качестве toolchain решил взял GNU GCC, но тут у меня появилось пара вопросов:

1. нужен startup код. Я обнаружил что в драйверах от nxp есть стартовый код для GСС:

...
/* Reset Handler */

    .section .cs3.reset,"x",%progbits
    .thumb_func
    .globl  __cs3_reset_cortex_m
    .type   __cs3_reset_cortex_m, %function
__cs3_reset_cortex_m:
    .fnstart
.if (RAM_MODE)
/* Clear .bss section (Zero init) */
	MOV     R0, #0
	LDR     R1, =__bss_start__
	LDR     R2, =__bss_end__
	CMP     R1,R2
	BEQ     BSSIsEmpty
...
Но это разве синтаксис as (AT&T)?

2. драйверы периферии придется писать самостоятельно? Для keil, iar и lpcexpresso у них есть http://www.lpcware.com/content/nxpfile/lpcopen-platform Но не для gcc

Спасибо!

 , ,

ForsakenLast ()

USB CDC, где почитать по-человечески?

Товарищи, ну подскажите, пожалуйста, литературу по USB CDC. Нет сил уже листать technical reference: никак не могу найти, как работать с вызовами SET_CONTROL_LINE_STATE и GET_LINE_CODING.

Насчет SET_CONTROL_LINE_STATE понял лишь, что вызывается эта штука при обращении к устройству (handshake) и при отключении. Таким образом, я могу анализировать, работает ли в текущий момент какой-нибудь процесс с терминалом по USB, или нет.

SET_LINE_CODING вызывается при подключении ioctl'ами — это понятно. Использую его для изменения скорости USART'а. Правда, какой-то косяк у меня: если сначала к USART'у подключиться, скорость получается совершенно не такой, как должна была бы быть (а вот когда подключаюсь по USB с заданными параметрами, то USART уже работает как надо).

GET_LINE_CODING — как сделать этот вызов? Когда я из программы вызываю

	if(ioctl(comfd,TCGETA,&oldtty) < 0) exit(-1); // Get settings
	printf("old cflag: %d\n", oldtty.c_cflag);
то получаю 6322==014262, т.е. B115200 там есть:
#define  B115200  0010002
однако, на тестовом терминале, подключенном к UART (туда откидываются диагностические сообщения), нет сообщения о вызове метода GET_LINE_CODING.

Вопросы:

  • что надо сделать, чтобы на USB CDC вызвать метод GET_LINE_CODING?
  • как определить именование устройства? Я хочу, чтобы оно было /dev/ttyUSBx, как у переходничков USB<->TTL, но оно определяется как /dev/ttyACMx — это делается на основе какой-то таблицы с VID/PID? Где взять эту таблицу?

P.S. Если кому интересно — это часть ircontroller (директория with_opencm3).

 , ,

Eddy_Em ()