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

прерывания в embedded linux

что и где необходимо сделать для решения этой задачи?

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

Как можно видеть, никакой поддержки прерываний она не содержит.

 

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

 

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

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


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

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

Как можно видеть, никакой поддержки прерываний она не содержит.

 

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

 

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

спасибо aaarrr за ссылку.

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

но раз ужа так сложилось, спасибо всем еще раз.

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


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

Теперь мне неясно отчего возвращается ошибка 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

 

 

 

 

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


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

добавил принт в функцию (в том же файле 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 равен нулю, то ваша задача будет невыполнима. Похоже прерывание не поддерживается. Ищите как изменить ситуацию.

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


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

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

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

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

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

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

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

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

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

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