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