Hallo,
wenn ich auf meinem uC (AT90CAN128) den Speicher aus dem Bootloader
auslese, lese ich zuerst den unteren Bereich des 128K Flash, setze
RAMPZ=1, um den oberen Bereich zu lesen. Hier gibt er mir den unteren
Bereich des Speichers wieder aus. Hier der Code:
Size_Firmware = 0x00020000;
uint32 i;
uint32 j;
static void copyCpuFlashToBuffer( uint32 cpuAddress, byte* buffer )
{
uint16 i;
if( cpuAddress >= 0x10000 )
RAMPZ = 1;
else
RAMPZ = 0;
_cpuFlashCurrentPageAddress_register6 = cpuAddress;
for( i = 0; i < 256; i += 2 )
{
/* 2 Bytes aus cpuflash lesen */
#asm
movw r30, r6; //move _cpuFlashCurrentPageAddress_register6
to Z pointer
lpm r2, Z+; //read LSB
lpm r3, Z; //read MSB
#endasm
buffer[ i ] = _pageData_register2_3;
buffer[ i + 1 ] = _pageData_register2_3 >> 8;
_cpuFlashCurrentPageAddress_register6 += 2;
}
}
main()
{
for( i = 0; i < Size_Firmware; i += 256 )
{
copyCpuFlashToBuffer( i , _buffer );
for( j = 0; j < 256; j++ )
{
Putchar (_buffer[j]);
}
}
}
MFG Fernandez
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.