Adresse auf die ein Zeiger zeigt herausfinden

Gast #3908622
Lesenswert?
• ▲
▼
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
Gast #3908645
Lesenswert?
• ▲
▼
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, .....)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.