Forum: PC-Programmierung Embedded Linux auf einem x86er - wer hat Erfahrung?


von thomas (Gast)


Lesenswert?

Hi,

ich hab mir gerade mal den Thread zum Thema uClinux durchgelesen und
finde das Projekt gar net mal schlecht nur ich habe bisher im Embedded
Linux Bereich nur theoretische Kenntnisse aus Büchern u.a. das Buch
"Embedded Linux" von Robert Schwebel, und möchte mir für die ersten
Versuche kein spezielles Board kaufen sondern mit einem alten 486er das
ganze mal ausprobieren. Das müsste auch machbar sein so wie es in dem
oben genannten Buch beschrieben ist, nur mein Problem ist, dass das
Beispiel in dem Buch nicht funktioniert. Auch mit der Errata zu dem
Buch funktioniert es nicht und der Autor antwortet leider nicht auf
E-Mails.
Nun meine Frage, hat jemand das schon mal erfolgreich hinbekommen? Oder
kennt jemand eine gute deutsche Homepage bzw. ein gutes
deutschsprachiges Buch/Tutorial das auch funktioniert?
Danke schon mal für alles das mich irgendwie weiter bringt.

von Tobi (Gast)


Lesenswert?

Für alle, die das Buch nicht haben: Was sollst du laut Buch machen und
was klappt nicht?

von thomas (Gast)


Lesenswert?

Also, das Zielsystem soll zum Schluß ein x86er sein der von einer
Diskette Linux bootet und sein Dateisystem (liegt auf dem
Enwicklungsrechner) über ein Netzwerk einbindet. In einer späteren
Phase soll das Dateisystem dann von einer Flash-Disk geladen werden.

Als erstes wird ein Bootloader auf eine Diskette installiert, das
klappte. Danach hab ich den Linuxkernel ausgepackt und konfiguriert
(ist auf der beigelegten CD), hat auch noch geklappt. Dann gehts ans
kompilieren das hat er auch ca. 10 Minuten lang gemacht ohne Warn- und
Fehlermeldungen und dann ging nix mehr. Es kamen nur noch Fehler, fast
5 Minuten lang. Danach soll dann der kompilierte Kernel auf die
Diskette kopiert werden und dan soll man den x86 damit starten.

Okay ich weiß dass es schwierig ist jetzt den Fehler zufinden ihr müsst
mir dabei auch nicht helfen, ich habs nämlich auch schon aufgegeben. Ich
finde es halt nur schade dass der Autor sich seit 4 Jahren hierzu nicht
äußert und nicht versucht das Problem zu lösen.
Mich würde viel lieber ein Tutorial/ Buch/ Homepage interessieren, das
auch einen alten 386er verwendet und auf anhieb funktioniert, da ich für
die ersten Schritte auf dem neuen Gebiet eigentlich kein Geld ausgeben
will, vor allem da man ja nie weiß ob das dann auch funktioniert.

von thomas (Gast)


Lesenswert?

Für alle die dieses Thema auch interessiert hier noch ein paar Links
(teilweise nicht sehr informativ)

Linux für eingebettete Systeme und PDAs
http://www.fh-wedel.de/~si/seminare/ws01/Ausarbeitung/5.linuxpda/linpda0.htm

Aufbau eines Embedded Linux Systems
http://www.fh-wedel.de/~si/seminare/ws01/Ausarbeitung/5.linuxpda/linpda3.htm

Seiten von Herrn Schwebel
http://www.schwebel.de
http://www.linux-automation.de

von Jürgen (Gast)


Lesenswert?

"Als erstes wird ein Bootloader auf eine Diskette installiert, das
klappte. Danach hab ich den Linuxkernel ausgepackt und konfiguriert
(ist auf der beigelegten CD), hat auch noch geklappt. Dann gehts ans
kompilieren das hat er auch ca. 10 Minuten lang gemacht ohne Warn- und
Fehlermeldungen und dann ging nix mehr. Es kamen nur noch Fehler, fast
5 Minuten lang. Danach soll dann der kompilierte Kernel auf die
Diskette kopiert werden und dan soll man den x86 damit starten."


Poste doch mal die ersten Fehler. Nur die sind interessant.

von thomas (Gast)


Lesenswert?

So hab es jetzt nachdem ich es schon aufgegeben habe nochmals versucht
zu kompilieren jetzt aber mit Redhat Linux 9.0 nun sind es nur noch
zwei Fehlermeldungen. Bis jetzt... Hier mal die letzten Zeilen danach
kommt wieder der Prompt.

sched.c: At top level:
sched.c:86: conflicting types for `xtime'
/home/thomas/compilieren/linux-2.2.19-rtai/include/linux/sched.h:514:
previous declaration of `xtime'
sched.c: In function `schedule':
sched.c:777: warning: deprecated use of label at end of compound
statement
make[2]: *** [sched.o] Fehler 1
make[2]: Verlassen des Verzeichnisses Verzeichnis
/home/thomas/compilieren/linux-2.2.19-rtai/kernel
make[1]: *** [first_rule] Fehler 2
make[1]: Verlassen des Verzeichnisses Verzeichnis
/home/thomas/compilieren/linux-2.2.19-rtai/kernel
make: *** [_dir_kernel] Fehler 2

Wer kann damit was anfangen?

von pebisoft (Gast)


Lesenswert?

nimm debian-linux.
mfg pebisoft

von thomas (Gast)


Lesenswert?

@pebisoft
Sorry, mit deiner allgemeingehaltenen Aussage kann man hier nicht viel
anfangen.
Funktioniert das kompilieren des Beispiels mit Debian dann, oder wie
meinst du das? Und mit welcher Version von Debian hast du das gemacht?

von David Otto (Gast)


Lesenswert?

Vergiss die aussage von pebisoft, unter debian wirst du warscheinlich
genau die gleichen Fehler haben. Mich würde die Version des
Linuxkernels interessieren, ist es eine für besondere, für "embedded
linux" angepasste Version oder ist es ein "normaler" Linux-Kernel?

Falls es ein normaler ist, würd ich dir empfehlen dir den neusten von
http://www.kernel.org zu laden, da es sein kann dass der alte Kernel
von der CD mit neueren Compilern nicht mehr funktioniert.

von thomas (Gast)


Lesenswert?

@David Otto
Ja es ist ein normaler Kernel (Version 2.2.19) mit dem Patch RTAI 1.7
und einer fertigen Konfigurationsdatei (alles auf der CD dabei).

Hast du so etwas schon einmal gemacht? Ich war bisher wie gesagt noch
nie erfolgreich... Kennst du ein gutes Tutorial/Homepage - am besten
auf deutsch? Oder kannst du deine Vorgehensweise etwas genauer
beschreiben?

von David Otto (Gast)


Lesenswert?

Ja normale Linux kernel hab ich schon öfter konfiguriert und
installiert, unter
http://www.selflinux.org/selflinux-devel/html/kernel.html findest du
eine kleine Anleitung,

Ich bin mir nicht sicher was du mit der Bootdisk vorhast, was du mit
deinem RedHat nicht machen kannst.

Vielleicht solltest du ein vorkonfiguriertes Linux verwenden wie z.B.
http://www.toms.net/rb/. Ein Bootdisk-Linux zu erstellen ist sicherlich
nicht ganz leicht, aber vielleicht hilft dir ja das
http://www.linux-magazin.de/Artikel/ausgabe/2002/11/mini/mini.html

von Marc (Gast)


Lesenswert?

Hallo Thomas,

ich kann Dein Problem nicht ganz nachvollziehen, ich glaube mal Du
versuchst einen Kernel für Deinen 486er zu kompilieren -- somit müßte
der Kernelsource auf der Diskette sein. Um diesen verwenden zu können,
müßtest Du ihn auf Dein Hardware konfigurieren, dies ist aber ohne
Vorlage sicher nicht einfach.

Warum nimmst Du Dir nicht einfach ein fertige Linux-Bootdiskette und
machst dort Deine Tests?

http://www.omimo.be/encyc/rtlinux/EmbeddedLinux/TinyLinux.htm

Dort gibt es auch Projekte, wo Du Deine eigene Linux-Disk-Distribution
bauen kannst, aber auch dies ist für einen Nicht-Linux-Kenner sicher
mit einiger Zeit verbunden.

Gruss
Marc

von Sepp (Gast)


Lesenswert?

@Marc: Du hast Tomas nicht ganz verstanden. Er versucht, ein
Realtime-Linux zu kompilieren. Nicht, irgendein Linux auf dem 486er zum
Laufen zu bringen ;)



Hallo, Thomas,

vergiss die Aussage von Pebisoft, er hat keine Ahnung.
Nicht umsonst hat das Debian-Projekt solche Schwierigkeiten und
technische Fragwürdigkeiten.

Ich habe spasseshalber mal eben die RTAI 3.1 heruntergeladen, dazu den
passenden Kernel 2.6.8.1 und das Ganze für einen 486er kompiliert (für
eine fiktive Hardware). Es funktionierte einwandfrei.

Meine Empfehlung an Dich: Vergiss den alten Rotz auf Deinen CDs. Die
einzige Frage, die Du Dir stellen musst, ist, ob Du einen 2.4er oder
2.6er Kernel nutzt. Das hängt aber von Deiner Anwendung ab.
Lad Dir also die aktuelle Soft runter und geh entsprechend den READMEs
vor (patchen, konfigurieren, kompilieren).
Wenn dann noch Schwierigkeiten auftreten, dann frag halt noch mal.

von thomas (Gast)


Lesenswert?

@Sepp: Danke ich werde es aber erst am WE ausprobieren können da ich
unter der Woche nur mein Notebook bei mir habe und da ist kein Linux
drauf, aber ich probiers mal aus.
Ich werde aber wahrscheinlich diesmal schon beim Konfigurieren
scheitern da ich das noch nie gemacht habe, außer halt das fertige
Config-File geladen das bei dem Buch dabei war. Oder kann ich das auch
wieder benutzen?
Kannst du mal sagen wie du vorgegangen bist nach dem du den Kernel und
RTAI in verschiedenen Verzeichnisse entpackt hattest? Stichpunktartig
mit Befehl reicht mir vollkommen aus.

von thomas (Gast)


Lesenswert?

Also wie ich es vermutet habe, bekomme ich jetzt einen normalen Kernel
2.4.30 compiliert (endlich).
Nur einen Kernel mit RTAI3.0r4 bekomme ich immer noch nicht gebacken.
Nach dem Konfigurieren von RTAI bricht er noch während des schreibens
des Config-Files ab und bringt eine Fehlermeldung, dass er das
Linux-Source-Directory nicht finden kann, obwohl ich menuconfig aus
diesem aufrufe.

@Sepp wie hast du RTAI konfiguriert? Bzw. was hast du gemacht nachdem
du die Sources (Linux+RTAI) entpackt hast und bevor du menuconfig für
RTAI aufgerufen hast? Hast du erst menuconfig für RTAI ausgeführt und
dann nochmals für Linux?

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
Noch kein Account? Hier anmelden.