Forum: Mikrocontroller und Digitale Elektronik AT90CAN128, Bootloader Rampz


von J_c_b F. (j_fernandez)


Lesenswert?

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
Noch kein Account? Hier anmelden.