MSP430 C-Funktion ins RAM laden (IAR Compiler)

OP #757153
Für das beschleunigte schreiben ins Flash vom MSP430 wollte ich die 
Schreib-Funktion ins RAM laden. Das hat soweit auch geklappt, nur gibt 
mir der Compiler (IAR 3.21) noch eine Warnung aus:
"Warning[w29]: Parts of segment MYDATA are initialized (as in module 
infomem), even though it is of type DATA (and thus not promable) "

C-Code:
1
void flash_mem_write_RAM(unsigned int add, unsigned int cnt, unsigned char *data) @ "MYDATA"
2
{
3
  unsigned char *pointer;
4
  unsigned int i;
5

6
  pointer = (unsigned char*)add;    // Flash Pointer setzen
7

8
  while (FCTL3 & BUSY);             // Warten bis Busy 0
9
  FCTL3 = FWKEY;                    // Clear Lock
10
  FCTL1 = FWKEY + WRT + BLKWRT;     // Schreibmodus und Blockschreiben an
11

12
  for (i = 0; i < cnt; i++)
13
  {
14
    *pointer++ = data[i];
15
    while (!(FCTL3 & WAIT));        // Warten bis Wait 1
16
  }
17

18
  FCTL1 = FWKEY;                    // Schreibmodus aus
19
  while (FCTL3 & BUSY);             // Warten bis Busy 0
20
  FCTL3 = FWKEY + LOCK;             // Set Lock
21
}

Unter Options -> Linker -> Extra Options hab ich folgendes eingetragen:
-Z(DATA)MYDATA=0200-03FF


Weiss einer was da noch falsch ist?
Gast #757592
>Weiss einer was da noch falsch ist?
Erstmal ist es eine Warnung und kein Fehler!

Mir erschließt sich auch der Sinn Deiner Aktion nicht so ganz.
Wenn Du Deine Funktion schon beim Programmieren ins RAM reinschreibst, 
dann darfst Du danach den µC nie mehr ohne Versorgungsspannung lassen 
und musst ausserdem darauf achten, daß weder der Stack noch irgendeine 
andere Variable Deine RAM-Funktion zerstört!

Wenn Du den Geschwindigkeitsvorteil des Block-Write unbedingt nutzen 
willst und daher die Funktion im RAM ausführen lassen musst, würde ich 
die Funktion zunächst trotzdem ganz normal ins Flash programmieren (an 
eine feste und bekannte Adresse, am besten die Länge kennen oder 
Endkennung anhängen). Dann zur Laufzeit die Funktion aus dem Flash ins 
RAM kopieren und ausführen lassen.
Sie dazu auch die AppNote von TI:
SLAA103 "MSP430 Flash Self-Programming Technique"

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.