Jestem nowy w świecie RTOS. Planuję używać RTOS na Raspberry Pi 3 (może być FreeRTOS). Czy ktoś może zasugerować, który RTOS byłby dobry dla początkujących?
Skoro jeszcze nie wydali arkusza danych na BCM2837, czy w ogóle możliwe jest załadowanie RTOS na Raspberry Pi 3?
Odpowiedzi:
Chociaż oryginalny projekt obsługuje tylko Raspberry Pi 1, z powodzeniem skompilowałem ten widelec na Raspberry Pi 2 i mówi się, że obsługuje również 3.
https://github.com/Forty-Tw0/RaspberryPi-FreeRTOS
źródło
Do tej pory testowałem następujący RTOS bez powodzenia dla Raspberry Pi 3, który pomoże komuś nie stracić czasu (tracę 3 miesiące): FreeRTOS, Xenomai, RTEMS, BitThunder, ChibiOS / RT
W przypadku RISC OS nie jest to RTOS.
Jedynym, na którym do tej pory mogłem uruchomić Raspberry Pi 3, jest jądro Fuchsia OS (Magenta), ale jest ono na wcześniejszym etapie i jest słabo udokumentowane
Innym sposobem jest samodzielne zbudowanie RTOS, tak, jest to możliwe, przy użyciu ULTIBO CORE i następujących samouczków: - http://www.valvers.com/open-software/raspberry-pi/step01-bare-metal- programowanie w cpt1 / - https://www.youtube.com/watch?v=TCfpb8M0WeQ
źródło
ARM, rodzina ISA używana przez procesory Broadcom we wszystkich obecnych modelach Raspberry Pi, oparta jest na RISC , dla którego napisano RISC OS . RISC OS Myślę, że przez pierwszą dekadę dominował na urządzeniach ARM, ponieważ ta sama brytyjska firma technologiczna (Acorn) pierwotnie zaprojektowała zarówno ARM, jak i RISC OS. W rzeczywistości ARM początkowo oznaczał „maszynę Acorn RISC”, i częściowo dlatego, że Raspberry Pi nazywa się tak, jak to jest, z powodu tradycji w Wielkiej Brytanii nazywania systemów komputerowych po owocach lub orzechach.
RISC OS nie jest prawdziwym systemem operacyjnym czasu rzeczywistego, jednak korzysta z wielozadaniowości kooperacyjnej , co oznacza, że możesz uruchomić proces, który może dobrowolnie odmówić poddania się innemu procesowi. Jakie to może mieć konsekwencje, nie wiem, ale zakładam, że:
Możesz skonfigurować rzeczy tak, aby na to pozwalały bez problemów, ale może to wiązać się z ograniczeniami w zakresie osiągnięć systemu operacyjnego (np. W odniesieniu do sieci).
Kontekst przełącza się w tryb jądra tylko z powodu wywołań systemowych wykonywanych przez proces w celu osiągnięcia jego celów.
Jest to bardzo zbliżone do funkcjonalności w czasie rzeczywistym, w zależności od tego, jak „w czasie rzeczywistym” trzeba się dostać. Co więcej, istnieje pewne potwierdzenie, że RISC OS działa na Pi 3 .
źródło
Ponieważ definicja RTOS różni się w zależności od aplikacji, zwykle komputer udaje, że jest czymś znacznie prostszym, RISC OS jest RTOS dla średnio-złożonych aplikacji i niekoniecznie dla bardzo złożonych, chociaż bardzo skomplikowany RTOS brzmi jak sprzeczność w kategoriach. Przykład Mahmouda Almostafa RABBAH dotyczy braku systemu operacyjnego i uruchamiania programu jednozadaniowego bezpośrednio z modułu ładującego, który również nie jest systemem RTOS.
Jedynym rozsądnym sposobem uzasadnienia tego jest podzielenie definicji RTOS na trzy poziomy:
Niska złożoność byłaby czymś w rodzaju pralki lub rejestratora danych, i prawdopodobnie lepiej jest z prostszym sprzętem, np. Arduino lub może z prostszym MCU, a nawet po prostu logiką sekwencyjną. Zużyje mniej energii i nie będzie się o co martwić: nigdy nie komplikuj rzeczy bardziej niż muszą.
Wysoka złożoność byłaby czymś w rodzaju pełnego systemu wielozadaniowego, czym nie jest RTOS. Prawdopodobnie lepiej byłoby uruchomić GUI na osobnym urządzeniu, jeśli chcesz. Wysoką złożonością mogą być również monitorowanie procesów, które wywołują inne procesy, a niektóre muszą mieć priorytet, ale znowu lepiej jest, jeśli istnieje tam jakieś przetwarzanie równoległe lub nie ma możliwości reagowania w czasie rzeczywistym.
Średnio złożona byłaby sytuacja, w której potrzebujesz interfejsów, które może zapewnić normalny system operacyjny, np. USB i być może mały wyświetlacz, ale chcesz przetwarzać strumień danych i niczego nie przerywać. To brzmi jak poziom aplikacji motoryzacyjnej.
W tym celu można skompilować coś bez systemu operacyjnego, korzystając z komputera hosta, lub opracować wersję RISC OS, która uruchamia się bezpośrednio w języku BASIC i rozwija się na komputerze docelowym, co zwykle jest łatwiejsze.
Spowoduje to uruchomienie jednego zadania, które może być wystarczająco szybkie, aby sondować szereg zdarzeń, bez przeszkadzania przez inne rzeczy. Przerwania sprzętowe nadal działałyby, chyba że zostaną wyłączone (dość łatwe do zrobienia), a te są niezbędne, aby wyświetlacz / USB itp. Działały. Inne urządzenia przerywają liczniki czasu pracy i operacje we / wy, których możesz nie używać.
Kolejną zaletą RISC OS w aplikacjach RTOS jest to, że możesz używać tylko wymaganych modułów, co nie ma sensu w tradycyjnych aplikacjach GUI i było używane np. Przez STD / AdvantageSix [1], chociaż używają terminu „systemy wbudowane” zamiast „RTOS”. Korzyści, jakie to przynosi, to uproszczona konstrukcja, niższe wymagania energetyczne, mniejsze zużycie pamięci i krótsze czasy uruchamiania (niektóre interfejsy urządzeń we / wy wymagają samodzielnego rozruchu, a system operacyjny musi w tym uczestniczyć, chociaż skala czasowa jest zwykle zbyt krótka, aby to zauważyć ).
Mam nadzieję, że oba uzupełnią pewne luki w powyższych informacjach i wyjaśnią luki w mojej własnej wiedzy.
[1] http://www.advantagesix.co.uk/about_us.html (Inne przykłady z pamięci nie są już dostępne online).
źródło