Hi! Ich habe mir die Soft-USB-Lösung (alles in Assembler) von Igor Cesko (http://www.cesko.host.sk, cesko@internet.sk) für den ATMega 8 heruntergeladen, assembliert, alles läuft wunderbar (1,5MBit USB mit EEProm und USB-RS232 Wandler + Portpins-Schalten per USB, coole Sache!!). Das Programm ist im "Atmel - Assembler" (also nicht GNU-As) geschrieben. Nun möchte ich in dieses Programm eigene Funktionen mit einbinden. Da ich zu faul bin, alles in Assembler zu schreiben, will ich die Funktionen in C schreiben und dann in den Assembler-Code einbinden. Das ganze soll mit dem AVR-GCC (im WinAVR) passieren. Ist dies überhaupt möglich? Hab bisher das sorum noch nicht gesehen. Der Assemblercode müsste halt noch für den GNU-AS angepasst werden, das geht aber. Problem ist auch, das der Assemblercode die Hauptschleife samt Main() enthält. Wie bringe ich das dem AVR-GCC bei?? Vielen Dank schon mal! MfG, Tobi
> Ist dies überhaupt möglich? Hab bisher das sorum noch nicht gesehen.
Jein. Du hast halt kein Stück der Initialisierungen des
C-Laufzeitsystems. Da der Assemblercode seinen Stack ja zumindest
initialisieren wird, ist der Teil erstmal OK, es bliebe nur noch die
Initialisierung der statischen und globalen Variablen, die dann nicht
erfolgt. Das hängt dann von dir ab, ob du damit leben kannst.
Ich würde versuchen, stattdessen die Hauptschleife in C zu schreiben
und den Rest von dort aufzurufen.
Danke für die schnelle Antwort Hab grad gemerkt, dass es so gehen könnte: -Assemblerteil (Main.S) (unsinniger Code, nur Beispiel!!): .global main .func main .extern Test main: push r1 add r1,r2 RCALL Test ;Funktion aufrufen pop r1 rjmp main C-Teil (Test.c): void Test(void) { } Beide Teile dann im makefile angeben! Mein Problem ist, das das Assemblerprogramm halt nicht von mir stammt und ich mir die Mühe ersparen will, dieses zu zerpflücken. Die Anfangs-Initialisierungen macht das Assemblerprogramm.
Du musst natürlich die ABI-Konventionen beachten: http://www.sax.de/~joerg/avr-libc-user-manual/FAQ.html#faq_reg_usage
Hrmpf. Das war leider das falsche Manual... Hier der Link zum offiziellen: http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_reg_usage
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.