Understanding the Structure of a Linux Kernel Device Driver

preview_player
Показать описание
For newcomers, it's not easy to understand the structure of a device driver in the Linux kernel. In the end, a device driver is just an abstraction to a piece of hardware. But designing it in a way that it's reusable and maintainable is not that easy. That is why, over time, several concepts and abstractions were developed in the Linux kernel to write device drivers. From the way devices are declared to how drivers are instantiated, from the separation of devices and buses to APIs and subsystems used to export functionality to users. This presentation will be a walkthrough of the design concepts of a Linux kernel device driver, going over the main ideas of the driver model, so we can easily understand the structure of a Linux device driver and start writing our own.

Talk presented at Embedded Linux Conference 2021

Рекомендации по теме
Комментарии
Автор

Thanks a million for this. Seeing a device driver actually getting made made it make way more sense than the official book. Cheers

samiurkhan
Автор

I find this presentation has right balance of theory and actual code, has given very good basic understanding how drivers works in linux kernel.

electrolance
Автор

I have seen other videos of yours. You explain things really well. Thank you very much for sharing your knowledge with us.

shashidhark.v
Автор

This gives basic understanding and overview of device driver in a simpler way.
It is is good for beginers to watch this video before reading any books, blog...etc

radhakrishnans
Автор

Great tutorial and step by step guide from a simple start to a complete nice solution. Many thanks.

junwu
Автор

The depth of this tutorial is spot on. Thank you so much!

yjiang
Автор

Thanks for a great presentation to understand the driver. It is really amazing how you have broken this into steps which makes the structure and its underlying working so much easier to understand

ninthsign
Автор

Very good video. I learned a lot. Having just come from Low Level Learning and Low Bytes Productions, this solidified it all.

richjamjam
Автор

Thanks so much you have made it so clear what the real difference of user space and kernel space interfaces. Well presented video, good work!

ericgorder
Автор

리눅스의 device 제어에 대하여 상세하게 설명을 해주셨네요. 정말 좋은 강의였습니다. 반복해서 볼께요

sdkwon
Автор

Many thanks I keep revisit your presentation, the order you created is very good

ahmedzain
Автор

I definitely lacked a lot of knowledge compared to the target audience, but this was still helpful for introducing the consepts. Will probably rewatch this in few months and hopefully understand much more.

catcatcatcatcatcatcatcatcatca
Автор

@9:15
I think flow sequence may be bi-directional.

Based on components and its arrangement in your test/target board shows that you have good experience in 8-bit microcontroller based developments and leveraged those experiences in this test/target board.

radhakrishnans
Автор

Very clear talk, probably the best introduction of the subject present here on yt. My only question that I have while following along is, why when in the "hands on" part we do modprobe drvled the loading of the module doesn't taint the kernel? All my drivers do and i can't figure out how to stop this from happening. My module is built inside the kernel since when i boot i can do "modprobe drivername" so the kernel knows my module but i don't know if i have to do other things

ivanpiri
Автор

Olá, Sérgio. Você tem git repositório para os arquivos.c desse hands-on?

andrerclaudio
Автор

Sergio tu tem o GIT com esses exemplos? Parabéns pelo conteúdo.

MillaGamer
Автор

Thank you fr this insightful lecture Mr. Prado!
Can you kindly share exactly what hardware do you use in your demo so who's interested can follow hand on with your demonstrations?

David-
Автор

fml been trying to write a bridge driver for an LCD for 3 weeks can't get it working. I hate computers.

mithrandirthegrey
Автор

how to know all the framework that is supported by Linux like led, I2c,watchdog, etc ?

moatasemelsayed
Автор

How do you call functions from a driver's source file? I have a USB (VID0A46 / PID9621) Ethernet Adapter and found driver source code for it,


But not sure how I can use it (compile, load, call functions)! For example, I installed gcc and plugged it in, but how do I call functions from that file.. like "dm_write_eeprom_word"?

bennguyen