Цитата(Tarbal @ Oct 24 2017, 00:18)

Вы ядро строите на той же системе?
Обычно то где строят ядро не использует бизибокс.
Очень важный вопрос: Вы ядро строить можете?
да, ядро строится на ubuntu (запущена на virtualbox)
Цитата(Tarbal @ Oct 24 2017, 00:18)

Для ядра 2.6 мои ссылки не годятся там нет дерева устройств. Я же написал для ядра больше 3.
К тому же никаких определений в файле устройства (что было до дерева устройств) делать не надо.
в моей системе нет файла arch/arm/boot/dts я вас правильно понял?
Цитата(Tarbal @ Oct 24 2017, 00:18)

Надо от первой ошибки начать.
irqNumber = gpio_to_irq(gpioButton);
Возврашает ошибку 6 по ссылке, что я вам дал это (ENXIO)
это
http://elixir.free-electrons.com/linux/v3..../asm/gpio.h#L43static inline int gpio_to_irq(unsigned int gpio)
{
return __gpio_to_irq(gpio);
}
вызывает
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;
}
использует
/* caller holds gpio_lock *OR* gpio is marked as requested */
struct gpio_chip *gpio_to_chip(unsigned gpio)
{
return gpio_desc[gpio].chip;
}
В вашем ядре gpio_desc[gpio].chip->to_irq для используемого вами gpio установлено на NULL.
Дальше дергаться бессмысленно.
Надо починить сначала это.
Найдите в вашем ядре код должен быть похожим на то, что я нашел на бесплатных электронах (free-electrons).
да согласен с вами, пожалуй добавлю что можно просто сказать - контроллер прерываний (железный) должен быть настроен
на внешние прерывания и умел сказать программному контроллеру (в линукс) какой обработчик для данного gpio вызвать.
задача раскладывается на
1 настроить gpio (это уже может делать для меня интерфейс sysfs, частично);
2 настроить железный контроллер прерываний;
3 зарегистрировать данное прерывание в линукс и добавить обработчик;
я что то упустил?
Сообщение отредактировал winniethepooh - Oct 24 2017, 08:05