Czy ktoś ocenił NuttX RTOS?

15

Czytając dziś dziennik użytkownika Linuxa, natknąłem się na małą notkę na temat NuttX RTOS. Sprawdziłem ich witrynę i byłem pod dużym wrażeniem zestawu funkcji i możliwości umieszczenia go w 8052! Interesujące jest to, że obsługuje POSIX, nad którym pomogłem pracować dla jednego z moich wewnętrznych klientów RTOS. Ten wydaje się być nieco bardziej bogaty w funkcje niż wewnętrzny RTOS.

Czy ktoś jeszcze słyszał o NuttX i spróbował? Jeśli tak, to jak to porównać z innymi RTOS, takimi jak FreeRTOS ?

Jay Atkinson
źródło
1
Właśnie zaczynam grać z RTOS i kiedy zapytałem tutaj, otrzymałem świetną radę, ale miałem wrażenie, że większość użytkowników tutaj nie wie, co to jest RTOS. Nie mam na myśli tego w zły sposób, po prostu myślę, że warto zadawać to pytanie na innych forach, aby zwiększyć szansę otrzymania dobrej odpowiedzi.
Kortuk
I tak muszę spróbować :-) Nigdy nie wiadomo, kto się tu czai :-)
Jay Atkinson
Tak, zadałem tutaj również kłopotliwe pytanie. Nigdy nie boli mieć nadzieję na coś.
Kortuk
Począwszy nagrodę! Interesuje mnie porównanie między RTOS.
tyblu
7
Dlaczego głosowanie kończy się tym pytaniem? RTOS są używane przez cały czas w elektronice i robotyce.
Kellenjb

Odpowiedzi:

17

Dyskusja dotyczyła tego pytania tutaj: link

Wyciągi: Artykuł Linux Journal, o którym mowa, znajduje się tutaj: link

Myślę, że porty 8052 i M68HC12 są szczególnie złymi wyborami do charakteryzowania NuttX, ponieważ oba mają pewne problemy, a NuttX jest teraz w wersji 5.16 z 63 wydaniami.

Wypełniłem wywiad w zakładce „Wydawca” tutaj: link ; tam też jest recenzja: link .

Obszerna dokumentacja NuttX jest dostępna tutaj: link .

Problemy z częściami hcs12 i 8051 są następujące:

8051 / 80c52: Ta architektura jest naprawdę wroga w stosunku do RTOS. Ma mały stos sprzętu (128 bajtów w 8051, 256 w 80c52) w dedykowanym miejscu pamięci (adres 0). Aby przełączyć zadania, musisz skopiować cały stos zadania, który ma być zablokowany, z jego dedykowanego adresu do jakiegoś miejsca zapisu, a następnie skopiować cały stos zadania, które ma zostać uruchomione, z miejsca zapisu do dedykowanego miejsca stosu. YECH!

A ponieważ stos jest tak mały. Przekroczenie stosu jest bardzo, bardzo łatwe - szczególnie podczas obsługi przerwań.

Port NuttX 8051 jest kompletny i funkcjonalny (przynajmniej ostatnim razem, gdy go użyłem). Ale aby był użyteczny, prawdopodobnie będziesz musiał skopiować cały stos przy każdym przerwaniu, aby zapobiec przepełnieniu. Zasadniczo straciłem zainteresowanie w tym momencie, ale jeśli ktoś był naprawdę zmotywowany do korzystania z 8051, jest to wykonalne (jeśli nie być może zalecane).

To, co było dobre w porcie 8051, to wspaniałe ćwiczenie w wprowadzeniu NuttX do bardzo małej pamięci. Port 8051 działa w 32 KB pamięci RAM - obejmuje RTOS, libc, biblioteki kompilatorów, obszerny program testowy, .data / .bss i stertę. I przy odrobinie pamięci do stracenia!

hcs12: To projekt, nad którym pracuję w wolnym czasie, gdy nie robię nic innego. Po prostu jeszcze nie jest skończony i nie jest jeszcze gotowy na najwyższy czas.


Jeśli chodzi o porównanie z innymi RTOS, naprawdę nie mam dobrych, autorytatywnych odpowiedzi, ponieważ nie używam innych RTOS. Ale oto moje naiwne zrozumienie:

FreeRTOS ma mnóstwo pobrań i naprawdę niewielki rozmiar około 4Kb. Jest to RTOS z wyboru dla naprawdę małych MCU. Port FreeRTOS jest sprzedawany przez dostawców krzemu z prawie każdym MCU. Jest to więc domyślny wybór RTOS.

Istnieją dziesiątki konkurentów z FreeRTOS. ChiBIOS przychodzi natychmiast na myśl. Są to wszystkie małe harmonogramy różnych typów.

Aby dokonać prawdziwego porównania, najpierw musimy zdefiniować, co rozumiemy przez RTOS: czy to tylko harmonogram? A może jest to zintegrowany zestaw standardowych funkcji systemu operacyjnego - takich jak harmonogram, system plików, sterowniki urządzeń, zarządzanie pamięcią, praca w sieci itp. Większość systemów operacyjnych, na przykład Linux, to pełne środowiska programistyczne, a nie tylko programy planujące. NuttX to pełny system operacyjny, podobnie jak Linux. Oto kilka innych:

RTEMS : Pracowałem z tym. Jest już od zawsze i powinien być bardzo stabilny. To jest duże; myśl> 100kb. Myślę, że ma to nieco ponad rynek MCU.

uCOS : Nigdy go nie używałem, ale to RTOS pod kilkoma popularnymi programami ładującymi, prawda? Mam wrażenie, że jest podobny do RTEMS, ale tak naprawdę nie wiem o czym mówię.

Jak porównałbym NuttX do tych: Cóż, jest o wiele mniejszy. Początkowy ślad wynosi około 20 KB. W pełni funkcjonalna konfiguracja to około 10-20 KB więcej. Kolejną różnicą w stosunku do tych RTOS jest to, że NuttX jest bardzo zorientowany na standardy. Możesz myśleć o NuttX jak o małym, podobnym do Linuksa działaniu. Większość kodu, który kompiluje się i działa w systemie Linux, będzie również działała na NuttX (niektóre kody systemowe, takie jak kod sieci lub demony, mogą wymagać pewnych poprawek).

Myślę, że RTEMS jest bardziej skoncentrowany na mikroprocesorach; NuttX jest bardziej skoncentrowany na mikrokontrolerach.

patacongo
źródło
4

Licencjonowanie to kolejna różnica, o której należy pamiętać przy wyborze RTOS typu open source. Zwłaszcza jeśli planujesz używać RTOS w komercyjnym projekcie. Większość systemów RTOS typu open source ma zmodyfikowaną licencję GPL. Modyfikacja licencji zwykle określa, że ​​nie musisz używać własnego kodu, który łączy się z GPL RTOS (ale nadal musisz zwolnić pliki RTOS wraz ze swoimi modyfikacjami).

NuttX (i prawdopodobnie inne) mają nieograniczoną, zmodyfikowaną licencję BSD. Dzięki licencji BSD możesz zasadniczo pobrać kod i używać go tak, jakby był on własny, bez żadnych zobowiązań innych niż zachowanie informacji licencyjnych i praw autorskich w plikach.

patacongo
źródło
Nutt, czy chciałbyś, żebym edytował te informacje w innej odpowiedzi? Wygląda na to, że pasują do siebie.
Kortuk
Jasne, nie krępuj się. Rant na temat 8051 i 80c52 oraz hc12 również wydaje się tutaj nie z kontekstu.
patacongo,
Po prostu upewniłem się, że zdałeś sobie sprawę, że możesz edytować więcej. Skoro o tym wiedziałeś i robiłeś to celowo, możemy to tutaj zostawić. Zwykle możesz po prostu edytować w innej sekcji i używać tytułów. Daj mi znać, jeśli mogę pomóc, jeśli zmienisz zdanie.
Kortuk