Forum: Mikrocontroller und Digitale Elektronik Woran ungültige relative Calls erkennen?


von Jens Renner (Gast)


Lesenswert?

Hallo,

beim Programmieren meines Mega163 trat der Fall ein, dass die zu
überwindende Distanz bei rcalls von +/- 4096 Bytes nicht mehr
ausreicht.

Das stellte ich aber erst nach längerem Suchen fest, denn
interessanterweise spuckte der Compiler des AVRStudio 4 keine
Fehlermeldung aus. Die betroffenen Funktionen wurden einfach nicht
ausgeführt.
Im Gegensatz dazu meckert der Compiler jedoch, wenn Branches ein nicht
erreichbares Label anspringen wollen.

Was würdet Ihr in so einem Fall empfehlen? Ich stelle es mir ziemlich
müßig vor, per Hand von Zeit zu Zeit alle Distanzen zu überprüfen. Und
aus allen rcalls calls zu machen ist auch wenig elegant...

Jens

von Oliver (Gast)


Lesenswert?

Hallo Jens,

ist zwar nicht der Brüller, aber gehen tuts:

Durch Suchen und Ersetzten alle "rcall"s durch "nop brne" ersetzen
und compilieren. Wenn kein Fehler aufgetreten ist, "nop brne" wieder
durch "rcall" ersetzen. Das macht man einmal am Schluß des
Programmierens.

Grüße
Oliver

von mmerten (Gast)


Lesenswert?

Man muß lediglich die Option "Wrap relative jumps" deaktivieren, dann
werden auch korrekte Fehlermeldungen für AVRs mit mehr als 8K Flash
generiert.

von Jens Renner (Gast)


Lesenswert?

Hey,

vielen Dank für Eure schnellen Antworten.
Problem gelöst :-)

Jens

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
Noch kein Account? Hier anmelden.