2015-12-22 17 views
6

Sto lavorando con un sistema embedded. L'applicazione è in esecuzione su AT91SAMxxxx e cortex m3 lpc17xxx. Sto esaminando l'allocazione dinamica della memoria in quanto cambierebbe radicalmente il volto dell'applicazione (e mi darà più potenza).malloc in sistemi embedded

Penso che il mio unico vero percorso sia quello di creare un'area di memoria per un mucchio e progettare un malloc su misura che meglio si adatta al mio scopo.

Quando si osservano diversi algoritmi per l'allocazione della memoria, non si può inciampare nel malloc di Doug Lea. Suppongo che questo sia stato usato in sistemi embedded come il mio dove non ci sono sistemi operativi e versioni su misura di dire che la funzione sbrk() è stata fornita per realizzare questo. Sto cercando di trovare buoni esempi di ciò che è stato realizzato per magari provare una dimostrazione del concetto prima di saltare a scrivere il mio.

È possibile utilizzare dlmalloc in un sistema come il mio?

Se sì, qualcuno può indicarmi una risorsa pertinente? (non ho trovato molti che mi aiutino)

E 'meglio andare e scrivere il mio malloc personalizzato per le mie esigenze?

E scuse la maggior parte delle mie ricerche finora è stata sulla progettazione di un malloc che non utilizza Doug, che è una sfida diversa. Credo che sto cercando di scoprire che sta esaminando questo percorso in modo più approfondito una perdita di tempo.

Edit:

morale della storia: guardando dlmalloc nel mio caso inutile.

+0

Avete veramente bisogno dell'allocazione dinamica della memoria nell'applicazione incorporata? –

+2

Quali sono le caratteristiche effettive delle allocazioni che è necessario supportare? Essendo più specifici forse noi/noi possiamo venire con una soluzione più ideale. –

+2

Dipende molto dalla natura delle allocazioni. In molti casi, è sufficiente allocare dinamicamente blocchi di dimensioni fisse. Questo sarebbe molto più facile da implementare rispetto a un metodo di allocazione generico (che avrebbe molto più sovraccarico in termini di tempo e memroy, necessità di unire blocchi liberi ecc.). – Ctx

risposta

5

Per la vostra situazione la vostra implementazione di malloc o dlmalloc è sicuramente possibile, ma non consigliabile.

Su sistemi embedded di livello molto basso, MCU di metallo nudo ecc., Utilizzando malloc è inutile.

Si eseguirà la tua app e solo la tua app su di loro, sai quanta memoria hai e puoi usare, e sei pienamente in grado di adattare il tuo programma per soddisfare tali esigenze. Con malloc risparmi la memoria, ma qui è inutile. Se il tuo programma con l'utilizzo della memoria più elevato non supera la memoria disponibile sul dispositivo e il tuo programma è l'unico in esecuzione, non c'è motivo di usare malloc e non c'è motivo di lasciare che la memoria vada inutilizzata.

tl; dr Il suo possibile ma estremamente inutile.

+0

Intendi dlmalloc o allocazione dinamica della memoria in tutte le forme? e potrei modificare la mia domanda per aggiungere ulteriori dettagli alla mia app, ma l'allocazione della memoria in fase di esecuzione non è assolutamente inutile nel mio caso. –

+0

scusa hai dichiarato il mio stesso disprezzo per il commento sopra –