mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 - Programmieren von anderem MSP aus


Autor: Emmina (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Jungs,
Wer von Euch kann mir helfen.
Ich möchte einen MSP von anderem MSP programmieren. Ziel-MSP ist 2471.
Jetz hab ich das Problem, dass ich nur einen Code im Netz gefunden habe, 
der für eine Latte von MSPs gilt, aber nicht für die 2er-Family. Ist da 
grundsätzlich was anders?
Ich hab da vor kurzem hier was gelesen, der hatte mit dem Erasen 
Probleme. Ist bei mir genauso, aber darauf kann ich evtl verzichten. 
Aber wenn der Controller leer ist, sollte er schon wieder Data aufnehmen 
können, und daran scheiterts bei mir.
Ich mach wohl irgendwas falsch. aber mit WriteFlash(StartAdresse,Länge, 
Zeiger aufs Datenarray) wie in der SLAU320 von July2010 sollte man 
eigentlich nix falschmachen können. Oder seh ich das auch falsch!
Hoffentlich hat einer von Euch eine Idee... Ich steh da nämlich ganz 
schön aufm Schlauch.

Grüsse Eure
Emmina

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Emmina schrieb:
> Ich möchte einen MSP von anderem MSP programmieren.

Du musst Dir erstmal darüber klar werden, wie Du den MSP programmieren 
willst:
1.) 4-wire JTAG
2.) 2-wire Spy-By-Wire
3.) BSL (im MSP integriert)
4.) BSL (selbst gestrickt)

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der 2470 wird über JTAG programmiert, wie andere "große" MSP auch. Ich 
denke, mit dem Ausschluß der 2-er Family sind eher die MSP430F2001 bis 
2013 gemeint, die aufgrund geringer Pinanzahl nur über SBW programmiert 
werden.
...oder ist das Code-Sample für BSL? Das sollte auch gehen.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach das doch über den BSL; der ist in jedem MSP430 drin. Das geht sehr 
einfach über normale serielle Schnittstelle. Wir nutzen das auch oft.

Autor: Emmina (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,
Übern BSL ist es derzeit nicht möglich, hab nur die 4 JTAG Signale auf 
dem Board zur Verfügung.
Beim SLAA0149 ist die SW auf den MSPxxx54xx geschrieben, das ist schon 
sehr kompliziert, auch wiel der Autor da offenbar die JATGs 
richtungsabhängig hat.
Ich hab aber einen 2er MSP und keine Richtungsumschaltungen.
ich hab auch was von WEspezial gelesen?
Falls Du mal wieder reinschaust: Hast Du schon eine Lösung für Dein 
Problem, WEspezial? (Dürfte ähnliches Prioblem sein, schätz ich...)

So viel zwischendurch...

Sorry, ich frickel weiter

Emmina

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Emmina schrieb:
> Beim SLAA0149 ist die SW auf den MSPxxx54xx geschrieben

Das sehe ich nicht so!
Es gibt zwei Versionen für MSP430 und für MSP430X

Autor: Emmina (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,
Hab's so hingefummelt, das der Code richtig erased und reingeschrieben 
wird.
Komisch ist allerdings, dass der Ziel-Controller noch einmal eine 
Initialisierung braucht und das Verify geht noch nicht. Warum? bisher 
noch leinen Schimmer? Aber man (frau) tut was man kann...
wenn's jemanden interessiert, immerhin läuft es mit 16MHz (ca. die 
Hälfte der Zeit beim Write):

...
InitTarget();                        // Target Board initialisieren
if (!GetDevice())                     // Globale DEVICE ID holen
{
    ReleaseTarget();
    return STATUS_ERROR;
}

/* hier wird das gesamte Target-Flash gelöscht*/
  EraseFLASH(ERASE_MAIN, 0x4000);       // Main-Flash löschen

BCSCTL1 = CALBC1_16MHZ;    //Kalibrierwert für 16MHz einladen
DCOCTL = CALDCO_16MHZ;     //normalerweise läuft das ganze mit 8MHz

JTAGOUT  = TDI | TMS | TCK | TCLK | TDICTRL1 ;
JTAGDIR  = TDI | TMS | TCK | TCLK | TDICTRL1 | TDICTRL2 | RST ;
NOP();_NOP();_NOP();  // Settle MOS relays, target capacitor
JTAGOUT |= TGTRST;  //we 24.09.2010
_NOP();_NOP();_NOP();
JTAGOUT &= ~TGTRST;  //we 24.09.2010

if (!WriteFLASHallSections(&TstCodeArray[0]))
                           //Write/Verify(PSA) all Flash sections.
{
    ReleaseTarget();
    return STATUS_ERROR;
}
BCSCTL1 = CALBC1_8MHZ;
DCOCTL = CALDCO_8MHZ;

ReleaseDevice(V_RESET);     // Perform Reset, release CPU from JTAG 
control
Delay(3000);                // Target application blinks for 3.0s
ReleaseTarget();            // Release Target Board from power
return(STATUS_OK);  // STATUS_OK = 1
...

Jetzt habe ich das Problem, dass der Verify nicht funktioniert:

Das läuft in der folgenden routine:

word WriteFLASHallSections(word *CodeArray)
{
  word s;      // Number of sections
  word p;      // Pointer to data

  for (s = CodeArray[0], p = 1; s > 0; s--)
  {
                                // Write/Verify(PSA) one FLASH section
    WriteFLASH(CodeArray[p], CodeArray[p+1], &CodeArray[p+2]);
    if (!VerifyMem(CodeArray[p], CodeArray[p+1], &CodeArray[p+2]))
      return(STATUS_ERROR);
                                // pointer of next section =
                                //    old pointer + 2 + length
                                //    of actual section
    p += CodeArray[p+1] + 2;
  }
  return(STATUS_OK);
}

Ich hab gelesen, dass da ein Pseudo Signature Analysis Code abgearbeitet 
wird. Dazu steht natürlich nix im Manual. Und beim Abarbeiten des 
Verify-codes entsteht dann ein Error...

So viel zum Zwischenstand..

Grüßchen

Emmina

Autor: Emmina (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan schrieb:
> Emmina schrieb:
>> Beim SLAA0149 ist die SW auf den MSPxxx54xx geschrieben
>
> Das sehe ich nicht so!
> Es gibt zwei Versionen für MSP430 und für MSP430X

Hallo Stefan,

Danke Dir Herzlich für Deinen Beitrag, hab's jetzt endlich 
umgeschrieben, dass er löscht und auch schreibt. Blos beim EraseCheck 
und Verify, ob die Daten richtig drin sind, macht er irgendwie Scheiß. 
Da kommen andere Checksummen raus: PSA_CRC is nicht gleich TDOWord. 
Weist Du da Hilfe????

notleident...

Emmina

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.