Тёмный
Johannes 4GNU_Linux
Johannes 4GNU_Linux
Johannes 4GNU_Linux
Подписаться
Here on my Channel I put out some videos about GNU/Linux with a focus on applications for automation and Embedded Systems. But here are also some videos about some useful tools you can use on GNU/Linux.
GNU/Linux & Ethernet: Introduction
8:24
Месяц назад
Let's code a Linux Driver - 0: Introduction
5:21
2 месяца назад
Hello World userspace I/O (UIO) Linux Driver
13:42
3 месяца назад
Using 1-Wire in Linux
8:08
5 месяцев назад
GateMate FPGA Toolchain Installation
13:44
5 месяцев назад
Write a Hello World Kernel Module for FreeBSD
10:11
6 месяцев назад
Linux Driver Workshop 2024
1:03:06
6 месяцев назад
How aisler.net saved my Linux Driver Workshop
7:12
6 месяцев назад
The story of my first Linux Kernel Contribution
14:43
7 месяцев назад
Applying the Realtime patch to the Linux kernel
10:33
8 месяцев назад
Using ioctl in a Linux PCI or PCI Express Driver
17:12
9 месяцев назад
Using DMA in a Linux PCI or PCI Express Driver
25:21
9 месяцев назад
Комментарии
@SuperArchive
@SuperArchive 3 дня назад
Thanks for the video. I am studying the DMA engine and tried to replicate your work as in your video. I stuck at the line of dma_request_channel(mask,NULL,NULL) as it returns error but I have no idea how to fix. Are there anything I can try to print errors out with more details ?
@SuperArchive
@SuperArchive 3 дня назад
oh... sorry I tried this on my virtualbox machine. 😅
@pawleyjames
@pawleyjames 3 дня назад
from a generic security point of view a whole Linux systems is as it now days just an endless and hopeless mess security holes waiting to be exploited
@ByronFrank-p1d
@ByronFrank-p1d 3 дня назад
Esther Ranch
@dng88
@dng88 4 дня назад
Very odd to see someone typing code mainly. What is the point.
@HungNguyen-gl2xt
@HungNguyen-gl2xt 5 дней назад
as I know, S_IRUGO is read-only for all users but I can see that you are able to change the value of the params. Could you explain it to me?
@DavidTan1293
@DavidTan1293 6 дней назад
This is incredibly clutch! Thank you for taking your time to post this up!
@pushankarmakar1783
@pushankarmakar1783 6 дней назад
what are the prerequisites for this course?. I know C, C++ and I am studying Computer Science. But my practical knowledge is not very good. I am trying to improve my skills.
@somone799
@somone799 День назад
studying CS is the most useless thing ever LOL.
@seanplatnauer7211
@seanplatnauer7211 7 дней назад
hi getting this on pi 5 still Sean@raspberrypi:~/Programming/LinuxDeviceDriver $ make make -C /lib/modules/6.6.47+rpt-rpi-2712/build M=/home/Sean/Programming/LinuxDeviceDriver modules make[1]: Entering directory '/usr/src/linux-headers-6.6.47+rpt-rpi-2712' ERROR: Kernel configuration is invalid. include/generated/autoconf.h or include/config/auto.conf are missing. Run 'make oldconfig && make prepare' on kernel src to fix it. make[2]: *** [/usr/src/linux-headers-6.6.47+rpt-common-rpi/Makefile:817: include/config/auto.conf] Error 1 make[1]: *** [/usr/src/linux-headers-6.6.47+rpt-common-rpi/Makefile:246: __sub-make] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-6.6.47+rpt-rpi-2712' make: *** [makefile:4: all] Error 2
@seanplatnauer7211
@seanplatnauer7211 7 дней назад
using a pi5, getting make file issues any idea, thx sean Sean@raspberrypi:~/Programming/LinuxDeviceDriver $ make --trace makefile:4: target 'all' does not exist make -C /lib/modules/6.6.47+rpt-rpi-2712/build M=/home/Sean/Programming/LinuxDeviceDriver modules make[1]: Entering directory '/usr/src/linux-headers-6.6.47+rpt-rpi-2712' /usr/src/linux-headers-6.6.47+rpt-common-rpi/Makefile:246: target '__sub-make' does not exist make --no-print-directory -C /usr/src/linux-headers-6.6.47+rpt-rpi-2712 \ -f /usr/src/linux-headers-6.6.47+rpt-common-rpi/Makefile modules /usr/src/linux-headers-6.6.47+rpt-common-rpi/Makefile:817: target 'include/config/auto.conf' does not exist test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \ echo >&2; \ echo >&2 " ERROR: Kernel configuration is invalid."; \ echo >&2 " include/generated/autoconf.h or include/config/auto.conf are missing.";\ echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it."; \ echo >&2 ; \ /bin/false) /usr/src/linux-headers-6.6.47+rpt-common-rpi/arch/arm64/Makefile:59: update target 'stack_protector_prepare' due to: prepare0 /usr/src/linux-headers-6.6.47+rpt-common-rpi/Makefile:1819: update target 'prepare' due to: stack_protector_prepare if [ -z "y" ] && [ "gcc-12 (Debian 12.2.0-14) 12.2.0" != "gcc-12 (Debian 12.2.0-14) 12.2.0" ]; then \ echo >&2 "warning: the compiler differs from the one used to build the kernel"; \ echo >&2 " The kernel was built by: gcc-12 (Debian 12.2.0-14) 12.2.0"; \ echo >&2 " You are using: gcc-12 (Debian 12.2.0-14) 12.2.0"; \ fi /usr/src/linux-headers-6.6.47+rpt-common-rpi/Makefile:1946: update target '/home/Sean/Programming/LinuxDeviceDriver' due to: prepare make -f /usr/src/linux-headers-6.6.47+rpt-common-rpi/scripts/Makefile.build obj=/home/Sean/Programming/LinuxDeviceDriver need-builtin=1 need-modorder=1 /usr/src/linux-headers-6.6.47+rpt-common-rpi/scripts/Makefile.build:41: /home/Sean/Programming/LinuxDeviceDriver/Makefile: No such file or directory make[3]: *** No rule to make target '/home/Sean/Programming/LinuxDeviceDriver/Makefile'. Stop. make[2]: *** [/usr/src/linux-headers-6.6.47+rpt-common-rpi/Makefile:1946: /home/Sean/Programming/LinuxDeviceDriver] Error 2 make[1]: *** [/usr/src/linux-headers-6.6.47+rpt-common-rpi/Makefile:246: __sub-make] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-6.6.47+rpt-rpi-2712' make: *** [makefile:4: all] Error 2 Sean@raspberrypi:~/Programming/LinuxDeviceDriver $
@tengjiang8922
@tengjiang8922 7 дней назад
thank you!
@Garfield_Minecraft
@Garfield_Minecraft 8 дней назад
3:05 wait did you just use multiline comment for 1 line comment?
@stendall
@stendall 8 дней назад
I found changing the name of the ENABLE_PIN macro to EN_PIN (or something other than ENABLE_PIN) solved that error.
@dalesmith8666
@dalesmith8666 8 дней назад
It would be nice if you could do this in a Windows environment, using Qt creator, C++, with a simple GUI.
@calmwu6271
@calmwu6271 10 дней назад
where is the code?
@fghoussen
@fghoussen 10 дней назад
Could you detail why `pgoff = phys_addr >> PAGE_SHIFT`? Is that because each page has an ID which is stored in the first PAGE_SIZE bits of each page (and that the allocated data "begins" only after - this is how I understand it)? Or a similar reason? What if you do `pgoff = phys_addr` instead of `pgoff = phys_addr >> PAGE_SHIFT`?
@jzylkin
@jzylkin 10 дней назад
Thanks for these videos. Can you explain a little about what reference sources you use? For example, what do we do as developers if we do not already know the paramter order for gpio_direction_output() function? What is a good place to quickly look that kind of information up? The header file? manpages?
@stendall
@stendall 12 дней назад
Just in case anyone else sees this issue: I found I needed to include the -n flag on echo, otherwise the value seen from echo 1 was actually 10
@stendall
@stendall 12 дней назад
Hi Johannes, Thanks for these videos, they rock! I was wondering about why the buffer_pointer is updated to the to_copy value, rather than delta. If copy_from_user returns a non-zero not_copied result, would we not want the driver_read function to pick a to_copy value corresponding to the delta?
@sreelalithawebcast
@sreelalithawebcast 14 дней назад
What is the name of the OS you have ported on pi ?
@froedge
@froedge 14 дней назад
Oh baby im ready, so happy someone is doing this haha
@OlofAstrand
@OlofAstrand 15 дней назад
Great video but my_rproc_probe() has an error. After rproc_add. But I guess that is intentional to make sure we are paying attention. 👍 s
@haze6277
@haze6277 15 дней назад
does this device has a device tree? Suppose so i guess.
@nosojdjos
@nosojdjos 15 дней назад
Where did you get that presentation template?
@dafoex
@dafoex 16 дней назад
Thank you for touching on what the mode numbers mean! Another person said "just set this to '0666'" and I'm thinking "I know there's such a thing as a demon in computing, but this seems wrong"
@stefantapavica5180
@stefantapavica5180 16 дней назад
Which Linux you booted on your Raspberry Pi?
@johannes4gnu_linux96
@johannes4gnu_linux96 15 дней назад
Standard Raspberry Pi OS
@PreRenderedRealities
@PreRenderedRealities 18 дней назад
I love how you showed the real steps and thought-processes that went into this, that was incredibly relatable and helpful. Congratulations!
@s4degh
@s4degh 19 дней назад
I really appreciate your videos. Thank you for producing such informative content.
@logananthece9337
@logananthece9337 20 дней назад
Hi, The BAR's are mapped to some 32-bit address right, Are there any possibilities to use/access those addresses? How?
@johannes4gnu_linux96
@johannes4gnu_linux96 15 дней назад
For accessing them in userspace See ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-iZk1cDsIiiU.html I have a separate Playlist about pcie Drivers too: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-454KPcO95jY.htmlsi=SN4DewVHugUZ6kMA
@llmnr3xp0sed
@llmnr3xp0sed 21 день назад
This is the RU-vid channel that I've been looking for!!
@АльбертХарисов-м8с
I don't quite understand. Are there 2 types of DMA controllers? One inside PCI device (if device provides it) and another in CPU itself? And can I use any of them to copy data PCI <--> RAM or I have to rely on PCI device (to implement DMA inside) only?
@johannes4gnu_linux96
@johannes4gnu_linux96 21 день назад
Yes, that's true. The Processor normally comes with DMA controllers and PCI devices also can have DMA controllers built into them. This video shows you how to use the DMA controller of my emulated PCI device. I already made a video showing you how to use a DMA controller on an ARM based system. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-kl9c6DrDnHo.html Sadly I could find a good example for x86 yet.
@ImSubodhPandey
@ImSubodhPandey 25 дней назад
Can you please let me know to get workshop discussion details?
@johannes4gnu_linux96
@johannes4gnu_linux96 21 день назад
You can find details to the workshops here: chemnitzer.linux-tage.de/2024/de/programm/beitrag/108 In Prague and Kiel I will basically give this workshop again.
@TrashmanMoon
@TrashmanMoon 26 дней назад
Thanks! have a nice day!
@spideyboy9588
@spideyboy9588 28 дней назад
whenever i try to do echo > 1 /dev/my_gpio_driver it doesnt change the value to 1 also there is an error shown in the kernel log as invalid input. can u help me with this?
@CoderDomainOpt
@CoderDomainOpt 2 дня назад
I am facing the same error and this is the dmesg log when I print the value. [ 1051.874571] read_write - Device Nr. Major: 235, Minor: 1 was registered! [ 1062.880436] dev_nr - open was called! [ 1062.880516] Value is 49 [ 1062.880534] Value is 10 [ 1062.880541] Invalid Input! [ 1062.880575] dev_nr - close was called!
@techlobo2409
@techlobo2409 29 дней назад
Only just been watching this - useful pointer on how to get the cp2112 board LED to switch on / off as a way of verifying operation. Just a point of interest: you can use i2cdetect -r -y 'bus-number' to get a listing of addresses via the cp2112 adapter.
@guderian557
@guderian557 Месяц назад
How feasible would it be to port an existing Linux driver that you have the source code for to an older windows version? More specifically, Windows 98? The reason I ask is that I am kind of into retro computers and retro gaming and some of the old graphics cards that work in windows 98 are becoming increasingly rare and pricey. So having a driver even for a low end modern graphics card for win 98 would be extremely helpful.
@somone799
@somone799 День назад
You would need to use the win32 api and its not so easy to do from linux to window and most vid drivers are proprietary.
@guderian557
@guderian557 23 часа назад
@@somone799 Sure, but both Nvidia and AMD have open source implementations for their linux drivers for their GPUs.
@fghoussen
@fghoussen Месяц назад
Using this approach, is it possible to pass data from kernel to user space? Replacing the button by a temperature sensor, I get the temperature as an int allocated in kernel space memory: is it possible to pass this int (or a copy of it) to a user space application and covert it into an int allocated in user space memory?
@adult11252
@adult11252 Месяц назад
I just found that pwm_request and pwm_free is deprecated and it's not found in Kernel v.6.6. May I ask for a tutorial? I try to find tutorial but nothing comes to mind.
@T44enterprismalFORTE
@T44enterprismalFORTE Месяц назад
CK h tee cyoyp rhoczieiel niler
@nerdycatgamer
@nerdycatgamer Месяц назад
thoughts on plan9 arg macros? ARGBEGIN ARGEND etc
@SimonTheNoob
@SimonTheNoob Месяц назад
A gem in my suggestion list... LOVE IT!
@JacksonEdward-h5i
@JacksonEdward-h5i Месяц назад
Lopez Kenneth Lewis Amy Robinson Karen
@rohanjoshi8785
@rohanjoshi8785 Месяц назад
Haha what are the odds that I started learning Ethernet and you dropped a series on this.. excellent. Keep going. A suggestion would be to improve audio quality as I can hear little even on full volume. Or maybe adjustments to mic gain levels would help Thanks
@johannes4gnu_linux96
@johannes4gnu_linux96 Месяц назад
Thanks for the hint. I will try to improve the audio next time.
@supra1712
@supra1712 Месяц назад
This is going to be a great tutorial series. Thanks!