реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Драйвер CP210x - управление GPIO, Как ими управлять в последней версии драйвера?
arhiv6
сообщение Jul 11 2018, 05:37
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 621
Регистрация: 21-05-10
Из: Томск
Пользователь №: 57 423



Добрый день.
Не редко в работе нужен USB-UART преобразователь с парой-тройкой gpio. Ранее использовал FTDI, но решил попробовать CP2102N. Пока выбирал - ориентировался на выложенные в сети примеры работы с gpio (гуглятся по cp210x_gpio_example2_linux.c или cp210x_gpio_example.c), там управление gpio делается через ioctl прямо в /dev/ttyUSB0 устройство. Только вот когда собрал плату, обнаружил, что в текущей версии драйвера отсутствует ioctl. Но зато есть какие-то свои функции (cp210x_gpio_*) для работы с gpio. Только я не могу понять - как к ним обратиться из пространства пользователя?
Может где-нибудь есть примеры управления gpio через этот драйвер?


--------------------
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jul 11 2018, 23:52
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 337
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(arhiv6 @ Jul 11 2018, 09:37) *
Добрый день.
Не редко в работе нужен USB-UART преобразователь с парой-тройкой gpio. Ранее использовал FTDI, но решил попробовать CP2102N. Пока выбирал - ориентировался на выложенные в сети примеры работы с gpio (гуглятся по cp210x_gpio_example2_linux.c или cp210x_gpio_example.c), там управление gpio делается через ioctl прямо в /dev/ttyUSB0 устройство. Только вот когда собрал плату, обнаружил, что в текущей версии драйвера отсутствует ioctl. Но зато есть какие-то свои функции (cp210x_gpio_*) для работы с gpio. Только я не могу понять - как к ним обратиться из пространства пользователя?
Может где-нибудь есть примеры управления gpio через этот драйвер?


Если у вас не старое ядро, то есть стандартный способ управлять ножками:
https://github.com/torvalds/linux/blob/mast.../gpio/sysfs.txt

Если не катит -- поищу исходники драйвера для управления ножками.
Go to the top of the page
 
+Quote Post
arhiv6
сообщение Jul 12 2018, 03:30
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 621
Регистрация: 21-05-10
Из: Томск
Пользователь №: 57 423



Система - десктопная Ubuntu, ядро 4.15, т.е. не старое. Управлять через sysfs не получается - при подключении CP2102N новый gpiochip в /sys/class/gpio/ не появляется. Через новомодный uapi - то же самое, новый gpiochip в /dev/ не появляется.


--------------------
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jul 12 2018, 03:44
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 337
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(arhiv6 @ Jul 12 2018, 07:30) *
Система - десктопная Ubuntu, ядро 4.15, т.е. не старое. Управлять через sysfs не получается - при подключении CP2102N новый gpiochip в /sys/class/gpio/ не появляется. Через новомодный uapi - то же самое, новый gpiochip в /dev/ не появляется.


Это только через драйвер получится. /sys/class/gpio/ только для своих ножек годится. А найти код драйвера CP2102N и посмотреть как там сделано не пробовали? Может что-то поменяли и надо как-то модифицировать запрос?
https://github.com/torvalds/linux/blob/mast...serial/cp210x.c

Вот ключевая структура, определяющая девайс:
struct cp210x_serial_private {
#ifdef CONFIG_GPIOLIB
struct gpio_chip gc;
u8 config;
u8 gpio_mode;
bool gpio_registered;
#endif
u8 partnum;
};

Проверьте если в ядре включено CONFIG_GPIOLIB. Тогда к GPIO доступ возможен. Если нет, то надо перекомпилировать драйвер, а возможно не только его.
Есть разные места, где это можно посмотреть. В разных системах бывают разные комбинации.
/proc/config.gz
/boot/config
/boot/config-$(uname -r)

В первом случае во такая команда распакует архив:
zcat /proc/config.gz > running.config

Возможно это имеет отношение:
https://lwn.net/Articles/574055/

http://www.armadeus.org/wiki/index.php?title=GPIOlib
Go to the top of the page
 
+Quote Post
Olej
сообщение Jul 12 2018, 08:16
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 350
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(arhiv6 @ Jul 12 2018, 06:30) *
Система - десктопная Ubuntu, ядро 4.15, т.е. не старое. Управлять через sysfs не получается - при подключении CP2102N новый gpiochip в /sys/class/gpio/ не появляется. Через новомодный uapi - то же самое, новый gpiochip в /dev/ не появляется.

А вы совершенно уверены, что "при подключении" нормально отрабатывается?
Что говорят dmesg, lsmod и т.д.?
Вообще то странно ... всякий производитель и всякое устройство обязаны поддерживать стандартный интерфейс GPIO.
Цитата(Tarbal @ Jul 12 2018, 02:52) *
Если у вас не старое ядро, то есть стандартный способ управлять ножками:
https://github.com/torvalds/linux/blob/mast.../gpio/sysfs.txt

Подробно, внятно и просто, на пальцах - описано здесь: Linux: кнопки, светодиоды и GPIO.

Go to the top of the page
 
+Quote Post
makc
сообщение Jul 12 2018, 09:00
Сообщение #6


Гуру
******

Группа: Админы
Сообщений: 3 592
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



У меня есть положительный опыт управления CP2103 с использованием libusb из userspace.
Вполне рабочая программа во вложении. Думаю, что обеспечить в ней поддержку для CP2102 особых проблем не составит.
Прикрепленные файлы
Прикрепленный файл  cp2103_gpio_20180712.1232.tar.xz ( 7.3 килобайт ) Кол-во скачиваний: 3
 


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
Olej
сообщение Jul 12 2018, 15:37
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 350
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(makc @ Jul 12 2018, 12:00) *
У меня есть положительный опыт управления CP2103 с использованием libusb из userspace.
Вполне рабочая программа во вложении. Думаю, что обеспечить в ней поддержку для CP2102 особых проблем не составит.

Я тоже использую CP2102/CP2103 (законченные устройства) в качестве конверторов USB-UART (например, в однопллатных SoC незаменимая вещь просматривать сообщения U-boot ... или вообще взаимодействовать с embedded устройства).

Но ТС называл устройство CP2102N (там этих CP2102N 3 или 4 штуки, с разными суффиксами, отличающиеся конструктивом и др.). А у этих там 3 (что ли) дискретных вывода GPIO, сверх канала USB-UART.
Конечно, это не GPIO вовсе, в смысле Linux GPIO, а ... чёрт знает что - самоделка на коленке ("дерибас" wink.gif ).
И поэтому всё, что с ним буде связано, будет обязательно проблематичным laughing.gif ... : реакция по выходу на такое ... "якобы-GPIO" будет ещё более-менее понятной, через ioctl() или libusb, но реакция по входу с таких "якобы-GPIO" (когда нужно бы реагировать на прерывания) - это вообще мрак.
Go to the top of the page
 
+Quote Post
Olej
сообщение Jul 13 2018, 08:16
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 350
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



В даташите CP2103 сказано:
Цитата
7. GPIO Pins
The CP2103 supports (4) user-configurable GPIO pins for status and control information. More information
regarding the configuration and usage of these pins can be found in “AN144: CP210x Customization Guide” and
“AN223: Port Configuration and GPIO for CP210x” available on the Silicon Laboratories website.

Смотрите там.
Но там же и вот такое ... сильно настораживающее предупреждение:
Цитата
10. USBXpress™ Direct Driver Support
The Silicon Laboratories USBXpress™ for CP210x Development Kit provides an alternate solution for interfacing
with CP2103 devices than using the Virtual COM port. No Serial Port protocol expertise is required. Instead, a
simple, high-level application program interface (API) is used to provide simpler CP2103 connectivity and
functionality.
The USBXpress for CP210x Development Kit includes Windows device drivers, Windows device driver installer
and uninstallers, and a host interface function library (host API) provided in the form of a Windows Dynamic Link
Library (DLL). The included device drivers and installation files support MS Windows 98SE/2000/XP.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2018 - 21:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.00965 секунд с 7
ELECTRONIX ©2004-2016