24-06-2016, 12:17
Stosowanie gotowych funkcji typu SPL czy HAL przy inicjowanie zasobów procesora nie jest aż tak dużym błędem, kod jest czytelny a proces inicjowania wykonuje się najczęściej raz co ma niewielki wpływ na funkcjonowanie całego urządzenia. Niestety kod programu szybko rośnie.
Dramat z tymi funkcjami zaczyna się w wątkach które są bardzo często obsługiwane (przerwania, obsługa ADC, UART, SPI, I2C, TFT, sterownie pinami). Samo wywołanie funkcji, przekazanie parametru a na koniec powrót do miejsca wywołania pochłania kilkanaście razy więcej czasu procesora niż właściwa operacja na rejestrze (np. ustawianie pinu na porcie). Generalnie często wykonywane fragmenty programu należałoby pisać jako funkcje inline, działać bezpośrednio na rejestrach lub robić wstawki w assemblerze. Wszelkie nadmiary kodu ładnie widać na rozwinięciach kodu asm.
Dramat z tymi funkcjami zaczyna się w wątkach które są bardzo często obsługiwane (przerwania, obsługa ADC, UART, SPI, I2C, TFT, sterownie pinami). Samo wywołanie funkcji, przekazanie parametru a na koniec powrót do miejsca wywołania pochłania kilkanaście razy więcej czasu procesora niż właściwa operacja na rejestrze (np. ustawianie pinu na porcie). Generalnie często wykonywane fragmenty programu należałoby pisać jako funkcje inline, działać bezpośrednio na rejestrach lub robić wstawki w assemblerze. Wszelkie nadmiary kodu ładnie widać na rozwinięciach kodu asm.
73 Adam

