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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von H. R. (hacker_r)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Blöde Frage: was steht eigentlich in der flash configuration drin?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.