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

Seiten: 1 [2]
21
Lowlevel-Coding / Re: kprintf char ausgeben
« am: 11. May 2016, 11:09 »
So ich bin jetzt an der Umsetzung der Übersetzung von UTF8 in CP437.
Vom Ablauf habe ich mir das so gedacht:
Array mit keycodes -> Array mit UTF-8 Eingaben -> Array mit CP437 (wobei der Pfeil fürs mappen stehen soll)
Erst die CP437 gehen an meine kprintf, die ja dann tatsächlich "malt"
In meinem CP437 Array hätte ich dann nur noch die Hex Werte.

Dann habe ich noch eine Frage zu den Funktionstasten. Enter, Tab und Return (\n, \t, \r) umzusetzen habe ich hinbekommen. Wie mache ich das jetzt bei Tasten die nicht so eine Escapesequenz haben? Bspw.: Pfeiltasten, Pos1 usw.
Theoretisch kann ich mir ja hier was ausdenken allerdings ist dass nicht wirklich schön und zieht viel Dokumentation nach sich. Ab gesehen davon wirft der Compiler Warnings dass er die Escapesequenzen nicht kennt oder diese anders belegt sind (Bsp: \x für hex). Gibt es für sowas einen Standard oder bastelt man sich da tatsächlich irgendwas zusammen?

Gruß
Sava
22
Lowlevel-Coding / Re: kprintf char ausgeben
« am: 07. May 2016, 11:13 »
Danke für die Antwort. Ich denke ich werde erstmal die Escapesequenzen benutzen und wenn der Tastaturtreiber fertig ist (der Rest ist ja nur noch Fleißarbeit) schau ich mal wie ich die UTF8-Unterstützung in den Kernel einbaue.

besten Dank nochmal!
(selten ein so hilfsbereites und kompetentes Forum gesehen)
23
Lowlevel-Coding / Re: kprintf char ausgeben
« am: 06. May 2016, 19:25 »
So, nun habe ich mich ja ewig nicht gemeldet, und dabei waren das nur 2 Zeilen Code und 5 Minuten Zeit. Falls das noch mal jemand braucht, das ist die Lösung:

case 'c':
    n = va_arg(ap, int);
    kputc(n);
    break;

Funktioniert soweit super. Allerdings komme ich gleich zur nächsten Frage:
Ich möchte gern Umlaute ausgeben. In meinem keymap array stehen dazu die Umlaute ganz normal als chars drin (Bsp.: 'ö').  Ich erhalte beim compilieren Warnungen wegen der Umlaute und Sonderzeichen:

warning: multi-character character constant [-Wmultichar]
warning: overflow in implicit constant conversion [-Woverflow]

Ich verstehe die Warnungen, aber ich kann sie nicht auf mein Problem übertragen.
Wenn ich dann einen Umlaut eingeben möchte gibt er mir kryptische Zeichen aus.

Ich weiß gar nicht ob mein Kernel schon Umlaute kann oder ob das nur ein Darstellungsproblem ist.

Gruß
Sava


24
Lowlevel-Coding / Re: kprintf char ausgeben
« am: 28. April 2016, 14:04 »
Ok alles klar. danke für die Erklärung. Ich melde mich wieder =)
25
Lowlevel-Coding / Re: kprintf char ausgeben
« am: 28. April 2016, 10:56 »
Hallo danke für die schnelle Antwort!

Im Prinzip ist alles, was du brauchst, ein großes Array, das dir die Scancodes auf ASCII-Zeichen mappt:

static const char sc_to_char[0x7f] = {
  0, 27 /* Escape */, '1', '2', '3', ...
};

Und dann nochmal ein zweites Array für wenn Shift gedrückt ist.
Die zwei Array habe ich schon (bzw. erst mal das eine - ohne shift, zum testen)

Ach so, und die Umwandlung gehört natürlich nicht ins kprintf(), das einfach das ASCII-Zeichen ausgibt (machst du ja für Strings auch schon), sondern in deine Eingabefunktion.
da hängt es jetzt noch ein wenig.
ich rufe das ganze auf mit:
char zeichen = kc2c(int keycode);
kprintf("%c", zeichen);

kc2c(int keycode) greift auf die Array zu, die die keycodes mappen. soweit so klar. Mein kprintf funktioniert z.B. mit kprintf("test"); Das meinst du mit "machst du ja für Strings schon", oder? Irgendwie muss ich meinem kprintf doch aber %c beibringen. Und was meinst du mit Eingabefunktion?

was bedeutet eigentlich das [0x7f]?
26
Lowlevel-Coding / kprintf char ausgeben
« am: 28. April 2016, 10:04 »
Hallo Team,

dank des tollen Forums, des Wikis und des Tutorials habe ich es nun fast geschafft einen Tastaturtreiber zu schreiben. D.h:
- kprintf zum Zeichen ausgeben
- Interrupts funktionieren wie sie sollen
- Meine Tastatur ist initialisiert
- die Keycodes kann ich auf dem Bildschirm ausgeben

Natürlich möchte ich jetzt nicht die Keycodes ausgeben sondern die tatsächlichen Zeichen. Dafür muss meine kprintf-Funktion %c unterstützen. An der Stelle scheitere ich nun und hoffe auf die Community =)
Meine aktuelle kprintf entspricht dem Tutorium. Ich habe auch schon im Code von týndur gespickt und bin da doch etwas überfordert.

Gruß
Sava
27
Lowlevel-Coding / Re: qemu Kommando nicht gefunden
« am: 09. April 2016, 21:49 »
gelöst. Melde mich sicher bald mit neuen Problemen.

Hier die Lösung:
qemu-system-x86_64 -kernel kernel
28
Lowlevel-Coding / qemu Kommando nicht gefunden
« am: 09. April 2016, 21:21 »
Hallo ihr alten Hasen,

hier ist ein unwissender Neueinsteiger in die Thematik, der zwar voller Elan ist, sich aber noch ein wenig schwer tut und hier auf Unterstützung hofft.

Zu meinem Problem:
Ich möchte mir gern meinen eigenen Kernel schreiben. Dazu halte ich mich an das Tutorial und bin jetzt bei Teil 4 - Hello World angekommen (https://www.lowlevel.eu/wiki/Teil_4_-_Hello_World). Probleme habe ich jetzt mit dem Testen meines "Kernels". Dazu steht im Tutorial:

"qemu kann ab Version 0.11 Multiboot-Kernel direkt laden. qemu -kernel kernel bringt unseren Kernel zur Ausführung und schreibt ein wunderschönes Hello World in die linke obere Ecke. "

Ich habe qemu 2.6 von http://wiki.qemu.org/Download heruntergeladen und mit

./configure --target-list=x86_64-softmmu
make
make install

installiert. Möchte ich jetzt den Befehl "qemu -kernel kernel" ausführen, heißt es das Kommando wird nicht gefunden.
Nach etwas rumgooglen habe ich raus gefunden dass der Befehl in den neueren Versionen irgendwie anders heißt. (https://wiki.ubuntuusers.de/QEMU/)  Ich bin mir allerdings sehr unsicher und bitte deswegen hier um eine kleine Hilfestellung und Erklärung bzgl. Qemu.

Vielleicht noch als Hinweis:
Ich spiele das ganze in einer Virtual Box auf Debian durch.

Gruß
Sava
Seiten: 1 [2]

Einloggen