Pracuję nad stworzeniem systemu wbudowanego (Cortex M3). Aby przesłać niektóre dane z urządzenia do portu szeregowego (aby pokazać na ekranie komputera), używam niektórych własnych funkcji za pomocą metody putchar().Dowolna funkcja zamiast sprintf() w C? rozmiar kodu jest zbyt duży po kompilacji
Kiedy chcę wysłać całkowitą lub pływak, używać sprintf() w celu przekształcenia ich do łańcucha znaków i wysyłając je do portu szeregowego.
Problem polega na tym, że używam Keil uVision IDE i jest to wersja limitowana z maks. 32 KB. Ilekroć wywołuję sprintf() w różnych funkcjach, nie wiem, dlaczego rozmiar kodu po kompilacji wzrosła zbyt wiele. Przeszedłem już 32 KB i zastanawiam się, że muszę zmienić niektóre z moich funkcji i użyć czegoś innego zamiast sprintf!
Jakaś wskazówka?
Staraj się unikać "float", ponieważ ich elementy biblioteki wykonawczej są w większości przypadków dość duże i wolne. – glglgl
Rodzina printf jest bardzo kosztowna, ponieważ wymaga dużej ilości kodu, szczególnie w przypadku zmiennoprzecinkowej. Liczba całkowita printf jest niewielka, ale wciąż kosztowna. Czy naprawdę myślisz, że potrzebujesz printf() w swoim wbudowanym kodzie mikrokontrolera? Możesz wdrożyć własne, znacznie tańsze rozwiązania. –
Zobacz także dostępne biblioteki dostawców kompilatora. Często zdarza się, że wiele bibliotek C-std ma wiele zalet, a funkcjonalność jest mniejsza. Na przykład sprintf, który obsługuje int i float, ale nie notację naukową. –