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 - Martin Erhardt

Seiten: 1 2 [3] 4 5 ... 9
41
Lowlevel-Coding / Re: VESA Bios Extensions
« am: 02. February 2013, 20:17 »
Also, wenn ich permanent im Grafikmodus sein möchte, muss ich nicht permanent im VM86 sein?
Nein das brauchst du nur zur Iniitialisierung des Linear Frame Buffer auf den kannst du auch später zugreifen.
42
Lowlevel-Coding / Re: Filesysteme
« am: 02. February 2013, 17:11 »
Du musst den ganzen artikel lesen und außedem die von PCI und DMA und noch die jeweiligen Spezifikationen. HBA hat bestimmt was mit PCI zu tun wenn ich schon Vendor_ID lese
typedef volatile struct tagHBA_MEM
{
// 0x00 - 0x2B, Generic Host Control
DWORD cap; // 0x00, Host capability
DWORD ghc; // 0x04, Global host control
DWORD is; // 0x08, Interrupt status
DWORD pi; // 0x0C, Port implemented
DWORD vs; // 0x10, Version
DWORD ccc_ctl; // 0x14, Command completion coalescing control
DWORD ccc_pts; // 0x18, Command completion coalescing ports
DWORD em_loc; // 0x1C, Enclosure management location
DWORD em_ctl; // 0x20, Enclosure management control
DWORD cap2; // 0x24, Host capabilities extended
DWORD bohc; // 0x28, BIOS/OS handoff control and status
 
// 0x2C - 0x9F, Reserved
BYTE rsv[0xA0-0x2C];
 
// 0xA0 - 0xFF, Vendor specific registers
BYTE vendor[0x100-0xA0];
 
// 0x100 - 0x10FF, Port control registers
HBA_PORT ports[1]; // 1 ~ 32
} HBA_MEM;
 
typedef volatile struct tagHBA_PORT
{
DWORD clb; // 0x00, command list base address, 1K-byte aligned
DWORD clbu; // 0x04, command list base address upper 32 bits
DWORD fb; // 0x08, FIS base address, 256-byte aligned
DWORD fbu; // 0x0C, FIS base address upper 32 bits
DWORD is; // 0x10, interrupt status
DWORD ie; // 0x14, interrupt enable
DWORD cmd; // 0x18, command and status
DWORD rsv0; // 0x1C, Reserved
DWORD tfd; // 0x20, task file data
DWORD sig; // 0x24, signature
DWORD ssts; // 0x28, SATA status (SCR0:SStatus)
DWORD sctl; // 0x2C, SATA control (SCR2:SControl)
DWORD serr; // 0x30, SATA error (SCR1:SError)
DWORD sact; // 0x34, SATA active (SCR3:SActive)
DWORD ci; // 0x38, command issue
DWORD sntf; // 0x3C, SATA notification (SCR4:SNotification)
DWORD fbs; // 0x40, FIS-based switch control
DWORD rsv1[11]; // 0x44 ~ 0x6F, Reserved
DWORD vendor[4]; // 0x70 ~ 0x7F, vendor specific
} HBA_PORT;
43
Lowlevel-Coding / Re: Filesysteme
« am: 02. February 2013, 17:02 »
Da wird gecheckt was für ein Typ das ist die Makros können so sein wie du willst, weil die nur dazu dienen mit switch case gecheckt zu werden mit der HW haben die nichts zu tun und sind meiner Meinung sogar fast überflüssig wenn da nicht check_type als extra Funktion wäre.
Bsp:
#define AHCI_DEV_NULL 0
#define AHCI_DEV_SATA 1
#define AHCI_DEV_SEMB 2
#define AHCI_DEV_PM 3
44
Offtopic / Re: Screen of Death
« am: 02. February 2013, 16:43 »
Mir fällt auf dass DS auch in den anderen Deathscreens fehlt.
Außerdem wie bekommt solche Stacktraces - Ok das kann ich schlecht sagen weil mein Profilbild = der get Stacktrace Funktion von Tyndur ist . ;)
45
Lowlevel-Coding / Re: Filesysteme
« am: 02. February 2013, 16:34 »
Dann, würde ich sagen, fange ich damit an, im OS die Festplatten zu "suchen", also irgendwie herauszufinden, wie viele Festplatten vorhanden sind, oder? Wie in etwa läuft sowas ab?
Steht da  :evil:
Erst mal muss ich bei QEMU eine Festplatte simulieren lassen, oder? Wie geht das?
Gute Frage!
46
Offtopic / Re: Screen of Death
« am: 02. February 2013, 16:32 »
https://docs.google.com/file/d/0B-x3QNiQfEeCVjJnOVIwNUVBbVE/edit?usp=sharing
Hier ist mein Redscreen, aber wieso wird DS nicht im Bsp kernel und bei mir NICHT gespeichert ? Müsste man das nicht auch speichern?
47
Lowlevel-Coding / Re: Filesysteme
« am: 02. February 2013, 16:27 »
Zum beschreiben von SATA/SATAPI Festoplatten brauchst du: http://wiki.osdev.org/AHCI(Advanced Host Controller Interface) und das nutzt http://www.lowlevel.eu/wiki/PCI als Bus und http://www.lowlevel.eu/wiki/DMA damit der host controller die großen datenmengen ohne CPU auf der RAM lesen/schreiben kann.
48
Lowlevel-Coding / Re: VESA Bios Extensions
« am: 02. February 2013, 16:00 »
Wenn man so einen Treiber hat, ist es denn dann egal, welche Geforce man hat? Gibt da doch hunderte verschiedene^^
Wenn du bloß VESA nutzt ja. Wenn du Spezifischeres schreibst z.b FULL HD Auflösungen setzt dann is das nicht mehr egal.
49
Lowlevel-Coding / Re: VESA Bios Extensions
« am: 02. February 2013, 15:53 »
- Was ist mit anderen Auflösungen, als denen, die in der Liste stehen? Wie ist es überhaupt möglich, z.B. 1920x1080 Pixel darzustellen?
Mit VESA alles außer FULL HD.
Vllt schreib ich mal en rudimentären Radeon oder Geforce Treiber der en FULL HD modus einstellt aber davon bin ich momentan ziemlich weit weg. Dafür müsste man mit Reverse Engineering die Specs aus den fglrx und nouveau Treibern rauslesen oder debuggen. Rauslesen eher weniger weil die meiste moderne HW von Linux nicht unterstützt wird und sie ziemlich unlesbar sind.

Meine ROADMAP

VMM Heap;
x64;
DMA, PCI;
AHCI;
FAT32;
SMP, SSE;
AHCI oder VESA 2.0
- Wie kann man, falls vorhanden, eine Grafikkarte dazu ausnutzen, die Pixel zu berechnen?
Normalerweise sendet die Hardware einfach nur den Framebuffer an das Display über DVI oder HDMI. Hardware beschleunigung dass du die GPU dies und das ausrechnen lässt ist schwer
50
#include <stdint.h>

#define SYS_WRITE 0

void printf(const char* fmt, ...);
void printfstrcol_scr(uint8_t font, const char* fmt);

void _start(void)
{
    printf("sghs");
 
    while(1);
}
void printf(const char* fmt, ...){
    uprintfstrcol_scr(0xF0,fmt);
}
void printfstrcol_scr(uint8_t font, const char* fmt){
    ...
}
51
bei der Implementierung meines Syscalls habe ich folgendes Problem:
gcc -m32 -Werror -Wall -g -fno-stack-protector -nostdinc -I lib -c -o tst.o tst.c
tst.c:5:6: error: conflicting types for built-in function ‘printf’ [-Werror]
52
Lowlevel-Coding / Re: Keyboard Controller Capslock
« am: 02. February 2013, 10:08 »
wenn ich nichts subtrahiere passiert nichts es schaut so aus als ob ich nur dann den Cursor sehe, wenn er unter ein gesetztes Zeichen gesetzt worden ist, ich will aber den Cursor immer ein bisschen vor dem letzten Zeichen haben
53
Lowlevel-Coding / Re: Keyboard Controller Capslock
« am: 02. February 2013, 01:18 »
Interessant ist, dass  tmp= (cury*80+curx)-1; geht.
54
Lowlevel-Coding / Re: Keyboard Controller Capslock
« am: 02. February 2013, 00:31 »
Ich hab auch so meine Probleme mit der Qemu Grafikkarte.
Hier ist mein Cursorcode:
void drawcurs(){
  uint32_t tmp;
  tmp= cury*80+curx+1;
  outb(0x3d4,14);
  outb(0x3d5,tmp >> 8);
  outb(0x3d4,15);
  outb(0x3d5,tmp);
}
void rmvcurs()
{
  outb(0x3d4,14);
  outb(0x3d5,0x07);
  outb(0x3d4,15);
  outb(0x3d5,0xd0);
}
kein Cursor weit und breit zu sehen !  :-(
55
Lowlevel-Coding / Re: Keyboard Controller Capslock
« am: 01. February 2013, 23:59 »
klar was denkst du ? :-D
56
Lowlevel-Coding / Re: Zeit
« am: 01. February 2013, 22:01 »
Mit RTC kann man auch IRQs auslösen lassen.
57
OS-Design / Re: Speicherideen
« am: 01. February 2013, 20:40 »
Genau das wars :D es hat jetzt nur noch einen SekundenBruchteil gedauert.
58
Lowlevel-Coding / Re: ß usw. ausgeben
« am: 01. February 2013, 20:16 »
Über VGA-Grafik kann man keine Unicodezeichen ausgeben soviel ich weiß; dafür musst du einen VESA GraKa-Treiber  proggen.
Unicode:
http://de.wikipedia.org/wiki/Unicode
59
OS-Design / Re: Speicherideen
« am: 01. February 2013, 17:13 »
:-o Kannste gerne mal versuchen, aber die CPU kopieren zu lassen sollte immer schneller sein, als über einen externen Controller zu gehen. 4 kB/s sind allerdings zu wenig und du solltest auf aktuellen Systemen in die Region von 100 MB/s oder 1 GB/s kommen ohne irgendwelchen AVX-Schnickschnack. Ich denke eher, dass deine memmove/memcpy-Funktionen nicht richtig funktionieren. Speicher wird mit MOV kopiert. Oder schreib die Funktionen einfach in C.
Neneh Ich hab das auch in C realisiert ist aber trotzdem sau lahm, aber AVX mach ich auf jeden Fall weils durch die breiteren Register so oder so schneller ist. Das man mit mov auf die RAM zugreifen kann wusste der ASM NOOB gar nicht. :oops:
Code: https://docs.google.com/file/d/0B-x3QNiQfEeCNU1ibHpIc2hMQWM/edit

Testen kann man mit der Funktion kpmm_test() in src/kernel/mm/pmm.c

Also wieso is des dann so lahm  :?
60
OS-Design / Re: Speicherideen
« am: 01. February 2013, 17:07 »
1. Dynamische Arrays/Puffer im Kernel:

Die Speicherverwaltungen bauen aufeinander auf: kmalloc schaut in irgendwelchen Datenstrukturen nach, ob irgendwo x Bytes frei sind.
Ich verwende kmalloc für meine physische Speicherverwaltung und nicht den Heap.
Seiten: 1 2 [3] 4 5 ... 9

Einloggen