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:
Der Sendbuffer, der an den Asuro übertragen wird, sieht nun so aus: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....
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







Zitieren


Lesezeichen