Esiste una costante del preprocessore per le dimensioni della memoria


13

Vorrei che le mie compilazioni escludessero del codice in base allo spazio flash / programma disponibile. Per essere utilizzato nel codice demo di una libreria che supporto. Considerando che la mia attuale soluzione è quella di utilizzare un #ifdef di tipo processore. Ma vorrei essere più generale e non dover specificare tutti i vari chip. Piuttosto sarebbe bello se ci fosse una costante pre-processore che indicava la dimensione disponibile.

Dove non sono abbastanza fluente in gcc e o avr-gcc, potrei aspettarmi di trovare alcune costanti simili a quelle che definiscono l'inizio e la fine dell'heap.

Per esempio. È che sia UNO che Leo hanno 32K di Flash. Ma la libreria principale di Leo utilizza 4K per il supporto USB, risultando disponibile solo 28K. La demo di My Library è quasi esaurita su UNO e vorrei tagliare automaticamente in base allo spazio del programma disponibile.


Ho visto programmi che lo fanno, ma non ne trovo nessuno
TheDoctor,

Risposte:


10

Trova il io__.hfile per il tuo microcontrollore, su Linux in cui si trova /usr/lib/avr/include/avr, su Windows sarà in una posizione un po 'simile.

Scorri verso il basso fino alla parte che dice /* Constants */. Ci sono un paio di macro interessanti lì definite, FLASHENDessendo quella a cui dovresti essere interessato. Puoi usarlo ad esempio come segue:

#if FLASHEND > 0x8000
/* Include some extra code when sufficient flash is available. */

#endif
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.