ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: Cириус270 и ftdi FT245RL  (Прочитано 4943 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

pav2000

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 12
Cириус270 и ftdi FT245RL
« : 11 Марта, 2011, 20:44:28 »

Есть устройство (датчик) с usb который реализован на FT245RL
Это устройство гонит поток данных около 1.8 мбита/cek.
Под это устройство написана программа  для ПК по винды, и оно работает.
Под 2.6.35-27-generic-pae #48-Ubuntu SMP написана тестовая программа на qt которая тоже работает. загрузка на 1.7 Ггц процессоре составляет около 7 процентов.
После кросс компиляции этой программы для Cириус270 полученная программа загружается на целевой платформе, и не работает.
Считывает небольшой фрагмент данных с устройства и все, больше данные не читаются. Скорость чтения около 500 байт в секунду.
На Cириус270 загружены соответствующие модули usbseril и ftdi_sio, появляется необходимое устройство /dev/ttyUSB0  все вроде ok

Для драйвера ftdi нет необходимости установки скорости, от самостоятельно ее регулирует.
Подозрителен такой момент на ядре 2.6.35-27 (ПК) я могу установить скорость до 3 000 000 Мбит командой
stty speed 3000000 < /dev/ttyUSB0
На Cириусe270 (ядро 2.6.22.19) мне выдается сообщение что неправилен аргумент, и удается установить скорость только до 460800.

Действительно ядро 2.6.22.19 не поддерживает такие большие скорости для  ftdi?
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Cириус270 и ftdi FT245RL
« Ответ #1 : 13 Марта, 2011, 12:55:04 »

Проще обновить ftdi_sio или перейти на новое ядро с новым ftdi_sio. На следующей неделе постараюсь выложить патч для linux-2.6.35.7 с ftdi_sio v1.6.0
Записан

pav2000

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 12
Re: Cириус270 и ftdi FT245RL
« Ответ #2 : 13 Марта, 2011, 14:16:23 »

"На следующей неделе постараюсь выложить патч для linux-2.6.35.7 с ftdi_sio v1.6.0"

Буду с нетерпением ждать, работа из-за ftdi FT245RL остановилась.
У нас основные датчики цепляются через ftdi FT245RL.
Записан

pav2000

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 12
Re: Cириус270 и ftdi FT245RL
« Ответ #3 : 06 Апреля, 2011, 15:31:17 »

Над решением вышеизложенной проблемы бился около недели:

Попробовал собрать новое ядро, пробовал 2.6.34.1, 2.6.35.7, 2.6.35.28. Ядра собирались, но не было поддержки всей перефирии, но поддержка USB была (можно было пробовать).
На новых ядрах наблюдалась таже картина. На больших скоростях, происходит сбой.
Причем получается так, что при этом сбое Тион270 начинает отсылать в датчик данные (хотя я не посылаю). Проблема скорее всего в драйвере последовательного порта (usbserial) он "захлебывается" и входной буфер налезает на выходной и происходит отсылка того что пришло, отсюда и ошибки.
Есть подозрение что все будет работать до скорости 460800.

Также нашел патч busybox stty, который позволяет устанавливать скорость терминала до 4000000 бит, но и это не помогло. 

При поиске иных способов взаимодействия с микросхемами ftdi нашел библиотеку libftdi.
При ее использовании у меня все получилось. Датчик работает на нужной скорости, пропусков данных нет, ошибок не возникает.
На сколько я понял эта библиотека напрямую общается с usbcore без ftdi_sio и usbserial  и предоставляет свой интерфейс к данным ftdi.
Привожу ссылку на библиотеку: http://www.intra2net.com/en/developer/libftdi/download/libftdi-0.18.tar.gz
Описание библиотеки нет, но есть пяток простых примеров, и заголовочный файл, легко можно разобраться.
Я не заморачивался с кросс компиляцей библиотеки, а просто включил исходники (два файла) в свой QT проект.
Еще один момент, libftdi использует libusb, по этому она должна быть в системе (в buildroot она есть, надо просто указать что надо ее включать в КФС). Вот вроде и все.

Для меня вопрос с FTDI разрешился -)).

Выкладываю патч для stty.
« Последнее редактирование: 06 Апреля, 2011, 15:55:37 от pav2000 »
Записан