I'd love to see a follow-up to this that explains how to use IRQs in a kernel driver, as low-latency interrupt handling seems to be one of the main reasons that someone would want to write a kernel driver rather than just use the pre-existing GPIO driver.
Great job on these lessons. I have been searching for years for good embedded Linux explanations. You sir, are truly a gift to the embedded Linux community
Why does a driver for an actual device uses the proc interface instead a device file under /dev? Parsing a command string, even a simple one, in the kernel is not such a good idea unless there is no better option. Why not having devices /dev/led01 to /dev/led21 accepting only char 0 or 1? I thing it would be a nicer interface.
Just watched this series, it was super useful and makes driver writing feel a lot less daunting. Any chance you will make a video on how this changes with Rust kernel drivers?
Absolutely awesome series! I had a lot of fun following these 3 videos! I was trying to follow along with a raspberry pi model b+, but I am guessing the base address for the gpio registers is different, because my code is working, but the led is not lighting up. Can anyone guide me in the right direction of where I can find the base address for gpios on the model 1 b+? I am not yet the best at reading those heavy hardware manuals 😬
This is a great series! It's saving me a ton of reading. Could you write more drivers for different types of devices as examples? In other words, "Please keep going!" Also, FYI - your Code link above (only on this episode) has an incomplete sub-dir name so it pops up a 404.
What happened to this series? This is so cool to learn! I know lot of people would be interested in this but it would considered a blessing if you continue this series. I hope you see my comment
A most excellent Raspberry Pi GPIO Driver video. I am having problems in getting the Orange Pi-5 Debian-Bullseye-OS PWM GPIO pins working in Thonny-Python. I would like two OPi.GPIO PWM pins for servo Pan and Tilt motors. Also, I cannot find a GPIO OPi5 example. Do you have any suggestions for a simple PWM example? Thank you.
any good guide on gpio-sim? tis kernel driver is supposed to simulate a gpio interface but i lack the proper knowledge on how to proper use it so my node wrapper could be properly tested
Is there any specific reason why you didn't use iowrite32 to write to the mapped virtual memory? Likely for the architecture is the same, but I'd like to please know.
why would you use x forwarding to open lxterminal over ssh? you already have shell access via ssh, it seems very unnecessary, like searching for google on google
Hello! LLL. I really appreciate and enjoy you tutorials. I have rpi4 (BCM2711) and trying to follow your tutorial. When i apply your code as is, It doesn't work. Is it because of the base address of BCM2711? What i found is that the gpio address of 2711 is 0x7E20000 I changed BCM2837(0x3F200000) to BCM2771(0x7E20000 ). For me neither of them work. Can you point out any clue? Thanks!
Pro tip (jk.. I'm a noob): when using make, add the -j# flag, where # is say... 150% of your core count. It creates # number of jobs that can substantially reduce your build time. Its probably not terribly effective on smaller projects, but it helped a lot when I was using ROS 😀
Great series! Awesome job! Thanks for doing this. Interesting...I have a RPI - 3 Model B+, cat /proc/cpuinfo - has BCM2835 listed, but I used BCM2837 and it still works. BCM2835 did not work.
LOW LEVEL GANG! Thanks for watching. What's the hardest part about embedded development?
Making sense of the data sheet.
Trueeee. Actual hieroglyphics sometimes.
Finding low level guides/information and channels like yours. Really helps getting started on small projects, thank you so much!
start writing code :D
Make startup file in assembly and finding where to start??
I'd like to see the /dev version, along with an IOCTL interface. That'll be cool
I'd love to see a follow-up to this that explains how to use IRQs in a kernel driver, as low-latency interrupt handling seems to be one of the main reasons that someone would want to write a kernel driver rather than just use the pre-existing GPIO driver.
Great series! We need more quality content like this!
Great job on these lessons. I have been searching for years for good embedded Linux explanations. You sir, are truly a gift to the embedded Linux community
Thank you. Didn't expect this stuff to be that easy!
Love these series!!
Thanks!
Maaaaaaaaaaaaaaaaaark thank you good sir. As usual, I appreciate your support
Why does a driver for an actual device uses the proc interface instead a device file under /dev? Parsing a command string, even a simple one, in the kernel is not such a good idea unless there is no better option. Why not having devices /dev/led01 to /dev/led21 accepting only char 0 or 1? I thing it would be a nicer interface.
Ahh this was so helpful, thanks! Wish I'd found this channel ages ago :)
Just watched this series, it was super useful and makes driver writing feel a lot less daunting. Any chance you will make a video on how this changes with Rust kernel drivers?
Thanks for the video, great job as always.
Thanks for watching!
Awesome tutorial, I was waiting for this final video😁
Hope you enjoyed it!
Absolutely awesome series! I had a lot of fun following these 3 videos! I was trying to follow along with a raspberry pi model b+, but I am guessing the base address for the gpio registers is different, because my code is working, but the led is not lighting up. Can anyone guide me in the right direction of where I can find the base address for gpios on the model 1 b+? I am not yet the best at reading those heavy hardware manuals 😬
Have you tried probing the other GPIO pins to see if one of them was turning on?
thanks for the great content. I cant wait to see the interrupt handling for the gpio
Nice job! More Driver example please!!!
Excellent ! 😍 Go on with these tutorials !
Great content! Nice intro to embedded Linux. Could you please do more of these driver videos??
Great video! Would be nice to have some links to docs etc. where I can start learning to do such things myself
Nice vid, how do i read data from GPIO ?
This is a great series! It's saving me a ton of reading. Could you write more drivers for different types of devices as examples? In other words, "Please keep going!" Also, FYI - your Code link above (only on this episode) has an incomplete sub-dir name so it pops up a 404.
What happened to this series? This is so cool to learn! I know lot of people would be interested in this but it would considered a blessing if you continue this series. I hope you see my comment
Amazing! Pls do more!
Sir, you are my savior!
This tutorial worked like a charm! (apart from like second vid, but I also did some modifications)
It is so amazing!nice job!
Thanks a lot for this tutorial!
Of course!
A most excellent Raspberry Pi GPIO Driver video. I am having problems in getting the Orange Pi-5 Debian-Bullseye-OS PWM GPIO pins working in Thonny-Python. I would like two OPi.GPIO PWM pins for servo Pan and Tilt motors. Also, I cannot find a GPIO OPi5 example. Do you have any suggestions for a simple PWM example? Thank you.
any good guide on gpio-sim? tis kernel driver is supposed to simulate a gpio interface but i lack the proper knowledge on how to proper use it so my node wrapper could be properly tested
Thank you for this tutorial!
Is there any specific reason why you didn't use iowrite32 to write to the mapped virtual memory? Likely for the architecture is the same, but I'd like to please know.
Hi LLL,
I'm working on Rpi Zero W that have BCM2835.I wanted to know how we get the KERNEL_MODE value? which datasheet should i refer to?
Just one question: why you have to configure the gpio as an input and not directly has an output? Best regards
Great series!
why would you use x forwarding to open lxterminal over ssh? you already have shell access via ssh, it seems very unnecessary, like searching for google on google
awesome useful video
whats the address update for the BCM2712 on the RPI 5?
Can you do a avr c series. How we can do all the arduino stuff with pure c.
3/3 👍 dopeness
Will this work for raspberry pi 5?
Hi, is the base address of BCM2837 for gpio correct?Because in the data sheet is given as 0x7e200000
Will this work on a Raspberry Pi 4B?
Can you make an stm32 series
Hello! LLL.
I really appreciate and enjoy you tutorials.
I have rpi4 (BCM2711) and trying to follow your tutorial.
When i apply your code as is, It doesn't work.
Is it because of the base address of BCM2711?
What i found is that the gpio address of 2711 is 0x7E20000
I changed BCM2837(0x3F200000) to BCM2771(0x7E20000
).
For me neither of them work.
Can you point out any clue?
Thanks!
Try 0xFE200000
@@sanketlokhande3884 Thanks bro.!!. It works fine!!
improper not inproper printk("Inproper data format submitted
"); line 66
Pro tip (jk.. I'm a noob): when using make, add the -j# flag, where # is say... 150% of your core count.
It creates # number of jobs that can substantially reduce your build time.
Its probably not terribly effective on smaller projects, but it helped a lot when I was using ROS 😀
Great series! Awesome job! Thanks for doing this. Interesting...I have a RPI - 3 Model B+, cat /proc/cpuinfo - has BCM2835 listed, but I used BCM2837 and it still works. BCM2835 did not work.
Thanks!