Ł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?