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.