|
368 / 224 / 53
Регистрация: 18.10.2017
Сообщений: 2,394
|
|
Драйвер для ядра 3.x и старше12.06.2018, 23:06. Показов 2877. Ответов 29
Метки нет (Все метки)
Здравствуйте!
Есть где-нибудь руководство по написанию драйверов для Linux с ядром 3.x и 4.x? Конкретно надо для ядра 3.16, связанный с константами для клавиатуры. В файле include/uapi/linux/input.h нет их описаний, также не вполне понятно, как создавать свои ioctl().
0
|
|
| 12.06.2018, 23:06 | |
|
Ответы с готовыми решениями:
29
Как установить драйвер ядра для VirtuaBox? Драйвер службы ядра Драйвер ядра устройства NULL |
|
2 / 2 / 0
Регистрация: 19.06.2018
Сообщений: 41
|
|
| 19.06.2018, 15:17 | |
|
не смог в личное сообщение написать. (хотел пдф книги вложить.или хотябы название сказать)
потому, просто пишу тут. такие книги есть.
0
|
|
|
368 / 224 / 53
Регистрация: 18.10.2017
Сообщений: 2,394
|
|
| 19.06.2018, 20:44 [ТС] | |
|
Хорошо, буду знать что они есть, а я уже думал, что их нет, т.к. на другом сайт мне далии ссылки
опять же на книгу по 2.6. Правда, в исходных текстах ядра в Documentation есть описания и даже примеры, но хотелось бы в систематическом виде, типа книги.
0
|
|
|
48 / 46 / 18
Регистрация: 27.04.2016
Сообщений: 169
|
|
| 19.06.2018, 22:46 | |
|
Есть Linux Device Drivers Development 2017-го года на английском. Думаю, в ней версия ядра посвежее 2.6. Но это не точно.
0
|
|
|
368 / 224 / 53
Регистрация: 18.10.2017
Сообщений: 2,394
|
|
| 19.06.2018, 23:10 [ТС] | |
|
Благодарю за название. Я и сам собирался искать по английским названиям, так что посмотрю.
0
|
|
|
2 / 2 / 0
Регистрация: 19.06.2018
Сообщений: 41
|
|
| 22.06.2018, 23:46 | |
|
Практикум: модули ядра Linux
Конспект с примерами и упражнения с задачами Автор: Олег Цилюрик Редакция 6.245 18.03.2015 г.
0
|
|
|
368 / 224 / 53
Регистрация: 18.10.2017
Сообщений: 2,394
|
|
| 23.06.2018, 11:34 [ТС] | |
|
sgaeal, очень благодарен за совет, скачал эту книгу в pdf, там сказано,
что примеры проверялись на ядрах до 3.17 включительно. Материал, как мне показалось, изложен очен хорошо. Буду читать.
0
|
|
|
2 / 2 / 0
Регистрация: 19.06.2018
Сообщений: 41
|
|
| 26.06.2018, 16:08 | |
|
Совет как действовать.
Качаешь все ядра с кернелорга. Разархивируешь красиво по папочкам. И далее с помощью grep определяешь какие были изменения, в той часте кода, которую изучаешь. Т.е. прочёл книгу. Там допустим есть структура struct inode делаешь команду grep '^struct inode {' -r /path_kernel_sources и видишь где эта структура находится, в каждой версии ядра. (структуры могут располагаться в разных файлах) Если есть изменения в теле структур, то по такомуже способу, через греп, определяешь где изменение произошло. Могу сказать что с 2,0,x и по сей день, кодинг особо не изменился для ядра. Вот маленькая книжка https://www.ozon.ru/context/detail/id/17925734/ Как помню, там тоже ядра выше 3,x Вот книга https://www.ozon.ru/context/detail/id/3589107/ Наверно самая ценная по этому вопросу , хоть и вышла в 2007 году. (АКТУАЛЬНА) Ну и есть книга https://www.ozon.ru/context/detail/id/2441431/ По сетевой архитектуре. 2006 год. Также АКТУАЛЬНА и на сегодняшний день.
0
|
|
|
368 / 224 / 53
Регистрация: 18.10.2017
Сообщений: 2,394
|
|
| 26.06.2018, 20:47 [ТС] | |
|
sgaeal, благодарю за внимание. Книга "Ядро Linux" меня есть, названной книги Р. Лава нет,
есть другая с похожим названием, 2-е издание. Вообще на работе я раза 2 или 3 корректировал текст драйвера для более старого ядра. Понятно, что нетрудно найти, где в ядре находится необходимый файл или структура. Пока мне достаточно книги Цилюрика. Он там предлагает не пользоваться ioctl(), а использовать интерфейс /proc или /sys, но для этого надо затратить заметно больше усилий, чем для ioctl(), так что я собираюсь обойтись ioctl().
0
|
|
|
2 / 2 / 0
Регистрация: 19.06.2018
Сообщений: 41
|
|
| 26.06.2018, 22:30 | |
|
http://itsecforu.ru/wp-content... abotki.pdf
Добавлено через 8 минут Если найдёте, чтонить интересное почитать по ядру на русс языке, то кидайте ссылки в эту тему. https://habr.com/company/intel/blog/266701/
0
|
|
|
368 / 224 / 53
Регистрация: 18.10.2017
Сообщений: 2,394
|
|
| 27.06.2018, 20:40 [ТС] | |
|
sgaeal, благодарю за ссылку, скачал.
Добавлено через 21 час 13 минут sgaeal, Не будете ли уж так любезны подсказать, где можно взять архивы с примерами, упоминаемые в книге Цилюрика? Я сейчас просматриваю его статьи по ссылке в конце книги, пока дощёл только до 4-й, а их там 77. Там какие-то архивы есть. И ещё: может ли модуль, не драйвер, содержать свои ioctl(), может ли он включать структуру file_operations?? Или он обязательно должен быть в форме драйвера символьного устройства?
0
|
|
|
2 / 2 / 0
Регистрация: 19.06.2018
Сообщений: 41
|
|
| 27.06.2018, 20:49 | |
|
Насчёт архивов кода, не подскажу. Я их даже не смотрел.
"И ещё: может ли модуль, не драйвер, содержать свои ioctl(), может ли он включать структуру file_operations??" Может. Вообще странный вопрос. У Вас мало опыта в кодинге? Модуль , может ВСЁ!. не важно как что называется... file_operations или skb или что там ещё есть. Когда вы программируете модуль, у вас есть доступ ко всему! хоть к коду на микросхемах (имею ввиду память на материнке..или сидироме...или что там ещё есть) Т.Е. не важно, какая у вас стоит задача. Её можно реализовать.
0
|
|
|
368 / 224 / 53
Регистрация: 18.10.2017
Сообщений: 2,394
|
|
| 27.06.2018, 21:01 [ТС] | |
|
sgaeal, благодарю за быстрый ответ.
В создании драйверов вообще нет опыта, только однажды для DOS написал обработчик прерывания от клавиатуры, но не полноценный, а заменяющий какие-то два символа на другие, это было необходимо для ФИДО. Я подозревал, что модуль может иметь свой ioctl(), но всё же сомневался.
0
|
|
|
2 / 2 / 0
Регистрация: 19.06.2018
Сообщений: 41
|
|
| 27.06.2018, 21:09 | |
|
0
|
|
|
368 / 224 / 53
Регистрация: 18.10.2017
Сообщений: 2,394
|
|
| 27.06.2018, 22:02 [ТС] | |
|
sgaeal, ещё раз благодарю за внимание, скачал, но, кажется, у меня эта страница уже была скачана,
явно что-то очень знакомое. Что касается архивов, то они есть в ссылках на отдельные статьи Цилюрика, я их сейчас по порядку скачиваю в pdf, и архивы тоже, дощёл до 31-й, один архив - cdev.tgz - оказался утрачен Добавлено через 37 минут Оказались утраченными 11 -архивов - cdev,signal,call_table,new_sys,add_sys,h idden,umaster,master,plugin,udev,user_io . Добавлено через 6 минут call_table есть, я ошибся.
0
|
|
|
368 / 224 / 53
Регистрация: 18.10.2017
Сообщений: 2,394
|
||||||
| 30.06.2018, 23:34 [ТС] | ||||||
|
si1n3rd, по этой нет, благодарю за неё, но вообще я начал делать, ориентируясь на
input-programming.txt из документации к ядру и драйвер клавиатуры atkbd.c. У меня также есть скачанный пример пользовательской программы, посылающей символы системе, правда, его пришлось немного поправить, чтобы он компилировался и работал. В частности, чтобы символ сразу же вводился, после него надо посылать Return, а запускать надо от root'а. Вот он:
0
|
||||||
|
368 / 224 / 53
Регистрация: 18.10.2017
Сообщений: 2,394
|
|||||||||||||||||||||
| 03.07.2018, 21:39 [ТС] | |||||||||||||||||||||
|
С помощью sgael и драйвера atkbd.c из ядра я как-то написал модуль, он загружается,
для него создаётся устройство в /dev, он принимает из проверочной программы ioctl() и правильно их расшифровывает, но input_event() не выполняется. М.б., кто-нибудь подскажет, что я упустил? В atkbd.c структура input_dev и сам драйвер в подавляющем большинстве посвящён реальной клавиатуре, т.е. в этой структуре надо заполнять не все поля. структура input_dev находится в linux/input.h. Вот модуль:
dev.h:
Возможно, у меня input_event() уходит в никуда или выходит ниоткуда, т.к. я не указал источник или приёмник. Я пытался это сделать, но пока не получилось.
0
|
|||||||||||||||||||||
|
2 / 2 / 0
Регистрация: 19.06.2018
Сообщений: 41
|
|
| 03.07.2018, 21:52 | |
|
Как обычно, ничего не читал. ничего не проверял. Особо не думал..и тд. Не знаю как это всё работает.
Но скажу своё мнение. 1) Поставь на каждой строчкен printk с выводом текущей строки. Так ты точно узнаешь , докуда код не доходит. 2) Наверняка проблема тут copy_from_user .(заметьте..я только отгадываю.) Наверняка, там в этой функции, какая-то проверка, о которой никто не знает, и изза неё, возвращается ошибка, и код дальше не идёт. 3) .....яб заменил copy_from_user на memcpy
0
|
|
|
368 / 224 / 53
Регистрация: 18.10.2017
Сообщений: 2,394
|
|
| 04.07.2018, 00:09 [ТС] | |
|
sgaeal, благодарю за быстрый ответ, но copy_from_user() работает правильно,
там были проверочные printk(), но я их удалил перед помещением сюда. Что посылаю в ioctl() из проверочной программы, то и выводится.
0
|
|
| 04.07.2018, 00:09 | |
|
Помогаю со студенческими работами здесь
20
Возможно ли приостановить/заморозить драйвер на уровне ядра Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6 Выборка SQL Foxpro муж от 60 лет старше и жен от 55 лет и старше Скачал драйвер для ATI и при загрузке пишет не найден драйвер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|