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
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)
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.
Nachtrag: zu 1.) + 2.) http://focus.ti.com/lit/an/slaa149h/slaa149h.pdf zu 3.) http://focus.ti.com/lit/an/slaa096f/slaa096f.pdf
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.
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.