Forum: Mikrocontroller und Digitale Elektronik C166V2/µVision3: Code "verschieben"


von Stefan C. (jaecko)


Lesenswert?

Moin.

Kurze Frage: Wie verschiebt man Programmcode (mit µVision3) am besten 
so, dass dieser auf einem XC2287 (C166 V2) nicht bei 0xC00000 beginnt, 
sondern bei 0xC10000? Die ersten 64kB ab 0xC00000 sollen für einen 
Bootloader frei bleiben, der direkt nach einem externen Reset bzw. beim 
Einschalten startet und dann (nach einigen anderen Vorgängen) das 
Programm an 0xC10000 anspringen soll.
Und genau da gibts noch das Problem: Was muss man beim Programm ändern, 
dass dieses erst ab 0xC10000 beginnt, und wie spring ich das dann an?

Im Moment versuch ichs so, dass im Programm bei den Target Options der 
Haken bei "Use On-Chip ROM (0xC00000 - 0xC0EFFF)" deaktiviert ist; die 
erzeugte Hex-File beginnt dann auch erst bei 0xC10000.
Die Vorgaben im Linker für die einzelnen Sections scheinen auch zu 
stimmen.

Im Bootloader spring ich dann mit dem folgenden an 0xC10000.
1
 #pragma asm
2
  JMPS #00C1h,#0000h
3
 #pragma endasm

Nur hierhängt sich der Controller dann auf und tut nichts mehr;

mfG

von Microman (Gast)


Lesenswert?

Hallo Stefan,

wird an 0xC10000 auch ein Vectortable erzeugt, damit der Controller auch 
weiß wie's weiter geht? Wie sind deine Settings?

Gruß Microman

von Stefan C. (jaecko)


Lesenswert?

Hi.

Das mit der Vector-Table war ein guter Hinweis.
Hab das Vector Segment mal entsprechend auf 0x00C1 gelegt und jetzt 
läuft alles.
Thx.

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.