Sto lavorando allo sviluppo di un sistema embedded (Cortex M3). Per l'invio di alcuni dati dal dispositivo alla porta seriale (da mostrare sullo schermo di un PC), utilizzo alcune funzioni proprie utilizzando il metodo putchar().Qualsiasi funzione invece di sprintf() in C? la dimensione del codice è troppo grande dopo la compilazione
Quando voglio inviare intero o galleggiante, io uso sprintf() al fine di convertirli in stringa di caratteri e di inviarli alla porta seriale.
Ora, il problema è che sto utilizzando Keil uVision IDE ed è una versione limitata con un massimo di 32 KB. Ogni volta che chiamo sprintf() in diverse funzioni, non so perché la dimensione del codice dopo la compilazione sia aumentata troppo. Ho superato i 32 KB ora e mi chiedo di dover cambiare alcune delle mie funzioni e usare qualcos'altro invece di sprintf!
Qualsiasi indizio?
Cerca di evitare 'float's dopo tutto, dato che i componenti della libreria di runtime sono piuttosto grandi e lenti nella maggior parte dei casi. – glglgl
la famiglia printf è molto costosa come la grande quantità di codice necessaria per implementarlo, specialmente in virgola mobile. Un intero solo printf è una piccola quantità più piccola ma ancora costosa. Pensi davvero di aver bisogno di printf() nel codice del tuo microcontroller embedded? È possibile implementare le proprie soluzioni molto più economiche. –
Dai un'occhiata anche alle librerie disponibili dei produttori di compilatori. Spesso ci sarà più sapore delle librerie C std con funzionalità ridotte. Ad esempio, uno sprint che gestisce int e float, ma non notazione scientifica. –