speicher reservieren



  • Hallo,

    ich arbeite mit mikrocontroller und hab eine c-frage über structs und der Reservierung von Speicher.

    ich habe eine struct erstellt

    typedef struct {
       volatile unsigned int   RxBufAddr;                        	/* Address of RX buffer. */
       volatile unsigned int   RxBufStatus;                        	/* Status of RX buffer. */
    }  RX_descriptor, *pRX_descriptor;
    

    und einen Zeiger initialisiert auf diese struct mit

    pRX_descriptor p_rxBD = (pRX_descriptor)0x20010000;
    

    (dieser zeiger muss word-aligned sein - deshalb die Hexa-Zahl)

    Über die serielle Schnittstelle lese ich Datenpakete ein und speichere diese ab. Insgesamt sollen 8 komplette Datenpakete gleichzeitig speicherbar sein - d.h. ich benötige 1 Buffer mit einer Größe von 8000 Bits (dieser Buffer beinhaltet alle 8 Datenpakete). Die Struktur soll über jedes Paket gezogen werden.

    Bei der seriellen Schnittstelle hab ich einen Zeiger, an dessen Adresse die Daten gespeichert werden - z.B. ab Speicherstelle 0x20000000.

    buf_complete = malloc(8000);
    

    darüber reserviere ich den speicher für den Buffer.

    Wie kann ich den Speicher genau für diesen Bereich mit malloc reservieren?

    Gruß
    bbh



  • mit malloc geht das leider nicht. du könntest z.b. im linker script diesen bereich als segment definieren und dann im code entsprechend auszeichen, so dass der buffer in diesem segment platziert wird. wie das im einzelnen geht, steht irgendwo im user manual deiner toolchain.

    btw: struct-pointer über irgendwas drübermappen geht oft schief. das würde ich lassen.
    🙂


Anmelden zum Antworten