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


von M. Н. (Gast)


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)


Lesenswert?


von pegel (Gast)


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. Н. (Gast)


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)


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. Н. (Gast)


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)


Lesenswert?

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

von M. Н. (Gast)


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)


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. Н. (Gast)


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)


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)


Lesenswert?

ach fu** ....

vergesst es xD  ist noch früh am morgen

dachte ging um ITCM RAM !! ....

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.