W kolejkę z freertos'a nie trzeba dodawać po znaku można wciskać ciąg znaków / typ złożony itd (nawet tak jest w przykładzie w manualu). Chociaż uświadomiłeś mi głupawość tego rozwiązania musiałby być jeszcze jeden wewnętrzny bufor do przepisywania wiadomości. Można, tyle że w kolejce i tak zapisujesz elementy o stałym rozmiarze. Dlatego normalna kolejka...
Witam! Pracuję obecnie nad zintegrowaniem stdio (streams) z różnymi peryferiami w ARMie (akurat jest to LPC1769) oraz z plikami (FatFS), a wszystko to "pod kontrolą" FreeRTOSa. Jak wiadomo (albo i nie), integracja taka to w głównej mierze napisanie własnych wersji syscalls - m.in. open, close, read, write. Za przykład problemu weźmy write - funkcja...
Ile zasobów na co potrzeba, jak używać dobrodziejst RTOSa jak multitasking. Tak postawione pytanie jest tak ogólnikowe, że niezbyt wiem jak można na nie odpowiedzieć inaczej niż ogólnie znanymi informacjami. Z zasobów to potrzebny jest na pewno jeden timer, zwykle SysTick. Dodatkowo oczywiście pamięć (; Najlepiej więcej niż mniej. Są RTOSy których...
to zrób globalne consty
W ten sposób dane są odbierane jednorazowo, niestety RTOS ich nie odświeża. Co to znaczy nie odświeża? Jezeli chcesz zeby ładnie w przegladarce ciągle się wyświetlało to musisz napisać trochę JS ajax-em słać do serwera ciągłe requesty. Inaczej to RTOS nic nie odświeży. Na wysłanie 1 bajtu kolejka to dość kosztowne rozwiązanie. Do tego ciągle wkładasz...
(at)Blue Draco - Szczerze powiedziawszy, nie wgłębiałem się zbyt w obsługę HD44780, jedyne co modyfikowałem, to pozbycie się R/W i wprowadzenia odpowiedniego timingu, jakby to powiedzieć, sprzęt który zdziałałem testuje się lekko mówiąc w setkach sztuk i nigdy nie napotkałem na problem z tą obsługą (nie na freeRTOS bo z tym dopiero zaczynam). Oczywiście...
Nigdzie nie jest inicjalizowna kolejka xQueueMessage xMessage. [syntax=c] void EXTI9_5_IRQHandler(void) { xQueueMessage xMessage; long lHigherPriorityTaskWoken = pdFALSE; if( EXTI_GetITStatus( EXTI_Line5 != RESET ) ) { xMessage.cMessageID = PUSH_BUTTON_NEW_GAME; //xQueueSendFromISR( xKeyQueue, &xMessage, &lHigherPriorityTaskWoken); EXTI_ClearITPendingBit(...
Zastanawia mnie praktyczny brak pytań dotyczących RTOS-ów. Ciekawe dlaczego amatorzy praktycznie nie korzystają z tego niezwykle przydatnego oprogramowania. Myślę że stoi za tym wiele mitów o RTOS-ach a szczególnie: 1. RTOS zajmuje strasznie dużo zasobów i zjada mnóstwo taktów procesora RTOS tak naprawdę nie zjada żadnych taktów poza przełaczniem wątków...
Witam, chciałbym, żeby ktoś obeznany wyjaśnił mi dlaczego podane na poniższej stronie stwierdzenie jest poprawne: http://www.freertos.org/Embedded-RTOS-Bi... Think of a binary semaphore as a queue that can only hold one item. The queue can therefore only be empty or full (hence binary). Tasks and interrupts using the queue don't care...
Dane przesyłane do tej kolejki są z funkcji TickHook, a wygląda to tak: [syntax=c]char *pcMessage = "Status: PASS"; xHigherPriorityTaskWoken = pdFALSE; xQueueSendFromISR( xLCDQueue, &pcMessage, &xHigherPriorityTaskWoken );[/syntax] Funkcja TickHook jest wykonywana z każdego przerwania systemowego, natomiast dane przesyłane kolejka są raz na określona...
Tu masz przykład tego o co pytasz: http://www.freertos.org/tutorial/solutio... Semafory to taka kolejka bez danych - służy właśnie do tego o czym mówisz. http://www.freertos.org/Inter-Task-Commu... Oczekiwanie na kolejkę/semafor może mieć timeout. 4\/3!!
Co do działania samego kodu, to nie ma problemów zadnych, jedynym jest fakt jednokrotnego wykonywania zadania bez ustawionych semaforów Rozumiem to i dlatego wyjaśniłem dlaczego tak się dzieje. Semafor domyślnie jest zwolniony dlatego task za pierwszym razem się wykonuje (po jego zwolnieniu) a za drugim już nie (bo jest zajęty) i czeka na zwolnienie...
Wg. opisu 3ci parametr xQueueReceive definiuje po ilu taktach (czyli ms) zadanie ma przechodzić w stan ZABLOKOWANE. Jest dokładnie odwrotnie - ten parametr to po prostu timeout - przez X ticków Twój task będzie zablokowany, jeśli nic nie ma w kolejce, a po tym czasie task zostanie wybudzony i uruchomiony. 4\/3!!
Z drugiej strony, zwłaszcza na zagranicznych forach, pada wiele zarzutów pod adresem tego systemu. Pisze się, że jest nieefektywny, bardzo powolny i bardzo ubogi w funkcjonalności (że posiada niby głównie taski, kolejki, semafory a brak mu np timerów). Po takiej opinii możesz od razu ocenić jej poziom, bo: http://www.freertos.org/RTOS-software-ti...
Nie ma jakiegoś uniwersalnego rozwiązania. Wiele kolejek to raczej trochę przekombinowane rozwiązanie, więc pewnie jakaś zmienna + mutex. A czy po zablokowaniu tego mutexa robić kopie czy ich nie robić, to już zależy od sytuacji (jak szybko musisz go zwolnić żeby reszta programu się nie przycięła nadmiernie). Ewentualnie jak masz bardzo dużo pamięci,...
software timery są oparte o kolejki lepiej poznaj kolejki. Praktycznie wszystko w FreeRTOS oparte jest o kolejki :)
Wiem, że nie jest to najprostszy sposób przedstawienia problemu z funkcją vTaskDelayUntil(), ale w żadnym innym miejscu, w którym z niej korzystałem problemu nie było. w najbardziej trywialnej wersji: [syntax=c]void vfoo_Task(void * pvParameters){ portTickType xLastFlashTime; xLastFlashTime = xTaskGetTickCount(); for(;;){ Clr_BUZZER; vTaskDelayUntil(...
Moim zdaniem wątku nie da się przerwać. Mogę się jednak mylić z tego powodu właśnie zadałem tu pytanie. Nie mylisz się. Micropython nie wspiera możliwości zatrzymania (terminowania) wątku, a gdyby była taka możliwość to skończyłoby się to uwaleniem całego programu. W ESP-IDF, na którym opiera się micopython nie ma też bezpośrednio możliwości zatrzymania...
OK pod FreeRTOS-em wszystko smiga jak ta lala ;) Kod przepisany z wykorzystaniem kolejek z FreeRTOS-a itd. Zamykam temat...
Moje pytanie dla upewnienia się. Rozumiem, że ustawiając priorytety przerwań od peryferiów należy stosować wartości z przedziału 5-15, mniejsze wartości zarezerwowane są dla systemu? Z grubsza tak. Dla przerwań możesz używać dowolnych priorytetów, ale te powyżej skonfigurowanej granicy NIE mogą używać funkcji FreeRTOSa (czyli semaforów, kolejek, ...)...
Więc proponuję Ci włączyć dane przerwanie dopiero po zarejestrowaniu semafora. Tak naprawde to powinieneś tak postępować z każdym mutexem,kolejką czy semaforem, niezależnie czy operują one w przerwaniu czy w tasku. Czyli najpierw tworzymy semafor, a potem uruchamiamy task, czy też włączamy dane przerwanie.
Teraz powiedzcie Koledzy jak do tego powinienem podejść przerzucając tego typu program do freeRTOS? Gdzie tu użyć semafora? Czy jest on wogóle potrzebny? Nigdzie. Należy użyć kolejki. Czym ten semafor różni się od "tradycyjnie" utworzonej zmiennej, którą np. chciałbym synchronizować wykonanie różnych zadań ("zadań" gdyż myślę jeszcze realiami aplikacji...
Witam tak czy siak nie chodzi mi tutaj o pomiar czasu, miało to być tylko orientacyjnie. Pętli for użyłem tylko żeby zobaczyć orientacyjny czas... dla pętli for W FreeRtos kopiując "kolejkę" używają właśnie memcpy, myślałem żeby użyć tam DMA, ale teraz się zastanawiam (stąd ten post ) czy goście z CodeSourcery nie zrobili tego memcpy na DMA, bo czas...
A nie jest to czasem SIM900/SIM300 - gdzie robisz to inaczej :) Przynajmniej ja robie inaczej tzn. podaje stan na PowerKey do czasu pojawienia sie informacji zwrotnej na pinie Status... wiec jakiejkolwiek petli nie mam :) Zobacz czy ten twoj modem nie jest czasem podobnie podlaczony do procesora... Ewentualnie mozna uzyc TaskDelay... ale nie musisz...
1.tak, zmienne to oczywiscie volatile (w zasadzie tylko ) TxHasEND_UART2- oznaczająca koniec transmisji -reszta taka być nie musi. 2. V6.0.5. rzeczywiście troche stara .. 3.tak, działa to jakby był to zwykły pooling. Ta funkcja to rodzaj gatekeep'era (nie najwyższych lotów). ----- włóż wskaźnik na dane do kolejki rozumiem, że kolejka w takim przypadku...
strncpy... a wczesniej malloc i memset (zerami)... z tym ze ja tutaj uzywam akurat pvPortMalloc (funkcja z FreeRTOS-a) dlatego pisalem ze nie bede wklejac kodu bo dalej sa uzytek kolejki itp. z FreeRTOS-a...
Obsługa SPI tylko i wyłącznie w przerwaniu od SPI i tylko dla celów drivera do SPI, a reszta zadań na SPI do kolejki i realizowana poprzez driver SPI napisany pod kątem obsługi kolejki zadań na SPI.
(at)damiano713 FreeRTOS jest oparty o zmodyfikowaną licencję GPL. Nie obliguje ona do publikacji kodu źródłowego aplikacji. Więc śmiało można FreeRTOSa używać. Używam tego Atmothreads w jednym z projektów i działa to nawet nieźle ale według mnie ma kilka wad: - jest przeznaczony na mniejsze procesory AVR - nie ma takiego wsparcia jak FreeRTOS -> mniejsza...
Wystarczy dołożyć funkcję, która zwróci wartość zmiennej. Tak jest zrobione - ta funkcja też nie ma dostępu do tej zmiennej, bo jest wywoływana przez wątek który ma taką a nie inną konfigurację MPU. Ja nie mówię o "dostępie" w znaczeniu widoczności zmiennej w kompilatorze, tylko o prawach dostępu w Memory Protection Unit. To jest specjalny port FreeRTOSa...
Zastanawiam się czy nie powinienem użyć Arduino FreeRTOS, ale nie wiem czy to jest rozwiązanie mojego problemu. Jeśli planujesz sobie odstrzelić kolana, to jest to doskonały pomysł. Próbowałem już timerów i funkcji mils, ale wydaje mi się że to nie jest właściwa droga W tym przypadku to najwłaściwsza droga. Problem należy podzielić na kilka niezależnych...
Witam, Coś takiego nie jest możliwe i chyba nigdy nie widziałem kolejki która by coś takiego implementowała... w freeRtos nazywa się xQueueOverwrite timeMessageQueue.tryPop(...); timeMessageQueue.push(...); Tak to właśnie zrobiłem na testy, z semaforami już kombinowałem. Właśnie patrzę na Twój przykład ConditionVariable... zaraz będę testował Pozdrawiam
Magiczne słówko na "v..."? Generalnie idea którą przedstawiłeś jest kiepska z założenia. W typowym przypadku wątek powinien na "coś" czekać, a przerwanie powinno to "coś" "dawać". Przez "coś" należy rozumieć jakiś typowy obiekt synchronizacyjny (semafor, kolejka, flaga [nie mylić ze zmienną globalną], ...), a który dokładnie to już zależy od tego jaki...
Mam wielordzeniowy 32-bitowy mikrokontroler pod freeRTOS. Kiedy przekazywanie danych między taskami na różnych rdzeniach przez zmienną globalną jest złym rozwiązaniem? (Proces na rdzeniu I wpisuje do zmiennej. W momencie, gdy nie ukończył jeszcze wpisywania, proces na rdzeniu II odczytuje. Część odczytanych bitów jest nowa część stara. Kiedy może się...
W zasadzie musisz zastanowić się jakie równoległe wątki mają być w systemie. Mogą się komunikować ze sobą tylko za pośrednictwem mechanizmów udostępnianych przez FreeRTOS (o ile dobrze pamiętam jest tam mechanizm kolejek). Do synchronizacji służą semafory. Jeśli potrzebujesz wiedzy o problemach związanych z synchronizacją zadań w OSie wielozadaniowym...
Dzień Dobry Potrzebuję małej rady. Jestem w trakcie realizacji pewnego projektu i mogę użyć callbacków i algorytmu karuzelowego lub przeprowadzić eksperymenty z systemem czasu rzeczywistego. Tak czy siak muszę nabrać doświadczenia w tej dziedzinie. Z tego co wstępnie wiem to wystarczy do projektu dodać odpowiednie pliki ".c" i ".h.". Podobno mogę wtedy...
Witam W jaki sposób można odczytać dane przesyłane z PC poprzez USB? Korzystam z dema FREERTOS-a lwIP_Demo_Rowley_ARM7. Z tego co się zorientowałem, to są tam dwie kolejki: static xQueueHandle xRxCDC; static xQueueHandle xTxCDC; No i problem polega na tym, że jeśli użyję xQueueReceive (xRxCDC ... ) w jakimkolwiek uruchomionym tasku, to USB całkowicie...
Diodki świecą :) Dodatkowo udało mi się uruchomić wyświetlacz i zrobić prostą komunikacje wyświetlacza z diodką na bazie kolejki. Wszystko fajnie działa. Teraz chciałbym spróbować przerwań, tylko wyczytałem że tu trzeba trochę pokombinować...mógłby ktoś na jakimś prostym przykładzie zademonstrować jak we FreeRtos-ie działają przerwania? Może jakiś kawałek...
ludzie, może odpowiedzcie autorowi na temat... . Wszyscy się wypowiedzieli, a nic z tego nie wynika... Semafory i mutexy to prawie to samo. Są one wykorzystywane w aplikacjach wielowątkowych - służą do synchronizacji wątków, i zapobieganiu tzw. data race . Załóżmy sytuację klasyczną - producent i konsument. Jeden wątek wkłada dane do kolejki FIFO,...
Witam, zlęcę napisanie programu na Atmęgę - dowolną, który opraty byłby o system FreeRtos. Chodzi o użycie kolejek i semaforów, dla osoby znajacej temat 30 min roboty. Szczegóły na priv.
No wtedy się nie da, tak jak napisałem. Tyle, że skoro dane są już w buforze, najprostszą optymalizacją jest nie kopiować ramek do buforów tymczasowych, tylko parsować fifo w locie, a payloadów też nie kopiować, tylko przetwarzać w locie. Ale oczywiście to juz zależy od implementacji, gdyż cm3 nie potrafi sprzętowo adresować %, więc dostęp do każdego...
Dorzucam obiecany krótki opis struktury kodu w module głównym. Przy tym stopniu skomplikowania postanowiłem skorzystać z systemu czasu rzeczywistego, wybrałem znany mi już FreeRTOS. Dzięki temu miałem możliwość podzielenia funkcjonalności na poszczególne procesy. Poniżej wklejam printout z wszystkimi procesami i drugi z socketami. https://obrazki.elektroda.pl/4477476100_...
Wszystko fajnie, pod warunkiem, że chce się używać STM32. Dodanie podstawowego wsparcia dla innych układów jest porównywalne z postawieniem projektu na FreeRTOSie - ot po prostu musisz mieć tablicę wektorów i skonfigurowane rozmiary/adresy pamięci i dokładny typ układu. We FreeRTOSie przecież wsparcie dla STM32 czy dla LPC tak samo nie istnieje - tablicę...
Witam U mnie akurat to pomogło... ale cóż co projekt to inne problemy. Ja osobiście nie zrobił bym nigdy tak jak Ty czyli odbierać dane w przerwaniu i zapisywać je do globalnej zmiennej. Jak już muszę używać jakiś globalnych zmiennych to używam to zapisu i odczytu tych zmiennych funkcji. np readCos, i writeCos. Wiem że tylko ta funkcja może mi coś zmienić....
Dlaczego nie można wywołać w normalny sposób przerwania, które powoduje tylko wysłanie danych przez xQueueSendFromISR? Jesli mozna to poprosze ten kawalek kodu. Jesli chodzi o USBSend to jego zadaniem jest właśnie wstawienie bajtu do odpowiedniej kolejki. Sprawa jest taka, że w tej chwili mam dodatkowe zadanie które tylko czeka, aż w buforze Rx znajdą...
to może powinieś spróbować, lukni na załącznik, większość kodu masz napisane, wszystkie rejestry zmapowane, coś Ci brakuje to sam możesz dodać, patrz ile czasu oszczędza, masz stos usb, stos tcp, do każdego procka luminary masz własnie takie API i one jest open source. Wszystkie funkcje dostępne, mnie np brakowało ustawinie przerwania od ilości bajtow...
"Tick frequency" dotyczy jedynie przełączania zdarzeń o tym samym priorytecie które są w stanie "gotowe" (czyli w zasadzie chodzi o "round-robin scheduling"). Wszelkie* operacje na "synchronization primitives" (semafory, mutexy, kolejki, delay, sekcja krytyczna, ...) powodują natychmiastowe przełączenie kontekstu (jeśli jest ono oczywiście konieczne)....
Witam Mam zamiar napisać w FreeRTOS przykładowy program obrazujący działanie systemu RTOS (rózne reakcje programu na jakies dane wejściowe). Uruchomiłem przykład Demo win32-minGW w eclipsie, lecz że jest on rozbudowany, w pliku main zacząłem od przykładu z zadaniami i kolejką. Na podstawie przykładu z filmiku: /* Standard includes. */ #include <stdio.h>...
Nie za bardzo rozumiem o jakich przerwaniach piszesz. Slave SPI (abstrahując od przerwan błędów itd) ma przerwanie wtedy kiedy rejestr wysyłki jest pusty albo kiedy coś otrzymał (pominę kwestię fifo). Jeżeli jest to przerwanie od pustego rejestru TX to może tam wpisać dane, która zostanie wysłana przy następnej transmisji mastera. Jeżeli jest to od...
Od kilku dni siedzę nad programem opierającym się o FreeRTOS dla Atmegi32/128. Mam niesamowity problem z dobraniem wielkości stosu dla każdego z tasków. jakimi regułami się kierować? Obecnie mam 8 tasków. Dla każdego przydzielony stack wielkości 130. Mam też 4 kolejki komunikatów, nie przekraczajace wielkością 6 bajtów kazda. Heap size ustawiłem dla...
hmmm chyba sie nie myle bo co to jest jak nie fragment parsowania linii NMEA: header[0] = header[1]; header[1] = header[2]; header[2] = znak; if ((header[0] == 'G') && (header[1] == 'G') && (header[2] == 'A')) { new_ggaHeader_flag = 1;...
freertos biblioteka freertos flash freertos rejestry
iveco daily ciśnienie oleju brother wolno drukuje karta pamięci uszkodzona
bateria niteo kabel brake radio
Krups ekspres – miga lampka akcesoria, EA, Evidence, Intuition, Quattro Force, czujniki, usterka Regulacja hamulca ręcznego w Passacie B5 1.9 TDI 90KM kombi