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.


Themen - nooooooooos

Seiten: [1] 2
1
Lowlevel-Coding / Kriege keine Interrupts für meinen AP
« am: 30. September 2007, 09:25 »
Ich habe jetzt SMP in meinen Kernel aufgenommen und mein AP startet auch wunderbar, nur leider will er partout nicht aus seiner Endlosschleife nach dem sti aufwachen.

Ich habe den localen Apic enabled, den Spurious-Vektor gesetzt, eine logische ID sowie die Task-Priorität auch und als Destinations-Format Flat gewählt.
Das IMCR ist ev. gesetzt worden, die LINT0 und LINT1 der MPS-Tabelle entsprechend auch.

Im IO-Apic habe ich den Eintrag für den Ext-Int gesucht ihn wieder der MPS-Tabelle entsprechend konfiguriert und das logische Ziel als 0xFF angegeben. Sogar die IDs der IO-Apics kontrolliere ich, damit sie sich nicht im Wege stehen.

Zu sagen ist noch, dass ich für den AP, wie den BSP anfangs das selbe PageDirectory verwenden will, bis der erste Task geladen wird. TSS wird auch das selbe verwendet, aber mit unterschiedlichen Desktriptoren. Der Pic wurde auch entsprechend gemappt.

Leider kriegt einfach immer nur der BSP die Interrupts. Auch IPIs habe ich ausprobiert und die haben allesamt funktionniert.
Habe ich irgendetwas vergessen zu initialisieren? Würdet ihr gerne von etwas Code sehen?

EDIT: Das ESR hab ich ebenfalls überfprüft, hat keine Fehler angezeigt.

Gruss Noooooooooos
2
Offtopic / 20000 Beiträge
« am: 10. March 2007, 16:54 »
Hiermit gratuliere ich dem Lowlevel-Forum zum 20000 Beitrag!!!!
3
OS-Design / Timer für meine Tasks
« am: 23. February 2007, 14:01 »
Wie kann ich meinen Tasks im OS am besten,elgantesten,sichersten und codeschlankesten einen Timer anbieten?


(1)Ist es möglich einen Timer-Dienst zu implementieren und als Taks laufen zu lassen oder ist es notwendig das im Kernel zu haben.

(2)Welchen Timer(-Chip) nehm ich? (Wenn ich den vom Multitasking nehm, dann können die Tasks die den Timer-Dienst benutzen wollen nur solche Werte nehmen, die teilbar durch die Einstellung des IRQ 0 sind)

(3)Gibt es Anwendungen wo das nicht verschmerzbar ist? (TCP/IP, bst. Treiber, Audio + Video)

(4)Muss ich solche getimeten Prozesse den anderen im Multitasking vorziehen, was wenn zwei Prozesse vorgezogen werden wollen? Was ist, wenn ein Prozess die ganze Zeit einen Timer on hat, nur um länger ausgeführt zu werden?


Gruss
Nooooooooooos
4
Offtopic / SkiChallenge 07
« am: 06. December 2006, 17:59 »
Hallo...

Spielt ihr auch andauernd nur noch SC anstatt am OS zu proggen....Welche Zeiten habt ihr, wie sind euere Nicks???


Noooooooooooos
5
Offtopic / Werbung auf Lowlevel??
« am: 26. November 2006, 12:47 »
Wäre es möglich diese Werbung wegzumachen, oder wenigstens den Zugang über die Brainsware Adresse wieder zugänglich zu machen???

Noooooooooooos
6
Lowlevel-Coding / Problem mit Paging
« am: 19. October 2006, 11:06 »
Hmm...ja ich hab da so eine Page gemappt (physikalisch: 0x22000; logisch: 0x10000)
Wenn ich jetzt etwas an 0x10000 schreibe, erscheint es zwar dort, aber nicht per phyikalischem SpeicherDump auch an 0x22000.

Könnte das was mit Caching zu tun haben....Wie lös ich das Problem???


Thx, Noooooooooooooos
7
Lowlevel-Coding / Dummerfehler in RM-Code
« am: 17. September 2006, 17:28 »
Hallo zusammn....

Ich hab jetzt schon ne ganze Weile ein Problem mit so einem blöden Realmode code.

Er sollte den 5. Sektor auf der Diskette in den Speicher laden, welcher so aussieht: dw 'Tr'
dw 0,0

Dieser Sektor ist ganz sicher an der Position 0xA00 (also eben 5x512), ich habs mit nem Hex-Editor überprüft.

Dannach soll er die Datei nach 'Tr' durchsuchen, bis er auf eine Null stösst. Allerdings, findet der Code schon ganz am Anfang eine Null, was eingentlich nicht sein dürfte....Darum denk ich, liegt der Fehler am Code, welcher den Sektor lädt (ganz am Anfang dieses Codeabschnitts): xor ax,ax
mov ds,ax
mov es,ax
mov bx,0x8000

mov ah,2
mov cx,5
mov dx,0
mov al,5

int 0x13
jc nomal




mov bx,0x8000

jmp inschleiferein


wiederholeen:
add bx,24

inschleiferein:
cmp WORD[bx],0
je FehlerPlus3A
cmp WORD[bx+2],0
jne weitermachen

Fehler:
ax,0xB800
mov ds,ax
mov BYTE [0x10], '+'
jmp Fehler

weitermachen:  
cmp WORD[bx],'Tr'
jne wiederholeen


Vielen Dank
Nooooooooooos
8
Offtopic / Happy Birthday - Schweiz
« am: 01. August 2006, 11:59 »
Zum Geburtstag viel Glück!!!!!!! :D  :D  :lol:  :lol:  8)   8)
9
Lowlevel-Coding / Variablen-Zugriff schlägt fehl
« am: 25. July 2006, 10:51 »
Also...Ich habe ein Problem beim Auslesen einer Variable aus einem anderen Modul.

Der Zugriff sieht so aus:[Bits 32]
org 0x9000

cmp DWORD [0x8000],0x0
je $


Die Variable auf welche zugegriffen wird so:[BITS 16]    
org 0x8000

dd 0x0


Beide Codeteile stehen am Anfang der beiden Moduldateien. Jetzt müsste ja dei Ausführung beim Zugriffscode stoppen, da ja die Variable auf 0x8000 gleich Null ist und darum in die Endlosschleife gesprungen wird.


Das wird aber nicht getan!!!!!!
Hat jemand irgendeine Ahnung????? Ich weiss nämlich nicht mehr weiter

Noooooooooooooooooos
10
Lowlevel-Coding / Bochs-Fehlermeldung
« am: 20. July 2006, 12:41 »
Kleine Frage

Was bedeutet diese Fehlermeldung von Bochs?00000923140-i-@0000908a read_virtual_checks(): read beyond limit

Vielen Dank für eine rasche Antwort
Noooooooooooooos
11
Lowlevel-Coding / Bochs-Debugger in MakeFile einbetten
« am: 21. May 2006, 21:30 »
Hallo

Den Bochsemulator kann ich ja in mein MakeFile einbetten indem ich einfach die Bochs-Konfig-Datei aufrufe.

Wie kann ich denn den Bochs-Debugger so aufrufen, dass ich mich nicht jedes mal durchs Menu hangeln muss???


Gruss
Noooooooooooos
12
Lowlevel-Coding / Komischer Fehler bei MOV
« am: 02. May 2006, 18:49 »
Hallo

Bei mir entsteht ein komischer Fehler bei diesem Code. Woran kann das liegen?mov [ecx],eax
Der Fehler sieht in Bochs so aus:BxError: instruction with op1=0xff
mod was c0, nnn was 7, rm was 7
WARNING: Encountered an unknown instruction (signalling illegal instruction)

Und auch so geht es nicht:mov ebx,ecx
mov [ebx],eax


Gruss
Noooooooooooos
13
Lowlevel-Coding / Frage zu Strings
« am: 23. April 2006, 12:53 »
Wenn ich jetztdd 'Hi'schreibe, werden dann zwei DWs mit je einem Buchstaben oder ein DW mit zwei Buchstaben reserviert??

Gruss
Nooooooooooooos
14
Im PM Tutorial von der FH Zwickau steht:Aus Tabelle 4.1 ist ersichtlich, daß die Hardware-Interrupts 0..7 die Interrupts 8..15 auslösen. Diese Interrupts sind jedoch bereits von Intel als Protected Mode Exceptions reserviert worden. Würde man ohne eine Änderung an dieser Einstellung, Interrupts erlauben, so würden beispielsweise 18,2 mal in der Sekunde Double-Fault Exceptions ausgelöst werden (Hardware-Interrupt 0 löst standardmäßig Interrupt 8 aus).

Darum hatte ich bis heute einen Code im Kernel der den Controller umprogrammiert. Als, ich ihn heute dann auskommentiert habe, hab ich bemerkt, dass trotztem nicht 18,2 mal in der Sekunde ein Double-Fault Exception ausgelöst wird.

Ist jetzt dieser Code nötig oder nicht ????


Gruss
Noooooooooos
15
Lowlevel-Coding / 4 MB Pages
« am: 11. March 2006, 19:52 »
Hallo

1.) Kann ich im PageDirectory des Kernels 4M Pages eintragen obwohl eigentlich der ganze Speicher in 4 KB Pages segmentiert ist ??? Ich will nämlich im Kernel den ganzen Speicher ansprechen und 1024 PageTables zu beschreiben dauert zu lange und braucht zu viel Speicher.
2.) Wie sieht ein 4MB-Eintrag im PageDirectory aus ????

Vielen Dank
Noooooooooooos
16
Lowlevel-Coding / Merkwürdiges Problem
« am: 06. February 2006, 19:26 »
Jetzt hab ich aber ein ganz sonderbares Problem:


Also, ich habe jetzt zwei Tasks. Jeder Task ist in einer eigenen Datei gespeichert. Jeder Task gibt einen Buchstaben aus. Aber je nachdem, welche Datei ich vor dem Ausführen des MakeFile zuletzt gespeichert wird, ist die Ausgabe anders.  :shock:  :?  :x
Also, anstatt dass der Buchstabe des 1. Tasks überschrieben und der Buchstaben des 2. Tasks ausgegeben wird, wird nur der Buchstaben des 1. Tasks ausgegeben.


Hier mein MakeFile:nasm -f bin -o boot.bin boot.asm
nasm -f bin -o starttask.bin starttask.asm
nasm -f bin -o kernel.bin kernel.asm
nasm -f bin -o task.bin task.asm
copy /B boot.bin + kernel.bin + starttask.bin + task.bin TriviaOS.img
OS.bxrc


Weiss jemand, was hier los ist ????


Gruss
Nooooooooos
17
Lowlevel-Coding / Fragen zum Speicher
« am: 28. January 2006, 11:23 »
Hallo

1.)Ich weiss, dass solche Theards nicht gern gesehen werden. Aber ich kann einfach nirgends etwas zur Speicherbelgung des gesamten Speichers im PM und nur im PM finden. Denn alles was ich gefunden habe, wiederspricht sich wieder irgendwo.
Hat irgendjemand gute Links...???

2.)Wie kann ich ermitteln, wie gross der Speicher ist??

Danke schonmal
Nooooooooos
18
Lowlevel-Coding / PageTable im Directory eintragen
« am: 25. January 2006, 14:17 »
Ich hab ein Problem mit dem Code für Paging aus dem 8. Magazin. Dort steht diese Zeile: mov DWORD[0xC000+0],(0xD000 | 000000000111b)
Sie dient dazu, eine PageTable im PageDirectory einzutragen.
 
Wenn ich dass aber so machen will, dass ich die Postion der PageTable in einer Variablen gespeichert habe, sieht das so aus:mov DWORD[0xC000+0],([PositionPageTable] | 000000000111b)
Dieser Befehl ist aber ungültig, also versuche ich es so:mov ebx,[PositionPageTable]
or ebx,000000000111b
mov [0xC000],ebx

Bei diesem Code stürzt der PC oder Bochs ab.

Wie muss ich den Befehl schreiben, damit es funktioniert???

Gruss Noooooooooooos
19
Lowlevel-Coding / Ring0 -> Ring3
« am: 11. January 2006, 16:41 »
Hallo

Ich habe Softwaremultitasking in einem flachen Speichermodell. Nun will ich auch Ring3 Tasks implementieren. Das funktioniert aber nicht. Nach dem iret zum Ring3 Task meldet Bochs: "ss.rpl != cs.dpl". Dann zeigt Bochs die Werte aller Register zum Zeitpunkt des Fehlers. Da steht das RPL von SS = 3 ist. Und der Index von CS = 4. In der GDT im 4. (bzw. 5.) Deskriptor ist das DPL "11b" für Ring3 eingetragen. Wiso funzt das nicht??

Hier mein Deskriptor:
dw 0xFFFF                    ;Limit
dw 0                            ;Keine Startadresse
db 0
db 11111010b
db 0xCF
db 0


Vielen Dank
Nooooooooooos
20
OS-Design / Kommunikation zwischen Modulen
« am: 22. December 2005, 12:56 »
Hallo

Wie realisiert ihr die Kommunikation unter verschiedenen Modulen? Bei mir laufen alle Module in Ring3. Wie kann ich jetzt eine bestimmte Funktion oder ein bestimtes Modul aufrufen ???? Macht ihr das mit Interrupts? Oder geht das auch mit Gates usw...

Gruss Noooooooos
Seiten: [1] 2

Einloggen