Hallo, ich benutze AVR-Studio 6 (GCC) und habe einen ATXMega64 µC. Ich möchte für meine FW einen Header im Flash ablegen. Der Header soll Version, Name, CRC usw. beinhalten. Wie lege ich so eine Constante im Flash an einer bestimmten Adresse ab. Eigentlich möchte ich den Header am Anfag des Flashbereichs haben. Mit folgendem Code und dem Pragma PROGMEM kann ich die Variable im Flash ablegen. Aber nicht beeinflussen dass diese am Anfang des Flashes liegt. const unsigned char header[11][10] PROGMEM = { {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}, {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13}, {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D}, {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27}, {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31}, {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B}, {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45}, {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F}, {0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59}, {0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63}, {0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D} }; Welchen Weg gibt es bei GCC und AVRStudio 6 um dies zu bewerkstelligen? Danke. Gruß, Georg.
Hallo, inzwischen ist mir bekannt wie ich mein array an eine beliebige Stelle im Flash ablegen kann. static const unsigned char _attribute_ ((section (".HeaderSec"))) header[11][10]= { {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}, {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13}, {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D}, {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27}, {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31}, {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B}, {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45}, {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F}, {0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59}, {0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63}, {0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D} }; Dem Linker muss dann mitgeteilt werden wohin die section .HeaderSec hingelegt werden muss. Kennt sich jemand mit dem Linker besser aus als ich? Wie teile ich dem Linker mit dass die section .HeaderSec soweit wie möglich nach vorne gelegt wird. Sprich nach der Vectortabelle usw. Der Header sollte aber immer an der gleichen Stelle liegen damit ich diesen über die Adresse auslesen kann. Danke. Gruß, Georg.
Ämm .. Von "wo" willst du das Flash auslesen? Wenn nicht vom Prozessor selber? Warum reicht dir die Adresse von "header" nicht? Die steht dir kostenlos zur Verfühgung.
Hallo, ich habe den Flash quasi in 2 Teile aufgeteilt. Der erste Teil wird bei Anlegen der Versorgung gestartet und soll den 2. Teil (dort liegt die eigentliche Applikation) prüfen und aufgrund dessen entscheiden ob der Bootloader oder die Applikation gestartet werden soll. Dazu sollt der Header der Applikation immer an der gleichen Stelle liegen damit ich dort die notwendigen Daten zum Prüfen auslesen kann. Danke. Gruß, Georg.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.