Podsumowanie roku 2021

Niedawno rozpoczął się nowy rok, więc tradycyjnie pora na podsumowanie wydarzeń z roku 2021 i planów na 2022. Podobne podsumowania robiłem też w 2017, 2018 i 2020. Podsumowanie z 2019 zagninęło w akcji 🙂

Zapraszam do lektury!

Continue reading

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

Jak zaimplementować obsługę różnych języków w menu?

Czasami tak bywa, że sukces produktu niesie nowe wyzwania dla programistów. Jednym z takich wyzwań może być przetłumaczenie tekstów wyświetlanych w menu na inne języki i obsługa tego w prosty i niezawodny sposób. W dzisiejszym wpisie pokażę jak ustrukturyzować kod zawierający menu i jak łatwo zaimplementować tłumaczenia wykorzystując tablice.

Continue reading

Fragmenty live’ów na YouTube

Ostatnio na swój kanał YouTube zacząłem wrzucać fragmenty live’ów pocięte na krótsze – około 10-minutowe – filmiki. Każde nagranie skupia się na jednym zagadnieniu. Dzięki temu łatwiej będzie po czasie znaleźć interesujące fragmenty bez przeszukiwania całego dwugodzinnego nagrania.

Zapraszam również do zapisu na newsletter, gdzie poza tego typu nagraniami otrzymacie również linki do dodatkowych materiałów i różne opowieści z moich projektów.

Czytelność kodu w embedded

Dlaczego mój kod nie działa?

Książki dla programisty embedded – live na YT

Dzisiaj o 20:00 zapraszam na YT na live o książkach dla programisty embedded:

A w nim odpowiedzi na pytania:

  • Jakie książki wybrać do początkowej nauki?
  • Jakie książki polecam na później?
  • Jakie książki polecam o testach, architekturze, prowadzeniu projektów itd.
  • Jakie do C? A jakie do C++?
  • Jakie o elektronice?
  • Z czego sam się uczyłem?
  • Czy trzeba czytać książki od deski do deski?

Większość książek programistycznych pomija kwestie sprzętowe, a o samym embedded literatura jest dużo uboższa. Dlatego będzie też o tym jak odnosić informacje w książkach do naszej konkretnej sytuacji.

Migracja projektu z STM32 Cube IDE do CMake – live na YT

Problemy z konfiguracją IDE to prawdziwa zmora. Mogą objawiać się na różne sposoby – na przykład:

  • Wiesz jak coś ma działać, ale nie umiesz wyklikać tego w wizardzie.
  • Przenosisz projekt na inny komputer i się nie kompiluje.
  • Chcesz uruchomić kompilację bez instalowania IDE i nie wiesz jak.

Narzędzia się zmieniają, ale problemy pozostają te same. Musimy umieć sobie z nimi radzić.

Dlatego właśnie dzisiaj o 20:00 zapraszam na live na YouTube. Tematem będzie Migracja projektu z STM32 Cube IDE do CMake. A przy okazji pokażę co IDE robią pod maską.

Continue reading

Jak dodać analizę statyczną w CMake?

Języki takie jak C i C++ zakładają, że programista wie co robi i pozwalają mu na wiele. Są bardzo konserwatywne w zgłaszaniu błędów i warningów. Nieraz obraca się to przeciwko programiście, dlatego sami aktywujemy dodatkowe flagi warningów podczas kompilacji i używamy różnych narzędzi do analizy kodu.

Ale do narzędzi takich jak cppcheck czy clang-tidy musimy podać te same pliki źródłowe, include, define co w głównym buildzie. Konfiguracja jest dosyć trudna. Na szczęście system budowania może nam w tym pomóc. W końcu posiada wszystkie informacje przekazywane kompilatorowi. Dzisiaj zobaczymy jak skonfigurować analizę statyczną w CMake.

Continue reading

CMake – automatyczna obsługa podprojektów z gita

W poprzednim odcinku skonfigurowaliśmy sobie większy projekt. Mieliśmy oddzielne targety na poszczególne podprojekty. Dzięki temu dało się na przykład utworzyć bibliotekę statyczną, czy dodać bibliotekę header only. Dzięki odpowiedniej konfiguracji byliśmy w stanie raz skompilować podprojekt i używać go w wielu targetach. Teraz pójdziemy o krok dalej. Nasze podprojekty będą automatycznie ściągane z własnych repozytoriów.

W przykładzie użyje repo na GitHubie, ale równie dobrze można użyć innych systemów kontroli wersji, serwerów, czy nawet lokalnych plików. Zalety takiego rozwiązania w większych projektach są nieocenione. Po pierwsze możemy sensownie zarządzać aktualizacjami zewnętrznych bibliotek, a po drugie możemy tworzyć własne reużywalne biblioteki z aktualizacjami propagowanymi na wszystkie projekty.

Continue reading

CMake – jak używać w większych projektach?

We wcześniejszym artykule pokazałem jak napisać prosty skrypt CMake. Za jego pomocą możemy zrealizować najważniejsze zadania stawiane skryptowi budowania. A więc możemy dodawać pliki źródłowe, headery, flagi kompilacji, czy definicje preprocesora.

Na początek taki skrypt jest jak najbardziej w porządku. Robi to co powinien i pozwala nam oswoić się ze składnią i działaniem CMake. Ale to nie jest najlepszy sposób pisania skryptów CMake i kiedy będziemy chcieli skorzystać z bardziej zaawansowanych opcji – możemy mieć problemy.

Dlatego w dzisiejszym wpisie zobaczymy jak pisać skrypty CMake zgodnie ze sztuką i jakie z tego będziemy mieć korzyści. Dowiemy się też dlaczego w skryptach CMake powinniśmy zawsze korzystać z komend z prefixem target_.

Continue reading

Rekrutacja w embedded – live na YT

W poniedziałek o 20:00 zapraszam na YouTube na kolejny live! Porozmawiamy sobie o rekrutacji na programistę niskopoziomowego. Będzie między innymi o tym:

  • Jakich pytań możesz się spodziewać?
  • Co jest brane pod uwagę przy ocenianiu odpowiedzi?
  • Co musisz umieć aplikując na juniora/mida/seniora?
  • Kiedy aplikować do swojej pierwszej pracy?
  • Jak w embedded radzą sobie osoby, które się przebranżowiły?
  • Czym różni się rekrutacja zdalna od klasycznej?
Continue reading

© 2022 ucgosu.pl

Theme by Anders NorénUp ↑