Просмотр сообщений
Страниц: [1] 2 3 ... 21
1  Разработка / Программирование под QNX / Re: Выпадает служба PPS : Января 22, 2018, 12:37:53 pm
Дело ваше, но вообще то, идеология errno в POSIX как раз создана для возможности штатной обработки ошибки и PPS, в том числе, возвращая EMSGSIZE, предоставляет вам возможность корректно и с минимальными затратами обрабатывать данную ситуацию.

Ну нифига ж себе "с минимальными затратами"!!  Cry  Ладно, бывают варианты, когда при нехватке буфера функция возвращает ошибку "мало памяти", И выдаёт значение "сколько нужно". Тогда выделяешь вот эти вот "сколько нужно" байт, и вторым запросом уже точно всё отрабатывает.

А тут мне предлагается, фактически, вслепую играть в "рулетку"? Угадал / не-угадал размер буфера? А если с пятой попытки не угадаю? А если с десятой? Или предлагаете сразу все 64 кБ откусывать? Так никакой памяти не хватит...

Цитировать
Во-первых, почему непонятной? Служба HAM официально входит в состав системных служб QNX, точно также как и io-pkt-v4, inetd, devc-con-hid и т.д. Вы же пользуетесь этими службами, что мешает Вам воспользоваться HAM?  Wink

Во-вторых, HAM достаточно удобная служба: реагирует, практически, на любое состояние процесса/потока, уведомляет "заказчика" об изменении состояния наблюдаемого любым, доступным в QNX, способом.

Чё-то после этого "PPS" у меня доверие ко всяким наворотам QNX потеряно. Так её рекламировали, в медицинские приложения пропихивали, а оказалась тормозная глючная хрень. И поздно уже менять...

Кроме того, вот что бы тут полезного смог бы HAM сделать? Уведомить "Поздно, доктор, я уже здохла"? Даже если перезапустить сам менеджер PPS, то заставить несколько сотен процессов переоткрыть все PPS-"файлы" - ни к чему хорошему не приведёт.
2  Разработка / Программирование под QNX / Re: Выпадает служба PPS : Января 20, 2018, 11:29:47 pm
Ну тык данная ошибка вам в помощь: делаете новые попытки чтения с увеличением размера буфера до тех пор, пока read не вернет >=0.

Как-то кривовато это...

Цитировать
Есть служба HAM, может помочь.

От спасибо! Зависеть от ещё одной непонятной системной службы, которая в любой момент может тихо сдохнуть, и наша программа об этом не узнает?! - Не-ет уж, не надо!
3  Разработка / Программирование под QNX / Re: Выпадает служба PPS : Января 18, 2018, 12:41:50 pm
Ещё одна то ли бага, то ли моё недопонимание работы PPS:

Для того чтобы прочитать текущее содержимое PPS-объекта к себе в буфер, желательно узнать заранее, какого размера буфер нужно выделить. Через стандартный fstat() получаем размер "файла", и если он больше чем имеющийся на данный момент буфер, увеличиваем его через realloc(). Обычно всё это срабатывает.

НО! Не всегда.

Когда Publisher записывает в PPS-объект сразу несколько обращений к одному "списочному" тегу в одной транзакции, типа
Код:
[i]Tag1::Val1,
[i]Tag2::val2,
...
[i]TagN::valN,
за один вызов write(), то у получателя вызов read() вываливается c ошибкой EMSGSIZE. Даже если сделать буфер больше размера получающегося файла.

Печально...

4  Разработка / Программирование под QNX / Re: Выпадает служба PPS : Января 11, 2018, 12:44:16 pm
Сейчас попробовал через select() - то же самое, никаких уведомлений о смерти PPS...
 
...что и неудивительно, ибо работает select(), как я понимаю, через тот же ionotify().
 
Таки придётся сооружать демона-watchdog на PPS   Embarrassed .
5  Разработка / Программирование под QNX / Re: Выпадает служба PPS : Января 11, 2018, 11:30:52 am
Понятно...    Roll Eyes

Самое обидное, что не удаётся "правильно" узнать о том, что скоредампилась лужба PPS. У нас в подпрограммах я заряжаю ionotify() с пульсом на дескриптор открытого PPS-"файла" (запрашиваю события _NOTIFY_COND_OBAND, _NOTIFY_COND_INPUT, _NOTIFY_COND_EXTEN), и потом жду в MsgReceive() прихода уведомления. Этот же MsgReceive() ждёт пульсы и месседжи от других компонентов системы. В принципе, всё работает, как и задумывалось.

Но, согласно здравому смыслу, если что-то нехорошее случается с "поставщиком" пульсов, то система должна была бы хоть как-то уведомить ожидающую программу, что что-то пошло не так. Прислать сигнал, или код ошибки, или хоть что-то, чтобы клиент мог хотя бы аварийно остановить оборудование и выдать оператору табличку "Усё пропало!". . . Фиг там. Программа продолжает висеть на ожидании пульса от несуществующего уже PPS.

Может, я что-то не так делаю?

Пока что я вижу выход в написании "демона", который бы в явном виде отслеживал здоровье PPS, и рассылал останов по клиентам. Но, сами понимаете, это на фикс на патч на заплатку...
6  Разработка / Программирование под QNX / Выпадает служба PPS : Января 05, 2018, 05:37:43 pm
Замечательную удобную рулезную службу PPS мы применили в нашей системе АСУ ТП (под QNX 6.5.0 SP1), для коммуникации между программами управления механизмами, супервизорами маршрутов, и графической частью HMI. Логирование в общий журнал тоже сделано через PPS. Всё, в общем-то классно, разобрались как работает, жужжит всё как положено.

НО.

Не всегда.

В какие-то моменты времени весь менеджер pps просто выпадает в core dump. В какие именно - не совсем понятно, это случается на удалённых филиалах раз в несколько месяцев. Есть подозрение, что это на управляемом объекте одновременно происходят несколько событий (например, короткая просадка питания), что приводит к генерации сразу пачки сообщений, с которыми не может справиться PPS.

Поскольку сообщения к демону логирования идут тоже через PPS, то в журналах мы ничего крамольного не видим - оно не прошло. Персонал на месте в таких случаях обычно просто перегружает технологический сервер, а потом звонит "А-А-а-а! У нас в прошлом месяце сервер зависал - что делать?!". Так что отлаживать "в реальном времени" не удаётся.

Отсюда вопрос: что делать? Кто-нибудь с таким сталкивался?

Неужели придётся делать отдельного "сторожевого демона" для PPS, который бы останавливал всю технологию и выдавал оператору табличку "Ой! Всё пропало!" ?


На всякий случай, вот дамп:

Код:
# gdb pps /var/dumps/pps.core

GNU gdb 6.8 qnx-nto (rev. 506)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-pc-nto-qnx6.5.0"...
(no debugging symbols found)
Reading symbols from /usr/qnx650/target/qnx6/x86/lib/libc.so.3...(no debugging symbols found)...done.
Loaded symbols for /usr/qnx650/target/qnx6/x86/lib/libc.so.3

Program terminated with signal 11, Segmentation fault.
[New pid 434199 tid 1]
#0  0xb0328e38 in _list_release ()
   from /usr/qnx650/target/qnx6/x86/lib/libc.so.3
(gdb) bt
#0  0xb0328e38 in _list_release ()
   from /usr/qnx650/target/qnx6/x86/lib/libc.so.3
#1  0xb032a81b in __free () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3
#2  0xb032a33d in free () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3
#3  0x0804c2c7 in pair_encode ()
#4  0x0804b100 in io_read ()
#5  0xb034ef1b in _resmgr_io_handler ()
   from /usr/qnx650/target/qnx6/x86/lib/libc.so.3
#6  0xb034ea97 in _resmgr_handler ()
   from /usr/qnx650/target/qnx6/x86/lib/libc.so.3
#7  0xb0335ebd in _resmgr_msg_handler ()
   from /usr/qnx650/target/qnx6/x86/lib/libc.so.3
#8  0xb03350dd in _message_handler ()
   from /usr/qnx650/target/qnx6/x86/lib/libc.so.3
#9  0xb0333db8 in dispatch_handler ()
   from /usr/qnx650/target/qnx6/x86/lib/libc.so.3
#10 0x0804b8ea in main ()
(gdb)
7  Разработка / Программирование под QNX 4.x / Re: очистка текста в PtMultiText : Июня 09, 2017, 11:22:24 am
Кстати, действительно, получается

Ну вот, мы тут уже планы порабощения мировой IT-индустрии строили, а дело всё оказалось в пустой строке!...

Wink
8  Разработка / Программирование под QNX 4.x / Re: очистка текста в PtMultiText : Мая 17, 2017, 09:25:30 pm
А кто такой у вас "buffer2" ? Если это имя массива, то выражение "memset( &buffer2,0,sizeof(buffer2));" пытается обнулить указатель на массив. Иногда такое тоже нужно, но тут вы, скорее всего, имели в виду совсем другое ;-) .
9  Установка и настройка / Поддержка аппаратного обеспечения в QNX / PCIexpress мультипортовки для RS-485 : Марта 16, 2017, 04:55:57 pm
Приветствую!

Знатоки, подскажите, существуют ли в доступности мультипортовки RS-485 (4 или 8 портов) на шину PCIexpress? В свете наступающего заката PCI, нужно что-то новое подбирать взамен Moxa CP-138U-I (используем со стандартным devc-ser8250.so) .

Попробовали запустить их же CP-138E-A-I - не заработала. Похоже, драйвер ОС должен загрузить в FPGA-шку на её борту какую-то "прошивку", а стандартный devc-ser8250 этого не делает, и при попытке обмена всё повисает (прерывание не приходит ? ). На сайте Moxa соответствующего драйвера не видно.

Для плат Advantech (типа PCI-1602, PCI-1610) они раздают именно свой драйвер. Для новых PCIexpress плат PCIE-1612, PCIE-1622 совместимость с QNX нигде не упоминается, хотя есть надежда что тот же драйвер подойдёт. Но не факт.

Вот отсюда и вопрос: можете ли порекомендовать 100%-рабочие в QNX6.5.0 мультипортовки на PCIexpress на 4...8 портов, с максимальной степенью защиты и с гальванической развязкой?

Спасибо!
10  Общее / Общение / QNX жмвее всех живых?! : Февраля 12, 2017, 05:28:25 pm
А что ж это молчат-то все?

http://www.qnx.com/content/qnx/en/products/neutrino-rtos/sdp7.html

Цитировать
QNX Software Development Platform (SDP 7.0) includes the next generation 64-bit QNX® Neutrino® RTOS and the award-winning QNX® Momentics® Tool Suite. It provides a comprehensive, multi-level, policy-driven security model incorporating best-in-class security technologies from BlackBerry, which help guard against system malfunctions, malware and cyber security breaches.
11  Разработка / Встраиваемые системы / Re: Ошибка при создании образа системы : Июля 19, 2016, 12:04:48 pm
[offtopic]
Эхх, запилила бы QSSL официальную сборку для Raspberry / Orange / Banana PI, - глядишь, дела бы в гору пошли!...  Roll Eyes
[/offtopic]

Мечты, мечты...
12  Установка и настройка / Программное обеспечение / Применение "applypatch" в мирных целях : Февраля 24, 2016, 12:39:59 pm
Приветствую!

В связи с недавней официальной покупкой QNX 6.5, заинтересовался входящей в её штатный комплект утилитой "applypatch". Похоже, это уже готовое решение для передачи на удалённые филиалы комплектов обновлений, с минимальным вмешательством местного персонала.

Как я себе это вижу: Мы посылаем на филиал e-mail-ом архив .tar . Там местный слесарь кидает его в корень своей флешки, идёт к серверу, втыкает. Нажимает одну кнопку "Обновить!" в Shelf-е - и волшебным образом архив верифицируется, старые файлы бэкапятся, новые устанавливаются. В случае каких-либо проблем - нажимается другая кнопочка "Вернуть как було", и всё становится на свои места, а мы уже в своей берлоге тупим в код и соображаем что пошло не так.

Останавливает нас отсутствие документации по формату .tar-файла съедобного для applypatch. Вот, например, один из архивов похожего на валидный вида и состава эта утилита забраковала.

Кто-нибудь занимался этой темой? Есть ли какие подводные грабли? Или альтернативы? ;-)
13  Установка и настройка / Поддержка аппаратного обеспечения в QNX / Re: Raspberry Pi : Февраля 12, 2016, 10:39:34 am
Кстати, новость попалась:

http://swhwc.com/bussiness/products.html?lang=en

Цитировать
Embedded QNX for Raspberry PI

SHC offers embedded QNX on Paspberry PI. This is a very primitive BSP presently but capability can be expanded (to some degree) per user needs. Due to the lack of hardware manual from Broadcom, I heard no one wanted to develop QNX BSP for Raspberry Pi. Our Vietnamese engineer friends have gone through incredibly hard development without any hardware manual. They had to reverse engineer hardware spec from reference code. Now Broadcom and Avago merged we will see what happens to the documentation situation.

Raspberry Pi QNX 6.5.0 SP BSP setup manual Download

Raspberry Pi QNX 6.5.0 SP BSP Binary Download

You can download binary free.
Note: We have tested it with Raspberry PI Model B rev2 (c) 2011.12. It might not work with other version of Raspberry PI.
14  Разработка / Разработка графических приложений / Re: voyager : Октября 28, 2015, 10:21:59 am
QNX 6.3.2.  Хотим запустить Voyger из нашей программы для просмотра справки. Т.е. выхода в сеть не будет, просто открыть файл на диске.

Мне пришлось для этой же цели в качестве "сервера" использовать Мозиллу встроенную. Тормозит, зато работает.
15  Установка и настройка / Установка и настройка / Re: Установка qnx6 вместе с dos : Февраля 04, 2015, 09:57:19 am
А как встал такой вопрос. Зачем на одном компьютере столько ОС...

Ну, например, всякие старинные программы работали только под настоящей MS-DOS: программаторы, прошивальщики, анализаторы HDD... Для игр и Инета нужна Винда, а для работы - например, QNX ;-)
Страниц: [1] 2 3 ... 21