Je voudrais que mes compilations excluent du code en fonction de l'espace flash / programme disponible. A utiliser dans le code démo d'une bibliothèque que je supporte. Alors que ma solution actuelle consiste à utiliser un #ifdef de type processeur. Mais je voudrais être plus général et ne pas avoir à spécifier toutes les différentes puces. Ce serait plutôt bien s'il y avait une constante de pré-processeur qui indiquait la taille disponible.
Là où je ne maîtrise pas assez bien gcc et ou avr-gcc, je pourrais m'attendre à trouver des constantes similaires à celles qui définissent le début et la fin du tas.
Sur l'exemple de cas. Est-ce que l'UNO et Leo ont 32K de Flash. Mais la bibliothèque principale de Leo utilise 4K pour la prise en charge USB, ce qui ne donne que 28K disponibles. La démo de ma bibliothèque est presque au maximum sur l'UNO et je voudrais couper automatiquement en fonction de l'espace de programme disponible.
la source
Réponses:
Trouvez le
io__.h
fichier de votre microcontrôleur, sous Linux, il se trouve/usr/lib/avr/include/avr
, sous Windows, il sera dans un emplacement quelque peu similaire.Faites défiler jusqu'à la partie qui dit
/* Constants */
. Il y a quelques macros intéressantes définies ici,FLASHEND
étant celle qui devrait vous intéresser. Vous pouvez l'utiliser par exemple comme suit:la source