Использование драйверов FTDI D2XX с Python от Raspberry Pi на raspbian soft-float

У нас есть USB-устройство, контролируемое FTDI 'Драйверы D2XX. Это'В настоящее время он управляется с компьютера под управлением Windows через интерфейс Python, и в качестве забавного проекта я попытался перенести элемент управления на Raspberry Pi (примерно 1/10 стоимости ПК, не включая стоимость ОС).

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

Во-первых, проект требует:

Операционная система: я подобрал последнюю "свистящие» Raspbian (hard-float 2012-12-16) изRaspberry Pi веб-страница, Это включало Python.Драйверы FTDI D2XX поговорить с нашим устройством FTDI.Интерфейс Python для драйвера D2XX. я использовалPyUSBНаш скрипт на Python

Я скачал дистрибутив Wheezy и использовал Win32DiskImager для записи в 4ГБ SD-карта. Raspberry Pi загрузился без проблем. Затем я распаковал библиотеку D2XX (libftd2xx.so) и установил ее в./usr/local/lib

PyUSB (1.6) в настоящее время тестируется только под Windows, но они предоставляют исходный код. Это'Довольно просто собрать копию для Raspberry Pi. В основном, измените файл setup.py, чтобы он связывался с библиотекой libftd2xx.so (копировать ее не нужно). Также отредактируйте d2xx / _d2xx.c, чтобы закомментировать подпрограммы без реализации Linux (в настоящее время ftobj_Rescan, ftobj_Reload ftobj_GetComPortNumber). Скопируйте WinTypes.h и ftd2xx.h из каталога загрузки драйвера FTDI D2XX (в выпуске) в ftdi-win32 и запуститеpython setup.py install который скомпилирует и установит модуль Python.

Как только все это было сделано, я написал простой скрипт на Python для общения с чипом FTDI. Обратите внимание, что вам нужно запустить через sudo.

import d2xx
jd = d2xx.open(0)
pd = jd.eeRead()
print pd

Модуль d2xx не может найти файл libftd2xx.so. Итак, я настроил скрипт setup.py для ссылки на статическую копию библиотеки libftd2xx.a. Вуаля, у меня был первый ключ к решению проблемы: библиотека D2XX была построена с использованием soft-float, а мой дистрибутив Wheezy был настроен на использование регистров с плавающей запятой. То есть gcc в моей системе сгенерировал код, который был двоичным несовместимым с библиотеками D2XX и не позволял им связываться.

Чтобы это исправить я скачалсофт-поплавок "Debian"свистящие» распределение (2012-08-08) и написал в 4ГБ SD-карта. На этот раз образ не загрузится. Посмотрев вокруг, я нашел этополезный ответ, Короче говоря, естьпроблема с образом загрузки для soft-float, так что для некоторых плат Raspberry Pi он выиграл 'т загрузки. Решение состоит в том, чтобы заменить файл start.elf в дистрибутиве soft-float файлом, который работает, например. копия с расплавленного изображения Распбиана. К счастью, на SD-карте есть два раздела: FAT и ext3 (?). Загрузочный образ находится в разделе FAT, поэтому было довольно просто вставить жестко плавающую SD-карту в коробку Windows, скопировать файл start.elf, вставить мягкую плавающую SD-карту и обновить ее start.elf жестким -плавный. После этого Raspberry Pi загрузился без проблем.

После установки FTDI 'С драйверами D2XX и сборкой модуля Python d2xx из PyUSB я снова попробовал тестовый скрипт. Снова это не удалось. Модуль d2xx мог читать библиотеку libftd2xx.so без проблем, но по какой-то причине просто не мог общаться с устройством.

Ответы на вопрос(2)

Ваш ответ на вопрос