THE THRILLING CONCLUSION?! | Controlling GPIO in the Raspberry Pi Kernel | GPIO Driver Project

Поділитися
Вставка
  • Опубліковано 5 січ 2025

КОМЕНТАРІ • 60

  • @LowLevelTV
    @LowLevelTV  3 роки тому +32

    LOW LEVEL GANG! Thanks for watching. What's the hardest part about embedded development?

    • @brianbradley1855
      @brianbradley1855 3 роки тому +15

      Making sense of the data sheet.

    • @LowLevelTV
      @LowLevelTV  3 роки тому +5

      Trueeee. Actual hieroglyphics sometimes.

    • @rashidz97100
      @rashidz97100 3 роки тому +1

      Finding low level guides/information and channels like yours. Really helps getting started on small projects, thank you so much!

    • @uladzislauzhauniarovich432
      @uladzislauzhauniarovich432 3 роки тому

      start writing code :D

    • @erdum
      @erdum 3 роки тому

      Make startup file in assembly and finding where to start??

  • @tomatus270389
    @tomatus270389 2 роки тому +46

    I'd like to see the /dev version, along with an IOCTL interface. That'll be cool

  • @AJMansfield1
    @AJMansfield1 2 роки тому +17

    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.

  • @SoulGuitarPro
    @SoulGuitarPro 2 роки тому +8

    Great series! We need more quality content like this!

  • @Steven_ze_engineer
    @Steven_ze_engineer Рік тому

    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

  • @alurma
    @alurma 2 роки тому +3

    Thank you. Didn't expect this stuff to be that easy!

  • @rashidz97100
    @rashidz97100 3 роки тому +4

    Love these series!!

  • @Dygear
    @Dygear 3 роки тому +2

    Thanks!

    • @LowLevelTV
      @LowLevelTV  3 роки тому +2

      Maaaaaaaaaaaaaaaaaark thank you good sir. As usual, I appreciate your support

  • @jorgelima5695
    @jorgelima5695 2 роки тому +37

    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.

  • @Escarii66
    @Escarii66 2 роки тому +1

    Ahh this was so helpful, thanks! Wish I'd found this channel ages ago :)

  • @JohnKha
    @JohnKha Рік тому +2

    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?

  • @getyourphils3334
    @getyourphils3334 3 роки тому +5

    Thanks for the video, great job as always.

  • @suyash7120
    @suyash7120 3 роки тому +1

    Awesome tutorial, I was waiting for this final video😁

  • @Ma1ne2
    @Ma1ne2 2 роки тому +15

    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 😬

    • @williamsquires3070
      @williamsquires3070 2 роки тому

      Have you tried probing the other GPIO pins to see if one of them was turning on?

  • @myetis1990
    @myetis1990 Рік тому

    thanks for the great content. I cant wait to see the interrupt handling for the gpio

  • @barisgoral443
    @barisgoral443 2 роки тому +2

    Nice job! More Driver example please!!!

  • @dantesangiovanni3898
    @dantesangiovanni3898 3 роки тому

    Excellent ! 😍 Go on with these tutorials !

  • @smartkorean1
    @smartkorean1 Рік тому

    Great content! Nice intro to embedded Linux. Could you please do more of these driver videos??

  • @Aplysia
    @Aplysia 2 роки тому +1

    Great video! Would be nice to have some links to docs etc. where I can start learning to do such things myself

  • @azzamwildanmaulana5843
    @azzamwildanmaulana5843 Рік тому +2

    Nice vid, how do i read data from GPIO ?

  • @abqlewis
    @abqlewis 2 роки тому

    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.

  • @hueydo3522
    @hueydo3522 Рік тому

    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

  • @zaspanyflegmatyk2446
    @zaspanyflegmatyk2446 2 роки тому

    Amazing! Pls do more!

  • @ИгнатАртурович
    @ИгнатАртурович 2 роки тому

    Sir, you are my savior!
    This tutorial worked like a charm! (apart from like second vid, but I also did some modifications)

  • @jackyli6716
    @jackyli6716 2 роки тому

    It is so amazing!nice job!

  • @joaomarcoscosta8508
    @joaomarcoscosta8508 3 роки тому +1

    Thanks a lot for this tutorial!

  • @qzorn4440
    @qzorn4440 Рік тому

    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.

  • @sombriks
    @sombriks 10 місяців тому

    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

  • @shuweixu3133
    @shuweixu3133 3 роки тому

    Thank you for this tutorial!

  • @WilliamGiraldo-bm4mv
    @WilliamGiraldo-bm4mv 2 місяці тому

    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.

  • @gameramve
    @gameramve 11 місяців тому

    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?

  • @fulgorete
    @fulgorete 2 роки тому

    Just one question: why you have to configure the gpio as an input and not directly has an output? Best regards

  • @pbezunartea
    @pbezunartea 2 роки тому

    Great series!

  • @DouglasWalrath
    @DouglasWalrath 2 роки тому

    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

  • @marekdorobczynski1727
    @marekdorobczynski1727 2 роки тому

    awesome useful video

  • @mathewvandover6844
    @mathewvandover6844 4 місяці тому

    whats the address update for the BCM2712 on the RPI 5?

  • @bharadwajn.k9185
    @bharadwajn.k9185 3 роки тому +1

    Can you do a avr c series. How we can do all the arduino stuff with pure c.

  • @n0kodoko143
    @n0kodoko143 2 роки тому

    3/3 👍 dopeness

  • @dailydoseofeverything7141
    @dailydoseofeverything7141 13 днів тому

    Will this work for raspberry pi 5?

  • @modernage5365
    @modernage5365 3 роки тому

    Hi, is the base address of BCM2837 for gpio correct?Because in the data sheet is given as 0x7e200000

  • @lukelopez822
    @lukelopez822 8 місяців тому

    Will this work on a Raspberry Pi 4B?

  • @ashithnair3321
    @ashithnair3321 3 роки тому

    Can you make an stm32 series

  • @nova0302
    @nova0302 2 роки тому

    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!

    • @sanketlokhande3884
      @sanketlokhande3884 2 роки тому +1

      Try 0xFE200000

    • @nova0302
      @nova0302 2 роки тому +1

      @@sanketlokhande3884 Thanks bro.!!. It works fine!!

  • @jakester1390
    @jakester1390 Рік тому

    improper not inproper printk("Inproper data format submitted
    "); line 66

  • @shortnr
    @shortnr 2 роки тому

    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 😀

  • @lamarts1000
    @lamarts1000 2 роки тому

    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.

  • @luigifcruz
    @luigifcruz 2 роки тому

    Thanks!