Page 3 of 23

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

Generowanie headerów ze stałymi w CMake

W prawie każdym projekcie potrzebujemy przechowywać jakieś wartości, które zmieniamy w zależności od wersji projektu. Najbardziej oczywistym przykładem jest właśnie numer wersji. Ale czasem chcemy wyświetlać również commit id z gita, datę kompilacji, czy użytą wersję kompilatora. Nie muszę chyba dodawać, że aktualizacja takich danych ręcznie jest niezwykle uciążliwa, a czasem wręcz niemożliwa (jak dodać commit id bezpośrednio w kodzie bez modyfikowania bez modyfikowania go?). W większych projektach będziemy w tym celu używać dodatkowych skryptów. A CMake ma wbudowane wsparcie do tego typu operacji.

Continue reading

Podsumowanie roku 2020

Już od kilku lat w styczniu podsumowuję, co wydarzyło się w poprzednim roku. I za każdym razem przypominam sobie takie zdanie, że przeceniamy ile jesteśmy w stanie zrobić w ciągu jednego dnia, ale nie doceniamy ile jesteśmy w stanie zrobić w ciągu jednego roku. Za każdym razem taka retrospektywa pozwala mi zrozumieć jak wiele się wydarzyło i inaczej spojrzeć na różne codzienne problemy. Nie muszę chyba dodawać, że później w ciągu roku coraz bardziej o tym zapominam 🙂

Rok 2020 to oczywiście rok pandemii i zewsząd jesteśmy bombardowani opiniami jaki był fatalny. No i faktycznie zamknięcie w domu na pewno nie prowadzi do niczego dobrego zarówno od strony mentalnej jak i gospodarczej. Jednak podsumowanie pokazało mi, że w 2020 miałem wiele powodów do radości.

Continue reading

Jak napisać skrypt cmake?

W tym artykule pokażę jak napisać prosty skrypt cmake. Zrealizujemy najważniejsze zadania, jakich wymagamy od skryptu budowania:

  • Dodawanie plików źródłowych.
  • Określenie ścieżek include.
  • Określenie globalnych define’ów.
  • Dodanie bibliotek statycznych.
  • Dodanie flag kompilacji.

Dzięki skryptowi CMake możemy łatwo uruchamiać kompilację na różnych systemach operacyjnych, systemach budowania i generować projekty na różne IDE.

Continue reading