Ich suche nach einer Möglichkeit, ein paar Standard Prozeduren/Funktionen an ein feste Adressen zu legen, um sie nicht immer und immer wieder hochladen zu müssen. Hier geht es z.B. um die Steurung der Anzeige - die ist fertig, und muss nicht immer wieder neu ins EEPROM. Ich kann beim sdcc mit --code-loc zwar den Startbereich verschieben, aber ohne main() bekomme ich keine ladbaren *.ihx files. Ausserdem, wie deklariere ich die "externen" Funktionen in dem eigentlichen Programm ? - die Information brauche ich ja für den Linker. Hat da schon jemand Erfahrung ?
Leg ein Funktionspointer-Array auf eine feste Adresse und rufe die Funktionen dan indirekt auf.
Das klingt gut, aber ist noch etwas abstrakt. Wie sag ich's meinem Linker und den Aufrufenden Funktionen ?
>und muss nicht immer wieder neu ins EEPROM.
EEPROM? Was für ne alte Gurke benutzt du eigentlich?
Ich habe basierend auf einem 8255 einen EEPROM Programmierer selbst gebaut. Den kann ich mit dem ihx File beschreiben. Dann wechsel ich den Speicher in die 8031 basierende Schaltung. Etwas puristisch, aber es funktioniert. Der Schaltungsaufwand ist minimal - man kann tatsächlich alles selber machen. Die Programmierung ist halt nicht sehr schnell, deshalb die Frage. Ausserdem ist das häufige Beschreiben der Speicher auch nicht so gut für die Lebensdauer. Bin inzwischen schon etwas weiter : void func1(void) {} // eine Firmware Funktion void func2(void) {} // eine weitere void (*f1)(void); // die Referenz auf eine beliebige Funktion von oben f1 = func1 ; // Die Zuweisung Funktion zu Referenz kann per (*f1)(); aufgerufen werden. ebenso kann man f1 = (void) 0x1066; feste Adressen zuweisen. Wenn ich den Preprozessor nehme : #define f1 (*f1) kann man f1(); direkt aufrufen. (Ich bekomme noch diverse Warnungen vom Compiler/Linker, aber es scheint soweit zu funktionieren) Die Adressen kann man aus dem MAP/LST File entnehmen. Nur die Frage : geht das eleganter ? Mein gebliebenes Problem ist aber noch : Wie kann ich die "Firmware" Funktionen (ohne main) linken, das ich ein IHX File bekomme ? holger schrieb: >>und muss nicht immer wieder neu ins EEPROM. > > EEPROM? Was für ne alte Gurke benutzt du eigentlich?
Christoph Schmidt schrieb: > Ich habe basierend auf einem 8255 einen EEPROM Programmierer > selbst gebaut. Den kann ich mit dem ihx File beschreiben. > Dann wechsel ich den Speicher in die 8031 basierende Schaltung. Statt zu überlegen, wie man unnötige Softwaretricks macht, wäre es besser, die Programmierumgebung zu vereinfachen. Schmeiß den 8031 raus und setze einen Flash-8051 mit Bootloader rein. Z.B. CSD-Electronics: AT89C51RB2-3CSIM Nix umsockeln mehr, einfach die UART anstöpseln und flashen. Peter
Nette Idee, aber angeboten werden muss er auch noch. Und den Preis sollte man auch nicht außer Acht lassen. Mit welcher Software "flasht" man den ? (linux) Wie wird die UART angestöpselt ? Peter Dannegger schrieb: > Christoph Schmidt schrieb: >> Ich habe basierend auf einem 8255 einen EEPROM Programmierer >> selbst gebaut. Den kann ich mit dem ihx File beschreiben. >> Dann wechsel ich den Speicher in die 8031 basierende Schaltung. > > Statt zu überlegen, wie man unnötige Softwaretricks macht, wäre es > besser, die Programmierumgebung zu vereinfachen. > > Schmeiß den 8031 raus und setze einen Flash-8051 mit Bootloader rein. > Z.B. CSD-Electronics: AT89C51RB2-3CSIM > Nix umsockeln mehr, einfach die UART anstöpseln und flashen. > > > Peter
Christoph Schmidt schrieb: > Nette Idee, aber angeboten werden muss er auch noch. Ist doch grün, also lagernd. > Und den Preis sollte man auch nicht außer Acht lassen. O.k. 2 Döner weniger, dann sind die 6,95 wieder drin. > Mit welcher Software "flasht" man den ? > (linux) Flip, schau mal bei Atmel. Es geht aber auch jedes Terminalprogramm, bei dem man nach ner Hex-Zeile auf ein Zeichen warten kann. > Wie wird die UART angestöpselt ? Laut Datenblatt mit nem MAX202/MAX232A. Peter
Danke mal für die Antwort, aber lagernd bei wem ? Peter Dannegger schrieb: > Christoph Schmidt schrieb: >> Nette Idee, aber angeboten werden muss er auch noch. > > Ist doch grün, also lagernd. > ... > Peter
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.