|
Как из пол линукса обратится красиво к портам PIO? |
|
|
|
 |
Ответов
(1 - 11)
|
Jan 14 2009, 12:09
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(neiro80 @ Jan 14 2009, 11:16)  Линукс стоит на атмеловксом арме...пусть будет рм9200. Как можно красиво обратится к портам pioa,piob,pioc? Ну там выставить единицу,ноль,настроить на ввод/вывод.. можно конеш через маппирование страницы..но может можно обращаться типа как к устройствам...(так же как к spi или tty)?? arch/arm/mach-at91/include/mach/gpio.h
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Jan 14 2009, 13:26
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(neiro80 @ Jan 14 2009, 15:15)  Скажи плз, а как достучатся до этих функций из своего приложения? Например как здесь linux/drivers/serial/atmel_serial.c
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Jan 14 2009, 13:38
|

Участник

Группа: Участник
Сообщений: 27
Регистрация: 11-09-08
Пользователь №: 40 127

|
Цитата(amw @ Jan 14 2009, 16:26)  Например как здесь linux/drivers/serial/atmel_serial.c не понял чет. это из ядра же. а из приложения своего ведь не вызвать допустим at91_set_gpio_value(AT91_PIN_PA21, 0)...
|
|
|
|
|
Jan 14 2009, 19:30
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(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 (или как она там называется).
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Jan 21 2009, 22:23
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(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); ... да, понятие красоты обращения не стоит ставить на первое место, часто это зависит от необходимости...
--------------------
|
|
|
|
|
Jan 25 2009, 21:29
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

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

Местный
  
Группа: Свой
Сообщений: 234
Регистрация: 28-02-06
Из: Иркутск
Пользователь №: 14 771

|
Вариантов 2: 1. Собственно говоря вы лезете в исходники линукса и находите там сырцы под свой МК. С подключением сырцов пишите свой драйвер. И затем через него уже лезете к выводам порта. 2. Используете готовую либу GPIO (включив в ядре поддержку и пересобрав). Тут уже надо полазить по исходникам (или по /proc) и посмотреть какие функции экспортируются. А потом по ним обращаться. Вариант со своим драйвером имеет + и -... + - разберетесь что и как - - долго это  Почитайте книжку Linux Device Drivers - там все-все написано... особое внимание обратите на wmb()/rmb() иначе можно неплохо "втупить"...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|