Hallo,
Im Flash eines AVR ist ein Image abgelegt, mit dem dann ein anderer AVR
geflasht werden soll --> siehe .cpp
1 | typedef struct image {
|
2 | char image_name[30]; /* Ie "optiboot_diecimila.hex" */
|
3 | char image_chipname[12]; /* ie "atmega168" */
|
4 | uint16_t image_chipsig; /* Low two bytes of signature */
|
5 | byte image_progfuses[4]; /* fuses to set during programming */
|
6 | byte image_normfuses[4]; /* fuses to set after programming */
|
7 | byte fusemask[4];
|
8 | uint16_t chipsize;
|
9 | byte image_pagesize; /* page size for flash programming */
|
10 | byte image_hexcode[12000]; /* intel hex format image (text) */
|
11 | } image_t;
|
Nun wollte ich simpel über diese For-Schleife den Inhalt von
"image_progfuses" ausgeben:
1 | for ( uint8_t index = 0; index < sizeof ( targetimage->image_progfuses ); index++ ){
|
2 | showHex ( targetimage->image_progfuses[index], true, true );
|
3 | }
|
was aber falsche Werte zurück gibt. Wenn ich es aber ohne die Schleife
mache, stimmen die Werte, --> siehe Screenshot.
1 | showHex ( targetimage->image_progfuses[0], true,true );
|
2 | showHex ( targetimage->image_progfuses[1], true,true );
|
3 | showHex ( targetimage->image_progfuses[2], true,true );
|
4 | showHex ( targetimage->image_progfuses[3], true,true );
|
Ich habe auch überprüft, ob die Indizes stimmen und ob sizeof() den
richtigen Wert zurück gibt, beides positiv.
Nun bin ich mit meinem Latein am Ende und hoffe auf eure Hilfe.
Gruß
Hannes