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 - timon

Seiten: [1]
1
Lowlevel-Coding / Re: IRQ 11 auf Hardware
« am: 25. July 2013, 23:14 »
Hallo Zusammen

Ich habe jetzt mit noapic gebootet und habe ein Ergebnis für IRQ11.
http://pastebin.com/CsqK8heQ
So wie es aussieht was mit USB2. Ich habs noch nicht gegoogelt.

Der Notebook schafft übrigens ohne Ausgabe auf dem Bilschirm bis zu 4000 timer interrupts.
Ich finde das ist immer noch zu wenig.
2
Lowlevel-Coding / Re: IRQ 11 auf Hardware
« am: 24. July 2013, 11:13 »
Aber ich müsste PCI doch erstmal initialisieren bevor ein PCI Gerät mir Interrupts senden darf oder?

Edit: Ich habe gerade den Code gefixt und begonnen mit den Einstellungen für die übrigen Interrupts herumzuspielen. Dabei habe ich den Timer von 100 hz auf 1000hz verändert. Nur kann mein Notebook keine 1000 Timerinterrupts verarbeiten. Der Interruptzähler zählt nur etwa 300 Interrupts pro Sekunde. Ist mein PC wirklich so langsam oder ist das nur schrecklich ineffizienter Code den ich habe?
3
Lowlevel-Coding / Re: IRQ 11 auf Hardware
« am: 23. July 2013, 21:41 »
Hier habe ich nen link zum direkten output unter Linux:
http://pastebin.com/5CSzknUX
Dort ist aber nichts zum IRQ11
Der Code für die Maskfunktion stammt von dem PIC Tutorial im Wiki, als ich auf der Suche nach einer Lösung war, hab ich den gefunden. Ich habe den Code kopiert, weil er so einfach war habe ich ihn nicht hinterfragt.
4
Lowlevel-Coding / Re: IRQ 11 auf Hardware
« am: 23. July 2013, 13:45 »
Ich maskiere den Interrupt so:
    init_pic();
    irq_mask((u16)0b1111111011111000);
Ich maskiere gleich alles was ich nicht brauche. Später wenn ich mich mit PCI beschäftige, werde ich das ändern.
irq_mask sieht so aus:
void irq_mask(u16 mask)
{
   outb(0x21, (u8)mask);
   outb(0xA1, (u8)mask>>8);
}
Dieser Code wird garantiert korrekt und vor dem sti ausgeführt.
Ich habe noch keine Hardare initialisiert, die diesen IRQ wirft. Vielleicht ist es Grub2, der unsauber arbeitet aber ich denke eher nicht.
5
Lowlevel-Coding / IRQ 11 auf Hardware
« am: 23. July 2013, 12:14 »
Hallo Zusammen

Neulich hat mir ein altes Problem von mir wieder einmal viel Ärger und Kopfschmerzen bereitet.
Mein Betriebssystem, das fehlerfrei unter Qemu läuft, funktioniert auf meinem Laptop nicht richtig.

Der Laptop wirft andauernd den IRQ 11. Mit andauernd meine ich, dass sobald ich die Interrupts aktiviere(sti), ich keinen weitern Code ausser Interrupthandler ausführen kann. Dazu foldender Ausschnitt:

    init_idt();
    while(1)
    {
        debug_kprintf( (str)"Hallo");
    }
Direkt am Ende von init_idt setze ich das Interruptflag.
Ab dort wird auf meinem Laptop kein Code aus meiner Main funktion mehr ausgeführt. Der Keyboardhandler(und alle meine anderen Handler) funktionieren jedoch einwandfrei.
Unter Qemu werde ich mit Hallos zugespamt was eigentlich auch zu erwarten war.

Nun probierte ich einen dummen Workaround (nämlich den IRQ11 zu maskieren). Nur kommt der IRQ trozdem weiterhin.

Ich bin mir ziemlich sicher, dass mein Code stimmt, ich habe ihn mehrere Male mit dem Wiki überprüft und auch gegoogelt wegen dem IRQ 11.

Auf einem anderen Computer habe ich mein OS noch nicht getestet(aus Faulheit) und momentan kann ich ihn nicht auf einem anderen Computer testen, weil ich in den Ferien bin und nur meinen Laptop dabei habe.

Ich hoffe ihr könnt mir mit diesem Problem helfen
6
OS-Design / Re: Wo soll der Kernel hin im Ram
« am: 14. July 2013, 23:02 »
Hallo Zusammen
Vielen Dank für eure Antworten

Ich werde in den nächsten Tagen weiter an meinem Os programmieren
7
OS-Design / Re: Wo soll der Kernel hin im Ram
« am: 07. July 2013, 20:29 »
Eine Frage noch: Du hast gesagt, der Default Ort(0x100000) wäre ein guter Ort um den Kernel zu laden. Ist der Bereich von 0x100000 bis ca 0x1500000(also die ersten 20 Megabytes des erweiterten Speichers) ein Ort, an dem keine Geräte ihre Register in den Ram einblenden?
8
OS-Design / Re: Wo soll der Kernel hin im Ram
« am: 07. July 2013, 16:14 »
Wenn ich den Kernel vituell und physisch nicht am selben Ort habe, kann ich dann nach dem Einschalten des Pagings den Code von vorher nicht mehr benuzten weil die Adressen ändern? Sollte ich also zwei Kernelschreiben, einen VorPagingKernel und einen NachpagingKernel oder überschreibe ich die Adressen(so quasi mit einer Relocationtable)?
9
OS-Design / Wo soll der Kernel hin im Ram
« am: 07. July 2013, 12:43 »
Hallo Zusammen

Ich schreibe gerade an meinem eigenen OS.
Ich habe schon viele Probleme gelöst, nur bei einem komme ich nicht weiter:

Wo soll ich den Kernel und alle seine Datenstrukturen im Ram platzieren?
Bisher habe ich den Kernel einfach an der Stelle gelassen, wo Grub ihn mir standartmässig hinlädt, bei 0x100000.
Nun suche ich einen besseren Ort für ihn.
Das wichtigste ist, dass

Er nicht an einem Ort ist, wo ein Gerät seine Register eingeblendet hat. Das heisst alle Orte an denen Geräte irgendwas in den Ram einblenden, kommen nicht in Frage(ausser die Adresse lässt sich ändern)

Ich möchte den Kernel, sowie alle seine Datenstrukturen in zusammenhängenden Pages haben, so dass ich sie einfach mappen kann. Am besten sie sind in den selben 4MB(solange mein Kernel und seine Datenstrukturen noch klein genug sind sind, später in den selben 8MB usw) so dass ich ganze Pagedirectories mappen kann.

Der Kernel soll physikalisch und virtuell am selben Ort sein, denn das macht mir die Sache viel einfacher.

Gewisse Programme/Bibliotheken möchten vllt dort sein wo mein Kernel ist. Mein OS sollte irgenwann(In sehr ferner Zukunft) auch Windows und Linux Programme ausführen können. Diese haben vermutlich Lieblingsadressen/Reservierte Adressen.

Könnt ihr mir sagen wo ich den Kernel unter den oben genannten Kriterien eher ansiedeln soll und wo auf keinen Fall?
Wo sind eure Kernel?

Lg Timon

10
Lyrisches Eck / Re: Ubuntu und Windows
« am: 17. March 2013, 15:01 »
Bei mir funktioniert Ubuntu zusammen mit win8 ziemlich gut.
Das einzige Problem ist, dass win 8 ziemlich lange braucht nachdem ich auf Ubuntu die Windows Partition bearbeitet habe.
Bei mir läuft sowieso meistens Ubuntu und windows nur, weil ich die Lizenz eh habe und manche Programme/Driver auf Linux nicht gehen.
11
Softwareentwicklung / Re: Welche Compiler
« am: 10. December 2011, 16:22 »
OK das mit dem Grafikmodus probiere ich noch nicht.
Habt ihr eine genauere Anleitung wie das mir dem Cross-Compiler geht? Ich verstehe ihn doch nicht ganz.
12
Softwareentwicklung / Re: Welche Compiler
« am: 10. December 2011, 14:07 »
Danke für eure Hilfe
Ich habe den Crosscompiler ausprobiert und er geht.
Eine Frage habe ich noch: Muss ich die
VBE vom Vm86 oder vom Realmode aus initialisieren?
13
Softwareentwicklung / Welche Compiler
« am: 10. December 2011, 09:02 »
Hallo Zusammen
Ich arbeite auf einem Windows System und möchte wissen welche Compiler /Linker/Assembler
ihr mir empfehlen würdet.
Ich kann C und Assembler programmieren und möchte mit diesen beiden Sprachen ein kleines OS schreiben.
Ich habe es bereits einmal versucht und gab das Projekt auf wegen Compiler Errors .

Danke für eure Hilfe
Seiten: [1]

Einloggen