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 ?
Odpowiedzi:
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.
źródło
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.
źródło