Nie przegap Wakacyjnej Promocji na kursy online!

Kategoria: Programowanie

6 Najważniejszych zastosowań asemblera w Embedded

W poprzednich wpisach wychwalałem wartość edukacyjną asemblera i opowiadałem trochę jak wyglądała moja ścieżka nauki. Dzisiaj porozmawiamy sobie o praktycznych zastosowaniach, gdzie faktycznie musimy pisać, albo przynajmniej czytać kod pisany w asemblerze.

Opowiem o 6 głównych przypadkach, kiedy chcemy użyć asemblera. I o jednym kiedy wydaje nam się, że chcemy, ale… no właśnie – źle nam się wydaje.

Continue reading

Jakich języków uczyć się do embedded? I w jakiej kolejności?

Wybór języka programowania to kolejny obok wyboru mikrokontrolera najczęściej poruszany temat. Pytanie o język zadają nie tylko zupełnie początkujący. Często na studiach mamy trochę do czynienia z C, C++, MATLABem, FPGA, Asemblerem. Uczymy się wszystkiego po trochu i musimy się na coś zdecydować. Jeżeli siedzimy trochę w branży – słyszymy o zaletach Rusta czy modern C++. Chcemy się dobrze ustawić do wiatru i uczyć się rzeczy jednocześnie popularnych i perspektywicznych. Wybór odpowiednich języków do nauki jest tutaj kluczowy.

Continue reading

Jaki mikrokontroler wybrać na początek?

To jeden z największych dylematów osób wchodzących do branży embedded. Często zadają je również osoby, które już zaczęły pisać pierwsze programy i jakiś procesor wybrały. Nic dziwnego – możecie się zastanawiać czy to była dobra decyzja? czy mogę ją jeszcze zmienić? czy lepiej uczyć się od razu kilku rodzin?

W tym artykule dam Ci jasną odpowiedź. Oraz pokażę całą argumentację dlaczego właśnie tak. Zaznaczam tutaj od razu, że skupiam się na „deeply embedded”. Czyli ścieżce skupiającej się na systemach bare metal albo opartych na RTOSach. Linux Embedded to zupełnie inna bajka.

Continue reading

Projekt embedded od zera – nowa seria na YT!

Widzieliście już nową serię filmów na moim kanale YT? To jest coś, czego do tej pory brakowało w świecie embedded. Pokazuję w niej prawdziwy projekt. Nie tylko z ostateczną wersją kodu, ale również z całą ewolucją, decyzjami i czynnikami wpływającymi na te decyzje. A wszystko to bez zbędnego lania wody – same konkrety. Aby utrzymać zwięzłość materiału zdecydowałem się nagrać to w formie filmów, a nie live.

W tym poście napiszę więcej o samym projekcie i kulisach jego powstawania. A jeżeli chcesz od razu przejść do oglądania – poniżej znajdziesz playlistę ze wszystkimi opublikowanymi do tej pory odcinkami.

Continue reading

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

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

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