Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Самописный драйвер и версия Linux
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
und68
Есть свой самописный драйвер работый с PLIS платы at91sam9x515-s3e. Написан по мотивам http://dmilvdv.narod.ru/AT91SAM9260/index.html?linux.html.
В 2.6.33.20 работает без проблем. Надо поставить более свежую версию из линейки 3.6.x.
Linux на плате поднял(помогли со стартекитовского форму). Драйвер немного переделал(изменились имена констант определения регистров и прочию мелочи). Построил драйвер но функция
ret = request_irq(AT91SAM9260_ID_TC0, // Interrupt number
at91tc0_isr, // Pointer to the interrupt sub-routine
IRQF_TIMER, IRQF_IRQPOLL,
"ext_adc", // Device name to show as owner in /proc/interrupts
NULL); // Private data for shared interrupts
выдает ошибку. Скорее всего что в таймерной области что-то еще изменились - но как это найти и самое главное понять принципы не очень болезненного перехода между версия. Пока никакие файлы не подклеиваю в надежде что мне помогут понять сам метод поиска изменений
kurtis
Какую ошибку выдает? Драйвер в виде модуля, или в составе ядра? Ошибку выдает в run-time или при компиляции?
und68
Цитата(kurtis @ Nov 23 2012, 15:19) *
Какую ошибку выдает? Драйвер в виде модуля, или в составе ядра? Ошибку выдает в run-time или при компиляции?

Драйвер в виде модуля
Ошибки при компиляции поправил
Ошибку выдает при установке - когда при выполнении фунции static int __init ext_adc_init (void){(инициализация драйвера) доходит до
request_irq. И она выдает ненулевой код возврата
Файлы подклеит не могу - выдает " Неудачная загрузка. Вам запрещено загружать такой тип файлов"
kurtis
Приведите сообщение об ошибке.

Если вы собираете модуль в отдельной директории, то может быть вы при сборке используете старое ядро, соответственно, модуль у вас получается для старого ядра и новое его грузить не хочет. Прикреплять файл необязательно, достаточно вставить его в сообщение с соответствующим тегом.
По поводу кода возврата, то нужно смотреть что именно оно возвращает, и дальше уже по коду смотреть, где похожая проблема может возникать. Возможно, прерывание, которое вы запрашиваете, уже кем-то занято.
und68
Цитата(kurtis @ Nov 23 2012, 16:45) *
Приведите сообщение об ошибке.

Если вы собираете модуль в отдельной директории, то может быть вы при сборке используете старое ядро, соответственно, модуль у вас получается для старого ядра и новое его грузить не хочет. Прикреплять файл необязательно, достаточно вставить его в сообщение с соответствующим тегом.
По поводу кода возврата, то нужно смотреть что именно оно возвращает, и дальше уже по коду смотреть, где похожая проблема может возникать. Возможно, прерывание, которое вы запрашиваете, уже кем-то занято.

При сборке модуля используется новое ядро(проверено). Сообщения при загрузке нет. Только драйвер ругается на анализ кода возврата от request_irq. Это ffffffea
kurtis
Цитата
Это ffffffea

думаю что это -22, т.е. -EINVAL
und68
Цитата(kurtis @ Nov 23 2012, 17:23) *
думаю что это -22, т.е. -EINVAL

Ну я как бы сам об этом догадался. Но 2.6.33.20 при этих условиях возвращала 0
И прерывание тоже было 17.
Тогда на что мне надо проверять возврат request_irq что бы убедится что все все прошло нормально
Dron_Gus
Ступил.
Olej
Цитата(und68 @ Nov 23 2012, 17:31) *
Ну я как бы сам об этом догадался. Но 2.6.33.20 при этих условиях возвращала 0
И прерывание тоже было 17.
Тогда на что мне надо проверять возврат request_irq что бы убедится что все все прошло нормально


Сравнивайте версии: Linux Cross Reference - очень помогает разобраться в изменениях API ядра.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.