Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - FreakyPenguin

Seiten: 1 ... 4 5 [6] 7 8 ... 15
101
tyndur / Re: Bescherung: 0.1.1
« am: 16. April 2008, 18:12 »
Vielen Dank für den Test.

Dass der Editor kaputt ist, wurde ja schon erwaehnt... (Wobei das vermutlich nicht am Editor liegt, sondern eher an Fat, aber das ist auch kaputt ;-)).

Bei welchen Befehlen konntest du diese Verzögerung denn beobachten?
102
Lowlevel-Coding / Re: Global Descriptor Table
« am: 10. April 2008, 18:37 »
In den meisten Betriebssystemen wird die Segmentierung heute nicht mehr benutzt, für den Zugriffsschutz und das Aufteilen des Speichers wird Paging benutzt.
In der GDT muss aber trotzdem für jede Privilegstufe, die bentuzt wird (meist 0 und 3), ein Deskriptor angelegt werden. Mit Paging wird dann meist ein flaches Speichermodell benutzt, also alle Deskriptoren mit Basis 0 und Limit 4G.
103
tyndur / Re: cdi.fs
« am: 16. March 2008, 21:58 »
Dafür ist doch der Treibername vorgesehen, wie bei den anderen CDI-Treibern auch. Da trägt man halt dann ext2 ein, und wenn ich in LOST ein cd ata:/ata00_p1|ext2:/ mache, weiss LostIO welcher Treiber gemeint ist.
104
tyndur / Re: cdi.fs
« am: 16. March 2008, 20:49 »
Das läuft eher anders rum: Die Implementation erhälrt über LostIO die Nachricht das Dateisystem einzubinden. Sie ruft dann die wohl noch nicht vorhandene cdi_fs_init_fs auf. ;-)

Nein. Der Treiber muss nur das Root-Verzeichnis laden und es als noch nicht geladen markieren. Dabei fällt mir noch auf, dass dafür auch noch ein Flag fehlt. Wenn dann darauf zugegriffen werden soll kann das Laden nachgeholt werden.
105
tyndur / Re: cdi.fs
« am: 16. March 2008, 20:10 »
Worin siehst du den Nutzen von sowas?

Ich habe das eigentlich so vorgesehen, dass die Implementation das selbst irgendwie Regelt. Bei LOST kann ich sowas beispielsweise direkt in LostIO unterbringen.
106
Offtopic / Re: Seltsames Problem
« am: 14. March 2008, 21:04 »
Würde es eventuell etwas bringen, das BIOS auszuwechseln (also kein BIOS-Update) sondern ein anderer Baustein ?
Der Baustein indem das BIOS abgelegt ist, ist heute ein einfacher Flash Speicher. Und solange der nicht kaputt ist, bringt es nichts den auszutauschen, da du schlussendlich eh wieder die selbe Software einspielen musst.
107
Lowlevel-Coding / Re: wie funktioniert nasm ???
« am: 03. March 2008, 23:51 »
Jo also zumindest für die mir bekannten Versionen (so um 0.98 herum) müsste das so klappen.
Mit einem "nasm -h" siehst du vielleicht was da falsch ist.
Am besten probierst du mal eine dieser Versionen. Das dürfte für dich keinen Unterschied machen.
108
Lowlevel-Coding / Re: wie funktioniert nasm ???
« am: 03. March 2008, 19:52 »
Tut mir leid, ich habe meine Kristallkugel verlegt und kann mir die genaue Problembeschreibung leider nicht einfach so aus den Fingern saugen. ;-)

Damit wir dir weiter helfen können, müssen wir schon ein Bisschen mehr als nur "geht nicht" haben.

Was genau geht nicht? Kriegst du irgendwelche Fehlermeldungen? Wenn ja: Wie lauten die?
109
tyndur / Re: Wir suchen...
« am: 21. February 2008, 19:57 »
Ab welcher Version der Parameter vorhanden ist, weiss ich nicht genau.

Ich bin nicht sicher welche Formate mingw benutzt. Aber probier mal den Crosscompiler von Jidder: http://lowlevel.brainsware.org/wiki/index.php/Crosscompiler_f%C3%BCr_Windows

Ubuntu müsste eigentlich problemlos gehen, solange es keine 64-Bit Version ist (wie es da unter Ubuntu aussieht weiss ich nicht. Ich weiss nur, dass ich bei meinem 64-Bit gentoo einen Crosscompiler benötige).
110
tyndur / Re: Wir suchen...
« am: 21. February 2008, 19:01 »
Den ganzen LOST-Code kannst du dir aus unserem Subversion-Repository holen. (Repository: svn://lost-os.ath.cx/lost/)
Wie man das mit dem Programm anstellt sieht man in src/modules/c/getterm ganz gut. Einfach in src/modules/c ein Verzeichnis erstellen, eine Makefile.all rein und dann kanns losgehen. :)


Es existiert ein Treiber für vga, an dem wurde aber seit einiger Zeit nichts mehr gemacht (der Entwickler, der mit dem GUI-Kram angefangen hat, ist nicht mehr aktiv dabei), und somit weiss ich nicht, ob er im Moment noch funktioniert.
111
Das Wiki / Re: Sinkende Aktivität
« am: 21. February 2008, 17:52 »
blitzmaster:
Wegen den Alorithmen: Warum müssen denn irgendwelche allgemeinen Algorithmen bei uns im Wiki beschrieben werden? Für Scheduling oder andere Algorithmen, die etwas mit dem Thema OS-Dev zu tun haben, macht das meiner Meinung nach auch Sinn. Aber wenn man zu einem Suchalgorithmus etwas schreiben will, kann man das ja auch in Wikipedia tun, falls noch nichts dazu vorhanden ist.

Es geht mir auch nicht darum, ob das ganze einfach gehalten werden kann oder nicht, sondern eher ob man zu einem Thema in nützlicher Frist einen korrekten und brauchbaren Artikel schreiben kann.

nooooooooos:
Ich bestreite ja nicht dass ein Artikel zu einem Thema in Kombination mit der Spezifikaition mehr hergibt als nur die Spezifikation. Aber gewisse Themen sind einfach zu komplex um da zu ein kleines Tutorial zu schrieben.
Man kann beispielsweise ein tutorial dazu schreiben, wie man einen Sektor von einer Festplatte lesen kann, und schon dazu lässt sich ja einiges sagen. Aber um einen Treiber dafür zu schreiben reicht doch das nicht, dazu gehört noch einiges mehr. Hier ist es doch nützlicher wenn ein Artikel existiert, der grob den Ablauf der intialisierung (als Ergänzung zur Spezifikation, in der diese nicht erwähnt wird) beschreibt, und danach beschreibt, wie man die Protokolle aus der Spezifikation für Lesen, Schreiben und co allgemein umsetzen könnte. Weiter könnte in so einem Artikel auch noch warscheinliche Probleme und Lösungsvorschläge beschrieben werden.
112
Das Wiki / Re: Sinkende Aktivität
« am: 20. February 2008, 22:29 »
Ich bin eher gegen den Wettbewerb, da die einfacheren Themen langsam aber sicher immer mehr schon abgehandelt wurden im Wiki, und bei schwierigeren Themen ein Artikel im Tutorialstil eh nicht mehr möglich ist.

Das mit dem Beispielcode ist auch so eine Sache... Bei Themen die für einsteiger wichtig sind, wie zum Beispiel der Wechsel in den protected mode, oder das Setzen von Text auf den Bildschirm mag das durchaus sinnvoll sein. Aber bei anspruchsvolleren Themen, wie zum Beispiel das Ansteuern des Diskettenlauferk-Kontrollers, ATA oder PCI macht sowas meiner Meinung nach nicht mehr viel Sinn, da diese Themen eh nicht von Einsteigern benötigt werden, die noch nicht mit einer Beschreibung in Textform umgehen können.
113
tyndur / Re: cdi.fs
« am: 17. February 2008, 14:37 »
Zitat
Ich hab hier mal ein paar Fehlercodes hinzugefügt.

    // Keine Zugriffsrechte
    CDI_FS_ERROR_NOPERM,
Das gehört meiner Meinung nach nicht zu CDI. So wie ich mir das vorstelle, füllt der Treiber nur die ACLs, ausgewertet werden die von der OS-abhängigen Implementation.

Zitat
    // Invalider Dateideskriptor
    CDI_FS_ERROR_BADFD,
Auch das Verwalten der Dateideskriptoren, bei uns hier jetzt Streams genannt, gehört nicht in die Treiber.
Zitat
    // Datei existiert
    CDI_FS_ERROR_FEXISTS,
    // Datei zu groß
    CDI_FS_ERROR_FBIG,
    // Ist ein Verzeichnis
    CDI_FS_ERROR_ISDIR,
Das kann in der Implementation doch nicht passieren. Datei-Funktionen können aus sicht des Treibers auf eine Ressource nur angewendet werden, wenn sie zu einer entsprechenden Klasse gehören.
Zitat
    // Zu viele Levels symbolischer Links
    CDI_FS_ERROR_LOOP,
    // Zu viele geöffnete Dateien
    CDI_FS_ERROR_MFILES,
Auch diese 2 kommen von der Implementation

Zitat
    // Zu viele Links
    CDI_FS_ERROR_MLINKS,
    // Dateiname zu lang
    CDI_FS_ERROR_FNTOOLONG,
    // Nicht genügend Speicher
    CDI_FS_ERROR_NOMEM,
    // Kein Verzeichnis
    CDI_FS_ERROR_NODIR,
Dieser auch wieder, oder verstehe ich die Bedeutung falsch? Dieser Fehler kommt doch, wenn eine Komponente in einem Pfad kein Verzeichnis oder nicht vorhanden ist?
Zitat
    // Kein Socket
    CDI_FS_ERROR_NOSOCK,
    // Verzeichnis nicht leer
    CDI_FS_ERROR_DIRNEMPTY,
    // Kaputte Pipe
    CDI_FS_ERROR_BRKPIPE,
    // Read-only Dateisystem
    CDI_FS_ERROR_ROFS,
    // Ungültiger Seek
    CDI_FS_ERROR_BADSEEK
Für CDI_FS_ERROR_NOSOCK, CDI_FS_ERROR_BRKPIPE, CDI_FS_ERROR_BADSEEK gilt wieder, dass das in die Implementation gehört.

Und zu CDI_FS_ERROR_DIRNEMPTY,  CDI_FS_ERROR_ROFS stelle ich mir grad die Frage, ob wir nicht definieren sollen, dass von der Implementation garantiert werden muss, dass keine schreibenden Operationen ausgeführt werden, wenn read only aktiviert ist, und dass nicht versucht wird, ein volles verzeichnis zu löschen.
114
Lowlevel-Coding / Re: Video Memory ohne Graka
« am: 13. February 2008, 17:37 »
Ob eine Grafikkarte bei Servern wirklich oft Unsinn ist, wage ich mal zu bezweifeln... ;-) Ok bei Blades könnte es anders sein. Aber ja... ;-)
Und nein, Probleme dürfte es eigentlich nicht geben. Es passiert halt einfach nichts.
115
tyndur / Re: Direkter Zugriff auf Laufwerke?
« am: 13. February 2008, 16:05 »
Ah das erklärt das natürlich. Qemu ist auch 0xd00f. Warum aktiviert der bei diesem Laufwerk auch LBA48... ;-)
Na dann versuchen wirs mal mit ignorieren. Solange du es nicht übertreibst mit der Imagegrösse müsste das eigentlich gehen. ;-)
Ich überlege mir dann mal, das ganze sauber zu implementieren, mit LBA48.

Versuch es mal mit diesem Patch.
Index: src/modules/cdi/ata/device.c
===================================================================
--- src/modules/cdi/ata/device.c        (Revision 703)
+++ src/modules/cdi/ata/device.c        (Arbeitskopie)
@@ -79,7 +79,7 @@
  *
  * @return 1 wenn ein Geraet vorhanden ist, 0 sonst
  */
-static bool ata_bus_responsive_drv(struct ata_controller* controller)
+static int ata_bus_responsive_drv(struct ata_controller* controller)
 {
     // Slave auswaehlen, da so sicher jemand reagiert, da der Master antworten
     // muss, wenn kein Slave existiert. So sieht es zumindest in der Theorie
@@ -341,13 +341,18 @@

     // Natuerlich nur ausfuehren wenn ein Handler eingetragen ist
     if (dev->read_sectors == NULL) {
+        printf("ata: Handler zum lesen von Sektoren nicht eingetragen\n");
         return -1;
     }

     // Bei einer Partition noch den Offset dazurechnen
     if (partition == NULL) {
+        printf("ata: Nicht partitioniert\n");
+        printf("ata: Lese %lld Sektoren von %lld an\n", count, block);
         return !dev->read_sectors(dev, block, count, buffer);
     } else {
+        printf("ata: Partitioniert\n");
+        printf("ata: Lese %lld Sektoren von %lld an\n", count, block);
         return !dev->read_sectors(dev, block + partition->start, count,
             buffer);
     }
Index: src/modules/cdi/ata/ata.c
===================================================================
--- src/modules/cdi/ata/ata.c   (Revision 703)
+++ src/modules/cdi/ata/ata.c   (Arbeitskopie)
@@ -248,10 +248,17 @@
         dev->storage.block_count = id.max_lba48_address;
     }
     if (id.capabilities.lba) {
+        printf("ata: Laufwerk unterstuetzt LBA28\n");
         dev->lba28 = 1;
-        if (!dev->lba48) {
+        //if (!dev->lba48) {
+        //    printf("ata: Laufwerk unterstuetzt LBA48 nicht\n");
             dev->storage.block_count = id.lba_sector_count;
-        }
+            printf("ata: Laufwerk hat %lld Sektoren\n", dev->storage.block_count);
+        /*} else {
+            printf("ata: Laufwerk unterstuetzt LBA48\n");
+        }*/
+    } else {
+        printf("ata: Laufwerk unterstuetzt LBA28 nicht\n");
     }

     // Wenn keiner der LBA-Modi unterstuetzt wird, muss abgebrochen werden, da
@@ -350,7 +357,7 @@
         count_left -= current_count;
         lba += current_count;
     }
-
+    printf("ata: Read result: %d\n", result);
     return result;
 }

116
tyndur / Re: Direkter Zugriff auf Laufwerke?
« am: 13. February 2008, 15:39 »
Hm ist eigentlich egal. Kommt ja eh beiden Orten Mist raus. Aber die Hauptsache ist ja dass das rauskommt. :D

Ich habe hier einen Kleinen Patch fuer ein paar Debugausgaben in ata:
Index: src/modules/cdi/ata/device.c
===================================================================
--- src/modules/cdi/ata/device.c        (Revision 703)
+++ src/modules/cdi/ata/device.c        (Arbeitskopie)
@@ -79,7 +79,7 @@
  *
  * @return 1 wenn ein Geraet vorhanden ist, 0 sonst
  */
-static bool ata_bus_responsive_drv(struct ata_controller* controller)
+static int ata_bus_responsive_drv(struct ata_controller* controller)
 {
     // Slave auswaehlen, da so sicher jemand reagiert, da der Master antworten
     // muss, wenn kein Slave existiert. So sieht es zumindest in der Theorie
@@ -341,13 +341,18 @@

     // Natuerlich nur ausfuehren wenn ein Handler eingetragen ist
     if (dev->read_sectors == NULL) {
+        printf("ata: Handler zum lesen von Sektoren nicht eingetragen\n");
         return -1;
     }

     // Bei einer Partition noch den Offset dazurechnen
     if (partition == NULL) {
+        printf("ata: Nicht partitioniert\n");
+        printf("ata: Lese %lld Sektoren von %lld an\n", count, block);
         return !dev->read_sectors(dev, block, count, buffer);
     } else {
+        printf("ata: Partitioniert\n");
+        printf("ata: Lese %lld Sektoren von %lld an\n", count, block);
         return !dev->read_sectors(dev, block + partition->start, count,
             buffer);
     }
Index: src/modules/cdi/ata/ata.c
===================================================================
--- src/modules/cdi/ata/ata.c   (Revision 703)
+++ src/modules/cdi/ata/ata.c   (Arbeitskopie)
@@ -248,10 +248,17 @@
         dev->storage.block_count = id.max_lba48_address;
     }
     if (id.capabilities.lba) {
+        printf("ata: Laufwerk unterstuetzt LBA28\n");
         dev->lba28 = 1;
         if (!dev->lba48) {
+            printf("ata: Laufwerk unterstuetzt LBA48 nicht\n");
             dev->storage.block_count = id.lba_sector_count;
+            printf("ata: Laufwerk hat %lld Sektoren\n", dev->storage.block_count);
+        } else {
+            printf("ata: Laufwerk unterstuetzt LBA48\n");
         }
+    } else {
+        printf("ata: Laufwerk unterstuetzt LBA28 nicht\n");
     }

     // Wenn keiner der LBA-Modi unterstuetzt wird, muss abgebrochen werden, da
@@ -350,7 +357,7 @@
         count_left -= current_count;
         lba += current_count;
     }
-
+    printf("ata: Read result: %d\n", result);
     return result;
 }

117
tyndur / Re: Direkter Zugriff auf Laufwerke?
« am: 13. February 2008, 15:27 »
Nein, erwartet es eigentlich nicht.

Diese ausgaben sehen gesund aus. Die Meldungen wegen dem unerwarteten Status sind auch in Ordung. Das sind Debugausgaben beim suchen der angeschlossenen Geräte. Und die erkennt er ja scheinbar auch richtig.
Die Fehlermeldung wegen der Partitionstabelle sieht eigentlich auch gut aus, weil es existiert ja auch keine und somit ist die Signatur der Tabelle nicht in ordnung. Darum wird das Erkennen der Partitionen abgebrochen. Das sollte aber eigentlich nichts daran ändern, dass die Festplatte als ganzes angesprochen werden kann... :?

Was geschieht denn wenn du ein cat ata:/ata00 machst?

Edit:
Wie gross ist denn dein Image? Und welche qemu-Version benutzt du?
118
tyndur / Re: Wir suchen...
« am: 13. February 2008, 13:35 »
Schön zu hören. :)

Im Moment steht halt nur die Standard Libc und ein einfaches readline() zur Verfügung. Am besten schaust du mal im IRC vorbei. (Server: irc.euirc.net, Kanal #lost)
119
tyndur / Re: Direkter Zugriff auf Laufwerke?
« am: 12. February 2008, 22:25 »
Hm sehr gesund sieht das nicht aus. Könntest du mal prüfen, wie der Rückgabewert von fread aussieht?

Im Moment habe ich noch nicht wirklich eine Idee, woran das liegen könnte...
120
OS-Design / Re: TeeJay's FAT12 Bootlader
« am: 12. February 2008, 21:56 »
Hehe, so bringt ja meine Arbeit wenigstens was. ;-)

Wie gross die Auflösung ist, weiss ich auch nicht mehr, das musst du im Code schauen.
Aber der VGA-Code ist mehr als spielerei gedacht, um zu zeigen, dass es nicht immer Realmode sein muss. ;-)

Edit:
Ich habe gestern die schon mal angefangene Newlib-Version einigermassen fertiggestellt. Damit hat man schon von Anfang an die wichtigsten libc Funktionen zur Verfügung, die nicht viel mit dem OS zu tun haben, zum Beispiel printf.
http://tyndur.org/~toni/grubkernel_c_newlib.tar.bz2
Fall du ihn anschaust, beachte unbedingt die README oder du wirst früher oder später (eher früher als später ;-)) schwere Probleme kriegen.
Seiten: 1 ... 4 5 [6] 7 8 ... 15

Einloggen