LINUX.ORG.RU

cs5535 GPIO


0

0

имеется одноплатный компьютер advantech pcm-3353 (http://www.advantech.ru/products/AMD-LX800-PC-104-Plus-CPU-Module/mod_1-2JKGV...)

у него есть 8 бит GPIO. для этой железки собран линукс на базе buildroot. драйвера для GPIO включены в ядро и при загрузке пишет что всё OK. незнаю с какой стороны к этому GPIO подойти, доки в ядре мне мало что прояснили, примера ниодного ненашел. может у кого есть код рабочий или доки внятные ?

anonymous


ну в сущности модулем регистрируется символьное устройство, через которое посредством определённого формата сообщений можно читать/писать линии GPIO.

drivers/char/cs5535_gpio.c

// wbr

klalafuda ★☆☆
()

>незнаю с какой стороны к этому GPIO подойти, доки в ядре мне мало что прояснили, примера ниодного ненашел.

Как раз в доках ядра абсолютно внятно правда на английском все разложено по полочкам.
/путьк исходникам ядра/Documentation/gpio.txt

GPIO - General Purpose Input/Output - входы/выходы общего назначения.

Подключаешь в своей программе
#include <linux/gpio.h>

назначаешь выводам как он будет себя вести - как вход или выход
/* set as input or output, returning 0 or negative errno */
int gpio_direction_input(unsigned gpio);
int gpio_direction_output(unsigned gpio, int value);

и дергаешь их или читаешь соятояние
/* GPIO INPUT: return zero or nonzero */
int gpio_get_value(unsigned gpio);
/* GPIO OUTPUT */
void gpio_set_value(unsigned gpio, int value);

Для чего тебе это надо - ты уж сам решай :) Можешь статьи про микроконтроллеры почитать - проекты посмотреть, для чего их используют.

koTuk
()
Ответ на: комментарий от koTuk

Ну и еще в догонку - похоже через них можно процессор из сотояния sleep вывести и изменение сотояния может генерировать irq к тому же при настройке пина на ввод можно эмулировать открытый коллектор с подтягивающим резистором (с него будет читаться логическая единица если ничего не подключено - грубо говоря пин через резистор подключен Uпит)

koTuk
()
Ответ на: комментарий от koTuk

> Как раз в доках ядра абсолютно внятно правда на английском все разложено по полочкам. /путьк исходникам ядра/Documentation/gpio.txt

есть одно но: это внутриядерный интерфейс а топикастер AFAIU спрашивал что и как с ним делать из userland :)

// wbr


klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

Если честно - я так сразу даже не могу придумать зачем нужны порты ввода вывода из юзерспейс - разве что из гирлянды новогодней бегущие огни сделать:)

koTuk
()
Ответ на: комментарий от koTuk

> Если честно - я так сразу даже не могу придумать зачем нужны порты ввода вывода из юзерспейс - разве что из гирлянды новогодней бегущие огни сделать:)

ну можно бибикалку приделать если ball выведен на шину. или кнопку. или похерить обмен по LPC или SMB на 5535 если что-то сделано не так :)

ну а выведено оно на шину или нет - это уже нужно смотреть схему конкретной железки.

// wbr

klalafuda ★☆☆
()

спасибо за ответы. GPIO мне нужно именно для лампочем :) ну и еще туда зацеплены пару реле. это на выход. плюс через GPIO перемычками будет задаваться режим работы прибора. с электрической стороны проблем нет, всё известно, GPIO разведено на разьеме, туда уже всё подключено. мне надо научится работать с GPIO именно из userspace.

anonymous
()
Ответ на: комментарий от anonymous

> мне надо научится работать с GPIO именно из userspace.

тогда а) найдите, какое именно символьное устройство регистрируется для GPIO б) поковыряйте cs5535_gpio.c с целью выяснить формат чтения/записи в это устройство в) попробуйте..

// wbr

klalafuda ★☆☆
()

продолжение истории для тех кому интересно.
на шел вот такой пост (http://www.mydatabasesupport.com/forums/arch/348505-problem-amd-cs5536-gpios-...)

у меня всё точно также.
модуль грузится. девайсы сам создаю. могу читать. даже кое что писать могу. а вот состояние пинов на выход менять немогу.
причём интересно. в исходниках драйвера написано что пинов 32 штуки и что занятые пины маскируются.

/**
* Some GPIO pins
* 31-29,23 : reserved (always mask out)
* 28 : Power Button
* 26 : PME#
* 22-16 : LPC
* 14,15 : SMBus
* 9,8 : UART1
* 7 : PCI INTB
* 3,4 : UART2/DDC
* 2 : IDE_IRQ0
* 0 : PCI INTA
*
* If a mask was not specified, be conservative and only allow:
* 1,2,5,6,10-13,24,25,27
*/

mask = 0x0b003c66;

на плате разведены только 8, вот и разберись какие это пины из 32...

пишу маляву адвантехам. но надежды мало :)

anonymous
()
Ответ на: комментарий от klalafuda

В этом мануале распиновка разъема описана. Конечно там контакты по порядку идут, или вы имели ввиду что адвантехи развели на разъем 8 первых GPIO по порядку , 4 из которых заведомо заняты под системные ? Или я что то не понимаю ?

anonymous
()
Ответ на: комментарий от anonymous

> В этом мануале распиновка разъема описана. Конечно там контакты по порядку идут, или вы имели ввиду что адвантехи развели на разъем 8 первых GPIO по порядку , 4 из которых заведомо заняты под системные ? Или я что то не понимаю ?

ну если судить по их мануалу и маркировке, то сказано чёрным по белому "GPIO 0..3 и GPIO 4..7". поскольку ничего другого не сказано, было бы логично предположить, что нумерация GPIO на плате совпадает с соотв. balls бо иначе угадать, какие именно это GPIO с точки зрения Geode не представляется возможным.

другое дело, что выводить системные GPIO - это действительно несколько странно.

в общем, как водится, адвантех опять сделал кривую доку :-/

// wbr

klalafuda ★☆☆
()

Буквально пару месяцев назад ковыряли GPIO на такой-же плате. В итоге забили и перепаяли лампочки на LPT ;) Если у тебя что-нибудь получится, обязательно отпишись.

anonymous
()
Ответ на: комментарий от anonymous

В догонку. Я менял маску и получилось даже плату на перезагрузку отправить с помощью GPIO, но вот дальше ума не хватило...

anonymous
()
26 июня 2008 г.

Прошу прощения, что не по теме, но животрепещущий вопрос. Просто как к человеку с "живой" платой в руках - на обороте платы разъёмы pc/104 проходные?(штыри длинные?) Что-то никто мне пока толком на этот вопрос ответить не смог... из продавцов, по крайней мере. А на картинках и в мануале на обратной стороне эти разъёмы как-то проигнорированы - отсюда и сомнения:)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.