|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,389
|
|
Драйвер для ядра 3.x и старше12.06.2018, 23:06. Показов 2861. Ответов 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
|
|
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,389
|
|
| 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
|
|
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,389
|
|
| 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
|
|
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,389
|
|
| 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
|
|
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,389
|
|
| 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
|
|
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,389
|
|
| 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
|
|
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,389
|
|
| 27.06.2018, 21:01 [ТС] | |
|
sgaeal, благодарю за быстрый ответ.
В создании драйверов вообще нет опыта, только однажды для DOS написал обработчик прерывания от клавиатуры, но не полноценный, а заменяющий какие-то два символа на другие, это было необходимо для ФИДО. Я подозревал, что модуль может иметь свой ioctl(), но всё же сомневался.
0
|
|
|
2 / 2 / 0
Регистрация: 19.06.2018
Сообщений: 41
|
|
| 27.06.2018, 21:09 | |
|
0
|
|
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,389
|
|
| 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
|
|
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,389
|
||||||
| 30.06.2018, 23:34 [ТС] | ||||||
|
si1n3rd, по этой нет, благодарю за неё, но вообще я начал делать, ориентируясь на
input-programming.txt из документации к ядру и драйвер клавиатуры atkbd.c. У меня также есть скачанный пример пользовательской программы, посылающей символы системе, правда, его пришлось немного поправить, чтобы он компилировался и работал. В частности, чтобы символ сразу же вводился, после него надо посылать Return, а запускать надо от root'а. Вот он:
0
|
||||||
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,389
|
|||||||||||||||||||||
| 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
|
|
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,389
|
|
| 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 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|