W przypadku MCU z obnażonym metalem, w porównaniu do domowej roboty kodu z pętlą w tle i architekturą przerwania timera, jakie są korzyści z nie-zapobiegawczego systemu operacyjnego? Jakie spośród tych korzyści są na tyle atrakcyjne, że projekt może przyjąć nieprzeszkadzający system operacyjny, a nie używać domowego kodu z architekturą pętli tła?
.
Wyjaśnienie do pytania:
Naprawdę doceniam wszystkich, którzy odpowiedzieli na moje pytanie. Wydaje mi się, że odpowiedź już prawie nadeszła. Dodaję to wyjaśnienie do mojego pytania tutaj, które pokazuje moje własne rozważania i może pomóc zawęzić pytanie lub uczynić je bardziej precyzyjnym.
Staram się zrozumieć, jak wybrać najbardziej odpowiedni RTOS dla danego projektu.
Aby to osiągnąć, pomocne będzie lepsze zrozumienie podstawowych pojęć i najbardziej atrakcyjnych korzyści z różnych rodzajów RTOS i odpowiedniej ceny, ponieważ nie ma najlepszej RTOS dla wszystkich aplikacji.
Kilka lat temu czytałem książki o systemie operacyjnym, ale nie mam ich już przy sobie. Szukałem w Internecie, zanim opublikowałem tutaj pytanie, i okazało się, że ta informacja była najbardziej pomocna: http://www.ustudy.in/node/5456 .
Istnieje wiele innych pomocnych informacji, takich jak wprowadzenie na stronie internetowej różnych RTOS, artykuły porównujące planowanie wyprzedzające i planowanie nieprzewidziane itp.
Ale nie znalazłem żadnego tematu wspomnianego, kiedy wybrać nieprzekazujący RTOS, a kiedy lepiej jest po prostu napisać własny kod, używając przerwania timera i pętli tła.
Mam pewne własne odpowiedzi, ale nie jestem z nich wystarczająco zadowolony.
Naprawdę chciałbym poznać odpowiedź lub opinię bardziej doświadczonych ludzi, szczególnie w praktyce przemysłowej.
Jak dotąd rozumiem:
bez względu na to, czy korzystasz z systemu operacyjnego, zawsze potrzebujesz pewnych kodów planowania, nawet w postaci kodu takiego jak:
in the timer interrupt which occurs every 10ms
if(it's 10ms)
{
call function A / execute task A;
}
if(it's 50ms)
{
call function B / execute task B;
}
Korzyść 1:
nieprzekazujący system operacyjny określa sposób / styl programowania dla kodu planowania, aby inżynierowie mogli dzielić ten sam widok, nawet jeśli wcześniej nie byli w tym samym projekcie. Następnie, mając ten sam pogląd na temat zadania koncepcyjnego, inżynierowie mogą pracować nad różnymi zadaniami i testować je, profilować je w jak największym stopniu niezależnie.
Ale ile naprawdę możemy na tym zyskać? Jeśli inżynierowie pracują nad tym samym projektem, mogą znaleźć sposób, aby dobrze dzielić ten sam widok bez korzystania z nieprzeszkadzającego systemu operacyjnego.
Jeśli jeden inżynier pochodzi z innego projektu lub firmy, odniesie korzyść, jeśli wcześniej znał system operacyjny. Ale jeśli tego nie zrobił, to nie wydaje się, żeby uczynił nowy system operacyjny lub nowy fragment kodu.
Korzyści 2:
Jeśli kod systemu operacyjnego został dobrze przetestowany, oszczędza to czas od debugowania. To naprawdę dobra zaleta.
Ale jeśli aplikacja ma tylko około 5 zadań, myślę, że pisanie własnego kodu za pomocą przerwania timera i pętli tła nie jest zbyt trudne.
Nie-zapobiegawczy system operacyjny jest tutaj określany jako komercyjny / wolny / starszy system operacyjny z nieprzewidzianym harmonogramem.
Kiedy opublikowałem to pytanie, myślę głównie o niektórych systemach operacyjnych, takich jak:
(1) KISS Kernel (Mały niepostępny system RTOS - zgłoszony przez jego stronę internetową)
http://www.frontiernet.net/~rhode/kisskern.html
(2) uSmartX (lekki RTOS - deklarowany przez swoją stronę internetową)
(3) FreeRTOS (To jest prewencyjny RTOS, ale jak rozumiem, może być również skonfigurowany jako nieprzekazowy RTOS)
(4) uC / OS (podobny do FreeRTOS)
(5) ) starszy kod systemu operacyjnego / harmonogramu w niektórych firmach (zazwyczaj tworzony i obsługiwany przez firmę wewnętrznie)
(Nie można dodać więcej linków, ponieważ ograniczenia z nowego konta StackOverflow)
Jak rozumiem, nieprzenikliwy system operacyjny to zbiór następujących kodów:
(1) program planujący korzystający ze strategii nieprewencyjnej.
(2) udogodnienia do komunikacji między zadaniami, muteksu, synchronizacji i kontroli czasu.
(3) zarządzanie pamięcią.
(4) inne przydatne narzędzia / biblioteki, takie jak system plików, stos sieciowy, GUI itp. (FreeRTOS i uC / OS to zapewniają, ale nie jestem pewien, czy nadal działają, gdy harmonogram jest skonfigurowany jako zapobiegawczy)
Niektóre z nie zawsze tam są. Ale harmonogram jest koniecznością.