Danke für eure Antworten
...
Ja ich weiß mem_cpy( source, dest, ... ) ist nicht gerade normgerecht ... muss ich mal ändern
... Du hast recht den Cast brauche ich in diesem Fall nicht ... ich habe den Code jedoch zuvor direkt aus dem Kernel heraus getestet und hier verwende ich die Struktur WINDOW anstelle von U_WINDOW, und daher noch der Cast, da sonst GCC meckert ...
Also ich compiliere das C-File wie folgt mit GCC:
gcc -c guibsp\main.c -I include -Wall -Werror -nostdlib -nostartfiles -nodefaultlibs
anschließend Linke ich die Datei, als Binary, wie folgt:
ld -T guibsp\link.ld -o guibsp.bin
OUTPUT_FORMAT("binary")
INPUT(
main.o
lib\lib_o\gui_window.lib
lib\lib_o\strlib.lib
lib\lib_o\print.lib
lib\lib_o\syscall.lib
lib\lib_o\io.lib
lib\lib_o\staticos_io.lib
)
ENTRY(_main)
phys = 0x000000;
SECTIONS
{
.text phys : AT(phys) {
code = .;
*(.text)
*(.rodata)
. = ALIGN(4096);
}
.data : AT(phys + (data - code))
{
data = .;
*(.data)
. = ALIGN(4096);
}
.rodata : AT(phys + (rodata - code))
{
rodata = .;
*(.rodata)
. = ALIGN(4096);
}
.bss : AT(phys + (bss - code))
{
bss = .;
*(.bss)
. = ALIGN(4096);
}
end = .;
}
...
Ich vermute zwar dass der Fehler nicht in mem_cpy oder u_gui_window_create liegt aber ich poste die Funktionen einfach mal:
int mem_cpy( unsigned char *s1, unsigned char *d1, unsigned int size )
{
int i;
for( i=0;i<=size;i++ )
d1[i] = s1[i];
return i;
}
unsigned int u_gui_window_create( U_WINDOW *window_par )
{
MESSAGE_t send;
send.com = VIDEO_GUI_WINDOW_CREATE;
send.str1 = (unsigned int)(window_par);
sys_int( &send );
return send.empf1;
}
sys_int( .. ) .. ruft dabei einen Interrupt auf, der veranlasst dass die Struktur send zum Kernel übergeben wird ...
Aja hier noch die Struktur welche die Fenstereigenschaften beinhält ...
typedef struct {
char titel[50];
int x;
int y;
int x2;
int y2;
int w;
int h;
int w2;
int h2;
unsigned int id;
unsigned char zustand;
unsigned int *draw_buffer;
} __attribute__ ((packed)) U_WINDOW;
Ich habe bereits einige experimente am Linkerfile vorgenommen, jedeoch ohne Erfolg ... Ich habe Rodata hinzugefügt, ... etc.
@bluecode:
Du sagtest ja es könnte sein dass ich einen Fehler beim Laden der ELF - in meinem Fall BIN - Datei mache ... wie meinst du das genau ??
Danke im Voraus