Punti da prendere in considerazione durante la progettazione o di codifica per la minore impronta deliverable

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

  •  21-09-2019
  •  | 
  •  

Domanda

Si prega di inviare i punti si dovrebbe tenere a mente durante la progettazione o di codifica per minori deliverable impronta per sistemi embedded.

Io non sto dando del compilatore o piattaforma particolari, come voglio informazioni generiche. Ma, tutte le informazioni specifiche sul sistema operativo basato su Linux è inoltre benvenuto.

È stato utile?

Soluzione

Dipende da quanto in basso si desidera ottenere. Attualmente sto codifica per stampanti fiscali, e non c'è sistema operativo, e la regola principale è senza allocazione dinamica della memoria. La cosa divertente è che ho ancora convinto l'equipaggio al codice completamente moderna C ++;).

In realtà ci sono alcune regole che abbiamo deciso:

  • senza l'allocazione dinamica
  • di conseguenza, non STL
  • nessuna gestione delle eccezioni (ovvie ragioni)

Altri suggerimenti

Non è un risposta generale , solo quelli specifici per la lingua / piattaforma ... ma

Piccolo ingombro di memoria ...

  1. Non utilizzare Java, C # / mono, PHP, Perl, Python o qualsiasi cosa con la raccolta dei rifiuti
  2. arrivare il più in vicino al metallo come fattibile , Usa C
  3. Fare un sacco di profiling per vedere dove la memoria è sempre assegnata, se si utilizza l'allocazione dinamica
  4. Assicurarsi prevenire heap-frammentazione assegnando pezzi e dimensioni ragionevoli del mucchio
  5. Evitare funzioni ricorsive in particolare quelli che utilizzano malloc (). Meglio l'assegnazione di un pezzo e il superamento di un puntatore.
  6. uso gratuito ();)
  7. Assicurati che i tuoi tipi sono non più grande di quanto richiesto
  8. Accendere ottimizzazioni del compilatore

Non ci sarà più.

per davvero basso impatto in considerazione facendo Assemblea direttamente.

Sappiamo tutti che Ciao Mondo in C o C ++ è 20kb + (a causa di tutte le librerie predefinite che vengono collegati). In Assembly questo overhead è andato. Come sottolineato nei commenti si può ridurre le librerie standard un po '. Tuttavia, resta il fatto che la densità di codice è possibile ottenere quando si scrive codice assemblaggio è molto più alto di un compilatore genera da un linguaggio più elevato. Così, per codice in cui ogni materia byte, utilizzare il montaggio.

anche durante la programmazione su dispositivi con processori meno capaci, la programmazione in linguaggio assembly potrebbe essere il vostro unico modo per farlo rendere il programma abbastanza veloce per essere abbastanza in tempo reale per (ad esempio) macchine a controllo

Di fronte a questi vincoli, è consigliabile memoria pre-allocare per garantire che il sistema possa funzionare sotto carico. Un modello di progettazione come ad esempio "il pool di oggetti" può essere utilizzato per condividere le risorse all'interno del sistema.

Il comando (cicli cioè di memoria e di elaborazione) C lingue consente risorse stretto. Esso dovrebbe essere fortemente in considerazione.

Evitare di ricorsione come è facile abusare e può portare a condizioni di overflow dello stack.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top