Forum: Mikrocontroller und Digitale Elektronik AT98C51ED2: Startadresse Code


von Jan S. (jsc)


Lesenswert?

Hallo,

ich möchte die Startadresse von meinem Programm auf 0x8000 legen und 
habe dazu folgendes gamacht wie es von Keil empfohlen wird:

a) in STARTUP.A51 die Zeile CSEG AT 8000H
b) in Keil µVision3 EPROM Startadress, START 0x8000
c) Interrupt Vector Startadresse auf 0x8000 gelegt

Mein Programm läuft so nicht an. Ich benutze die Interrups für T0, T1, 
SPI, UART. Erst wenn ich a,b,c auf 0x0000 lege funktioniert es wieder 
einwandfrei.


Hat jemand eine Idee oder eine andere Vorgehensweise zur Relocation von 
Code?

JAN

von Peter D. (peda)


Lesenswert?

Die Frage ist, was Du mit dem Verbiegen erreichen willst?

Das hat man früher mal so gemacht, als es noch keinen intern 
programmierbaren Flash gab.
Da war dann unten ein Monitor-EPROM, der per Sprunganweisungen die 
Interrupts hochgelegt hat in einen SRAM-Bereich.
Die CPU selber kann die nicht verschieben.
Und der Monitor muß natürlich ohne Interrupts geschrieben sein.


Peter

von Jan S. (jsc)


Lesenswert?

Ich möchte auf 0x0000 meinen Bootloader legen, der dann nach reset 
angesprungen wird. Der Bootloader soll die Applikation nach 0x8000 
flashen und anschliessend starten. Ich habe also zuerst mal getestet, ob 
sich eine mit flip geflashte Software ab 0x8000 starten lässt.

JAN

von Peter D. (peda)


Lesenswert?

Machs einfach umgekehrt, leg den Bootloader auf 0xF000 und lade die 
Applikation nach 0x0000, dann kann sie die Interrupts benutzen.

Dazu ist ja extra der SBV da, um nach nem Reset z.B. an 0xF000 zu 
starten.


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