Łukasz Kurzawa

Łukasz Kurzawa Inżynier Automatyk

Temat: Systemy wbudowane, RTOS, programowanie w Linuxie - jak...

Szanowne Koleżanki i Koledzy,

Postanowiłem zagłębić się w programowanie w wyżej wymienionych obszarach.

Podczas studiów z racji kierunku bardziej byłem skupiony na przedmiotach związanych z automatyką, jednak postanowiłem wrócić do programowania, które raczej traktowałem raczej jako zbędny dodatek do Automatyki i Robotyki. Zdecydowałem się naprawić swój błąd i odświeżyć moją wiedzę - albo nabyć od nowa.

Postawiłem na C, C++, programowanie w Linuxie, embedded, RTOS, ze względu na potrzebę obcowania blisko sprzętu i sympatię do pingwinów. Pytanie "Od czego zacząć?" pewnie byłoby zbyt ogólne, albo by świadczyło o moim lenistwie, bo nic nie szukałem/czytałem, więc chciałbym zadać bardziej doświadczonym osobom - zwłaszcza pracującym zawodowo na co dzień z tymi technologiami - kilka konkretniejszych pytań:

1a) Czy w programowaniu systemów embedded i RTOS ciągle używa się języka C, czy raczej C++?

Zacząłem lekturę klasycznych książek Stevensa jak "Programowanie zastosowań sieciowych w systemie Unix", "Unix – programowanie usług sieciowych. API: gniazda i XTI" czy "UNIX. Programowanie usług sieciowych. Tom 2 – Komunikacja międzyprocesowa", i w nich mowa jest tylko o języku C. Z racji tego, że książki były napisane już ponad 15 lat temu, mam wątpliwości, czy to była kwestia tego, że języki obiektowe takie jak C++ nie były jeszcze na tyle popularne czy C ma w tym przypadku jakieś niezaprzeczalne zalety, że się go nadal stosuje?

Na studiach miałem zajęcia z programowania w Linuxie i RTOS właśnie w C. Wiem, że obydwaj moi wykładowcy (W. Paluszyński oraz J. Ułasiewicz) są wybitnymi specjalistami, mający doświadczenie także w projektach komercyjnych, więc trudno im zarzucić propagowanie technologii z czasów młodości.

1b) To samo, co powyżej, tylko jak to wygląda ze zwykłym Linuxem?

O ile w systemach wbudowanych mogę się domyślać ograniczeń np. sprzętowych czy braków kompilatorów języków wyższych poziomów, to w "normalnym" Linuxie takich ograniczeń przecież nie ma.

2) Na ile ważna jest dobra znajomość technik programowania mikrokontrolerów w RTOS?

Mikrokontrolery podczas studiów nie były moją szczególną miłością, opanowałem podstawy programowania, ale zdaję sobie sprawę, że to jest temat-rzeka. Docelowo chciałbym się jednak zająć RTOS, i nie wiem, na ile niezbędne będzie się dokształcenie z samych mikrokontrolerów.

3) Jak zacząć zabawę z RTOS?

Na uczelni miałem zajęcia z RTOS na systemie QNX i komputerach PC104, które miały dodatkowy moduł z wejsciami i wyjsciami cyfrowymi i analogowymi. Docelowo chciałbym wykorzystywać RTOS w jakiś projektach związanych z robotyką, automatyką czy mechatroniką, jak quadrocopter, roboty mobilne czy inteligentne urządzenia domowe.

I tu pytanie: czy zacząć od czystych systemów RTOS, jak np. FreeRTOS czy RTLinux, czy też może zacząć od rozszerzeń typu RTAI czy Xenomai? I które konkretnie byście polecali, z którymi mieliście doświadczenie czy słyszeliście dobre opinie?

konto usunięte

Temat: Systemy wbudowane, RTOS, programowanie w Linuxie - jak...

Z tego co sam widziałem, język C jest nadal obecne i ma się bardzo dobrze w systemach embedded. Tu w zasadzie nie ma alternatywy.
W kwestii aktualności, to zdaje się, że najpopularniejszym standardem będzie ANSI C99. Bardziej istotna może okazać się znajomość branżowych standardów kodowania i projektowania.

Jeśli chodzi o konkretne rozwiązania RTOS to dużo zależy od branży, która Cię interesuje. Myślę, że w automotive jest niewielka szansa na spotkanie Xenomai, natomiast dużo większa na trafienie na QNX lub Integrity.

Myślę, że dobrym pomysłem na rozpoczęcie znajomości z RTOS może być zakupienie np. STM32 Discovery i uruchomienie na tym FreeRTOS. Pozwoli Ci to z jednej strony poznać jedną z bardzo popularnych architektur, a z drugiej strony poznasz jednego z RTOS.

Tak jak napisałem wcześniej, rozwój w kierunku konkretnych technologii zależy od branży, w którą celujesz. Podejrzewam, że mogą być różnice między automotive, lotnictwem, zastosowaniami medycznymi i wojskowymi.

Następna dyskusja:

Rozmowa kwalifikacyjna prog...




Wyślij zaproszenie do