ЗАО «ЗЭО»

Техническая поддержка пользователей => Тион-Про28, Орион28 => Тема начата: Сергей 16 RUS от 21 Ноября, 2012, 18:58:03

Название: GPIO
Отправлено: Сергей 16 RUS от 21 Ноября, 2012, 18:58:03
Доброго времени суток.
Изучаем Тион-Про28. Пробую работать с GPIO через Ваш драйвер.
Навскидку прибежавшись по портам (DeviceIoControl) от 0 до 128 удалось задействовать только 6 портов и только на Х22.
Остальные порты остаются неизменны. Это недоработка драйвера или же все таки есть какие то ньюансы при работе с данной платой.
Название: Re: GPIO
Отправлено: Danila от 23 Ноября, 2012, 20:49:59
Порт может быть занят под какую-то другую функцию. Приведите пример порта, который не получается использовать
Название: Re: GPIO
Отправлено: Сергей 16 RUS от 26 Ноября, 2012, 13:51:01
(http://www.tehsmart.ru/2.jpg)
Пожалуйста, черными точками отмечены порты которые отреагировали на запрос, и по какому номеру порта порт откликнулся.
Все остальные молчат.
Название: Re: GPIO
Отправлено: Danila от 26 Ноября, 2012, 15:19:59
Проверил порты 50 и 52 (вывод 7 и 9) с помощью примера работы с GPIO, который выложен у нас на сайте (http://www.zao-zeo.ru/dokuwiki/doku.php/wince-dev). При установке "Направление->Выход" и "Альт.Функция->GPIO" напряжение на ножке разъема меняется в зависимости от состояния порта.
Название: Re: GPIO
Отправлено: Day от 01 Апреля, 2013, 10:05:59
Может кто нибудь кинет где можно почитать инфу по работе с GPIO именно imx28 под Linux, или пример инициализации и обращения к ним???
Название: Re: GPIO
Отправлено: Danila от 01 Апреля, 2013, 12:08:38
Почитать про работу с GPIO можно в документации Linux - Documentation/gpio.txt.
А также в документе "i.MX28_Linux_BSP_RM.pdf" раздел "3.4 Pin Multiplexing".
Название: Re: GPIO
Отправлено: Day от 10 Апреля, 2013, 12:51:28
В общем с GPIO под Linux так и не разобрался. Так и не понял какие библиотеки подключать и какие функции использовать. Всё в общих чертах в доке. Может у кого нить есть простенький пример работы с GPIO на ввод\вывод???
Название: Re: GPIO
Отправлено: Danila от 15 Апреля, 2013, 14:30:40
Постараюсь добавить информацию по работе с GPIO в близжайшее время.
Название: Re: GPIO
Отправлено: Danila от 24 Апреля, 2013, 21:07:55
Для работы с GPIO можно использовать следующий способ:

Например, для GPIO4_20:
echo 148 > /sys/class/gpio/export

далее задаем направление порта:
echo out > /sys/class/gpio/gpio148/direction

и устанавливаем выходное значение:
echo 1 > /sys/class/gpio/gpio148/value

Для использования этого способа необходимо обновить образ Linux на последний.
Название: Re: GPIO
Отправлено: Day от 25 Апреля, 2013, 10:43:41
Да ))) Теперь есть поддержка работы с GPIO через файлы. Сразу следующий вопрос -> "Как определить номер GPIO для экспорта, зная номер порта и номер пина???".
Название: Re: GPIO
Отправлено: Day от 25 Апреля, 2013, 13:20:09
а всё разобрался.
просто от 0 и в банке по 32 пина (0 банк считается)
к примеру
-------------
1 банк
32+номер пина
-------------
4 банк
128 + номер пина
--------------
как у вас в примере 4 банк =128 + 20 пин = 148
Название: Re: GPIO
Отправлено: Danila от 25 Апреля, 2013, 16:54:44
Да, все верно. Номер банка умножаем на 32 и прибавляем номер пина в банке.
Название: Re: GPIO
Отправлено: OlegSL от 08 Ноября, 2013, 20:29:40
Возможно мой вопрос не очень компетентный, только начинаю работать с embedded устройствами. А как переключить режим Pin Multiplexing в Linux? Скажем для Beagleboard платы можно сделать с помощью манипулировавшем файлов в /sys/kernel/debug (http://youtu.be/SaIpz00lE84?t=7m26s), а как это можно сделать в Tion?
Название: Re: GPIO
Отправлено: Danila от 11 Ноября, 2013, 12:16:56
Можно установить режим работы вывода в GPIO. Это можно сделать разными способами, подробно описано в документации Linux: Documenentation\gpio.txt.

Включить другой режим, не GPIO, простым способом вряд ли получится, т.к. помимо включения альтернативной функции, необходима еще поддержка драйвера той функции, которую включаете.

Я вижу такие варианты:
1. Включить нужную функцию вывода в исходниках ОС и пересобрать образ.
2. Написать драйвер, и в нем установить нужную функцию.
3. Обращаться к регистрам процессора с помощью ioremap.

Возможно есть и другие способы.
Название: Re: GPIO
Отправлено: plonti от 28 Августа, 2014, 15:39:45
А как получить доступ к GPIO, допустим на разъеме X19?
В "Назначении контактов" у данных пинов - четвертый банк, т.е. номер gpio должен быть 128 + X.
Но в тестовом примере есть код:

if ((uGPIO>128)||(uGPIO<0)){
    MessageBox(L"Неверно указан номер порта",L"Ошибка",MB_OK);
    return;
}

Соответственно при попытке доступа будет выкидыться ошибка.
Или такое ограничение только в GPIO_test заложено?

UPD: набросал пробную программу, да, действительно, в драйвер можно передавать значения > 128, вопрос снят.