Hallo,
weiss jemand, wie man die physikalische Adresse auf die ein char*
pointer zeigt auf eine 16 Bit Variable zuweisen kann?
file.start_adress
muss die Speicheradresse eines 16 Bit Raumes enthalten, auf die data
zeigt, damit später das programm wieder dorthin geladen werden kann wo
er herkommt. Dazu sende ich einen Header an den uC der die SD karte
verwaltet.
// File-header
struct file_type{
uint8_t cmd; // 1) Kommando für Aktion, WR RD DL
usw
uint8_t type; // 1) 0 = Programm, 1 = Datensatz, 2 =
ASCII
uint16_t start_adress; // 2) Programm: Ursprüngliche
Startadresse im Speicher (0 = keine)
uint16_t end_adress; // 2) Programm: Ursprüngliche
Endadresse (0 = keine)
uint32_t len; // 4) Laenge des Datensatzes in Bytes
uint16_t no; // 2) Nummer des Files
uint8_t name[8]; // 8) Dateiname
uint8_t descr[32]; // 32) Beschreibung des Files
} file;
char sd_write_data(char fileno, char* filename, char* filedescr, char*
data, uint16_t len)
{
uint16_t i,crc;
uint8_t resp; // Antwort des Slaves
char* ptr;
// Header Infos zusammenbauen
file.no = fileno; // Filenummer
file.len = len; // Datenlänge
file.start_adress = ?????? data ?????
strcpy(file.name,filename); // Dateiname
strcpy(file.descr,filedescr); // Dateibeschreibung
Auf einem 32-Bit-System nur mit viel Glück. Ansonsten per cast und Operator = Oliver
Defintion des phys. RAM; Bereiches, ein Array "Overlay", was sich da drüber legt. __at (0x2000) unsigned char ram[RAM_SIZE]; // Bereich des RAM Zuweisung des zu sichernden Bereiches an einen Char pointer char* ptr = &ram[100]; Aufruf der save Routine: sd_write_data(....., ptr, .....)
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.