Hallo, ich versuche einen Treiber für den Rapsberry Pi zu schreiben. Dafür will ich erst mal die Kernel-Sourcen installieren. Nach http://stackoverflow.com/a/29354565 versuche ich dieses: "sudo apt-get install build-essential": war schon installiert "sudo apt-get install dkms": scheint man nur beim Kernelwechsel zu brauchen, erst mal nicht installiert Der Kernel ist der 3.18.11+ #781 REEMPT, die Quellen dazu gibts an der selben Stelle wie im Link erwähnt: http://www.niksula.hut.fi/~mhiienka/Rpi/linux-headers-rpi/linux-headers-3.18.11-v7%2B_3.18.11-v7%2B-2_armhf.deb Das installieren mit dpkg (laut der 3. Zeile im Stackpverflow-Link) gibt eine Fehlermeldung: dpkg: error processing linux-headers-3.18.11-v7+ (--install): dependency problems - leaving unconfigured -> was bedeuted das und kann man das ignorieren? um zu sehen ob der gcc denn schon auf dem System ist, dieser per apt-get installieren. Das gibt folgende Fehlermeldung: The following packages have unmet dependencies: linux-headers-3.18.11-v7+ : Depends: gcc-4.7 but it is not going to be installed E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution). pi@raspberrypi /mnt/synintern/pi/151130_treiber1 $ gcc --version gcc (Debian 4.6.3-14+rpi1) 4.6.3 -> jetzt bin ich soweit erst mal hier nachzufragen bevor ich weiter selber friemle. Wie bekommt man einen Treiber übersetzt? Zuerst will ich das anhand des ersten Beispiels aus dem Buch von Quade/Kunst: "Linux Treiber entwickeln" ausprobieren, Quelltexte in Anhang.
asd schrieb: > ich versuche einen Treiber für den Rapsberry Pi zu schreiben. Dafür will > ich erst mal die Kernel-Sourcen installieren. Nach > http://stackoverflow.com/a/29354565 > versuche ich dieses: > > "sudo apt-get install build-essential": war schon installiert > "sudo apt-get install dkms": scheint man nur beim Kernelwechsel zu > brauchen, erst mal nicht installiert > Der Kernel ist der 3.18.11+ #781 REEMPT, die Quellen dazu gibts an der > selben Stelle wie im Link erwähnt: > http://www.niksula.hut.fi/~mhiienka/Rpi/linux-headers-rpi/linux-headers-3.18.11-v7%2B_3.18.11-v7%2B-2_armhf.deb Ausweislich des Paketnamens sind das nur die header des Kernels. Zudem ist das eine etwas merkwürdige Quelle und der Tipp aus der Anleitung nicht so wirklich eine gute Idee. Nimm' lieber die Pakete Deines Distributors -- dann funktioniert auch /lib/modules/$(uname -r)/build und ist ein Symlink auf /usr/src/linux-headers-$(uname -r). > Das installieren mit dpkg (laut der 3. Zeile im Stackpverflow-Link) gibt > eine Fehlermeldung: > dpkg: error processing linux-headers-3.18.11-v7+ (--install): dependency > problems - leaving unconfigured > > -> was bedeuted das und kann man das ignorieren? Das ist nur das letzte Ende der Fehlermeldung, daß dpkg Probleme mit den Paketabhängigkeiten hat. Im Teil davor steht, was die Ursache ist. > um zu sehen ob der gcc denn schon auf dem System ist, Das kann man herausfinden mit "dpkg -l '*gcc*'" oder mit "gcc --version" -- aber wenn "build-essential" installiert ist, ist GCC auch drauf, genau wie alles andere, was Du zum Übersetzen brauchst. Das ist schließlich der ganze Sinn dieses Metapakets. > dieser per apt-get installieren. Das gibt folgende Fehlermeldung: > > The following packages have unmet dependencies: > linux-headers-3.18.11-v7+ : Depends: gcc-4.7 but it is not going to be > installed Da haben wir die Ursache: das Paket "linux-headers-3.18.11-v7+" hängt von dem Paket "gcc-4.7" ab, aber das soll nicht installiert werden. Und nein, Du willst das Paket "gcc-4.7" jetzt nicht händisch installieren, sondern stattdessen das komische Paket mit "dpkg -P <paketname>" löschen. Die Manpage von dpkg ("man dpkg"), vor allem die am Ende verwiesene Unterseite von dpkg-query, zeigt Dir, wie Du Deine Paketdatenbank abfragen kannst. > E: Unmet dependencies. Try 'apt-get -f install' with no packages (or > specify a solution). > pi@raspberrypi /mnt/synintern/pi/151130_treiber1 $ gcc --version > gcc (Debian 4.6.3-14+rpi1) 4.6.3 > > -> jetzt bin ich soweit erst mal hier nachzufragen bevor ich weiter > selber friemle. Wie bekommt man einen Treiber übersetzt? Zuerst will ich > das anhand des ersten Beispiels aus dem Buch von Quade/Kunst: "Linux > Treiber entwickeln" ausprobieren, Quelltexte in Anhang. Indem man zunächst einmal die Kernelheader der eigenen Distribution installiert ("sudo apt-get install linux-headers-$(uname -r)", aber aus deren eigenen Repositories und nicht aus irgendwelchen dubiosen Quellen in Finnland. Wenn Du auch noch die Kernelsourcen haben willst, kannst Du zudem das Paket "linux-source" installieren. In beiden Fällen werden die Header und Sourcen dann da installiert, wo sie hingehören: in /usr/src/. Wenn das alles gemacht ist, kannst Du Deine Dateien in ein Verzeichnis kopieren, dort in einer Shell mit "cd" hineinwechseln und dann mit "make" die Übersetzung deines "mod1.c" beginnen. Wenn dann etwas nicht klappt, frag' einfach nochmal. Viel Erfolg!
Vielen Dank für deine Tipps. Ich habe das finnische Paket deinstalliert, dann versucht per apt-get die header und die sourcen zu installieren. Bei den Header findet apt-get nur die Header von ein paar Versionen die aber nicht dem installierten Kernel entsprechen und bei den sourcen schlägt apt-get vor die von der Version 3.2 zu installieren, aber ich vermute dass die gar nicht passen? Tut mir leid wenn ich wegen den Details zu viele Fragen stelle, bisher kenne ich Linux nur aus Anwender-Sicht. BTW, unter Suse 13.1 auf dem PC hab ich es gerade geschafft die Sourcen zu installieren und den Rumpf-Treiber aus dem Beispiel zu compilieren. An sich sollte das also klappen, nur beim Raspberry zwickt was bei den notwendigen Paketen. Die Befehle und deren Antworten in der Schell: pi@raspberrypi /mnt/synintern/pi/151130_treiber1 $ sudo apt-get install linux-headers-$(uname -r) Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package linux-headers-3.18.11 E: Couldn't find any package by regex 'linux-headers-3.18.11' pi@raspberrypi /mnt/synintern/pi/151130_treiber1 $ sudo apt-get install linux-headers Reading package lists... Done Building dependency tree Reading state information... Done Package linux-headers is a virtual package provided by: linux-headers-rpi 3.2+46+rpi4 linux-headers-3.6-trunk-rpi 3.6.9-1~experimental.1+rpi7 linux-headers-3.2.0-4-rpi 3.2.51-1+rpi1 linux-headers-3.10-3-rpi 3.10.11-1+rpi7 You should explicitly select one to install. E: Package 'linux-headers' has no installation candidate pi@raspberrypi /mnt/synintern/pi/151130_treiber1 $ sudo apt-get install linux-source Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: linux-source-3.2 Suggested packages: libncurses-dev ncurses-dev libqt4-dev The following NEW packages will be installed: linux-source linux-source-3.2 0 upgraded, 2 newly installed, 0 to remove and 1 not upgraded. Need to get 78.6 MB of archives. After this operation, 78.7 MB of additional disk space will be used. Do you want to continue [Y/n]? n Abort. pi@raspberrypi /mnt/synintern/pi/151130_treiber1 $ uname -r 3.18.11+ pi@raspberrypi /mnt/synintern/pi/151130_treiber1 $
Zum Thema Header files zum Compilieren eines Treibers auf dem Raspberry Pi hab ich das gefunden. Das kann doch nicht deren Ernst sein, Die Header müssen doch einfacher aufzutreiben sein? http://raspberrypi.stackexchange.com/questions/37010/rpi2-kernel-module-compilation-kernel-3-18-11-vs-3-18-11-v7 > 3. Why can't I install the kernel header like I do on my Ubuntu machine. > This is an unfortunate strategy of the people who maintain Raspbian. Bevor ich jetzt lang rum experimentier', weiß jemand ob ein anderes Image in Bezug auf Header Files und dem Paket "build-essentials" freundlicher reagiert? "Ubuntu Mate" vielleicht, oder "Snappy ubuntu core"? https://www.raspberrypi.org/downloads/
Sagt mal, aus den Optionen von apt-get werde ich gerade nicht ganz schlau, kann man denn ein Paket installieren auch wenn die Abhängigkeiten nicht passen? https://wiki.ubuntuusers.de/apt/apt-get/no_redirect Mach einigem rumprobieren bin ich immer noch nicht weiter. Da das finnische .deb Paket aber offensichtlich die benötigten Dateien enthält, das ja "nur" Headerdateien sind, und die Installation nur am geforderten gcc-4.7 scheitert (gcc-4.6.3 vorhanden) würde ich es so rum versuchen wollen.
Have a look here http://www.eevblog.com/forum/reviews/howto-get-the-raspian-kernel-installed-with-headers/ It's an old post, remember to use the correct kernel version numbers, when editing boot/config.txt. mfg /Bingo I use here http://www.eevblog.com/forum/reviews/using-a-raspberry-pi-with-linux-gpib-and-a-beiming-or-agilent-usb-gpib-adapter/
Vielleicht probierst Du es mal direkt bei raspberrypi.org? Z.B. hier: https://www.raspberrypi.org/documentation/linux/kernel/building.md
Vielen Dank an alle für die Tipps. raspberrypi.org hat anscheinend die Header nicht in den Standard-Paketen. Was ich gerade runter geladen habe und morgen ausprobieren werden ist das: https://www.raspbian.org/PiscesImages Die haben in ihrer Paketliste zumindest Header-Pakete, ich hoffe doch dass das dann auch die Version ist passend zum Kernel. Ansonsten komme ich morgen an der Uni-Bib vorbei und kann mir dieses Buch ausleihen: Quade, Kunst: Linux-Treiber, in der neuen Auflage mit Sticker "auch für Raspberry Pi" (selber hab ich nur eine alte Auflage). Da steht dann vermutlich drin was ich brauche.
Hallo, ich hab zu dem Problem einen Treiber für den Raspberry zu compilieren mal diese Disri ausprobiert: https://www.raspbian.org/PiscesImages Schaut ganz nett aus, nach einem "sudo apt-get update" und "sudo apt-get upgrade" hab ich Kernel 3.1.9+ drauf. Es gibt acuh verschiedene Dateien mit Headern, aber nicht für die Kernelversion 3.1.9. Macht es den Raspberry-Pi-Distri-Machern eigentlich Spaß Header-Pakete in ihre Disti zu packen die nicht zum tatsächlich installierten Kernel passen? Oder gibt es einen Grund dahinter? > sudo apt-get install build-essential hab ich installiert. Dann noch > sudo apt-get install linux-headers-rpi-rpfv Was mir gcc-4.7 und die Header zu 3.18.0 drauf gepackt hat. Irgendwelche Ideen? Meine gehen mir jetzt langsam aus... Hier ein Ausschnitt aus der Datei mit den Beschreibungen der Pakete der Distri (http://archive.raspbian.org/raspbian/dists/wheezy/main/binary-armhf/Packages): Package: linux-headers-rpi Source: linux-latest (46+rpi4) Version: 3.2+46+rpi4 Architecture: armhf Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org> Installed-Size: 29 Depends: linux-headers-3.2.0-4-rpi Provides: linux-headers Priority: extra Section: kernel Filename: pool/main/l/linux-latest/linux-headers-rpi_3.2+46+rpi4_armhf.deb Size: 4916 SHA256: b98b91aa9a88cbf4df6101c3aa6d6e5b9fc9a2c0fc06198911bd7c400adacb67 SHA1: 63d1a07da25ef76656ff205ce05e3d69232bb81f MD5sum: 0b46095f55762f26acebba5b3d57abb8 Description: Header files for Linux rpi configuration (meta-package) This package depends on the architecture-specific header files for the latest Linux kernel rpi configuration. Package: linux-headers-rpi-rpfv Source: linux-latest (46+rpi4) Version: 3.18+46+rpi4 Architecture: armhf Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org> Installed-Size: 29 Depends: linux-headers-3.18.0-trunk-rpi Priority: extra Section: kernel Filename: pool/main/l/linux-latest/linux-headers-rpi-rpfv_3.18+46+rpi4_armhf.deb Size: 4934 SHA256: e6ad56a37e18ba25c70460cb785ac256aecf6550d2f743fb46885675611238e1 SHA1: b17fdd11e08900de50650b6d6a2df85cccc04a7d MD5sum: 3c9dd8a3c2973b8e78b9edaf9f0cca3e Description: This metapackage will pull in the headers for the raspbian kernel for the raspberry pi 1 based on the version currently reccomended by the raspberry pi foundation (currently 3.18).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.