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

Seiten: [1] 2
1
Softwareentwicklung / Android Emulierung
« am: 14. November 2013, 19:32 »
Hallo liebe Gemeinde,

ich habe Interesse an einem Android Emulator, der allerdings nicht das ganze System emuliert, sondern nur die .apk-Dateien ausführen kann.
Es sollte sowas in der Art wie Bluestacks sein. Da ich die Android Apps auf meinem Windows Phone nutzen möchte, wollte ich wissen ob ihr irgendeine Ahnung habt welche packages ich bereitstellen muss oder ob ihr eine Ahnung habt wie dieses Bluestacks programmiert ist.
Die Möglichkeit sowas zu machen ist vorhanden, man muss sie nurnoch als App umsetzen.
Ich habe bereits einige Windows Phone Apps programmiert.

Könnt ihr mir helfen, soetwas umzusetzen?

Danke für Eure Hilfe!

Gruß
MrTom3715

Der Link zu Bluestacks: http://www.bluestacks.com/

EDIT: Ich hatte vor den Android Source zu laden, bevor mir in den Sinn kam, dass es ziemlich lang dauern würde sich rein zu arbeiten.
2
Problem gelößt! :-)

Qemu crasht nicht mehr.

Ich hatte die Port 0x60 Abfrage in der main(), nun habe ich sie in den Interrupt-Handler gesteckt und siehe da: Es funktioniert.
3
Diesen Befehl habe ich jetzt schon entfernt.

Leider funktioniert es immer noch nicht. Ich bekomme immernoch keine Interrupts von der Tastatur.
4
Das ist beabsichtigt.
Ich habe zuerst versucht ohne Multitasking zu arbeiten.
Die Tastatur wird auch erfolgreich gestartet und löst ein Interrupt aus, aber wenn ich eine Taste drücke müsste auf dem Bildschirm erscheinen, dass es einen Interrupt 0x21 gibt. Dieser wird aber nicht ausgelöst.
5
Hier mal mein ganzer Code:
6
Welchen Code bräuchtest du denn?
Den von der While-Schleife?
7
Lowlevel-Coding / PFLASH: Possible BUG - Write block confirm
« am: 21. June 2013, 16:14 »
Hallo,

ich habe mal wieder ein Problem...

Ich habe es jetzt geschaft die Tastatur zu aktivieren, aber wenn ich eine Endlosschleife mit einer Abfrage von Port 0x60 programmmiere, entsteht folgender Error:

PFLASH: Possible BUG - Write block confirm

Qemu stürzt einfach ab.

Hier ist mein Log:
http://pastebin.com/EF2F58eQ

Ich kenne mich leider nicht mit dem Auswerten eines QEMU-Logs aus.

Kann mir jemand sagen wo mein Fehler liegen könnte?
An der Schleife liegt es definitiv nicht.


MrTom3715
8
Schade...
Aber trotzdem danke!
9
Softwareinterrupts funktionieren und Timer auch.
10
Interrupts haben bei mir bisher immer funktioniert.

Mich wundert es aber, dass selbst die IDT aus dem Tutorial nicht richtig funktioniert.
Gibt es vielleicht einen Fehler im Tutorial?
11
Ich habe meine IDT jetzt mal mit der aus dem Tutorial-Beispiel ersetzt.

Es klappt immer noch nicht...

Wenn ich keine den outb() Befehl auskommentiere, entsteht kein Double oder Triple Fault.

Meine PIC initialisierung besteht aber auch hauptsächlich nur aus outb() Befehlen und es tritt kein Fehler auf.

Hast du irgendeine Idee was sonst falsch sein könnte oder habe ich dich falsch verstanden?
12
Ich teste in Qemu.

Hier ist der Log:
http://pastebin.com/DAA6VJH1

MrTom3715
13
Lowlevel-Coding / Ständiges Rebooten mit outb() und inb()
« am: 20. June 2013, 18:52 »
Hallo,

ich habe mich mal wieder hingesetzt und versucht einen Tastaturtreiber zu entwerfen, damit man auch was machen kann...

Leider wird ständig ein Reboot ausgeführt.


Meine Tastatur-Initialisierung:
void keyboard_init(void)
{
while ((inb(0x64) & 0x1)) {}

 
     
// Tastatur aktivieren
send_command(0xF4);

kprintf("Tastatur initialisiert!");
}

void send_command(uint8_t command)
{
while ((inb(0x64) & 0x2)) {}
outb(0x60, command);
}

Kommentiere ich die while-Schleife und send_command in keyboard_init() aus funktioniert alles normal.
Ich vermute, dass es an inb() und outb() liegt.

Hier mein Code für inb() und outb():
void outb(unsigned short _port, unsigned char _data)
{
__asm__ ("outb %0, %1" : : "a" (_data), "Nd" (_port));
}

unsigned char inb(unsigned short _port)
{
unsigned char result;
__asm__ ("inb %1, %0" : "=a" (result) : "Nd" (_port));
return result;
}

Der Compiler zeigt keine Fehler an.
Weiß jemand was das Problem ist und wie ich es beheben kann?

Schonmal Danke :-)

MrTom3715
14
Lowlevel-Coding / Re: kprintf - Problem
« am: 14. January 2013, 18:51 »
Danke für die Antwort. Habe ich auch nicht gewusst.
Ich include aber auch nur h-Dateien.
15
Lowlevel-Coding / Re: kprintf - Problem
« am: 13. January 2013, 18:32 »
Ich habe jetzt printf -> kprintf, putc -> zu kputc usw. gemacht.
Jetzt funktioniert es.
16
Lowlevel-Coding / Re: kprintf - Problem
« am: 13. January 2013, 17:57 »
Hier ist nochmal mein ganzer Code:
#ifndef INCLUDE_include_H
#define INCLUDE_include_H

#include "include.h"

#define SCREEN_WIDTH 80
#define SCREEN_HEIGHT 25
#define TABULATOR_WIDTH 4
#define TABULATOR_HEIGHT 4

static int printf_res;
static char* video = (char*) 0xb8000;
static int cursor_x = 0;
static int cursor_y = 0;
static int color = 0xF0;


inline void outb(uint16_t port, uint8_t data)
{
asm volatile ("outb %0, %1" : : "a" (data), "Nd" (port));
}

void scrolldown(int times)
{
int n;
int p;
for (p = 0; p < times; p++)
{
for (n = 0; n < 160; n++)
video[n] = ' ';
for (n = 0; n < 3839; n++)
video[n] = video[n + 160];
for (n = 3840; n < 4000; n++)
video[n] = ' ';
}
cursor_y = cursor_y - times;
}

void checkcursor()
{
if(cursor_y == 25)
{
scrolldown(1);
}
if(cursor_x == 79)
{
cursor_x = 0;
cursor_y++;
}
movecursor(cursor_x, cursor_y);
}

void putc(char c)
{

if(c == '\n')
{
cursor_y++;
cursor_x = -1;
checkcursor();
}
else if(c == '\t')
{
if(cursor_x > SCREEN_WIDTH - TABULATOR_WIDTH)
{
cursor_x = -1;
cursor_y++;
checkcursor();
}
else
{
cursor_x = cursor_x + TABULATOR_WIDTH;
}
}
else if (c == '\b')
{
video[(cursor_y * SCREEN_WIDTH) + cursor_x * 2] = ' ';
cursor_x--;
}
else if (c == '\r')
{
cursor_x = -1;
}
else if (c == '\v')
{
if(cursor_y > SCREEN_HEIGHT - TABULATOR_HEIGHT)
{
scrolldown(SCREEN_HEIGHT - cursor_y);
}
else
{
cursor_x = -1;
cursor_y = cursor_y + TABULATOR_HEIGHT;
}
}
else if (c == '\f')
{
cls();
}
else
{
cursor_x++;
video[(cursor_y * SCREEN_WIDTH) + cursor_x * 2] = c;
video[(cursor_y * SCREEN_WIDTH) + cursor_x * 2 + 1] = color;
checkcursor();
}
printf_res++;
}

void puts(const char* s)
{
while (*s) {
putc(*s++);
}
}

void putn(unsigned long x, int base)
{
char buf[65];
const char* digits = "0123456789abcdefghijklmnopqrstuvwxyz";
char* p;
 
if (base > 36) {
return;
}
 
p = buf + 64;
*p = '\0';
do {
*--p = digits[x % base];
x /= base;
} while (x);
puts(p);
}

int printf(const char* fmt, ...)
{
va_list ap;
const char* s;
unsigned long n;
 
va_start(ap, fmt);
printf_res = 0;
while (*fmt) {
if (*fmt == '%') {
fmt++;
switch (*fmt) {
case 's':
s = va_arg(ap, char*);
puts(s);
break;
case 'd':
case 'u':
n = va_arg(ap, unsigned long int);
putn(n, 10);
break;
case 'x':
case 'p':
n = va_arg(ap, unsigned long int);
putn(n, 16);
break;
case '%':
putc('%');
break;
case '\0':
goto out;
default:
putc('%');
putc(*fmt);
break;
}
} else {
putc(*fmt);
}
 
fmt++;
  }
 
  out:
va_end(ap);
 
return printf_res;
}

void cls()
{
int u;

cursor_x = 0;
cursor_y = 0;
for(u = 0; u < SCREEN_WIDTH * SCREEN_HEIGHT; u++)
{
cursor_x++;
video[(cursor_y * SCREEN_WIDTH) + cursor_x * 2] = 0;
video[(cursor_y * SCREEN_WIDTH) + cursor_x * 2 + 1] = color;
}
cursor_x = 0;
}

void setcolor(int colorcode)
{
color = colorcode;
}

void movecursor(uint8_t col, uint8_t row)
{
uint16_t tmp;
tmp = (row * SCREEN_WIDTH + col) * 2;
outb(0x3D4, 14);
outb(0x3D5, tmp >> 8);
outb(0x3D4, 15);
outb(0x3D5, tmp);
}

#endif

printf_res zählt die Zeichen. Wenn man wissen möchte wieviele Zeichen der User eingegeben hat, ist das nützlich.

MrTom3715
17
Lowlevel-Coding / Re: kprintf - Problem
« am: 13. January 2013, 17:44 »
Ich habe es gerade ausprobiert aber es funktioniert nicht.  :cry:
18
Lowlevel-Coding / Re: kprintf - Problem
« am: 13. January 2013, 17:35 »
1. Den Fehler werde ich versuchen zu beheben. Spätestens wenn \n funktioniert.

2. Dankeschön!!! Das wusste ich nicht. Du hast mich bereichert. ^^

Edit: SCREEN_WIDTH ist 80 also muss ein Fehler bei der Cursorverschiebung sein.

Hat vielleicht jemand die Lösung für das \n Problem???
19
Lowlevel-Coding / Re: kprintf - Problem
« am: 13. January 2013, 17:22 »
Ich habe auch keine Erklärung dafür aber es funktioniert bei beiden.
Wenn ich Hallo schreibe erscheint: Hallo_


GCC will bei mir ein einfaches Backslash nicht akzeptieren. GCC vermutet gleich, dass ein Steuerzeichen vorhanden ist.
20
Lowlevel-Coding / Re: kprintf - Problem
« am: 13. January 2013, 16:02 »
@MNemo:
1. Im Wikiartikel steht das auch so. Ich dachte auch man müssten
tmp = row * SCREEN_WIDTH + col *2;nehmen.

2. Ich weiß das ein Backslash kein Sonderzeichen ist. Es ist halt Standard es mit \\ zu schreiben.


MrTom3715
Seiten: [1] 2

Einloggen