Hallo,
hab mal ne etwas ungewöhnliche Frage. Mich würde interessieren, wie die pages die über das Flash-Tool gesendet werden, in den Flash geschrieben werden.

Aufgebaut werden sie so:
Code:
unsigned char m_RAM[MAX_PAGE][PAGE_SIZE - 3]; //-1PageNo -2CRC16 

// Zeile aus Datei einlesen
// ...

sscanf(&line[1],"%02X",&recordLength);
sscanf(&line[3],"%04X",&address);
sscanf(&line[7],"%02X",&type);

// Hex überprüfen ob checksum etc richtig ...

// Daten in temp buffer
for ( i = 0; i < recordLength; i++) {
    sscanf(&line[9 + i*2],"%02X",&data);
    cksum += data;
    tmp[i] = data;
}

// Daten in RAM buffer kopieren
memcpy(&m_RAM[0][0]+address,&tmp[0],recordLength);


....

// Daten in Sendbuffer kopieren
sendData[0] = i; // PageNo.
crc = 0;
memcpy(&sendData[1],&m_RAM[i][0],PAGE_SIZE - 3);
//Build CRC16
for (j = 0; j < PAGE_SIZE - 2; j++) // -2 CRC16
    crc = CRC16(crc,sendData[j]);
memcpy(&sendData[j],&crc,2);

// Daten senden....
Der Sendbuffer, der an den Asuro übertragen wird, sieht nun so aus:
buffer[0] = Seitennummer

buffer[1-64] = Daten aus hexfile

buffer[65-66] = checksum, ob daten korrekt übertragen wurden


Um in den flash zu schreiben, hab ich die Funktion void boot_program_page (uint32_t page,uint8_t*buf) dbenutzt.
Bei der page, habe ich immer +64 dazugerechnet, da das ja die Größe einer Seite ist. Leider funktioniert es nicht.

Kann mir das mal einer erklären???

mfg