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