Не всё ясно было пошагово именно в Линукс, в результате выяснения появился этот текст.
Первым делом изменяем pid на стандартный от производителя моста, как указано в "Изменение PID usb.oscill"
Далее в системе должны быть установлены wine и cabextract
Подключаем usb.oscill к порту usb и в терминале в ответ на команду:
dmesg
Наблюдаем подобный вывод: ... usb 1-1: new full speed USB device using uhci_hcd and address 4 usb 1-1: configuration #1 chosen from 1 choice cp2101 1-1:1.0: cp2101 converter detected usb 1-1: reset full speed USB device using uhci_hcd and address 4 usb 1-1: cp2101 converter now attached to ttyUSB0
Видим, что чип cp210x определился, подхвачен драйвером и ему назначено устройство ttyUSB0
В дистрибутивах на ядрах 2.6.х драйвер входит в стандартный набор (на более старых ядрах - не интересовался)
Если wine ещё ни разу не запускался, то просто даём команду
wine
В результате в домашнем каталоге будут созданы необходимые wine подкаталоги и файлы.
Далее выясним есть ли уже назначенные wine com порты: ls $HOME/.wine/dosdevices . .. c: com1 com2 com3 com4 d: e: lpt1 lpt2 lpt3 lpt4 unc
Если уже есть, как в приведённом выше выводе, создадим свой дополнительный симлинк:
Работает как текущая версия 1.2.7, так и текущая бета 1.3.4
Сам осциллограф, приборы, вывод осциллограмм в bmp, gif, animated gif, в рекордере - запись и воспроизведение осциллограмм. При выводе в jpeg - вылетает ошибка. Ввиду отсутствия необходимости не разбирался.
Проверено в:
Ubuntu 9.04 ядро 2.6.28-19-generic версия wine 1.0.1 группа-владелец ttyUSBx dialout
ALD 4.1.1 ядро 2.6.25-std-def-alt8.M41.1 версия wine 1.0.9 группа-владелец ttyUSBx uucp
Simply Linux 5.0.1 ядро 2.6.30-std-def-alt15 версия wine 1.1.44 группа-владелец ttyUSBx uucp
На старом liveCD Knoppix 3.4 ПО начинает запускаться, но падает. Видимо из-за wine версии 0.9.х
Спасибо за такое подробное описание. Библиотека msvbvm50 есть в Windows начиная с 98, также она поставляется на диске, и можно скачать с нашей страницы загрузки ПО.
судя по скриншоту - скорость 115200. Интересно, можно ли при таком пробросе порта получить 921600? Хотя, 115200 - тоже можно комфортно работать. Правда, FPS тут маленький - чтобы проверить максимум FPS, нужно от дефолтных настроек: - отключить Auto в триггере - установить пиковый режим - установить 10us/div - установить свободную развертку (кнопка F) - в Display-Show time уменьшить простой процессора до 5мс/кадр.
во, хоть кто то для линукса написал. надо добавить туда, в раздел
Ну тут несколько сумбурно, если причесать немного. И с доустановкой в wine недостающего, видимо зависит от дистрибутивной сборки. Общий алгоритм такой - запускаем из терминала, смотрим на что жалуется. Потом смотрим, что получилось. Например без native_oleaut32 вроде работает, но нет сетки на экране осциллографа. В Убунте сетка и родной курсор появились сразу, видимо там настройки wine по умолчанию другие, чем в Альте.
а ты скорость порта не настраивал?
Скорость 115200 поднялась драйвером сразу. stty показывает.
Спасибо за такое подробное описание. Библиотека msvbvm50 есть в Windows начиная с 98, также она поставляется на диске, и можно скачать с нашей страницы загрузки ПО.
Хотелось подключить осциллограф к своему нетбуку. Разобрался и описал, может ещё кому полезно будет.
Oscill wrote:
судя по скриншоту - скорость 115200. Интересно, можно ли при таком пробросе порта получить 921600? Хотя, 115200 - тоже можно комфортно работать. Правда, FPS тут маленький - чтобы проверить максимум FPS, нужно от дефолтных настроек: - отключить Auto в триггере - установить пиковый режим - установить 10us/div - установить свободную развертку (кнопка F) - в Display-Show time уменьшить простой процессора до 5мс/кадр.
Установил этот режим. На машине с ALD 4.1.1 / E2160 1,80GHz - 13-14 fps. На нетбуке с Simply Linux 5.0.1 / Атом 1,6GHz - 10 fps.
При реальной работе на нетбуке 3-6-8 fps, на мой взгляд вполне приемлемо. А сколько fps должно получиться исходя из скорости порта 115200?
Скорость пробовал изменять, как в настройках подключения osclink отдельно, так и с предустановкой через системную команду stty совместно с osclink - не может установить коннект. Возможно 115200 прибито в драйвере, хотя на установки stty не жалуется и рапортует, что скорость изменена. Но проверить, так ли это, не на чем.
Установил этот режим. На машине с ALD 4.1.1 / E2160 1,80GHz - 13-14 fps. На нетбуке с Simply Linux 5.0.1 / Атом 1,6GHz - 10 fps. При реальной работе на нетбуке 3-6-8 fps, на мой взгляд вполне приемлемо.
маловато. Вернее, работать можно, но судя по низкому FPS при 5мс зазоре между кадрами - остальным приложениям остаётся мало времени. Какая загрузка процессора при этом? Зависит ли она (а также FPS) от настройки Show Time ?
K. wrote:
А сколько fps должно получиться исходя из скорости порта 115200?
40-60 FPS начиная с PIII/Celeron 1000. При 921600 - до 90 FPS, но не на всех машинах. Например, ноутбук Центрино 1,5МГц даёт 90FPS, а 4ядерный AMD 3100МГц - только 62FPS. То есть, дело в чипсете ПК (и его драйверах). На таких больших FPS уже играет роль кадровый принцип действия USB, то есть время законного простоя пакета в буферах приема-передачи становится сопоставимым с обработкой в осцилле и в оболочке.
Установил этот режим. На машине с ALD 4.1.1 / E2160 1,80GHz - 13-14 fps. На нетбуке с Simply Linux 5.0.1 / Атом 1,6GHz - 10 fps. При реальной работе на нетбуке 3-6-8 fps, на мой взгляд вполне приемлемо.
маловато. Вернее, работать можно, но судя по низкому FPS при 5мс зазоре между кадрами - остальным приложениям остаётся мало времени. Какая загрузка процессора при этом? Зависит ли она (а также FPS) от настройки Show Time ?
Сегодня ещё посмотрел. FPS от установки Show Time 50 и меньше не изменяется. Загрузка процессорного времени: на Е2160 - 8-9% на Атоме, если принять его за два ядра - порядка 20%, на одно "гипертрейдинговое ядро" - 35-40%
Ещё обнаружилось - в wine 1.0.9 oscill вызывает утечку памяти. Замена на версию 1.1.13 всё поправила. Насчёт 1.0.9 были сообщения, что в некоторых приложениях "течёт".
Ещё со сменой pid есть нюанс. setpid меняет pid на стандартный, после этого у меня он oscill не увидел, с VCP драйверами с сайта силабс. Силабсовская утилита по прошивке vid/pid видит. Подменой CP210xManufacturing.dll setpid "прозревает" и даёт вернуть pid к исходному состоянию. При этом силабсовская утилита перестаёт видеть устройство. При подкладывании, в свою очередь, ей dll из упаковки setpid она oscill видит.
Сегодня ещё посмотрел. FPS от установки Show Time 50 и меньше не изменяется.
наверное, в этом и причина - кванты времени win-приложению отдаются иначе, чем в нативной Windows.
K. wrote:
Загрузка процессорного времени: на Е2160 - 8-9% на Атоме, если принять его за два ядра - порядка 20%, на одно "гипертрейдинговое ядро" - 35-40%
а может, в этом эмуляторе где-то задается выделение процессорного времени?
Они пишут, что wine не эмулятор. Он(о) транслирует вызовы к системным dll Win в системные вызовы Линукс, посредством своих библиотек. Т.е. в отличие от виртмашин производительность не регулируется и приложения работают в системе на равных с другими. Пишут, что в большинстве случаев это не приводит к снижению производительности, а иногда и наоборот, что-то работает быстрее. http://wiki.winehq.org/FAQ#head-c9e6502 … 757a6738e3 1.3. Is Wine an emulator? There seems to be disagreement.
А можно узнать список системных dll, к которым обращается оболочка oscill? Возможно подкладыванием нужной dll-ки производительность улучшится. Может низкий FPS связан с низким быстродействием в отрисовке графики?
приложения работают в системе на равных с другими.
они-то работают, но Windows/Linux переключают задачи через интервалы времени. Даже в разных Windows эти интервалы разные. Оболочка Oscill-а после каждого цикла "запрос-оцифровка-ответ-рисование" отдаёт управление операционной системе, и в следующий раз получает управление через 10 миллисекунд (Win XP). Вот это и есть ограничение - если система реже переключает задачи, то возможность посылки след запроса наступит позже, хотя процессор простаивает. В принципе, обойти это можно, в след версии кое-что сделаем.
K. wrote:
Может низкий FPS связан с низким быстродействием в отрисовке графики?
чтобы проверить это предположение, нужно: 1) вызвать управление соединением (Link-Setup), и в нем включить счетчик пакетов/сек (OBEX - PPS meter) 2) включить трансляцию пакетов в буфер обмена (File - Export to clipboard) 3) свернуть окно осциллографа при этом, измеритель FPS остановится (поскольку приходящие пакеты будут направляться только в буфер обмена, но не в рисование/измерители), а PPS продолжит показывать частоту обмена.
Хотя, если б кушала графика - загрузка процессора была бы выше.
Может низкий FPS связан с низким быстродействием в отрисовке графики?
чтобы проверить это предположение, нужно: 1) вызвать управление соединением (Link-Setup), и в нем включить счетчик пакетов/сек (OBEX - PPS meter) 2) включить трансляцию пакетов в буфер обмена (File - Export to clipboard) 3) свернуть окно осциллографа при этом, измеритель FPS остановится (поскольку приходящие пакеты будут направляться только в буфер обмена, но не в рисование/измерители), а PPS продолжит показывать частоту обмена.
Хотя, если б кушала графика - загрузка процессора была бы выше.
Ага, с такими установками на обеих системах PPS поднялся до одинакового значения - 17. Можно подозревать, что дело в скорости обмена с портом?
Можно подозревать, что дело в скорости обмена с портом?
да, причем даже не в скорости на порте (115200 - достаточно для 40FPS), а в задержках linux - Wine - oscilink.dll . Сейчас будет версия, которая в File-System Info показывает разрешающую способность системного таймера. Например, W2K/WXP на одном ядре - 10мс (вот поэтому и FPS=90), Seven на 4х ядрах - 15мс (и FPS тут 62), на win98 измерить не удалось, но есть информация про 55мс.
Можно подозревать, что дело в скорости обмена с портом?
да, причем даже не в скорости на порте (115200 - достаточно для 40FPS), а в задержках linux - Wine - oscilink.dll . Сейчас будет версия, которая в File-System Info показывает разрешающую способность системного таймера. Например, W2K/WXP на одном ядре - 10мс (вот поэтому и FPS=90), Seven на 4х ядрах - 15мс (и FPS тут 62), на win98 измерить не удалось, но есть информация про 55мс.
Сегодня таки пришло в голову посмотреть собственно на сигнальные линии USB. Судя по ширине бита - честно 115200. Пакеты идут без перерывов. Разрешение системного таймера в ядре Линукса определяется при сборке ядра. Пишут, раньше стандартным значением было 250Гц, в новых ядрах должно быть 1000Гц. Видимо ограничение именно во взаимодействии ядро - wine - программа.
Hi All! Спасибо за ценную информацию На Ubuntu 10.04 поставил согласно инструкции - работает,но FPS = 8,команда: stty -F /dev/ttyUSB0 speed выдает скорость 57600. Второй системой у меня стоит WinXP. Здесь FPS = 48 В меню Link-Setup-Speed галочки стоят на 9600 и 115200,в WinXP 9600 и 921600 соответственно Что ему не хватает,можно ли увеличить скорость? Спасибо!
Hi All! Спасибо за ценную информацию На Ubuntu 10.04 поставил согласно инструкции - работает,но FPS = 8,команда: stty -F /dev/ttyUSB0 speed выдает скорость 57600. Второй системой у меня стоит WinXP. Здесь FPS = 48 В меню Link-Setup-Speed галочки стоят на 9600 и 115200,в WinXP 9600 и 921600 соответственно Что ему не хватает,можно ли увеличить скорость? Спасибо!
Пока есть большие подозрения, что FPS ограничивается в связке ядро-wine-программа.
Oscill wrote:
K. wrote:
Можно подозревать, что дело в скорости обмена с портом?
да, причем даже не в скорости на порте (115200 - достаточно для 40FPS), а в задержках linux - Wine - oscilink.dll
скорость в порту можно изменить командой stty -F /dev/ttyUSB0 115200
драйвер на stty -F /dev/ttyUSB0 отрапортует уже о новой скорости, но у меня не получилось запустить oscilink на скорости отличной, от поднявшейся по умолчанию. Сам я, просто пользователь линукса и компетентно помочь разработчикам не могу.
Механизм трансляции COM-порта не ясен. Вполне может быть, что эта настройка скорости в Linux играет ту же роль, что и настройка скорости COM-порта в панели управления Windows, то есть - никакую: в Windows стоит 9600, а в реальности порт работает на заказанной приложением скорости.
Перед экспериментами с настройками лучше обновить прошивку до 1.26 (будет автоопределение скорости oscill-ом) и убрать галочку со Start on 9600. Для чистоты эксперимента - перед каждым нажатием "Connect" кратковременно отключать oscill от USB, поскольку автоопределение скорости только в начале.
Сейчас готовится версия oscilink.dll, работающая не только по таймеру (который в Wine может быть загрублен), но и по событию прихода пакета. В Windows удалось получить FPS за сотню, хотя смысла в таком большом FPS уже нет - он достижим только на быстрых развертках, а на миллисекундах FPS начинает ограничиваться длительностью развертки.
А нельзя ли на основе oscilink.dll написать утилитку, которая бы расширенно показывала, что ей показывает и отдаёт система и, инициировав обмен с осциллографом, просто отправляла поток данных в null, при этом индицируя, что обмен идёт штатным образом? Я бы позапускал. Подумалось checkit какой попробовать позапускать и посмотреть, что ему видно, но со штатной библиотекой обмена было бы правильнее.
скорость в порту можно изменить командой stty -F /dev/ttyUSB0 115200
драйвер на stty -F /dev/ttyUSB0 отрапортует уже о новой скорости, но у меня не получилось запустить oscilink на скорости отличной, от поднявшейся по умолчанию.
Скорость в порту я увеличил,но бесполезно Галочка стает на 115200,а FPS=8-9 PS:У меня FirmWare = 1.26,HardWare=1.23 - это правильно?
А нельзя ли на основе oscilink.dll написать утилитку, которая бы расширенно показывала, что ей показывает и отдаёт система
характеристики порта система не показывает - приложение вслепую настраивает и открывает порт, может только получить ошибку, если открыть не удается. В реестре и панели управления Windows тоже информации о макс.скорости порта нет.
Но мне представляется, что дело не в скорости порта, а в выдаче от Linux+Wine нашему приложению квантов времени. Если кванты выдаются редко - то и пакеты будут приниматься от oscill редко.
А нельзя ли на основе oscilink.dll написать утилитку, которая бы расширенно показывала, что ей показывает и отдаёт система
характеристики порта система не показывает - приложение вслепую настраивает и открывает порт, может только получить ошибку, если открыть не удается. В реестре и панели управления Windows тоже информации о макс.скорости порта нет.
Но мне представляется, что дело не в скорости порта, а в выдаче от Linux+Wine нашему приложению квантов времени. Если кванты выдаются редко - то и пакеты будут приниматься от oscill редко.
Запускал я её ещё раньше. При нескольких последовательных запусках она получает всё увеличивающиеся значения, начиная от 6.558 мс, при этом min 420.139 max 340.420.
скорость в порту можно изменить командой stty -F /dev/ttyUSB0 115200
драйвер на stty -F /dev/ttyUSB0 отрапортует уже о новой скорости, но у меня не получилось запустить oscilink на скорости отличной, от поднявшейся по умолчанию.
Скорость в порту я увеличил,но бесполезно Галочка стает на 115200,а FPS=8-9 PS:У меня FirmWare = 1.26,HardWare=1.23 - это правильно?
Ненастраиваемость скорости порта возможно из-за версии драйвера.
У меня при подключении осциллографа последняя строчка в выводе dmesg drivers/usb/serial/cp2101.c: Silicon Labs CP2101/CP2102 RS232 serial adaptor driver v0.07
На сайте Силабс предлагается драйвер версии 3.0, но предложенная схема сборки под линукс не годится для Убунту. Т.е. если есть опыт сборки программ в линуксе, то, я так понимаю, можно просто поправить там макросы и собрать драйвер. Я пока в сборке не силён.