Asuro - Wie werden pages geflasht?
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