Forum: Mikrocontroller und Digitale Elektronik Assembler PC relative branch (B)


von Tobias (Gast)


Lesenswert?

Hallo

ich habe eine Frage zum program-relativen Branchen.

Dazu folgendes Szenario:

Ich möchte in Adresse 0xFFFF0000 einen Branch zur Adresse 0x00100000 
durchführen.

Leider ermöglicht der Assembler "B" Opcode keine solch große Reichweite 
(-4293853184 Bytes)

Ist es möglich einen Überlauf zu nutzen:
PC = 0xFFFF0000 + 0x00110000 = 0x00100000

Im Detail geht es um den SAM9G45 welcher es ermöglicht den gesamten SRAM 
als TCM zu konfigurieren.
Dadurch ist dieser leider nur über das TCM-Interface verfügbar uns steht 
nicht mehr als Remap-Zone zu Verfügung.
Problematisch ist dies für das Exception-Handling welches eine 
Exception-Vector-Tabelle an Addresse 0x00000000 erfordert.
Der CP15 ermöglicht es, die Exception-Vector-Tabelle von 0x00000000 - 
0x0000001C(innerhalb der remap-zone) nach 0xFFFF0000 - 0xFFFF001C zu 
verlagern.

Um dieses Feature nutzen zu können, muss ich die Vector-Tabelle mit 
Branches von 0xFFFF0000 zum ITCM (0x00100000) erstellen.

Gruß Tobias

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.