Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как из пол линукса обратится красиво к портам PIO?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
neiro80
Линукс стоит на атмеловксом арме...пусть будет рм9200.
Как можно красиво обратится к портам pioa,piob,pioc? Ну там выставить единицу,ноль,настроить на ввод/вывод..
можно конеш через маппирование страницы..но может можно обращаться типа как к устройствам...(так же как к spi или tty)??
Ivan_Kov
Пишите красивый драйвер - и красиво обращайтесь
amw
Цитата(neiro80 @ Jan 14 2009, 11:16) *
Линукс стоит на атмеловксом арме...пусть будет рм9200.
Как можно красиво обратится к портам pioa,piob,pioc? Ну там выставить единицу,ноль,настроить на ввод/вывод..
можно конеш через маппирование страницы..но может можно обращаться типа как к устройствам...(так же как к spi или tty)??

arch/arm/mach-at91/include/mach/gpio.h
neiro80
Скажи плз, а как достучатся до этих функций из своего приложения?
amw
Цитата(neiro80 @ Jan 14 2009, 15:15) *
Скажи плз, а как достучатся до этих функций из своего приложения?

Например как здесь
linux/drivers/serial/atmel_serial.c
neiro80
Цитата(amw @ Jan 14 2009, 16:26) *
Например как здесь
linux/drivers/serial/atmel_serial.c


не понял чет. это из ядра же. а из приложения своего ведь не вызвать допустим at91_set_gpio_value(AT91_PIN_PA21, 0)...
amw
Цитата(neiro80 @ Jan 14 2009, 15:38) *
не понял чет. это из ядра же. а из приложения своего ведь не вызвать допустим at91_set_gpio_value(AT91_PIN_PA21, 0)...

А, в этом смысле. Извините, не понял.
Ну тогда два варианта.
1. Нормальный. Написать драйвер, использующий gpiolib (linux/drivers/gpio).
2. Не совсем нормальный, однако довольно часто используемый. http://svn.openmoko.org/developers/werner/poke/. Ну и, например, привести полученный указатель к указателю на структуру AT91PS_PIO (или как она там называется).
sasamy
Цитата(neiro80 @ Jan 14 2009, 16:15) *
Скажи плз, а как достучатся до этих функций из своего приложения?


1) http://www.at91.com/samphpbb/viewtopic.php?p=13668
2) http://www.ipbx.ru/rm9200/gpio-RM9200.tar.gz
Думаю лучше один раз увидеть чем сто раз услышать smile.gif
dch
кстати как во второй програмке с установкой пина - были сообщения что неправильно устанавливается.
PrSt
Цитата(amw @ Jan 14 2009, 21:30) *
...
2. Не совсем нормальный, однако довольно часто используемый. http://svn.openmoko.org/developers/werner/poke/. Ну и, например, привести полученный указатель к указателю на структуру AT91PS_PIO (или как она там называется).


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

.

Цитата(neiro80 @ Jan 14 2009, 11:16) *
Линукс стоит на атмеловксом арме...пусть будет рм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);
...

да, понятие красоты обращения не стоит ставить на первое место, часто это зависит от необходимости...
AVR
Товарищи! Подскажите, пожалуйста, где раздобыть примеры по работе с gpiolib ??? И документацию читал, и примеры пытался разыскать, но в итоге нет четкого и совершенно определенного представления что как делать, например, как определить число доступных GPIO, как их "взять", задать направление... Вижу соответствующие функции, но не понимаю как _начать_ , как склеить все это воедино??? ...
MTh
Вариантов 2:
1. Собственно говоря вы лезете в исходники линукса и находите там сырцы под свой МК. С подключением сырцов пишите свой драйвер. И затем через него уже лезете к выводам порта.
2. Используете готовую либу GPIO (включив в ядре поддержку и пересобрав). Тут уже надо полазить по исходникам (или по /proc) и посмотреть какие функции экспортируются. А потом по ним обращаться.

Вариант со своим драйвером имеет + и -...
+ - разберетесь что и как
- - долго это smile.gif
Почитайте книжку Linux Device Drivers - там все-все написано... особое внимание обратите на wmb()/rmb() иначе можно неплохо "втупить"...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.