jądra ARM7.

Witam.

Popędzam SAM7 używając FreeRTOS. FreeRTOS wymusza na mnie wejście do głównej pętli schedulera w trybie Sypervisor.

Większość startupów do SAM7 (od groma na sieci) ustawia na koniec przed wskoczeniem do main tryb User.

Teraz pytanie #1:

a) Czy ARM7 umożliwia wejście w tryb User, ustawienie stosu i powrót do Supervisor? A może ->User to bilet w jedną stronę? Próba ustawienia z powrotem trybu Supervisor będąc w User nie powiodła się (co wydaje się logiczne).

b) Czy w ogóle we FreeRTOS powinienem przejmować się stosem w trybie User czy może jądro FreeRTOS go prawidłowo przydzieli? Bo jeśli ustawie ten stos to nie wrócę do Supervisor i nie mogę poprawnie uruchmić schedulera. Z drugiej strony olanie przeze mnie stosu w trybie User nic nie popsuło, scheduler działa, wątki się kręcą.

Reply to
Sebastian Bialy
Loading thread data ...

Przechodzenie z trybu User do Supervisor jest niemożliwe wprost... możliwe przez przerwania ;)... programowe ;>..

Pozdrawiam Konop

Reply to
Konop

OK, tak myślałem. Czyli większość startupów do SAM7 nie nadaje się do pracy z FreeRTOS ;)

Nie chodzi o hackowanie, po prostu wywaliłem kod ustawiający stos w trybie usera w startupie i wchodzę od razu jako Supervisor do main(). I działa poprawnie choć nie mam 100% pewności że robię to poprawnie.

Reply to
Sebastian Bialy

Jest to OK, jak nie uzywasz trybu "user" to nie musisz ustawiac stosu.

Pozdr AK

Reply to
AK

A propos RTOS-a na ARM-y i podobne - ostatnio trafilem na cos takieg:

formatting link
sie koms przyda.

Pozdr AK

Reply to
AK

FreeRTOS używa chyba w moich wątkach. I nie wiem na ile jest w tym moja odpowiedzialność, na razie po cichu zakładam, że odpalam go jako Supervisor i reszta nie należy do mnie.

Reply to
Sebastian Bialy

Znalazłeś już jakieś zalety nad FreeRTOS? Jestem na etapie w którym mogę podjąć dowolne decyzje co mam mieć do obsługi wątków i może warto a doświadczenia mam nieduże żeby to samodzielnie ocenić.

Reply to
Sebastian Bialy

Sebastian Bialy pisze:

Nie. Supervisor może wszystko a więc może też przejść w tryb User. W drugą stronę natomiast powrót jest możliwy tylko przez reset procesora, przerwanie lub SWI.

BTW: Polecam przyjrzenie się systemowi Nut/OS. Ma podobne możliwości jak FreeRTOS (semafory, kolejki komunikatów itd) ale za to naspawane od groma gotowych sterowników - od UARTu przez SPI, Ethernet, obsługę kart MMC aż do systemu plików FAT. Ma też stos sieciowy TCP/IP (z którego oczywiście nie trzeba korzystać). Natomiast podobnie jak FreeRTOS cały czas pracuje w trybie supervisor.

Reply to
Adam Dybkowski

Supervisor czy user w sumie żadna różnica zapewne, natomiast od Nut/OS odrzucał mnie zawsze ten głupi konfigurator. Czy jest nadal potrzebny czy można konfigurować całość za pomocą jakiś plików? Jestem konsolowcem i wole mieć całość w plikach źródłowych w SVN niż wyklikaną. I czy ma port na Linux/Win32 (w celu debugowania kodu). FreeRTOS chyba nie ma czym mnie negatywnie zaskoczył i zastanawiam się czy jednak z niego nie zrezygnować.

Reply to
Sebastian Bialy

O teraz zauważyłem dopiero - NutOS jest tylko cooperative (?). A ja potrzebuje pre-emptive (taka natura aplikacji docelowej).

Reply to
Sebastian Bialy

Np. ma port pod windowsa - moze sie przydac do debugowania/testow W zrodlach widze za ma w tej chwili porty tylko na kompilator GCC

Pozdr AK

Reply to
AK

Sebastian Bialy pisze:

"Głupi konfigurator" wciąż jest, ale istnieje także jego wersja konsolowa. Zapuszczasz skrypt i - voila! - konfiguracja zrobiona.

Pod Linuxem podobno Nut/OS (i jego konfigurator graficzny) śmigają bardzo ładnie.

Reply to
Adam Dybkowski

GUI czy konsola - dalej to głupi konfigurator ;) Wolałbym normalny makefile z parametrami. Zapewne da się przerobić. Niestety jak już wspomniałem - cooperative - odpada.

Konfiguratorom mówimy nie. Natomiast port na linuxa mile widziany.

Reply to
Sebastian Bialy

Sebastian Bialy pisze:

Heh, przy konfiguracji Nut/OS'a jest tyle możliwości że parametry makefile'a nie zmieściłyby się na jednym ekranie. Jeżeli masz Linuxa to pewnie przerabiałeś nieraz konfigurację kernela (make menuconfig) - ten konfigurator Nut/OS'a jest prawie jak "make xconfig", z tym że masz dostępną całą masę gotowych konfiguracji do wyboru.

Reply to
Adam Dybkowski

Tak wiem, ale widzisz: zdecydowanie nie chcę trzymać na wpół skompilowanych częsci NutOSa w SVN. Mają tam siedzieć źródła, mam wydać "make" i dostać *.hex. Co się w środku dzieje mnie nie interesuje, w szczególności nie ma prawa być interaktywne (cała konfiguracja jest w SVN). I co ważne za każdym razem pełnego budowania musi być kompilowane od zera (taka zasada przy developingu) . NutOS zawsze mnie pod tym względem denerowował (jakiś czas temu używałem go na atmega) dlatego pytam czy jest trzecia, "normalna" droga do kompilacji poza klikalną (czy to myszką czy menuconfig). Ilośc parametrów nie musi mieścić się na ekranie ;)

Ponadto NutOS jak mówie odpadł ze względu na model multitaskingu który mi nie odpowiada. Na placu boju ciągle tylko FreeRTOS :) Żeby było śmieszniej prawie wcale nie potrzebuje RT, ale jakoś wszystkie OSy na uC starają się być takie.

Reply to
Sebastian Bialy

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.