Upload
future-processing
View
39
Download
1
Embed Size (px)
Citation preview
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Krzysztof Bartnicki
Urządzenie
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Urządzenie
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Hardware
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Hardware
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
STM8 (opis producenta)
16 MHz zaawansowany rdzeń STM8 (8-bit) Rozbudowany zestaw instrukcji procesora 8kB pamięci Flash, 2kB RAM
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
STM8 - pamięć
Wszechświat kontra programista systemów wbudowanych
Źródło: www.nasa.gov
Krzysztof Bartnicki
Pierwsze uruchomienie
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Drugie uruchomienie - problemy
Wszechświat kontra programista systemów wbudowanych
Mała liczba FPS Widoczny proces rysowania pojedynczych ekranów Brak realizacji niektórych poleceń głównej płyty
– potencjalna utrata danych Brak responsywności – detekcja przycisków
Krzysztof Bartnicki
LCD sterowanie – wersja dla nowej płyty
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
LCD sterowanie – wersja oryginalna
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
LCD sterowanie
Wszechświat kontra programista systemów wbudowanych
= 0xA5
Krzysztof Bartnicki
LCD sterowanie
Wszechświat kontra programista systemów wbudowanych
Sygnał Oryginalna płyta Nowa płyta
D0 PA0 PG1D1 PA1 PG0D2 PA2 PC7D3 PA3 PC4D4 PC4 PC3D5 PC5 PC1D6 PC6 PE5D7 PC7 PA2
Krzysztof Bartnicki
LCD sterowanie – wersja oryginalna
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
LCD sterowanie – wersja dla nowej płyty
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
LCD sterowanie – wersja dla nowej płyty
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Przesunięcia bitowe w STM8
Hipoteza 1: Rdzeń nie obsługuje przesunięć
Wszechświat kontra programista systemów wbudowanych
Źródło: STM PM0044
Krzysztof Bartnicki
Przesunięcia bitowe w STM8
Hipoteza 2: Rdzeń obsługuje przesunięcia, ale instrukcja trwa wiele cykli
Wszechświat kontra programista systemów wbudowanych
Źródło: STM PM0044
4
Krzysztof Bartnicki
Przesunięcia bitowe w STM8
Diagnoza: Przesunięcie bitowe w STM8 pozwala na przesunięcie zawartości rejestru (bajtu) o jeden bit w czasie 4 cykli zegara
Wszechświat kontra programista systemów wbudowanych
Źródło: STM PM0044
Krzysztof Bartnicki
Przesunięcia bitowe w STM8
Potwierdzenie:
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Optymalizacja sterowania LCD
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Optymalizacja sterowania LCD
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Optymalizacja sterowania LCD
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Optymalizacja sterowania LCD
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Optymalizacja – ciąg dalszy
Dostępne instrukcje procesora: BSET – bit set (1 cykl) BRES – bit reset/clear (1 cykl) BCP – bit compare (1 cykl)
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Optymalizacja
Ustawinie ‚0’ dla wszystkich wyjść – 8x BRES Dla każdego z wyjść: sprawdź czy powinna być
ustawiona ‚1’ (BCP), jeżeli tak to ustaw ją (BSET)
Wszechświat kontra programista systemów wbudowanych
Jak wymusić na kompilatorze taki zapis kodu bez wprowadzania wstawek assemblera?
Krzysztof Bartnicki
Optymalizacja – „Loop Unroll”
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Optymalizacja – „Loop Unroll”
Wszechświat kontra programista systemów wbudowanych
Krzysztof Bartnicki
Podsumowanie
Wszechświat kontra programista systemów wbudowanych
Testowany kod Czas wykonywania
Poprzednia rewizja 3.83 us
Nowy kod 97.27 us
Optymalizacja 1 (przesunięcia bitowe) 44.88 us
Optymalizacja 2 (loop unroll) 8.56 us