30
Wszechświat kontra programista systemów wbudowanych Krzysztof Bartnicki

[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Embed Size (px)

Citation preview

Page 1: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Page 2: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Urządzenie

Wszechświat kontra programista systemów wbudowanych

Page 3: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Urządzenie

Wszechświat kontra programista systemów wbudowanych

Page 4: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Hardware

Wszechświat kontra programista systemów wbudowanych

Page 5: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Hardware

Wszechświat kontra programista systemów wbudowanych

Page 6: [FDD 2016] Krzysztof Bartnicki - 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

Page 7: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

STM8 - pamięć

Wszechświat kontra programista systemów wbudowanych

Źródło: www.nasa.gov

Page 8: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Pierwsze uruchomienie

Wszechświat kontra programista systemów wbudowanych

Page 9: [FDD 2016] Krzysztof Bartnicki - 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

Page 10: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

LCD sterowanie – wersja dla nowej płyty

Wszechświat kontra programista systemów wbudowanych

Page 11: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

LCD sterowanie – wersja oryginalna

Wszechświat kontra programista systemów wbudowanych

Page 12: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

LCD sterowanie

Wszechświat kontra programista systemów wbudowanych

= 0xA5

Page 13: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

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

Page 14: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

LCD sterowanie – wersja oryginalna

Wszechświat kontra programista systemów wbudowanych

Page 15: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

LCD sterowanie – wersja dla nowej płyty

Wszechświat kontra programista systemów wbudowanych

Page 16: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

LCD sterowanie – wersja dla nowej płyty

Wszechświat kontra programista systemów wbudowanych

Page 17: [FDD 2016] Krzysztof Bartnicki - 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

Page 18: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

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

Page 19: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

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

Page 20: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Przesunięcia bitowe w STM8

Potwierdzenie:

Wszechświat kontra programista systemów wbudowanych

Page 21: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Optymalizacja sterowania LCD

Wszechświat kontra programista systemów wbudowanych

Page 22: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Optymalizacja sterowania LCD

Wszechświat kontra programista systemów wbudowanych

Page 23: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Optymalizacja sterowania LCD

Wszechświat kontra programista systemów wbudowanych

Page 24: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Optymalizacja sterowania LCD

Wszechświat kontra programista systemów wbudowanych

Page 25: [FDD 2016] Krzysztof Bartnicki - 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

Page 26: [FDD 2016] Krzysztof Bartnicki - 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?

Page 27: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Optymalizacja – „Loop Unroll”

Wszechświat kontra programista systemów wbudowanych

Page 28: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Optymalizacja – „Loop Unroll”

Wszechświat kontra programista systemów wbudowanych

Page 29: [FDD 2016] Krzysztof Bartnicki - 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

Page 30: [FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbudowanych

Krzysztof Bartnicki

Wszechświat kontra programista systemów wbudowanych

[email protected]