Fråga:
Finns det en förprocessorkonstant för minnesstorlek
mpflaga
2014-02-12 09:05:18 UTC
view on stackexchange narkive permalink

Jag skulle vilja att mina kompiler utesluter viss kod beroende på det tillgängliga flash- / programutrymmet. För att användas i demokoden för ett bibliotek som jag stöder. Medan min nuvarande lösning är att använda en #ifdef av processortyp. Men jag skulle vilja vara mer allmän och inte behöva specificera alla olika marker. Snarare skulle det vara trevligt om det fanns en förprocessorkonstant som angav den tillgängliga storleken.

Där jag inte är tillräckligt flytande med gcc och eller avr-gcc kan jag förvänta mig att hitta några konstanter som liknar de som definierar början och slutet på högen.

I fallet. Är det både UNO och Leo som har 32K Flash. Men Leos kärnbibliotek använder 4K för USB-stöd, vilket resulterar i endast 28K tillgängligt. Mitt biblioteks demo är nästan max på UNO och jag vill automatiskt trimma ut baserat på tillgängligt programutrymme.

Jag har sett program som gör detta, men jag kan inte hitta några
Ett svar:
#1
+10
jippie
2014-02-12 12:43:38 UTC
view on stackexchange narkive permalink

Hitta io __. h -filen för din mikrokontroller, på Linux finns den i / usr / lib / avr / include / avr , på Windows kommer den att vara i en något liknande plats.

Bläddra ner till den del som säger / * Konstanter * / . Det finns några intressanta makron definierade där, FLASHEND är den du bör vara intresserad av. Du kan använda den till exempel på följande sätt:

  #if FLASHEND > 0x8000 / * Inkludera lite extra kod när det finns tillräckligt med blixt. * / # endif  


Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...