Forum: Linux-Unix Programmierung
Moderatoren: juergen, Martin ConradThema: Portierung einer C-Applikation aus dem User-Space in den Kernel-Space
Re: Portierung einer C-Applikation aus dem User-Space in den Kernel-Space
HolyHit am 17.01.2011 um 16:23
bin dabei den Preempt Kernel zu testen.
Ich bin nach folgender Anleitug gegangen und den Kernel 2.6.24.7 genommen:
Die Installation verlief erfolgreich.
Dazu habe ich noch einige Fragen:
Nun habe ich in /lib/modules/2.6.24.7-preempt 2 Links
build -> /usr/src/linux-2.6.27.7
source -> /usr/src/linux-2.6.24.7
Sind diese Links korrekt?
Worauf muss in der Link linux in /usr/src zeigen?
Ich muss dann noch ein Treiber kompilieren. Muss ich dazu den linux link auf de neuen preempt-headers
verlinken?
Gruß
Juri
[EDIT] - Re: Portierung einer C-Applikation aus dem User-Space in den Kernel-Space
icefire am 03.02.2011 um 22:07
Was ist der aktuelle Stand deines Projektes? Hast du die Applikation portiert?
Zitat:
Ich bin nach folgender Anleitug gegangen und den Kernel 2.6.24.7 genommen:
1) Welche Anleitung? Ich sehe keinen Link oder ähnliches.
2) Warum Kernel 2.6.24? Der latest stable RT Preempt Kernel ist 2.6.33.
Zitat:
Die Installation verlief erfolgreich.
D.h. du hast jetzt einen lauffähigen RT Prempt Kernel?
Falls nein: Ich habe mir vor ein paar Tagen den aktuellen RT Preempt kompiliert, und auf der OSADL-Seite
findet man dazu eine nette Kurzanleitung.
Zitat:
Worauf muss in der Link linux in /usr/src zeigen?
Wird im Dokument Konfigurieren, Compilieren und Installieren eines Kernels 2.6 unter openSUSE Linux
(lesenswert
) sehr ausführlich behandelt, obs stimmt was dort steht weiß ich nicht:
Zitat:
Immer wieder kommt es zu Missverständnissen, was den Link /usr/src/linux angeht. Prinzipiell muss dieser Link nicht existieren (Linus Torvalds geht sogar soweit zu sagen, der Link sollte nicht existieren). Er ist zum Konfigurieren, Compilieren und Installieren eines neuen Kernels nicht nötig. Existiert dieser Link aber, so sollte er immer auf die Kernel-Quellen des momentan laufenden Kernels zeigen. Der Link wird (leider nachwievor) manchmal benutzt, wenn externe Kernel-Module compiliert werden; oft wertet das entsprechende Makefile nicht den Link /lib/modules/`uname -r`/build aus (was es eigentlich tun sollte), sondern vertraut darauf, dass /usr/src/linux korrekt gesetzt ist. Nur wenn die korrekten Linux-Header zum Compilieren des Modules eingebunden werden können, wird es auch zum Kernel passen und sich laden lassen. Sofern also beim Installieren von neuen Kernel-Quellen der Link /usr/src/linux existiert und auf ein existierendes Verzeichnis mit (älteren) Kernel-Quellen, die zum momentan laufenden Kernel passen, zeigt, kann er zunächst unberührt bleiben. Erst nachdem ein neuern Kernel compiliert, installiert und erfolgreich gebootet wurde, sollte der Link /usr/src/linux angepasst werden. Installiert man Kernel-Quellen per RPM, so wird u.U. der Link automatisch verändert. Hier sollte man als Anwender ein Auge darauf haben und gegebenenfalls von Hand einschreiten (oder den Link ganz löschen).
mfg, Wolfgang
--
Hex, Bugs and Rock 'n Roll
Re: Portierung einer C-Applikation aus dem User-Space in den Kernel-Space
icefire am 03.02.2011 um 22:20
angesehen, und festgestellt, dass das die Entwickler die gleichen Herrschaften sind die das Buch Linux für Industrielle Steuerungen
geschrieben haben.
Ich hoffe für den Erfolg deines Projektes, dass die von der Programmierung mehr Ahnung haben als vom Bücher-Schreiben
BTW: Möchte jemand ein Buch geschenkt haben?
--
Hex, Bugs and Rock 'n Roll
Re: Portierung einer C-Applikation aus dem User-Space in den Kernel-Space
HolyHit am 08.02.2011 um 13:02
ja ich habe die Applikation erfolgreich portiert bekommen.
zu 1) tut mir Leid, ich weiß nicht wo der Link hin ist, war mir sicher den eingefügt zu haben, aber doch wohl vergessen.
Anleitung
zu 2) Ich nutzte diese Kernelversion da ich einen Treiber verwende, welcher laut meinem Wissensstand nur bis 2.4.26 erfolgreich getestet wurde.
Außerdem muss die Kernelversion auch mit dem EtherCAT-Master kompatibel sein.
Der RT PREEMPT Kernel läuft jetzt. Die Zykluszeit ist momentan auf 500µs eingestellt.
Ich werde mir deine Links bei Gelegenheit angucken, danke schon mal dafür.
Gruß
Juri
