реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> прерывания в embedded linux, прерывание button -> led
aaarrr
сообщение Oct 26 2017, 00:13
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(winniethepooh @ Oct 25 2017, 17:22) *
что и где необходимо сделать для решения этой задачи?

winniethepooh, в сообщении #18 приведена ссылка на текущую реализацию драйвера GPIO вашего процессора.
Как можно видеть, никакой поддержки прерываний она не содержит.

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

Довести первое до состояние второго можно, но это явно не та задача, с которой стоит начинать знакомство с kernel development.
Go to the top of the page
 
+Quote Post
winniethepooh
сообщение Oct 26 2017, 09:01
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 68
Регистрация: 3-06-15
Пользователь №: 86 995



Цитата(aaarrr @ Oct 26 2017, 01:13) *
winniethepooh, в сообщении #18 приведена ссылка на текущую реализацию драйвера GPIO вашего процессора.
Как можно видеть, никакой поддержки прерываний она не содержит.

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

Довести первое до состояние второго можно, но это явно не та задача, с которой стоит начинать знакомство с kernel development.

спасибо aaarrr за ссылку.
если бы это была та задача, я бы не стал беспокоить участников этого форума..
но раз ужа так сложилось, спасибо всем еще раз.
Go to the top of the page
 
+Quote Post
winniethepooh
сообщение Oct 26 2017, 11:09
Сообщение #33


Участник
*

Группа: Участник
Сообщений: 68
Регистрация: 3-06-15
Пользователь №: 86 995



Цитата(Tarbal @ Oct 26 2017, 00:35) *
Теперь мне неясно отчего возвращается ошибка 6. Если вы добавите принтов и установите причину, то у вас появится путь решения вашей задачи. Я раньше приводил коды других функций, которые вызывают ту где вы добавили принт. Надо в них добавить принты, чтобы установить причину.


добавил принт в функцию (в том же файле gpiolib.c)
int __gpio_to_irq(unsigned gpio)
{
struct gpio_chip *chip;

chip = gpio_to_chip(gpio);
return chip->to_irq ? chip->to_irq(chip, gpio - chip->base) : -ENXIO;
}
где
-ENXIO=-6



Go to the top of the page
 
+Quote Post
Tarbal
сообщение Oct 26 2017, 12:55
Сообщение #34


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(winniethepooh @ Oct 26 2017, 15:09) *
добавил принт в функцию (в том же файле gpiolib.c)
int __gpio_to_irq(unsigned gpio)
{
struct gpio_chip *chip;

chip = gpio_to_chip(gpio);
return chip->to_irq ? chip->to_irq(chip, gpio - chip->base) : -ENXIO;
}
где
-ENXIO=-6



Я не проверив, предложил проверить значение chip, а не chip->to_irq, которое равно нулю и приводит к ошибке. Это то, что мне было неясно. Если chip->to_irq равен нулю, то ваша задача будет невыполнима. Похоже прерывание не поддерживается. Ищите как изменить ситуацию.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th April 2024 - 04:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016