Forum: Mikrocontroller und Digitale Elektronik STM32F7 ITCM Flash. JLink und ST-Link programmieren


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 M. H. (bambel2)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine Frage zum STM32F7xx. Dieser besitzt die Möglichkeit, Code 
aus dem Flash über sein ITCM Interface auszuführen. Dafür muss natürlich 
das Programm entsprechend gelinkt werden.

Meine Frage ist nun, wie flasht man das elf File dann in den uC? Der 
Flash ist laut Datenblatt nicht über das ITCM Interface beschreibbar. Er 
muss über einen anderen Adressbereich über den "normalen" Bus 
beschrieben werden.

Meine Frage ist nun, ob die Flashtools von STLink und JLink automatisch 
erkennen, dass sie das an eine andere Adresse schreiben müssen, als 
später darauf zugegriffen wird? In den Linkerskripten, die mir vorliegen 
wurden nämlich die Lade und Zugriffsadressen nicht getrennt, so wie man 
es zum Beispiel bei initialisiertem RAM tut.

Vielen Dank

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich wollte das X-CUBE-LPDEMO-F7 herunterladen, klappt aber nicht.
Schon das zweite Mal das keine email kommt.
Hat noch jemand Probleme oder liegt das an meiner temporären email 
Adresse?
Vor 2 Tagen hatte ich schon mal das Problem.

von M. H. (bambel2)


Bewertung
0 lesenswert
nicht lesenswert
pegel schrieb:
> Ich wollte das X-CUBE-LPDEMO-F7 herunterladen, klappt aber nicht.
> Schon das zweite Mal das keine email kommt.
> Hat noch jemand Probleme oder liegt das an meiner temporären email
> Adresse?
> Vor 2 Tagen hatte ich schon mal das Problem.

Hat bei mir auch ewig gedauert. ST entwickelt sich da langsam in eine 
unangenehme Richtung.

Ich bin immernoch am grübeln, wie man diesen Flash programmiert...

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bei mir ist noch nichts angekommen.
Das Nächste wäre:
"For more details about the embedded software, refer to the readme file 
inside the embedded software package."

aus

http://www.st.com/content/ccc/resource/technical/document/application_note/35/d9/ab/96/de/f2/48/42/DM00219305.pdf/files/DM00219305.pdf/jcr:content/translations/en.DM00219305.pdf

von M. H. (bambel2)


Bewertung
0 lesenswert
nicht lesenswert
pegel schrieb:
> Das Nächste wäre:
> "For more details about the embedded software, refer to the readme file
> inside the embedded software package."

Mir geht es hier weniger um die Doku von ST.
Mich interessiert, wie ich den Programmieradapter dazu bewegen kann den 
Code, der auf die ITCM Adresse gelinkt ist, in den Flash zu schreiben.

Ich möchte Wissen, ob bspw. der JLink automatisch erkennt, um welche 
Adresse es sich dabei handelt und das auf den Flash umbiegt, oder ob man 
im Linkerscript die VMA und LMA trennen muss.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Schon klar.
Aber manchmal muss man sich einlesen.
In der pdf oben, könnte Kapitel 2.2.2 interessant sein.

von M. H. (bambel2)


Bewertung
0 lesenswert
nicht lesenswert
pegel schrieb:
> Schon klar.
> Aber manchmal muss man sich einlesen.
> In der pdf oben, könnte Kapitel 2.2.2 interessant sein.

Ist es eben nicht.
Es zeigt, was man anklicken muss, aber nicht, was passiert.

Das es zwei Linkereinstellungen gibt, habe ich auch gesehen. Abllerdings 
ist mir nicht klar, wie das Programm geladen wird, da die Adresse nicht 
schreibbar ist.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Dann wird es vielleicht indirekt wie bei ext. Flash gemacht?
Da auch eine SW4STM32 Version dabei ist, würde ich in den openocd 
Konfigurationen suchen. Weiß es aber nicht genau, die email ist immer 
noch nicht da.
Für heute gebe ich auf.

von M. H. (bambel2)


Bewertung
0 lesenswert
nicht lesenswert
pegel schrieb:
> Dann wird es vielleicht indirekt wie bei ext. Flash gemacht?
> Da auch eine SW4STM32 Version dabei ist, würde ich in den openocd
> Konfigurationen suchen. Weiß es aber nicht genau, die email ist immer
> noch nicht da.
> Für heute gebe ich auf.

Ich habe die Note von STM gelesen:
1
 @Notes
2
 1- For the SW4STM32 toolchain the application runs only with Flash_AXI configuration
3
4
 2- In order to load the Flash_AXI configuration, you must follow the instructions below :
5
  - Open SW4STM32 toolchain
6
  - Rebuild all files
7
  - Open STM32 ST-Link Utility V3.7, click on "External Loader" from the bar menu then check "N25Q128A_STM32F746G-DISCO" box 
8
  - Connect the STM32746G-Discovery board to PC with USB cable through CN14
9
  - Use the "Flash_AXI.hex" for SW4STM32 file with ST-Link Utility to program Flash and external QSPI memories

Die bekommen das offenbar selbst nicht hin xD.
Mein Ansatz ist es (ähnlich wie bei initilisiertem RAM) die loadadresse 
der flash sections in den AXI-Flash zu legen, und die VMA auf den 
ITCMFlash zeigen zu lassen.

von tzhgfhgrhzfghz6453454353453534534533453453 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
hi

habe das auch gebraucht ...

im Linkerfile eine section anlegen:
MEMORY
{
  RAM4   (xr)    : ORIGIN = 0x00000000, LENGTH = 16K   /* ITCM */
...
...
...



SECTIONS
{

...
...

  _siitcm = LOADADDR(.itcm);
    /* ITCM RAM for critical functions */
  .itcm :
  {
    . = ALIGN(4);
    _sitcm = .;        /* create a global symbol at itcm start */
    *(.itcm)
    *(.itcm*)
    . = ALIGN(4);
    _eitcm = .;        /* define a global symbol at itcm end */
  } >RAM4 AT> ROM

...
...
...
}


und jetzt der knackpunkt .. das zeug muss bei systemstart vom flash in 
den ITCM geladen werden

udn das bitte VOR allem anderen zeug
zB: in der systeminit
1
extern unsigned long _siitcm;
2
extern unsigned long _sitcm;
3
extern unsigned long _eitcm;
4
5
void SystemInit(void)
6
{
7
  // copy to ITCM RAM !!!
8
  unsigned long *pulSrc, *pulDest;
9
  pulSrc = &_siitcm;
10
11
  for(pulDest = &_sitcm; pulDest < &_eitcm; )
12
  {
13
     *(pulDest++) = *(pulSrc++);
14
  }


wer sich mit linkerfiles auskennt kann das auch dort automatisieren...
ich hatte das nicht hinbekommen


funktionen werden dann mit:
1
__attribute__((section(".itcm")))
2
void foo(void) {
3
      blah();
4
}

in den ITCM gelegt

von tzhgfhgrhzfghz6453454353453534534533453453 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ach fu** ....

vergesst es xD  ist noch früh am morgen

dachte ging um ITCM RAM !! ....

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.