Перейти к содержанию
    

Как из пол линукса обратится красиво к портам PIO?

Линукс стоит на атмеловксом арме...пусть будет рм9200.

Как можно красиво обратится к портам pioa,piob,pioc? Ну там выставить единицу,ноль,настроить на ввод/вывод..

можно конеш через маппирование страницы..но может можно обращаться типа как к устройствам...(так же как к spi или tty)??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Линукс стоит на атмеловксом арме...пусть будет рм9200.

Как можно красиво обратится к портам pioa,piob,pioc? Ну там выставить единицу,ноль,настроить на ввод/вывод..

можно конеш через маппирование страницы..но может можно обращаться типа как к устройствам...(так же как к spi или tty)??

arch/arm/mach-at91/include/mach/gpio.h

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажи плз, а как достучатся до этих функций из своего приложения?

Например как здесь

linux/drivers/serial/atmel_serial.c

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Например как здесь

linux/drivers/serial/atmel_serial.c

 

не понял чет. это из ядра же. а из приложения своего ведь не вызвать допустим at91_set_gpio_value(AT91_PIN_PA21, 0)...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не понял чет. это из ядра же. а из приложения своего ведь не вызвать допустим at91_set_gpio_value(AT91_PIN_PA21, 0)...

А, в этом смысле. Извините, не понял.

Ну тогда два варианта.

1. Нормальный. Написать драйвер, использующий gpiolib (linux/drivers/gpio).

2. Не совсем нормальный, однако довольно часто используемый. http://svn.openmoko.org/developers/werner/poke/. Ну и, например, привести полученный указатель к указателю на структуру AT91PS_PIO (или как она там называется).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажи плз, а как достучатся до этих функций из своего приложения?

 

1) http://www.at91.com/samphpbb/viewtopic.php?p=13668

2) http://www.ipbx.ru/rm9200/gpio-RM9200.tar.gz

Думаю лучше один раз увидеть чем сто раз услышать :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

кстати как во второй програмке с установкой пина - были сообщения что неправильно устанавливается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

2. Не совсем нормальный, однако довольно часто используемый. http://svn.openmoko.org/developers/werner/poke/. Ну и, например, привести полученный указатель к указателю на структуру AT91PS_PIO (или как она там называется).

 

извиняюсь, но...

бр-бр, что то по этой ссылке даже намека на использование gpio нету, ссылка точно верна?

или я не так что то понял?

 

.

 

Линукс стоит на атмеловксом арме...пусть будет рм9200.

Как можно красиво обратится к портам pioa,piob,pioc? Ну там выставить единицу,ноль,настроить на ввод/вывод..

можно конеш через маппирование страницы..но может можно обращаться типа как к устройствам...(так же как к spi или tty)??

 

можно это сделать реализовав через модуль ядра, благо примеров достаточно в инете...

...

#include <asm/io.h>

#include <asm/arch/gpio.h>

...

at91_set_gpio_output(AT91_PIN_PC10, 1);

at91_set_gpio_output(AT91_PIN_PC10, 0);

...

 

да, понятие красоты обращения не стоит ставить на первое место, часто это зависит от необходимости...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Товарищи! Подскажите, пожалуйста, где раздобыть примеры по работе с gpiolib ??? И документацию читал, и примеры пытался разыскать, но в итоге нет четкого и совершенно определенного представления что как делать, например, как определить число доступных GPIO, как их "взять", задать направление... Вижу соответствующие функции, но не понимаю как _начать_ , как склеить все это воедино??? ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вариантов 2:

1. Собственно говоря вы лезете в исходники линукса и находите там сырцы под свой МК. С подключением сырцов пишите свой драйвер. И затем через него уже лезете к выводам порта.

2. Используете готовую либу GPIO (включив в ядре поддержку и пересобрав). Тут уже надо полазить по исходникам (или по /proc) и посмотреть какие функции экспортируются. А потом по ним обращаться.

 

Вариант со своим драйвером имеет + и -...

+ - разберетесь что и как

- - долго это :)

Почитайте книжку Linux Device Drivers - там все-все написано... особое внимание обратите на wmb()/rmb() иначе можно неплохо "втупить"...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...