Информация об изменениях

Сообщение Разработка драйверов ядра 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) Отладка драйверов возможна только при помощи
   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) Отладка драйверов возможна только при помощи
   pr_debug("...",...);

при выводе в системный лог?
Или есть ещё какие-либо способы отладки кодов?

2) Общение кодов драйвера с приложениями usermode — как я понимаю через модель дискового обмена Linux:
   cat /dev/xxxx

   ioctl(...); 
   fopen(...); и т.д.

Или же есть другие способы обмена данными с процессами пользователя?

3) Я в курсе — что есть драйвера, которые можно динамически запускать (загружать) и удалять —
insmod our_driver.ko
rmmod our_driver

Но всё же — как принято запускать драйвера ядра? Например — при помощи systemd?
Или как-то иначе?

Заранее благодарю за любые мысли!