Forum: Mikrocontroller und Digitale Elektronik NXP S32k Cortex M4 Code start adresse ändern


von H. R. (hacker_r)


Lesenswert?

Hi
ich habe in mein funktionierndes Projekt die Start Addresse meiner 
Applikation geändert
vorher:
  /* Flash */
  m_interrupts          (RX)  : ORIGIN = 0x00000000, LENGTH = 0x00000400
  m_flash_config        (RX)  : ORIGIN = 0x00000400, LENGTH = 0x00000010
  m_text                (RX)  : ORIGIN = 0x00000410, LENGTH = 0x0007FBF0
Nachher:
/* Flash */
  m_interrupts          (RX)  : ORIGIN = 0x00020000, LENGTH = 0x00000400
  m_flash_config        (RX)  : ORIGIN = 0x00020400, LENGTH = 0x00000010
  m_text                (RX)  : ORIGIN = 0x00020410, LENGTH = 0x0005FBF0

Seitdem kann ich njicht mehr debuggen.
Sieht jemand auf Anhieb was schief geht?
VTOR wird an sich automatisch gesetzt von der NXP startup.c

Danke

von Jim M. (turboj)


Lesenswert?

Der Prozessor sucht an Addresse 0 nach der Vektor Tabelle.

Falls da kein Bootloader drin steht, gehen normale NXP LPC µCs in den 
ISP Mode.

Den scheint der S32k nicht zu kennen, dann gibts (Hard) Fault -> Lockup.

Abhilfe: Ein (Dummy-) Bootloader der das Programm ab 0x00020000 startet.

von klaus (Gast)


Lesenswert?

Seltsam, bei stm32 cortex m4, also der selbe core wie s32k, konnte ich 
meine firmware problemlos auf eine andere Addresse legen und debuggen.
Sind diese Geschichten nicht gleich bei alle Cortexe?

von Jim M. (turboj)


Lesenswert?

klaus schrieb:
> Sind diese Geschichten nicht gleich bei alle Cortexe?

In der Theorie ja, in der Praxis haben zumindest die LPCxxx µCs einiges 
Zeugs im ROM was vor dem Flash ausgeführt wird. Daher spielen NXP Tools 
beim Debuggen IMO nicht am PC (program counter register) rum.

Die S32k Serie scheint aber anderen Aufbau zu haben - ich sehe da kein 
internes Masken ROM in der Doku. Bleibt aber die Frage welche Debug 
Tools eingesetzt werden - und ob die das PC Register setzen.

von fop (Gast)


Lesenswert?

Dein Programm darfste hinlegen wo Du willst. Aber die Info, wo es liegt 
muss am Anfang des Speicherbereichs bleiben.
Sobald das Programm dann los gelaufen ist, kannst Du sogar die Adresse 
der Interrupt-Vektor-Tabelle irgendwohin legen.

von fop (Gast)


Lesenswert?

Ähm - ich sehe gerade, Du versuchst die Flash Config in irgendwelche 
Speicherzellen abzulegen. Kannste so machen, hat aber dann keine 
Auswirkungen auf die Flash-Konfiguration.

von H. R. (hacker_r)


Lesenswert?

Blöde Frage: was steht eigentlich in der flash configuration drin?

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.