Understanding the Structure of a Linux Kernel Device Driver

  Рет қаралды 50,952

Sergio Prado

Sergio Prado

Күн бұрын

Пікірлер: 79
@samiurkhan
@samiurkhan Жыл бұрын
Thanks a million for this. Seeing a device driver actually getting made made it make way more sense than the official book. Cheers
@spradotube
@spradotube 11 ай бұрын
I am glad you enjoyed it @samiurkhan!
@electrolance7505
@electrolance7505 Жыл бұрын
I find this presentation has right balance of theory and actual code, has given very good basic understanding how drivers works in linux kernel.
@spradotube
@spradotube 11 ай бұрын
I am glad you enjoyed it @electrolance7505!
@radhakrishnans785
@radhakrishnans785 11 ай бұрын
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
@spradotube
@spradotube 10 ай бұрын
That was the purpose, yeah. Thanks for commenting!
@SmartBoy-l1f
@SmartBoy-l1f 4 ай бұрын
Hi sergio, This is one of the "Best" content i've ever seen on linux device driver, these 58 mins. helped me save months to understand linux device driver. Pls continue to give some insights on linux process management, file-systems and network subsystems as well. A million thanks for creating this lecture.
@spradotube
@spradotube 4 ай бұрын
Thanks for the kind words! I am glad you enjoyed it!
@riddhidoshi2335
@riddhidoshi2335 2 ай бұрын
This is very useful for someone interested in building and adding linux drivers for the first time. Thank you.
@spradotube
@spradotube 2 ай бұрын
Thanks for the feedback! I am glad you enjoyed it!
@yjiang7894
@yjiang7894 11 ай бұрын
The depth of this tutorial is spot on. Thank you so much!
@spradotube
@spradotube 11 ай бұрын
I am glad you enjoyed it @yjiang7894!
@kenyie8080
@kenyie8080 5 ай бұрын
I really appreciate the structure of the talk. Starting from the most basic and simple implementation, then demonstrating the issues with basic implementations and then explaining why each framework is introduced as a best practice provides a great way to understand the necessity of each abstraction and framework and what problems are solved by the current best practices. I wish all talks could explain what problems are solved and why we need to adopt the current best practices.
@spradotube
@spradotube 5 ай бұрын
Thanks for the kind words!I am glad you enjoyed the talk!
@ninthsign76
@ninthsign76 7 ай бұрын
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
@spradotube
@spradotube 7 ай бұрын
I am glad you enjoyed it!
@shashidhark.v5111
@shashidhark.v5111 Жыл бұрын
I have seen other videos of yours. You explain things really well. Thank you very much for sharing your knowledge with us.
@radhakrishnans785
@radhakrishnans785 11 ай бұрын
@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.
@spradotube
@spradotube 10 ай бұрын
Yeah, you are right, for every request there is a response, so the flow sequence is bi-directional (though in the diagram I wanted to represent only the request).
@ericgorder1
@ericgorder1 8 ай бұрын
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!
@spradotube
@spradotube 8 ай бұрын
I am glad you enjoyed it!
@junwu680
@junwu680 9 ай бұрын
Great tutorial and step by step guide from a simple start to a complete nice solution. Many thanks.
@spradotube
@spradotube 9 ай бұрын
Thanks! I am glad you enjoyed it!
@saulandrade5184
@saulandrade5184 Ай бұрын
Rapaz, assistindo isso hoje. Excelente apresentação =]
@spradotube
@spradotube Ай бұрын
Obrigado 👍
@richjamjam
@richjamjam Жыл бұрын
Very good video. I learned a lot. Having just come from Low Level Learning and Low Bytes Productions, this solidified it all.
@spradotube
@spradotube Жыл бұрын
Hey @richjamjam! I am glad you enjoyed it
@catcatcatcatcatcatcatcatcatca
@catcatcatcatcatcatcatcatcatca Жыл бұрын
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.
@spradotube
@spradotube 11 ай бұрын
I am glad you enjoyed it!
@sd07kwon
@sd07kwon Жыл бұрын
리눅스의 device 제어에 대하여 상세하게 설명을 해주셨네요. 정말 좋은 강의였습니다. 반복해서 볼께요
@spradotube
@spradotube 11 ай бұрын
Thanks @sd07kwon! I am glad you enjoyed it!
@venkatanagarajendraprasadv5152
@venkatanagarajendraprasadv5152 11 ай бұрын
Excellent video
@spradotube
@spradotube 11 ай бұрын
Thanks!
@ahmedzain6270
@ahmedzain6270 8 ай бұрын
Many thanks I keep revisit your presentation, the order you created is very good
@spradotube
@spradotube 8 ай бұрын
I am glad you liked it!
@David-yp9oz
@David-yp9oz 5 ай бұрын
Thank you so much! This was very helpful
@spradotube
@spradotube 5 ай бұрын
I am glad you enjoyed it!
@vadivelmuruganr1
@vadivelmuruganr1 Ай бұрын
Great video 🎉
@spradotube
@spradotube Ай бұрын
Glad you enjoyed it!
@ivanpiri8982
@ivanpiri8982 Жыл бұрын
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
@spradotube
@spradotube 11 ай бұрын
Thanks @ivanpiri8982! About your question, loading an out-of-tree kernel driver does not always taint the kernel. Whether loading a driver taints the kernel depends on the licensing and behavior of the module. If you load a kernel module that it is not licensed under a GPL compatible license or performs actions that are considered risky or unstable, like using certain unsafe APIs or mechanisms, it might taint the kernel. If an out-of-tree driver is licensed under a compatible open-source license (like GPL), and it properly declares its license to the kernel, like in my examples, it doesn't cause the kernel to be tainted.
@justcurious1940
@justcurious1940 4 ай бұрын
Great video Sergio, can u write a device (NIC) driver that always sends a copy of any packet to a specific IP address?
@spradotube
@spradotube 4 ай бұрын
It is certainly possible to hook up into kernel functions to do this, but probably this is better done nowadays with eBPF (ebpf.io/)
@sangsuplee5467
@sangsuplee5467 2 жыл бұрын
Thanks for your nice lecture.
@David-7815
@David-7815 Жыл бұрын
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?
@spradotube
@spradotube 11 ай бұрын
Thanks @David-7815! I've used a Colibri iMX6 SoM connected to the Aster carrier board (both from Toradex).
@nandishsg9805
@nandishsg9805 3 жыл бұрын
Nice explaining
@spradotube
@spradotube 11 ай бұрын
I am glad you enjoyed it!
@adammontgomery7980
@adammontgomery7980 5 ай бұрын
Nice! What is that hardware setup? It looks like a daughter board with the LED on an itx motherboard.
@spradotube
@spradotube 5 ай бұрын
I used a Toradex platform (Colibri iMX6 + Aster carrier board) with a custom expansion board. You can translate to English the link below in case you want more info about the hardware: sergioprado.org/aster-ipe-cape-e-o-novo-kit-de-desenvolvimento-da-embedded-labworks/
@adammontgomery7980
@adammontgomery7980 5 ай бұрын
​@@spradotube Thank you for the response. It's even more complicated than I thought.
@kumarnkvc
@kumarnkvc Жыл бұрын
This is very helpful. Thank you.
@spradotube
@spradotube 11 ай бұрын
Hi @kumarnkvc! I am glad you enjoyed it!
@MillaGamer
@MillaGamer Жыл бұрын
Sergio tu tem o GIT com esses exemplos? Parabéns pelo conteúdo.
@spradotube
@spradotube Жыл бұрын
Olá Milla! O código de exemplo está na descrição do video.
@armando6114
@armando6114 8 ай бұрын
Muito bom o video!
@spradotube
@spradotube 8 ай бұрын
Legal que gostou!
@icojb25
@icojb25 Жыл бұрын
Great video, thanks a lot
@spradotube
@spradotube 11 ай бұрын
Thanks @icojb25! I am glad you enjoyed!
@mithrandirthegrey7644
@mithrandirthegrey7644 Жыл бұрын
fml been trying to write a bridge driver for an LCD for 3 weeks can't get it working. I hate computers.
@fabriciomansillapuente
@fabriciomansillapuente Жыл бұрын
Let's talk. Let's hang out, I am also interested on that
@mithrandirthegrey7644
@mithrandirthegrey7644 Жыл бұрын
@@fabriciomansillapuente I ended up trying to set up the bridge as a panel in the device tree instead just to force some MIPI DSI signals out.
@spradotube
@spradotube 11 ай бұрын
@mithrandirthegrey7644 I am glad you could work that out!
@pkl2000us
@pkl2000us 2 жыл бұрын
hey. Do you have a link to the code
@spradotube
@spradotube 11 ай бұрын
The link to the code is in the description of the video.
@andrerclaudio
@andrerclaudio Жыл бұрын
Olá, Sérgio. Você tem git repositório para os arquivos.c desse hands-on?
@spradotube
@spradotube 11 ай бұрын
Olá @andreribeiroclaudio2747! O link para baixar o código-fonte está na descrição do video.
@moatasemelsayed6226
@moatasemelsayed6226 Жыл бұрын
how to know all the framework that is supported by Linux like led ,I2c,watchdog ,etc ?
@spradotube
@spradotube 11 ай бұрын
Unfortunately, there is no easy way to answer this question. I don't know of any document that describes all frameworks. Probably the source code is the best place to look at. Most frameworks are a subdirectory inside the drivers/ directory in the Linux source code, but there might frameworks in other places.
@aashishchauhan1989
@aashishchauhan1989 2 жыл бұрын
Brilliant
@spradotube
@spradotube 11 ай бұрын
I am glad you enjoyed it @aashishchauhan1989!
@bennguyen1313
@bennguyen1313 Жыл бұрын
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, qop_kernel/drivers/net/usb/dm9620 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"?
@spradotube
@spradotube 11 ай бұрын
Hi @bennguyen1313, You usually don't call functions from drivers. Linux device drivers use kernel subsystems to export an interface to the user (usually in /sys or /dev). For example, there is a LED driver with a function to turn on/off this LED. You don't call this function directly. To turn on/off the LED, you write to a file exposed by the driver (via the LED framework) in /sys/class/leds//brightness.
@agarwalminal
@agarwalminal Жыл бұрын
Do you give guidance for the open source contribution to Linux and other projects? If so, can i get a sessoin?
@spradotube
@spradotube 11 ай бұрын
Hi @agarwalminal! Currently, I don't do that. But I have plans to do some Ask me anything sessions. Make sure you are subscribed to the channel, enable notifications, and join one of those sessions.
@viktor1772
@viktor1772 Жыл бұрын
Hi Sergio, it is a very nice lecture on linux Kernel Device Drivers. I am trying to practice in this topic, so please, could you provide the source code from this tutorial to have a deep look on it? Thanks in advace! 😃
@spradotube
@spradotube 11 ай бұрын
Hi @viktor1772! I am glad you enjoyed it. You can find the source code in the video's description.
@calyptratus474
@calyptratus474 6 ай бұрын
Brasil citado! faz o L
@spradotube
@spradotube 6 ай бұрын
I am glad you enjoyed it!
Linux Kernel 6.12 | This is Historic
1:07:22
Maple Circuit
Рет қаралды 130 М.
It’s all not real
00:15
V.A. show / Магика
Рет қаралды 20 МЛН
How to Avoid Writing Device Drivers for Embedded Linux - Chris Simmonds, 2net
41:19
How Do Linux Kernel Drivers Work? - Learning Resource
17:02
LiveOverflow
Рет қаралды 570 М.
Introduction to Encryption for Embedded Linux Developers
53:33
Unix system calls (1/2)
45:16
Brian Will
Рет қаралды 442 М.
Linux And Windows Kernel Comparison
38:54
Joe Nice
Рет қаралды 156 М.
Steven Rostedt - Learning the Linux Kernel with tracing
1:07:25
OpenFest Bulgaria
Рет қаралды 100 М.
Understanding the Linux Kernel l Lesson and Labs
1:13:40
howtonetwork
Рет қаралды 31 М.
Getting started with Yocto Project - Chris Simmons - NDC TechTown 2022
1:03:27
Device Tree: hardware description for everybody !
43:17
Bootlin
Рет қаралды 99 М.