Сообщение Разработка драйверов ядра Linux от 30.01.2024 6:58
Изменено 30.01.2024 10:11 AlexGin
Разработка драйверов ядра Linux
Доброго времени суток, уважаемые коллеги!
Я теперь занялся изучением вопроса по разработке драйверов ядра Linux.
Это актуально для наших новых проектов.
Погуглив на данную тему, я нашёл ссылки:
https://jvgd.medium.com/how-to-write-a-device-driver-76d0584a4be3
https://www.apriorit.com/dev-blog/195-simple-driver-for-linux-os
https://habr.com/ru/companies/timeweb/articles/724282/
также имеются ещё ссылочки на "хабр" (их дегко нагуглить).
На гит-хабе есть интересные примеры:
https://github.com/d0u9/Linux-Device-Driver
Успешно сделал около семи примеров из данного сайта.
Кроме того, нашёл (в виде файлов) литературу:
a) Linux Device Drivers (Third edition) — J Corbet, A Rubini, Greg Hartman;
b) Essential Linux Device Drivers — S Ventkateswaran.
Нашёл исходники:
https://www.kernel.org/
https://www.kernel.org/category/releases.html
Тем не менее, остаются вопросы, которые следовало бы прояснить:
1) Отладка драйверов возможна только при помощи
при выводе в системный лог?
Или есть ещё какие-либо способы отладки кодов?
2) Общение кодов драйвера с приложениями usermode — как я понимаю через модель дискового обмена Linux:
Или же есть другие способы обмена данными с процессами пользователя?
3) Я в курсе — что есть драйвера, которые можно динамически запускать (загружать) и удалять —
Но всё же — как принято запускать драйвера ядра? Например — при помощи systemd?
Или как-то иначе?
Заранее благодарю за любые мысли!
Я теперь занялся изучением вопроса по разработке драйверов ядра Linux.
Это актуально для наших новых проектов.
Погуглив на данную тему, я нашёл ссылки:
https://jvgd.medium.com/how-to-write-a-device-driver-76d0584a4be3
https://www.apriorit.com/dev-blog/195-simple-driver-for-linux-os
https://habr.com/ru/companies/timeweb/articles/724282/
также имеются ещё ссылочки на "хабр" (их дегко нагуглить).
На гит-хабе есть интересные примеры:
https://github.com/d0u9/Linux-Device-Driver
Успешно сделал около семи примеров из данного сайта.
Кроме того, нашёл (в виде файлов) литературу:
a) Linux Device Drivers (Third edition) — J Corbet, A Rubini, Greg Hartman;
b) Essential Linux Device Drivers — S Ventkateswaran.
Нашёл исходники:
https://www.kernel.org/
https://www.kernel.org/category/releases.html
Тем не менее, остаются вопросы, которые следовало бы прояснить:
1) Отладка драйверов возможна только при помощи
pr_debug("...",...);
при выводе в системный лог?
Или есть ещё какие-либо способы отладки кодов?
2) Общение кодов драйвера с приложениями usermode — как я понимаю через модель дискового обмена Linux:
cat /dev/xxxx
ioctl(...);
fopen(...); и т.д.
Или же есть другие способы обмена данными с процессами пользователя?
3) Я в курсе — что есть драйвера, которые можно динамически запускать (загружать) и удалять —
insmod our_driver.ko
rmmod our_driver
Но всё же — как принято запускать драйвера ядра? Например — при помощи systemd?
Или как-то иначе?
Заранее благодарю за любые мысли!
Разработка драйверов ядра Linux
Доброго времени суток, уважаемые коллеги!
Я теперь занялся изучением вопроса по разработке драйверов ядра Linux.
Это актуально для наших новых проектов.
Погуглив на данную тему, я нашёл ссылки:
https://jvgd.medium.com/how-to-write-a-device-driver-76d0584a4be3
https://www.apriorit.com/dev-blog/195-simple-driver-for-linux-os
https://habr.com/ru/companies/timeweb/articles/724282/
также имеются ещё ссылочки на "хабр" (их дегко нагуглить).
На гит-хабе есть интересные примеры:
https://github.com/d0u9/Linux-Device-Driver
Успешно сделал около семи примеров из данного сайта.
Кроме того, нашёл (в виде файлов) литературу:
a) Linux Device Drivers (Third edition) — J Corbet, A Rubini, Greg Hartman;
b) Essential Linux Device Drivers — S Ventkateswaran.
Нашёл исходники:
https://www.kernel.org/
https://www.kernel.org/releases.html
https://www.kernel.org/category/releases.html
Тем не менее, остаются вопросы, которые следовало бы прояснить:
1) Отладка драйверов возможна только при помощи
при выводе в системный лог?
Или есть ещё какие-либо способы отладки кодов?
2) Общение кодов драйвера с приложениями usermode — как я понимаю через модель дискового обмена Linux:
Или же есть другие способы обмена данными с процессами пользователя?
3) Я в курсе — что есть драйвера, которые можно динамически запускать (загружать) и удалять —
Но всё же — как принято запускать драйвера ядра? Например — при помощи systemd?
Или как-то иначе?
Заранее благодарю за любые мысли!
Я теперь занялся изучением вопроса по разработке драйверов ядра Linux.
Это актуально для наших новых проектов.
Погуглив на данную тему, я нашёл ссылки:
https://jvgd.medium.com/how-to-write-a-device-driver-76d0584a4be3
https://www.apriorit.com/dev-blog/195-simple-driver-for-linux-os
https://habr.com/ru/companies/timeweb/articles/724282/
также имеются ещё ссылочки на "хабр" (их дегко нагуглить).
На гит-хабе есть интересные примеры:
https://github.com/d0u9/Linux-Device-Driver
Успешно сделал около семи примеров из данного сайта.
Кроме того, нашёл (в виде файлов) литературу:
a) Linux Device Drivers (Third edition) — J Corbet, A Rubini, Greg Hartman;
b) Essential Linux Device Drivers — S Ventkateswaran.
Нашёл исходники:
https://www.kernel.org/
https://www.kernel.org/releases.html
https://www.kernel.org/category/releases.html
Тем не менее, остаются вопросы, которые следовало бы прояснить:
1) Отладка драйверов возможна только при помощи
pr_debug("...",...);
при выводе в системный лог?
Или есть ещё какие-либо способы отладки кодов?
2) Общение кодов драйвера с приложениями usermode — как я понимаю через модель дискового обмена Linux:
cat /dev/xxxx
ioctl(...);
fopen(...); и т.д.
Или же есть другие способы обмена данными с процессами пользователя?
3) Я в курсе — что есть драйвера, которые можно динамически запускать (загружать) и удалять —
insmod our_driver.ko
rmmod our_driver
Но всё же — как принято запускать драйвера ядра? Например — при помощи systemd?
Или как-то иначе?
Заранее благодарю за любые мысли!