Dezvoltare drivere pentru Linux: Diferență între versiuni
Sari la navigare
Sari la căutare
| Linia 13: | Linia 13: | ||
tom@rpi-yo3iti:~/c/drivere/Salzman/01 $ cat /proc/version | tom@rpi-yo3iti:~/c/drivere/Salzman/01 $ cat /proc/version | ||
Linux version 5.4.51-v7l+ (dom@buildbot) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #1327 SMP Thu Jul 23 11:04:39 BST 2020 | Linux version 5.4.51-v7l+ (dom@buildbot) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #1327 SMP Thu Jul 23 11:04:39 BST 2020 | ||
</syntaxhighlight> | |||
Sau prin <code>dmesg</code>: | |||
<syntaxhighlight lang="shell"> | |||
tom@rpi-yo3iti:~/c/drivere/Salzman/01 $ dmesg |grep Linux | |||
[ 0.000000] Booting Linux on physical CPU 0x0 | |||
[ 0.000000] Linux version 5.4.51-v7l+ (dom@buildbot) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #1327 SMP Thu Jul 23 11:04:39 BST 2020 | |||
[ 1.126787] usb usb1: Manufacturer: Linux 5.4.51-v7l+ xhci-hcd | |||
[ 1.128576] usb usb2: Manufacturer: Linux 5.4.51-v7l+ xhci-hcd | |||
[ 19.684585] mc: Linux media interface: v0.10 | |||
[ 19.719580] videodev: Linux video capture interface: v2.00 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Versiunea de la data 28 iulie 2020 18:56
Aceste pagini conțin o colecție de informații necesare în special celor care doresc să programeze diverse pe Linux (sau Raspberry – fiindcă e același lucru). Am început să adun această documentație pentru dezvoltarea driverelor de care am nevoie pentru diferitele proiecte electronice pe Raspberry.
Pe măsură ce le adun, o să le și structurez mai bine.
Dezvoltare drivere pentru Linux (Raspberry)
Pregătiri
Cazul platformei mele este un Raspberry Pi 4, versiunea c03112 cu un kernel versiunea 5.4.51-v7l+:
tom@rpi-yo3iti:~/c/drivere/Salzman/01 $ uname -a
Linux rpi-yo3iti 5.4.51-v7l+ #1327 SMP Thu Jul 23 11:04:39 BST 2020 armv7l GNU/Linux
Sau, prin /proc/version:
tom@rpi-yo3iti:~/c/drivere/Salzman/01 $ cat /proc/version
Linux version 5.4.51-v7l+ (dom@buildbot) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #1327 SMP Thu Jul 23 11:04:39 BST 2020
Sau prin dmesg:
tom@rpi-yo3iti:~/c/drivere/Salzman/01 $ dmesg |grep Linux
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 5.4.51-v7l+ (dom@buildbot) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #1327 SMP Thu Jul 23 11:04:39 BST 2020
[ 1.126787] usb usb1: Manufacturer: Linux 5.4.51-v7l+ xhci-hcd
[ 1.128576] usb usb2: Manufacturer: Linux 5.4.51-v7l+ xhci-hcd
[ 19.684585] mc: Linux media interface: v0.10
[ 19.719580] videodev: Linux video capture interface: v2.00
Header-ele kernel, pentru dezvoltare, trebuie să se potrivească cu versiunea de kernel:
test
Pentru lista completă de coduri de versiuni, vezi aici. Mai întâi trebuie instalate header-ele pentru kernel:
sudo rpi-update stable
Apoi:
apt get install raspberrypi-kernel-headers
Link-uri externe
Directive de compilare – Makefile
Un fișier Makefile simplu:
obj-m += hello-1.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Apoi:
tom@rpi-yo3iti:~/c/drivere/Salzman/01 $ make
make -C /lib/modules/5.4.51-v7l+/build M=/home/tom/c/drivere/Salzman/01 modules
make[1]: Entering directory '/usr/src/linux-headers-5.4.51-v7l+'
CC [M] /home/tom/c/drivere/Salzman/01/hello-1.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: modpost: missing MODULE_LICENSE() in /home/tom/c/drivere/Salzman/01/hello-1.o
see include/linux/module.h for more information
CC [M] /home/tom/c/drivere/Salzman/01/hello-1.mod.o
LD [M] /home/tom/c/drivere/Salzman/01/hello-1.ko
make[1]: Leaving directory '/usr/src/linux-headers-5.4.51-v7l+'