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

Seiten: 1 ... 30 31 [32]
621
Offtopic / OS für Handys
« am: 03. April 2005, 14:25 »
Die haben wirklich irgendwas anderes, aber vlt. gehts ja trotzdem. Gibt es denn ne Möglichkeit an das OS von nem Handy zu kommen?

Ich vermute das ein Handy-OS noch hardware-näher als ein normales OS programmiert wird -> Man braucht ein paar Infos über Ports usw.
622
Offtopic / OS für Handys
« am: 03. April 2005, 14:10 »
Kann man eigentlich das OS von nem Handy umschreiben oder komplett neuschreiben? Wenn ja: Wer hat sich schonmal damit beschäftigt und wie funktioniert das? Gibt es bestimmte Handys (oder Hersteller) mit denen das vergleichsweise einfach geht?

Thx für alle Antworten.
623
Lowlevel-Coding / Os, was macht man wann und wie???
« am: 03. April 2005, 13:56 »
Ich hab mal den Code aus Bran's Kernel Dev kopiert:


/* bkerndev - Bran's Kernel Development Tutorial
*  By:   Brandon F. (friesenb@gmail.com)
*  Desc: Interrupt Descriptor Table management
*
*  Notes: No warranty expressed or implied. Use at own risk. */
#include <system.h>

/* Defines an IDT entry */
struct idt_entry
{
    unsigned short base_lo;
    unsigned short sel;
    unsigned char always0;
    unsigned char flags;
    unsigned short base_hi;
} __attribute__((packed));

struct idt_ptr
{
    unsigned short limit;
    unsigned int base;
} __attribute__((packed));

/* Declare an IDT of 256 entries. Although we will only use the
*  first 32 entries in this tutorial, the rest exists as a bit
*  of a trap. If any undefined IDT entry is hit, it normally
*  will cause an "Unhandled Interrupt" exception. Any descriptor
*  for which the 'presence' bit is cleared (0) will generate an
*  "Unhandled Interrupt" exception */
struct idt_entry idt[256];
struct idt_ptr idtp;

/* This exists in 'start.asm', and is used to load our IDT */
extern void idt_load();

/* Use this function to set an entry in the IDT. Alot simpler
*  than twiddling with the GDT ;) */
void idt_set_gate(unsigned char num, unsigned long base, unsigned short sel, unsigned char flags)
{
    /* The interrupt routine's base address */
    idt[num].base_lo = (base & 0xFFFF);
    idt[num].base_hi = (base >> 16) & 0xFFFF;

    /* The segment or 'selector' that this IDT entry will use
    *  is set here, along with any access flags */
    idt[num].sel = sel;
    idt[num].always0 = 0;
    idt[num].flags = flags;
}

/* Installs the IDT */
void idt_install()
{
    /* Sets the special IDT pointer up, just like in 'gdt.c' */
    idtp.limit = (sizeof (struct idt_entry) * 256) - 1;
    idtp.base = &idt;

    /* Clear out the entire IDT, initializing it to zeros */
    memset(&idt, 0, sizeof(struct idt_entry) * 256);

    /* Add any new ISRs to the IDT here using idt_set_gate */



    /* Points the processor's internal register to the new IDT */
    idt_load();
}


Der interessante Teil hier ist die Funktion idt_set_gate!

Noch ein Beispiel:

void isrs_install()
{
    idt_set_gate(0, (unsigned)isr0, 0x08, 0x8E);
    idt_set_gate(1, (unsigned)isr1, 0x08, 0x8E);
    idt_set_gate(2, (unsigned)isr2, 0x08, 0x8E);
    idt_set_gate(3, (unsigned)isr3, 0x08, 0x8E);

    ...                         /* Fill in the rest of these ISRs here */

    idt_set_gate(30, (unsigned)isr30, 0x08, 0x8E);
    idt_set_gate(31, (unsigned)isr31, 0x08, 0x8E);
}


Der zweite Parameter ist einfach nur der Name der Funktion.
624
Lowlevel-Coding / Os, was macht man wann und wie???
« am: 28. March 2005, 10:08 »
Bei osdever.net gibt es ein Tutorial darüber (das heißt Bran's Kernel Dev oder so). Kann ich allen die sich mit IDT & Co. beschäftigen wollen empfehlen.

PS: Bin jetz 5 Tage in Urlaub  8)
625
Lowlevel-Coding / Os, was macht man wann und wie???
« am: 27. March 2005, 21:05 »
Vieles kann man auch in C machen, aber nicht alles. PM dürfte man nicht mit C schaffen (außer per Inline-Assembler). Aber das meiste andere sollte man über die Ports schaffen.

@IDT
Ich hab für jeden Interrupt die gleiche Funktion. Wenn die aufgerufen wird nehm ich mir die Interrupt-Nummer und suche in nem Array nach einem Function-Pointer auf die eigentliche Funktion. Das ist in sofern sinnvoll, dass man zur Laufzeit diese Function Pointer problemlos ändern kann.
626
Offtopic / TFT vs. Plasma
« am: 26. March 2005, 13:46 »
Ich denke für Spiele ist das interessant, aber nicht alle kommen mit solchen Bildschirmen zurecht (schwarze Balken oben und unten z.B.). Bei Alienware gibt es nen 30 Zoll TFT für rund 3000€!
627
Lowlevel-Coding / Os, was macht man wann und wie???
« am: 26. March 2005, 13:40 »
Direkt nach dem Start befindet sich der PC im Real Mode (also 16bit). Im Bootsector sollte man (man muss aber nicht) in den Protected Mode umschalten. Danach ist man im 32-Bit Modus, unabhängig von der Programmiersprache. Wenn der Bootsector Fat-Kompatibel sein soll, muss man sich an ein paar Regeln halten (siehe Tee Jays Fat Tutorial).
Der Bootsector ist wie der Name sagt ein Sektor groß und ein Sektor enstspricht 512 Bytes.
Im PM darf man keine BIOS Interrupts verwenden, d.h. man muss Funktionen für Tastatur, Bildschirm, Diskette, ... selber schreiben. Die IDT hängt da auch mit drin, ist aber komplizierter zu erklären.

Wenn du noch irgendwelche Fragem hast, kannst du gerne fragen  :wink:
628
Das Wiki / Wird es Lowlevel als Magazin noch geben?
« am: 25. March 2005, 14:19 »
Ich hab halt zu wenig Zeit um mich stärker um das Mag zu kümmern und ich denke dass es den meisten anderen auch so geht. Vielleicht sollte sich jeder melden der Interesse (und Zeit!) hat Tuts usw. zu schreiben.
629
OS-Design / String Klasse
« am: 23. March 2005, 18:16 »
Ich denke halt, dass es kein echtes Tut dazu gibt, weil viele sowas einfach nicht neu schreiben sondern die Compiler-Version verwenden.
Das Problem ist vielleicht das der Source der beim Compiler dabei ist ziemlich unübersichtlich ist.
630
Offtopic / TFT vs. Plasma
« am: 23. March 2005, 17:57 »
Zitat von: sp
Gibt es überhaupt "Plasmamonitore"?

Gute Frage... Ich hab mal bei Conrad und Alienware gesucht aber die scheinen das nicht als Monitor zu haben. Aber AFAIK kann man nen normalen Bildschirm an den PC anschließen.
631
Lowlevel-Coding / Keyboard: IRQ vs. Nicht IRQ
« am: 23. March 2005, 17:51 »
Ja, Wichtige Hotkeys gehen an nen System-Task, alles andere an die aktive Anwendung. Erinnert mich ein wenig an Windows. Da kriegt die Callback-Funktion auch die Message, dass ne Taste gedrückt wurde und den Tastencode kann man dann aus nem Parameter lesen.
632
OS-Design / String Klasse
« am: 23. March 2005, 14:11 »
Wenn ich mich nicht völlig irre ist bei vielen (C++)Compilern nicht nur ne lib sondern auch der Source dabei, da es ja mehr oder weniger OS unabhängig ist. Eigentlich sollte es kein Problem sein das zu finden.
633
Lowlevel-Coding / Multitasking bug?
« am: 23. March 2005, 13:56 »
Zitat von: sp

struct task_node* task_init() Wird das aufgerufen, hab irgendwie keine Codestelle dazu gefunden, allerdings hab ich den Code auch nur überfolgen.

Ich denke das wird beim Booten aufgerufen, also nur einmal von einer anderen Funktion.

Ansonsten sollte man vielleicht nicht direkt task_scheduler() aufrufen, sondern eine art Dummy Funktion, die in C geschrieben ist und in der man evtl noch ein paar Debug-Messages machen kann.
634
Lowlevel-Coding / Keyboard: IRQ vs. Nicht IRQ
« am: 22. March 2005, 16:42 »
An Multitasking hab ich bisher gar nicht gedacht, ich hab halt keine echte Vorstellung wie ich das einbaue  :oops:
Nochmal danke an alle. Ich werd dann mal nen IRQ-Keyboardtreiber schreiben.
635
Lowlevel-Coding / Keyboard: IRQ vs. Nicht IRQ
« am: 21. March 2005, 17:09 »
Stimmt...
Ich werd mal mit dem Keboard-Treiber von GazOS (http://sourceforge.net/projects/gazos) experimentieren.
636
Lowlevel-Coding / Keyboard: IRQ vs. Nicht IRQ
« am: 21. March 2005, 16:49 »
Mein bisheriger Keyboard-Treiber funktioniert so:
Wenn die getch()-funktion aufgerufen wird, warte ich mit einer while schleife so lange bis ne taste gedrückt wurde, also inport(0x60) != 0x0 ist. Danach mach ich aus dem Keycode wie gewohnt ein Zeichen.
Macht es Sinn das System so zu ändern dass es über den IRQ 1 läuft und nen Buffer verwendet?
637
Das Wiki / Wird es Lowlevel als Magazin noch geben?
« am: 21. March 2005, 16:43 »
Die Idee halt ich für die sinnvollste. es muss nur jemand drauf achten dass auch alle Teammitglieder sich mehr oder weniger regelmäßig damit beschäftigen. Wenn man im mag ein Projekt haben will würd ich eher in jeder Ausgabe einen Teil von nem OS (z.B. Keyboard, Floppy, ...) erklären, das äuft dann nicht so sehr darauf hinaus dass jeder Anfänger das gleiche OS hat  :wink:
Seiten: 1 ... 30 31 [32]

Einloggen