Hallo liebe Leute,
ich schreibe zur Zeit einen Bootloader, mit welchem es möglich ist per
RS485 den Flash eines AVR-AtMega 88 page-weise zu beschreiben.
Um die geschriebene Page zu verifizieren möchte ich diese nach dem
Schreiben auslesen und mit meinem Daten-Puffer vergleichen, welcher als
Pointer vorliegt. Dies soll eventuelle Schreibfehler erkennen.
1 | uint8_t *written_data = message; // To avoid undeclaration
|
2 | uint8_t *flash_data = message +3;
|
3 |
|
4 | program_page(write_page, flash_data);
|
5 |
|
6 | for(uint8_t word = 0; word < (SPM_PAGESIZE/2); word++){
|
7 | written_data[0+word*2] = pgm_read_word(write_page + (word*2));
|
8 | }
|
9 |
|
10 | if(written_data == flash_data){
|
11 | response[0] = CORRECT_SIZE;
|
12 | }
|
13 | else response[0] = FAIL_SIZE;
|
Ich habe nun schon mehrere Stunden damit verbracht den Code zum laufen
zu bekommen, leider erfolglos.
Über eine übergeordnete Ausgabestruktur wird mir immer "FAIL_SIZE"
zurückgegeben.
Ich würde mich freuen, wenn sich jemand den Code anschauen und meine
Fehler finden könnte.
Liebe Grüße