Architektura Systemu – Między Ideałem a Koniecznością Biznesową

Grudniowy meetup (relacja tutaj) zapoczątkował ciekawą dyskusję na temat dziedziczenia w C++, interfejsów duplikacji kodu i czy czysty kod według Uncle Boba ma zastosowanie w środowisku embedded. Zainspirowany tą debatą postanowiłem podzielić się z Wami swoimi refleksjami. We wcześniejszym wpisie odniosłem się bardziej do kwestii związanych z C++, wydajnością i czystym kodem. Dzisiaj biorę na tapet decyzje architektoniczne i kompromisy projektowe.

Zacznijmy od ważnej uwagi – opinie w takim temacie są wypadkową poglądów filozoficznych i doświadczeń we własnych projektach. Każdy programista kieruje się własnymi preferencjami, a specyfika projektów różni się diametralnie. Toteż nie szukaj tu gotowych przepisów, bo jak zwykle, odpowiedź brzmi: „To zależy”.

Continue reading

Podsumowanie roku 2023

Witam w Nowym Roku. Jak nakazuje tradycja – pora na podsumowanie starego roku i plany na nowy. Ostatni rok upłynął mi pod znakiem delegowania zadań, testowania narzędzi i procesów oraz sprawdzania różnych sposobów tworzenia treści w internecie. Był też nowy kurs online, szkolenie stacjonarne, prezentacja na konferencji, a Gdańsk Embedded Meetup doczekał się nagrań z prezentacji z prawdziwego zdarzenia. Zapraszam do lektury!

Continue reading

Clean Code, Horrible Performance. Czy aby na pewno?

Jakiś czas temu wielką popularność zdobyło nagranie Casey Muratori “Clean Code, Horrible Performance” jeżeli jeszcze nie znasz, polecam obejrzeć! Autor stawia tam obrazoburczą tezę, że popularne zasady Clean Code przynoszą więcej szkody niż pożytku. A w szczególności powodują ogromny spadek wydajności. W tym artykule zapoznamy się z jego argumentami i zastanowimy się, czy mają zastosowanie w embedded.

Continue reading

Grudniowy embedded meetup – relacja

We wtorek 5 grudnia w Sztuce Wyboru w Gdańsku mieliśmy kolejną, siedemnastą już odsłonę Gdańsk Embedded Meetup. Jako organizator nie zawsze mam możliwość uważnie śledzić prezentacje, ale tym razem się udało i dzięki temu mogę teraz napisać całkiem długą relację. A przy okazji dobrze się składa, bo długo nic nie pisałem na bloga, a ten meetup dał wiele ciekawych tematów, które rozwinę jeszcze w kolejnych wpisach. Tutaj skupię się jednak na relacji, bo mieliśmy dwie bardzo ciekawe prezentacje.

Continue reading

Gdańsk Embedded Meetup powraca!

Wznawiamy spotkania Gdańskiego Meetupu Embedded. Pierwsze spotkanie po przerwie odbędzie się we wtorek 4 października o 18:00 w Sztuce Wyboru ul. Słowackiego 19, Gdańsk. Na wydarzenie można zapisać się na meetup.com.

W trakcie spotkania odbędą się dwie prezentacje:

  • 18.00 Szymon Jesionek – „Automotive Embedded Security”
  • 19.20 Krzysztof Malicki, Michał Szymański – „Druga strona medalu, czyli infrastruktura chmurowa do obsługi embedded i IoT”

Będzie też przerwa na pizzę, losowanie eval boardów (koniecznie zapisz się na meetup.com, aby wziąć udział w losowaniu) i przede wszystkim okazja aby spotkać się z programistami embedded z Trójmiasta i okolic.

Kolejne meetupy będą się odbywać w pierwsze wtorki miesiąca (chyba że wypadnie jakieś święto itp.).

A jeżeli chcesz zobaczyć jak wyglądały meetupy przed covidem – możesz sprawdzić:

  • Naszą meetupową grupę, gdzie znajdziesz poprzednie wydarzenia
  • Githuba, gdzie znajdziesz slajdy z poprzednich wydarzeń
  • Kanał YT, gdzie nagraliśmy kilka prezentacji (niestety mieliśmy problemy z dźwiękiem)

Darmowy ebook o TDD w Embedded

Stworzyłem ostatnio ebooka „Jak zacząć z Test Driven Development w systemach embedded”. Możesz go pobrać ze strony tddembedded.pl

Z ebooka dowiesz się między innymi:

  • O co chodzi w TDD i jak może pomóc Ci w codziennej pracy
  • Jaki framework testowy wybrać na początek
  • Jak dostosować TDD do systemów embedded

Opisałem tam również historię jednego projektu, gdzie programowałem sterowniki wentylatorów do klimatyzacji.

Tak więc zapraszam na tddembedded.pl i życzę przyjemnej lektury!

Obsługa zależności czasowych

Jakiś czas temu otrzymałem na maila takie pytanie:

Czy jest jakaś elegancka metoda, aby zarządzać zdarzeniami czasowymi w systemie?
Generalnie unikamy delay’ów i odnosimy się np. do zegara systemowego. Aby uruchomić daną komendę/operację/funkcję w konkretnym momencie czasowym używamy IF-ów. Sprawa się komplikuje jeśli chcemy powiązać czasowo różne zdarzenia w systemie.

Oto przykład: chcemy aby:
1. Zdarzenie X było realizowane co 2 sekundy,
2. Niezależne zdarzenie Y co 5 sekund
3. Zdarzenie Z 1 sekundę po zdarzeniu X.
 
Czy masz tu jakiś pomysł jak taki cel można zrealizować prościej, z wykorzystaniem jakiegoś tricku, aby kod stał się prostszy i bardziej czytelny?

W dzisiejszym wpisie omówię dwa podejścia do tego tematu – z RTOSem i bez.

Continue reading