Page 3 of 13

Architektura wieloprocesorowa w systemach safety

W systemach safety-critical zadania często rozłożone są na wiele procesorów. Wbrew pozorom przyczyną zwykle nie jest wydajność i potrzeba zapewnienia czasów odpowiedzi spełniających wymagania systemów hard real time. Zabieg ten jest stosowany w celu wydzielenia części krytycznej dla bezpieczeństwa i zabezpieczeniem jej przed niepożądanym wpływem mniej ważnych modułów.

Continue reading

Przydatne biblioteki C++ STM32

C++ w systemach embedded otwiera całą gamę nowych możliwości. Poprawne użycie nowoczesnych konstrukcji języka i biblioteki standardowej pozwala ułatwić i przyspieszyć naszą pracę. Niestety większość popularnych bibliotek C++ nie jest tworzona z myślą o systemach embedded. Czasami taka biblioteka mimo wszystko u nas zadziała, jednak nie zawsze mamy tyle szczęścia. Nawet wykorzystanie dużej części STL może być problematyczne ze względu na dynamiczną alokację pamięci. Istnieją jednak biblioteki stworzone właśnie z myślą o mikrokontrolerach. W tym wpisie przybliżę kilka z nich, szczególnie pod kątem użycia w STM32.

Continue reading

Skrypty buildowania to też kod, piszmy go zgodnie ze sztuką

Wielu programistów boi się tykać skryptów buildowania. Uważa to za czarną magię. Nic dziwnego, zwykle są napisane tak, żeby przypadkiem nie dało się ich zrozumieć. Bardzo często cały skrypt jest napisany w jednym ogromnym pliku, gdzie duże fragmenty są stworzone za pomocą kopiuj – wklej – edytuj. Składnia języków do pisania takich skryptów np. make  jest dosyć toporna, a sytuacji nie poprawia zagnieżdżanie komend, niedbanie o dobre nazwy zmiennych i brak komentarzy. Mi już wielokrotnie przyszło grzebać przy istniejących skryptach buildowania do projektu, czy tworzyć takie skrypty od zera. I chociaż daleki jestem od stwierdzenia, że mógłbym się tym zajmować full-time, całkiem dobrze mi to wychodziło. Jak to osiągnąłem? Bardzo prosto – przede wszystkim nie utrudniałem sobie dodatkowo życia pisząc w sposób trudny do zrozumienia. Pomogło mi w tym bardzo proste, ale jednak zaskakujące odkrycie – skrypty buildowania to też kod, do którego możemy stosować podobne zasady czystości jak w innych językach!

Continue reading

Nowy projekt, wyjazdy, szkolenia – czyli co się działo w ostatnim czasie

W ostatnim czasie działo się u mnie bardzo dużo. Co prawda w mojej aktywności online nie znalazło to zupełnie odzwierciedlenia, stąd prawie trzytygodniowy zastój na blogu. Ale pora wrócić do regularnego pisania. Pomysłów na nowe treści nie brakuje. Dzisiaj zapraszam na małe sprawozdanie z kilku ostatnich tygodni. Będzie więc o długim wyjeździe, zmianie projektu, pierwszym przeprowadzonym szkoleniu zewnętrznym i o rowerze.

Continue reading

Miary jakości unit testów

Pisząc unit testy chcielibyśmy wiedzieć, czy robimy to wystarczająco dobrze i czy dodajemy w ten sposób wartość do projektu. Informacja ta jest potrzebna programistom, aby mogli doskonalić swój warsztat i ułatwiać pracę zespołowi. Korzystają z niej również managerowie planując zadania, skład zespołu itp. Najczęściej wykorzystywaną metryką jest tutaj test coverage, jednak niesie ona jedynie ograniczoną informację. Ważne są również miary empiryczne, które ciężko przedstawić w formie liczbowej.

Continue reading

Pisanie własnych mocków

Nieodłącznym elementem TDD i unit testów jest mockowanie zależności. Powstało w tym celu sporo bibliotek dla różnych języków i różnych frameworków testowych. Mogłoby się więc wydawać, że wystarczy wybrać swoją ulubioną bibliotekę do mocków i po prostu jej używać. Okazuje się jednak, że pisanie prostych mocków samemu czasem może okazać się lepszym wyborem. Pokażę dzisiaj jak łatwo można napisać własne mocki do frameworków Unity i CppUTest.

Continue reading

Unity – framework testowy w C

Aby móc testować aplikacje embedded na platformie docelowej często potrzebujemy frameworka napisanego w czystym C. Najlepiej jeszcze, aby zajmował mało miejsca w pamięci i był jak najprostszy, aby dawał się skompilować na kompilatorach bez zaawansowanych opcji i funkcji bibliotecznych. Wymagania te spełnia framework Unity. Niestety nazwa jest dosyć niefortunna, pokrywa się z Unity do tworzenia gier i ciężko np. wyszukiwać teksty o frameworku w google.

Continue reading

CppUTest – framework do unit testów systemów embedded

Aby stosować Test Driven Development potrzebujemy odpowiedniego frameworka testowego implementującego obsługę scenariuszy i grup testowych, drukowanie outputu, czy asserty. Mimo iż brak takiego frameworka nie może być wymówką, aby nie testować (najmniejszy framework w C składa się z 3 linii kodu!), dobre narzędzie ułatwi nam pracę i zwiększy produktywność. Dzisiaj opiszę dość ciekawe podejście do testowania projektu napisanego w C – wykorzystanie frameworka w C++. A jest nim CppUTest.

Continue reading

FPU w STM32F4 – jak używać Floating Point Unit

Jedną z największych zalet procesorów STM32F4 i ogólnie Cortex-M4 jest jednostka Floating Point Unit (FPU) przyspieszająca obliczenia na liczbach zmiennoprzecinkowych. Jej wykorzystanie wymaga od użytkownika włączenia FPU podczas działania programu oraz kompilacji z odpowiednimi flagami, aby używać instrukcji FPU. W tym wpisie omawiam jak obsługiwać FPU zarówno od strony programu jak i kompilatora oraz jak pisać kod, aby mieć pewność, że wykorzystuje on dobrodziejstwa FPU.

Continue reading

Orientacja mapy labiryntu

Dzisiaj opiszę problem orientacji mapy labiryntu, czyli odniesienie mapy do kierunków w przestrzeni i do numeracji pól. Co ciekawe, z początku w ogóle nie zdawałem sobie sprawy, że jest to ważna decyzja projektowa, która może ułatwić lub utrudnić dalsze prace. Po prostu myślałem, że numeracja jest prowadzona w jedyny słuszny sposób wykorzystywany we wszystkich innych dziedzinach. Dopiero później zdałem sobie sprawę, że moja mapa nie jest kompatybilna z narzędziami udostępnianymi w internecie. Dalej również okazało się, że nie jest ona optymalna nawet do moich zastosowań.

Continue reading

© 2018 ucgosu.pl

Theme by Anders NorénUp ↑