embedded Systems < Linux, UNIX, BSD, POSIX < Betriebssysteme < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 11:33 Fr 04.06.2010 | Autor: | anna_h |
Aufgabe | 1) der parallelportadapter des PCs besitzt auf dem IO-Bus drei Ports. Nennen und beschreiben Sie diese kurz.
2) Was macht die Funktion ioctrol?
3)Was ist das init_module? Wie testen Sie dieses Modul gezielt?
4) Was ist das cleanup_module? Wie testen Sie dieses Modul gezielt?
5) Was versteht man unter copy_to_user?
6) Wie heißt das Gegenstück zu copy_to_user?
7) Beim testen ist die Datei /proc/devices wertvoll. Welche Information bietet diese Datei? |
Ich bin ein absoluter Embedded Anfänger. Ich habe grob geschätzte 1000 Fragen. Wenn ich die obigen gelöst hätte, könnte ich mir schon einiges erschliessen.
google und so helfen mir leider nicht wirklich.
meine bisherigen Lösungen wären:
zu 2) fängt per switch-case Ergebnisse ab. z.B. CD_ROM-Laufwerk auf/zu
zu 6) copy_from_user
ich hoffe ihr könnt mir helfen
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:43 Fr 04.06.2010 | Autor: | rainerS |
Hallo!
> 1) der parallelportadapter des PCs besitzt auf dem IO-Bus
> drei Ports. Nennen und beschreiben Sie diese kurz.
> 2) Was macht die Funktion ioctrol?
> 3)Was ist das init_module? Wie testen Sie dieses Modul
> gezielt?
> 4) Was ist das cleanup_module? Wie testen Sie dieses Modul
> gezielt?
> 5) Was versteht man unter copy_to_user?
> 6) Wie heißt das Gegenstück zu copy_to_user?
> 7) Beim testen ist die Datei /proc/devices wertvoll.
> Welche Information bietet diese Datei?
>
> Ich bin ein absoluter Embedded Anfänger. Ich habe grob
> geschätzte 1000 Fragen. Wenn ich die obigen gelöst
> hätte, könnte ich mir schon einiges erschliessen.
> google und so helfen mir leider nicht wirklich.
Der Verlag OReilly bietet sein Buch Linux-Gerätetreiber Online an.
Du kannst manche der Fragen mit einem Linux-System leichter beantworten.
Zum Beispiel Frage 1: schau dir die Ausgabe des Kommandos
cat /proc/ioports
an. Da gibt es drei Zeilen, bei denen parport steht; das sind die drei Ports. Genaueres findest du im genannten Buch hier.
> meine bisherigen Lösungen wären:
> zu 2) fängt per switch-case Ergebnisse ab. z.B.
> CD_ROM-Laufwerk auf/zu
Meinst du nicht die Funktion ioctl ?
Diese Funktion ruft gerätespezifische Operationen auf. Welche das sind, hängt vom Gerät ab; der Gerätetreiber definiert die möglcihen Operationen. Beim CD-Laufwerk können das, wie du schreibst Öffnen/Schließen des Luafwerksschachts sein. Siehe hier.
> zu 6) copy_from_user
Richtig.
Hier geht es um die Unterscheidung zwischen Userspace (das ist der Speicher in dem die Programme arbeiten) und Kernelspace (das ist der Speicher, mit dem der Linuxkern arbeitet). Diese beiden Bereiche sind streng getrennt. Bei einem Systemaufruf übergibt das aufrufende Programm einen Verweis auf den Speicher im Userspace. Damit der Kern ungestört mit den Daten etwas anfangen kann, wird mit copy_from_user ein Datenblock vom Userspace in den Kernelspace kopiert. Vor dem Rücksprung in das Programm selbst wird das Ergebnis mit copy_to_user zurückkopiert. Was da genau kopiert wird, hängt vom Systemaufruf ab.
Zu 3 und 4 siehe hier. Vereinfacht gesagt, führt init_module alle für die Funktion eines ladbaren Moduls notwendigen Initialisierungen aus, und cleanup_module räumt auf, damit das Modul wieder entfernt werden kann.
Zu 7: Hast du dir den Inhalt angeschaut (cat /proc/devices) ? Da steht für jeden Gerätetreiber eine Nummer drin, unter der der Treiber bekannt ist.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 15:03 Fr 04.06.2010 | Autor: | anna_h |
Danke für deine Antwort. Aber was ist bei 3) und 4) gemeint mit "Wie testen Sie dieses Modul gezielt?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:46 Fr 04.06.2010 | Autor: | rainerS |
Hallo!
> Danke für deine Antwort. Aber was ist bei 3) und 4)
> gemeint mit "Wie testen Sie dieses Modul gezielt?
Die Frage verstehe ich auch nicht, denn sie klingt so, als seien init_module und cleanup_module spezielle Module. Für mich sind das spezielle Funktionen in einem ladbaren Kernel-Modul.
Ich würde die Frage in zwei Teilen angehen:
1. Wie könntest du überhaupt so etwas testen?
2. Wie testest du diese spezielle Funktion? Dazu musst diese Funktion ja benutzt werden. Wann wird die Funktion benutzt, wie stellst du diese Situation her?
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 15:37 Fr 04.06.2010 | Autor: | anna_h |
Aufgabe | Es sind leider noch weitere Fragen aufgetaucht.
Ich soll wiedergeben was folgende Befehle machen.
a) xx=$(ls | tr [:upper:] [:lower:]
echo $ xx
b) kill -SIGKILL 7619
c) echo $ ( wc -L L-L )
d)echo eins zwei drei >mydat
read < mydat a b c
echo $c
e) ls -ls | sort -k 9 -r
f) ( cd src && tar cf - . ) | ( cd dest && tar xvf -) |
bei a) denke ich das Dateien in die Variable xx geschrieben werden. Diese wird mit echo ausgegeben. Aber das ist ja nicht alles oder?
Bei den anderen bin ich noch weiter von der Lösung weg. Ich habe die Befehle zur gesuchgt und auch gefunden. So weiß ich z.B. das cd das aktuelle Vereichnis wechelt. Leider kann ich aber mit keinem der Befehle was genaues anfangen.
Danke schonmaöl für eure Hilfe
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:43 Fr 04.06.2010 | Autor: | rainerS |
Hallo!
> Es sind leider noch weitere Fragen aufgetaucht.
> Ich soll wiedergeben was folgende Befehle machen.
> a) xx=$(ls | tr [:upper:] [:lower:]
> echo $ xx
> b) kill -SIGKILL 7619
> c) echo $ ( wc -L L-L )
> d)echo eins zwei drei >mydat
> read < mydat a b c
> echo $c
> e) ls -ls | sort -k 9 -r
> f) ( cd src && tar cf - . ) | ( cd dest && tar xvf -)
> bei a) denke ich das Dateien in die Variable xx
> geschrieben werden. Diese wird mit echo ausgegeben. Aber
> das ist ja nicht alles oder?
Nicht ganz. Was genau ist "ls" ?
Dann ist noch dieses Kommando tr, das einzelne Zeichen ersetzt. Genauer gesagt, die beiden Parameter sind jeweils eine Liste von Zeichen, und jedes Zeichen das in der ersten Liste an einer bestimmente Position vorkommt, wird durch das Zeichen an der leichen Position in der zweiten Liste ersetzt. In diesem speziellen Fall ist die erste Liste [:upper:], die Liste aller Großbuchstaben, und die zweite [:lower:], die Liste aller Kleinbuchstaben. Bei diesem Aufruf ersetzt also tr alle Großbuchstaben in der Eingabe durch die entsprechenden Kleinbuchstaben.
> Bei den anderen bin ich noch weiter von der Lösung weg.
> Ich habe die Befehle zur gesuchgt und auch gefunden. So
> weiß ich z.B. das cd das aktuelle Vereichnis wechelt.
> Leider kann ich aber mit keinem der Befehle was genaues
> anfangen.
Ist dir denn klar, was die verschiedenen Sonderzeichen bedeuten, also
| pipe
( ... ) subshell
$( ... ) Kommando-Substitution
&& AND-Liste
< Eingabe-Umleitung
> Ausgabeumleitung
Das musst du wissen, damit du die Kommandos richtig zu Kommandozeilen zusammensetzen kannst.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:49 Fr 04.06.2010 | Autor: | rainerS |
Hallo!
Hier findest du eine Übersicht über die verschiedenen Funktionen der Shell.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 14:30 Mo 07.06.2010 | Autor: | anna_h |
Das Problem ist das ich mir die Bedeutung der einzelnen Zeichen unklar ist.
bei
xx=$(ls | tr [:upper:] [:lower:]
echo $ xx
zum Beispiel. da gucke ich in die Befehlsliste:
ls = zeigt den Verzeichnisinhalt an
| = Pipe
tr = ersetzt vorgegebene Zeichen durch andere Zeichen
aber was das sein soll, keine Ahnung. uns wie man das in einklag bringen soll (also was macht die Summe der Befehle) ist mir auch ein Rätsel
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 20:27 Mo 07.06.2010 | Autor: | rainerS |
Hallo!
> Das Problem ist das ich mir die Bedeutung der einzelnen
> Zeichen unklar ist.
>
> bei
> xx=$(ls | tr [:upper:] [:lower:]
> echo $ xx
> zum Beispiel. da gucke ich in die Befehlsliste:
> ls = zeigt den Verzeichnisinhalt an
> | = Pipe
> tr = ersetzt vorgegebene Zeichen durch andere Zeichen
> aber was das sein soll, keine Ahnung. uns wie man das in
> einklag bringen soll (also was macht die Summe der Befehle)
> ist mir auch ein Rätsel
Hast du dir die Links mal angeschaut, die ich angegeben habe?
Eine Pipe ist eine Abkürzung für die Hintereinanderausführung von Programmen mit Weiterleitung der Daten. Soll heißen: die Ausgabe des ersten Kommandos (hier: ls) wird direkt als Eingabe des zweiten Kommandos (hier: tr) verwendet. Der Effekt ist, dass die Kette beider Kommandos sich so verhält wie ein einziges Kommando.
Die Konstruktion xx=$(Kommandokette) weist den gesamten Ausgabetext der Kommandokette der Variablen xx zu. Genauer gesagt, es passieren zwei Dinge:
Durch
$(Kommandokette)
wird die Kommandokette ausgeführt und statt dessen der Ausgabetext eingesetzt, sodass nach diesem Schritt so etwas wie
xx=Ausgabetext
dasteht, womit der Variablen xx der Text zugewiesen wird.
Probier doch einfach mal aus, 1. was ls ausgibt, 2. was passiert, wenn du nur tr [:upper:] [:lower:] aufrufst und einfach ein paar Zeilen eingibst.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 16:59 Do 17.06.2010 | Autor: | anna_h |
Kannst du mir nochmal weiterhelfrn.
Also d) kann man einfach abtippen, und man sieht ungefähr was es macht.
Aber bei den anderen bin ich totlal hilflos.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:20 Sa 19.06.2010 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:20 So 06.06.2010 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|