Points à considérer lors de la conception ou de codage pour moins livrables de l'empreinte

StackOverflow https://stackoverflow.com/questions/2094895

  •  21-09-2019
  •  | 
  •  

Question

S'il vous plaît poster des points il faut garder à l'esprit lors de la conception ou le codage des livrables de moindre encombrement pour les systèmes embarqués.

Je ne donne pas de détails du compilateur ou la plate-forme, comme je veux des informations génériques. Mais, toute information spécifique sur OS basé sur Linux est également la bienvenue.

Était-ce utile?

La solution

Cela dépend de la basse que vous voulez obtenir. Je code actuellement pour les imprimantes fiscales, et il n'y a pas de système d'exploitation, et la règle principale est pas d'allocation dynamique de la mémoire. Le plus drôle est que je convaincu encore l'équipage à programmer en C ++ tout à fait moderne;).

En fait, il y a quelques règles que nous avons décidé sur:

  • pas d'allocation dynamique
  • donc, pas STL
  • pas de gestion des exceptions (raisons évidentes)

Autres conseils

Il n'y a pas réponse générale , seuls spécifiques à la langue / plate-forme ... mais

faible empreinte mémoire ...

  1. Ne pas utiliser Java, C # / mono, PHP, Perl, Python ou quoi que ce soit avec la collecte des ordures
  2. Get proche du métal que possible , Utilisez C
  3. faire beaucoup de profilage pour voir où la mémoire est allouée, si vous utilisez une allocation dynamique
  4. Assurez-vous éviter la fragmentation du tas- en allouant des morceaux sensibles et la taille du tas
  5. Éviter les fonctions récursives en particulier ceux qui utilisent malloc (). Une meilleure allocation d'un morceau et le passage d'un pointeur autour.
  6. utiliser libre ();)
  7. Vérifiez que vos types ne sont pas plus que nécessaire
  8. Activer les optimisations du compilateur

Il y aura plus.

pour l'empreinte réelle faible envisager de le faire directement Assemblée.

Nous savons tous que Bonjour tout le monde en C ou C ++ est 20kb + (à cause de toutes les bibliothèques par défaut qui se liés). En Assemblée cette surcharge est parti. Comme l'a souligné dans les commentaires, on peut réduire les bibliothèques standard un peu. Cependant, le fait demeure que la densité de code que vous pouvez obtenir lorsque l'assemblage de codage est beaucoup plus élevé qu'un compilateur va générer à partir d'une langue plus élevée. Donc, pour le code où chaque matière d'octets, utilisez l'assemblage.

également lors de la programmation sur les appareils avec des processeurs moins capables, la programmation en langage assembleur pourrait être votre seule façon de faire rendre le programme assez rapide pour qu'il soit assez temps réel pour (par exemple) machines de contrôle

Face à ces contraintes, il est conseillé de pré-allouer de la mémoire afin de garantir que le système fonctionnera sous charge. Un modèle de conception tel que « la mise en commun d'objets » peut être utilisé pour partager des ressources au sein du système.

C langue permet aux ressources serré (à savoir les cycles de mémoire et de calcul) le contrôle. Il devrait être fortement considéré.

Contournez récursivité car il est facile d'abuser et peut entraîner des conditions de dépassement de la pile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top