Gast
#3908622
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