Просмотр сообщений
Страниц: [1] 2
1  Разработка / Программирование под QNX / Re: Блокировка на write() при ошибочной скорости посл.порта : Февраля 21, 2012, 05:57:57 pm
для таймеров всё ж лучше CLOCK_MONOTONIC использовать
Ок, на хабре оценил возможную проблему, которую он решает Wink
2  Разработка / Программирование под QNX / Re: Блокировка на write() при ошибочной скорости посл.порта : Февраля 16, 2012, 11:54:41 am
т.е. select тебе сказал, что дескриптор готов на запись, а он потом заблокировался по записи?
Да, select выполнился, но на записи всё равно потом заблокировался, хотя может я что-то не так сделал. В итоге сделал вот так:
Код:
event.sigev_notify = SIGEV_UNBLOCK;
timeout.tv_sec = w->time;
timeout.tv_nsec = 0;
timer_timeout( CLOCK_REALTIME, _NTO_TIMEOUT_SEND | _NTO_TIMEOUT_REPLY, &event, &timeout, NULL );
И все заработало, как планировал
3  Разработка / Программирование под QNX / Re: Блокировка на write() при ошибочной скорости посл.порта : Февраля 10, 2012, 11:02:17 am
Спасибо за помощь.

С select'ом не получилось, всё равно проскакивал и блокировался

TimerTimeout проблему решил, поэтому остановился на нем Cheesy
4  Разработка / Программирование под QNX / Блокировка на write() при ошибочной скорости посл.порта : Февраля 08, 2012, 12:44:47 pm
Привет всем

При работе с последовательным портом есть необходимость проверить его работу на различных скоростях. На корректных для порта режимах всё проходит без проблем. Но когда скорость выставляется не поддерживаемая, то вызов write() блокируется, хотя чтение можно завершить по простою через readcond().

Собственно вопрос, можно как-то задать параметры (при открытии порта или потом), чтобы при проблеме в записи возвращалось управление программе спустя какое-то время (например, write() возвращал бы 0 ), или это можно только сделать принудительным завершением потока, в который выделяется функционал записи?

Вот как открываю порт:
fd[0] = open ( parameters.port[0], O_RDWR | O_NOCTTY );

Вот как в потоке реализована запись
void *Serial_Write(void *write_arg)
{
   struct thread_data *w;

   w = (struct thread_data *) write_arg;
   printf("Going to write to port\n");
   if ( write(w->port_num, w->buf, w->lengh) == -1 )
   {
      perror("Test write error has occurred");
      pthread_exit((void*) 1);
   }
   printf("Written to port\n");

   pthread_exit(NULL);
}

Первое отладочное сообщение появляется, второе нет. Возможно через fcntl() можно что-то изменить. Помогите, знающие люди.
5  Разработка / Разработка графических приложений / Re: Приборная панель автомобиля : Марта 11, 2010, 12:57:59 am
подскажите пожалуйста, куда копать?
В сторону проекта QNX-CAR http://www.qnx.com/solutions/industries/automotive/ Smiley
6  Общее / Общение / Re: Лицензии QNX? : Декабря 05, 2009, 11:37:22 am
Ребята, что вы такой кипешь навели.
fbsd61, советую обратиться в СВД и напрячь их на прояснения Вашего вопроса непосредственно у QSS. Просто все, что тут сказано - чистые предположения, которые на деле могут быть совершенно иными. А после непосредственного запроса в QSS у вас будет письменное подтверждение возможности или невозможности реализации вашего проекта. Как говорится, за спрос денег не берут.
7  Установка и настройка / Установка и настройка / Re: shim или не shim : Сентября 04, 2009, 07:20:58 pm
Я устанавливал tcpdump из Photon'а. Для этого необходимо выбрать из меню Launch соответствующий пунк (сейчас не могу точно сказать, под рукой нет и делал один только раз)
Возможно пакет можно получить по этой ссылке http://www.qnx.com/download/feature.html?programid=9978
8  Установка и настройка / Установка и настройка / Re: shim или не shim : Сентября 04, 2009, 06:00:15 pm
yojik, то что ты называешь простой коммутатор все грамотные люди зовут хабом, и хаб сейчас довольно редкое устройство
Долго не мог вспомнить как называется, спасибо, что напомнил. Особо сетями не занимаюсь, поэтому институтский курс забывается потихоньку.

Относительно tcpdump. В 6.3.2 его нет. Какие-то замены существуют ?
Его можно доустановить из продуктов третьих сторон прямо из фотона в QNX.
9  Установка и настройка / Поддержка аппаратного обеспечения в QNX / Re: QNX 6.3.2 и второй HDD - как его увидеть??? : Сентября 03, 2009, 08:21:17 pm
Вставляем винт. Загружаемся в КуНэХа. Если в папке /fs не появилась папка с *qnx4*, то
набиваем "ls /dev", первый винт будет hd0 и его разделы hd0t77 или типа того(это qnx6.3.2). Второй винт, если других блочных устройств нет, будет hd1 и его разделы hd1t<цыфры>. Если разделы не определились, выполнить "mount -e /dev/hd1", должен появиться hd1t77 или hd1t78 или hd1t79. Теперь монтируем "mount /dev/hd1t7? /mnt" . Всё, файлы можно качать из папки /mnt.
В качестве носителя можно использовать флэху или, на худой конец, дискету. Вставляем носитель, flash-диск должен автоматом смонтироваться в /fs и иметь в названии *dos* (если диск уже размечен под fat). Теперь просто переносим необходимые объекты из /mnt в /fs/*dos*
10  Установка и настройка / Установка и настройка / Re: shim или не shim : Сентября 03, 2009, 07:53:07 pm
Да, ситуация  не такая уж простая. Возможо отключение происходит на логическом уровне при отключении кабеля. Но и это можно отследить: ставим tcpdump и указываем в параметрах запуска второй интерфейс на прослушку с отображением mac-адреса, теперь с удаленной машины пингуем его (и видим или не видим приходящие и уходящие пакеты), теперь ставим на прослушку первый интерфейс и опять пингуем второй. Если мое предположение верно, то пинги будут идти через первый интерфейс. Но для такого теста нужен коммутатор  с разрешением путей по mac'у, а не простой, который кидает все пакеты принятые по одному порту в остальные.
Такие заморочки, если требуется резервирование, используй qnet, если не нужно - разные подсети.
11  Установка и настройка / Установка и настройка / Re: shim или не shim : Сентября 03, 2009, 03:12:18 pm
Правильно ли я понимаю, что ситуация, описанная мною для 6.3.2 являлась "багом" ?
Я считаю, что это баг, и в 4.25 он вроде тоже существует.
Чтобы проверить это, необходимо настроить интерфейсы на работу в одной подсети. Далее физически отключаем второй интерфейс (кабель выдергиваем) и пингуем его адрес. Если баг есть, то пинги будут проходить, если нет, то моё предположение неверно.
12  Разработка / Встраиваемые системы / Re: ping между QNX и Windows : Сентября 02, 2009, 11:12:52 pm
А в образе точно не надо запускать pci-bios перед настройкой сетевой карточки (ну и seedres)?
13  Установка и настройка / Установка и настройка / Re: shim или не shim : Сентября 02, 2009, 11:06:58 pm
Имею комп с двумя сетевыми картами (одна встроенная, вторая - PCI), на которых подняты адреса в одной подсети.

В QNX 6.3.2 извне пингуются оба адреса, но при отключении основного (используемого в QNX по умолчанию) второй так же становится недоступен.
В QNX 6.4.1 пингуется ТОЛЬКО основной. Второго не видит вовсе. Хотя ifconfig такой же как и в варианте 6.3.2
Попробуй отключить второй интерфейс и попинговать его. Такое ощущение, что второй адрес, при назначении интерфейсов из одной подсети, пингуется через первый с помощью какого-то форворда. В 6.4.х, походу, поправили.

А теперь вопрос, может ли подобное различии в поведении пингов быть результатом работы драйвера через shim ?
Может бы кто уже сталкивался с какими-то ограничениями shim ?
Не замечал особых проблем. Более того, были ситуации когда сеть в упор не хотела заводиться с драйверами из 6.4 (devn и devnp), а перенесенный из 6.3.2 пахал.
14  Разработка / Встраиваемые системы / Re: ping между QNX и Windows : Сентября 01, 2009, 11:18:53 pm
А драйвер точно поддерживает данный контроллер. Просто была ситуация, когда драйвер и стек стартовали, а пинги не шли - патч драйвера помог. Кроме того можно глянуть в слогинфо, может там что-то появилось, также глянь nicinfo, может ошибки какие в передаче.
15  Разработка / Встраиваемые системы / Re: Можно ли узнать, с какого раздела загружается образ? : Августа 01, 2009, 12:23:58 am
Правильно ли я понял, что вы хотите, загрузившись, например, с первого раздела, иметь возможность примонтировать в корень этот же раздел, либо другие разделы? Если это так, то это возможно. Для этого просто создайте полноценные разделы и .diskboot при отработке должен спросить, какой раздел примонтировать (должен предлагаться список возможных для монтирования разделов, этот список формируется на основании разделов, содержащих файл .diskroot - http://www.qnx.com/developers/docs/6.4.1/neutrino/user_guide/starting.html#diskroot).

Проверить данное поведение можно, установив несколько версии qnx на один винт.
Страниц: [1] 2