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 C musimy emulować, chętnie sięgamy choćby po niektóre elementy obiektowości. W tym wpisie pokażę jak poprawnie implementować obiektowość w C.
Continue readingKategoria: Programowanie
Generowanie plików runtime Ady – część 2
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ę doprowadzić do stanu, gdzie program na STM32F401 się kompiluje, uruchamia na debugerze i poprawnie steruje peryferiami. Z tego postu dowiesz się jakie kroki musiałem wykonać, żeby do niego dojść.
Continue readingGenerowanie plików runtime Ady dla mikrokontrolerów
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ść.
Continue readingTypy limited w Adzie
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 kopiowanie.
Continue readingRavenscar i ZFP – czyli profile runtime w Adzie
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ł powstał w ramach “Tygodnia z Adą” podczas którego od poniedziałku do piątku będą ukazywać się materiały na temat języka Ada. Będzie między innymi dlaczego Ada tak dobrze nadaje się do safety-critical, pokażę swoje pierwsze próby z pisaniem programów w Adzie, a także postaram się uruchomić Adę na STM32.
Continue readingUnit testy w Adzie
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. Z tego artykułu dowiecie się jak wygląda wsparcie dla unit testów w Adzie.
Artykuł powstał w ramach “Tygodnia z Adą” podczas którego od poniedziałku do piątku będą ukazywać się materiały na temat języka Ada. Będzie między innymi dlaczego Ada tak dobrze nadaje się do safety-critical, pokażę swoje pierwsze próby z pisaniem programów w Adzie, a także postaram się uruchomić Adę na STM32.
Continue readingAda na STM32
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 jako Volatile, czy deklarowanie odpowiedników struktur packed i pól bitowych z C.
Artykuł powstał w ramach „Tygodnia z Adą” podczas którego od poniedziałku do piątku będą ukazywać się materiały na temat języka Ada. Będzie między innymi dlaczego Ada tak dobrze nadaje się do safety-critical, pokażę swoje pierwsze próby z pisaniem programów w Adzie, a także postaram się uruchomić Adę na STM32.
Continue readingMój pierwszy program w Adzie
Mamy już za sobą wprowadzenie do języka Ada. Pora więc coś w niej napisać. W tym artykule pokażę całą drogę od instalacji toolchaina aż do napisania pierwszego programu – kolejki FIFO opartej na buforze cyklicznym. W trakcie implementacji poznamy kilka podstawowych „ficzerów” Ady
Artykuł powstał w ramach „Tygodnia z Adą” podczas którego od poniedziałku do piątku będą ukazywać się materiały na temat języka Ada. Będzie między innymi dlaczego Ada tak dobrze nadaje się do safety-critical, pokażę swoje pierwsze próby z pisaniem programów w Adzie, a także postaram się uruchomić Adę na STM32.
Continue readingAda – najlepszy język do systemów safety-critical
Ada to najbardziej zalecany język do systemów safety-critical. Zainteresowałem się nim bardziej już jakiś czas temu, ale do tej pory nie było okazji się w niego bardziej zagłębić. Sytuacja zmieniła się podczas Embedded World, kiedy to otrzymałem dwie książki o Adzie. Po ich lekturze nabrałem przekonania, że więcej systemów (nie tylko safety-critical) powinno powstawać w tym języku. A przede wszystkim więcej ludzi powinno go znać. Ten artykuł jest wprowadzeniem do Ady z opisem elementów wyróżniających ją na tle innych języków.
Artykuł powstał w ramach „Tygodnia z Adą” podczas którego od poniedziałku do piątku będą ukazywać się materiały na temat języka Ada. Będzie między innymi dlaczego Ada tak dobrze nadaje się do safety-critical, pokażę swoje pierwsze próby z pisaniem programów w Adzie, a także postaram się uruchomić Adę na STM32.
Continue readingEvent Storming
Event Storming to bardzo modny ostatnio termin. Co się pod nim kryje? Do czego może być przydatny? W ostatnim czasie słyszałem wiele na ten temat, czytałem, oglądałem różne prezentacje. Jednak podczas SegFault University Gdańsk nadarzyła się okazja, żeby uczestniczyć w warsztatach z Event Stormingu i zobaczyć jak to wygląda w praktyce. W tym poście opiszę do czego jest przydatny Event Storming. Nie zabraknie oczywiście również odniesienia do możliwego wykorzystania w projektach embedded.
Continue reading