Robotyka, Embedded, C
Kolejnym – po Lookup Table – tematem związanym z tablicami, którym się zajmę jest przyspieszenie wyszukiwania elementów. Zwykle nasze możliwości w tym zakresie ograniczają się do podawania indeksu tablicy albo wyszukiwania w pętli. Możemy jednak przyspieszyć te operacje wykorzystując dodatkowe tablice z mapowaniem indeksów, albo skorzystać z hash table. Przykładowy problem Ostatnio spotkałem się z […]
Pod wpływem doskonałej książki Code Complete autorstwa Steve’a McConella postanowiłem napisać o zastosowaniach tablic w C. Nie chodzi mi tu oczywiście o podstawy, składnię itp. Chociaż jak to w C, nawet tutaj znalazłoby się kilka niuansów. Mam zamiar zająć się bardziej zaawansowanymi tematami takimi jak lookup table, hash table, maszyny stanów, czy polimorfizm na tablicach […]
W dniach 3-5 lipca byłem na Politechnice Gdańskiej na IAV 2019 – konferencji naukowej poświęconej autonomicznym pojazdom. Agenda wyglądała niezwykle ciekawie. Można było znaleźć tematy dotyczące eksploracji kosmosu, dronów, autonomicznych samochodów, czy jednostek pływających. Konferencja składała się z sesji plenarnych będących odpowiednikiem keynotów, gdzie zaproszone osoby przedstawiały przekrój swoich prac. Każdego dnia miały miejsce dwie […]
W Krakowie między 24 a 26 czerwca 2019 odbywała się konferencja Devoxx Poland. To jedna z największych konferencji w regionie. Uczestniczy w niej około 2500 osób, a przez trzy dni występuje ponad stu prelegentów. W tym Venkat Subramaniam, Sandro Mancusso czy ludzie z Google, Thoughtworksa, czy Red Hata. Tematyka skupia się wokół Javy, ale jest […]
W ostatnim poście dzieliłem się wrażeniami z konferencji Ada Europe 2019, która miała miejsce 12 i 13 czerwca w Warszawie. Tekst wyszedł dosyć długi i zabrakło w nim miejsca na opis poszczególnych prezentacji, które dodaję dzisiaj. Podczas konferencji można było między innymi usłyszeć o wojskowym projekcie tak tajnym, że nie można o nim mówić, o […]
W zeszłym tygodniu (12-13 czerwca) byłem w Warszawie w Instytucie Lotnictwa na Ada-Europe. Konferencji poświęconej językowi Ada i systemom safety-critical. Wszystkich tematów, które chciałbym zawrzeć w relacji wyszło bardzo dużo. Dlatego podzielę ją na części. W tym wpisie skupię się na ogólnych wrażeniach z konferencji i różnych ciekawostkach technologicznych w systemach safety-critical. Najciekawsze prezentacje omówię […]
Ostatnio nie miałem weny na pisanie o technicznych tematach (co widać po ostatnim braku aktywności). Dlatego dzisiejszy wpis będzie się mocno różnił od ostatnich. Punktem wyjścia będzie dla mnie bijący ostatnio rekordy popularności serial “Czarnobyl”. Jeżeli jeszcze go nie widziałeś – koniecznie musisz to nadrobić. Serial jest świetnie zrealizowany, trzyma w napięciu i zachęca do […]
Poprzednio pisałem o obiektowości w C, dzisiaj kolej na kolejny wzorzec zapożyczony z języków wyższego poziomu – interfejsy. W tym artykule opiszę jak je implementować w C i jakie dzięki temu możemy odnieść korzyści. Do czego służą interfejsy? W dobrze zaprojektowanej architekturze warstwy znajdujące się na wyższym poziomie abstrakcji nie zależą od konkretnej implementacji elementów […]
W języku C nie mamy czegoś takiego jak klasy. Jeżeli chcemy pisać programy w sposób obiektowy musimy wykorzystać w tym celu struktury i funkcje. Traktowanie modułów większego systemu jako obiektów zawierających pewne dane i umożliwiających operacje na nich jest sposobem na ukrycie szczegółów implementacyjnych. Abstrakcje pomagają zapanować nad złożonością projektów. Dlatego mimo, iż obiektowość w […]
W poprzednim wpisie opisałem proces generowania runtime Ady dla STM32F401. Myślałem, że to już koniec przeprawy z konfiguracją, ale okazuje się, że nie. Pliki wygenerowane zgodnie z instrukcją z poprzedniego postu wymagają jeszcze małej modyfikacji. Poza tym jeżeli chcemy skorzystać również z Ada Drivers Library czeka nas kolejna runda walki ze skryptami. Udało mi się […]
Po zainstalowaniu toolchaina GNAT dla ARMów otrzymujemy wsparcie jedynie dla niewielkiej liczby procesorów. Aby wygenerować pliki runtime dla innych, musimy skorzystać ze skryptów dostępnych w repozytorium bb-runtimes od AdaCore. Ostatnio potrzebowałem wygenerować je dla nowego procka i trochę musiałem się namęczyć. Dlatego teraz opiszę do czego udało mi się dojść. Co to jest ten runtime? […]
Mimo, że “Tydzień z Adą” już się skończył, temat tego języka będzie się jeszcze przez jakiś czas przewijał. Jako, że w internecie dosyć trudno znaleźć informacje nawet na temat wydawałoby się dosyć podstawowych konstrukcji języka, będę tutaj opisywał to, co udało mi się odkryć. Dzisiaj na tapecie atrybut limited, który dodany do typu uniemożliwia jego […]
Dzisiaj zgłębię temat profili runtime’owych w Adzie. Pozwalają one określić z jakich funkcji języka możemy korzystać w projekcie. Dzięki temu mamy lepszą kontrolę nad zużyciem pamięci, wydajnością i bezpieczeństwem aplikacji. Rozwiązanie w Adzie jest dużo lepsze niż w innych językach, z którymi miałem do czynienia, ponieważ blokuje użycie niechcianych konstrukcji już na poziomie kompilacji. Artykuł […]
Ada została wymyślona jako język, w który swoją składnią utrudnia popełnianie błędów. Dlatego część przypadków sprawdzanych zwykle przez unit testy w Adzie w ogóle się nie skompiluje. Jednak mimo wszystko unit testy pozostają ważnym elementem sprawdzania poprawności działania systemu. Co więcej normy dotyczące systemów safety-critical często nakazują wykorzystanie unit testów i osiągnięcie odpowiedniego pokrycia kodu. […]
Po pierwszych próbach z Adą na PC, pora uruchomić ją na mikrokontrolerze. W tym celu posłużę się płytką STM32F4DISCO. W dzisiejszym odcinku dowiesz się, czy trudno jest zacząć z Adą na STM32 i jakimi gotowymi bibliotekami możesz się wspomagać. Zobaczymy też sobie kilka cech Ady ważnych z punktu widzenia embedded jak na przykład deklarowanie zmiennych […]
Robotyka, Embedded, C
Programowaniem zajmuję się zawodowo od 2012 roku. Moją specjalnością są systemy embedded, pracowałem już nad systemami safety critical, inteligentymi budynkami, czy Internet of Things. Jestem również wielkim fanem robotyki i w wolnym czasie robię własnego robota micromouse.