1.Tworzysz Mutexa żeby tylko jeden task miał dostęp do interfejsu SPI I2C ... 2. Tworzysz semafor na dany interfejs. 3. Tworzysz driver do obsługi interfejsu, najlepiej z obsługa przerwań od tego interfejsu. 1. Blokujesz dostęp do interfejsu mutexem 2. Zlecasz driverowi co gdzie ma wysłać lub skąd odebrać. Driver w tym czasie blokuje semafor aż do wykonania...
Definicja tcp_timer_needed() jest w pliku tcp_impl.h, żródła w timers.c. Plik tcp_impl.h zaincludowany w tcp.c z resztą tu nic nie zmieniałem. Po dopisaniu #include "lwip/timers.c" program się kompiluje owszem i wszystko działa ale mam potem problem z kompilacją gdy chce dodać liczniki softowe pod freertos a to za sprawą includeowania pliku timers.h....
Ściągnij z mojej strony przykład dla STM32 (którykolwiek), to zobaczysz jak to jest zrobione i jak powinno być zrobione... http://www.freddiechopin.info/pl/downloa... 4\/3!!
To chyba nie wina stosów. Jest różnica nazewnictwa funkcji obsługi przerwań pomiędzy FreeRTOS a biblioteką CMSIS. U mnie w identycznej sytuacji pomogło dodanie do pliku port.h (z katalogu SOURCE/portable/gcc/ARM_CM3) tych linijek: // To be complaint to CMSIS and ST standard peripherals library name convention. #define vPortSVCHandler SVC_Handler #define...
Witam W trybie FS możesz mieć mały problem z freeRTOS i USB jeśli chodzi o wysłanie danych z Stm32 do PC. W nim nie masz DMA i żeby wysłać dane musisz albo sprawdzać sam czy pierwsze 64 bajty zostały wysłane i potem wysłać następne (np co 1ms) lub zostawić jak masz zrobione w bibliotece od Stm, czyli oni włączają przerwanie Tx FIFO Empty Interrupt,...
Tutaj masz opisane jak należy postępować z NVIC dla FreeRTOS w CM3: http://www.freertos.org/index.html?http:... Ogólnie ustawiasz Priority Group 4. Przerwania, które wykorzystują funkcji systemowych przy Twoim ustawieniu 191 muszą mieć preemption priority od 'b' wzwyż. Ta wartość 191...
Ja od swojej strony dodam, że akurat jestem w trakcie tworzenia sniffera CAN na STM32 HY-MINI postawionego akurat na freeRTOSie, z postawieniem freeRTOSa na CM4 nie powinno być żadnych problemów bo jest masa przykładów na necie gotowych, więc nawet copy-paste wystarczy - a jak nie to porty są oficjalne gotowe i tylko trzeba odpowiednio skonfigurować....
Witam :) Pojawił mi się taki dość specyficzny problem w Eclipsie po podpięciu plików od FreeRTOS. Otóż przy pliku task.c pojawiają się błędy: DescriptionResourcePathLocationType Field 'listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) )' could not be resolvedtasks.c/yanosik_2/FreeRTOSline 2127Semantic Error...
Cześć, czy ktoś z Forumowiczów trudził się z usypianiem mikrokontrolera w zadaniu Idle? Mój problem wygląda następująco: podmieniłem przerwanie dla ticku systemowego z timera SysTick na przerwanie od alarmu RTC. W Idle Hook chcę wprowadzić uC w tryb uśpienia Stop. Na moje oko uC powinien się sam wybudzić po wystąpieniu przerwania od alarmu, a nie robi...
http://obrazki.elektroda.pl/7258579400_1... Witam. Chciałem dzisiaj przedstawić kolejny projekt z cyklu "inni mają - mam i ja" ;) Tym razem jest to miniaturowy sterownik ethernetowy - " uWebServer ". Układ zbudowany został w oparciu o mikrokontroler Cortex-M3 - STM32F103C8T6, do tego kontroler ethernetu "znany i lubiany" - ENC28J60. Całość...
Witam Dlaczego przy włączeniu zasilania lub po resecie STM32 zawsze spełniony jest warunek mimo, że nigdzie nie jest wywoływana funkcja osSemaphoreRelease() ? [syntax=c]static void SemaphoreTest(void const * argument) { osSemaphoreId semaphore = (osSemaphoreId) argument; for(;;) { if (semaphore != NULL) { if (osSemaphoreWait(semaphore , 0) == osOK)...
Mi zadziałało coś takiego: http://obrazki.elektroda.pl/1811887400_1... [syntax=text]symbol-file Release-v1.2/aboard.elf monitor arm semihosting enable monitor reset halt[/syntax] a openocd uruchamiam tak: [syntax=text]bin\openocd-0.7.0 -f interface/stlink-v2.cfg -f target/stm32f1x_stlink.cfg -c "$_TARGETNAME configure -rtos FreeRTOS"[/syntax]...
Rozwiązałem w końcu problem. Dodaje działający projekt FreeRTOS Eclipse dla STM32F107, który miga dwiema diodami w dwóch niezależnych zadaniach. Wszystkim, którzy mieli podobny problem załączam gotowy projekt który należy tylko skompilować. Może nie jest on kunsztem programistycznym ale działa. Pozdrawiam.
Z tego co widzę NVIC_SetPriorityGrouping() z core_cm3.h działa na odwrót tzn jak napisze tak : NVIC_SetPriorityGrouping(3); to oznacza włącz grup4. grup0 =7 grup1 =6 grup2 =5 grup3 =4 grup4 =3 grup5 =2 grup6 =1 grup7 =0 W FreeRtos jak ktoś ma: [syntax=c]#define configKERNEL_INTERRUPT_PRIORITY 255 #define configMAX_SYSCALL_INTERRUPT_PRIORITY 191[/syntax]...
Drogi Kolego FreeRTOS to system operacyjny na mikrokontrolery, taki odpowiednik Windows na PC. Stanowczo to odradzam, jeśli nie umiesz ogarnąć Adruino albo SeggerStudio. Polecam kurs STM32 Piotra Duby i STM32CubeIDE. Przerób wszystkie ćwiczenia - migające diody, ADC, i2c. Poza tym prosiłem o schemat. Na jego podstawie mogę stworzyć szkielet projektu...
Jeśli ma być tak jak ty to opisujesz to wywołanie powinno tak wyglądać static void VtaskINT1( void *pvParameters ) { xSemaphoreTake(xBinarySemaphore,0... while(1) { xSemaphoreTake(xBinarySemaphore,port... // Tutaj twój kod do wykonania } } lub static void VtaskINT1( void *pvParameters )...
Nic. Wszystkie wartości PRIGROUP od 0 do 3 mają takie same znaczenie czyli 16 grup i 0 sub. No właśnie w teorii też myślę że tak jest ale praktyka jest dla mnie trochę inna jeśli chodzi o FreeRtos. Na stronie http://www.freertos.org/RTOS-Cortex-M3-M... piszą wyraźnie: If you are using an STM32 with the STM32 driver library then ensure all the priority...
Mam funkcyjke która przeprowadza odczyt z karty sd/mmc nigdy mimo tego, że dokladnie tak samo jest tworzona strukturka do crc na stosie, co lepsze, w identyczny sposób jak w testreadblock. Info: STM32F103RET6 FreeRTOS 6.0.2 Main stack: 0x2000 //bylo mniej, zwiekszylem na test Heap: 0x6000 //tez bylo mniej i zwiekszylem na test Chciałoby sie zapytać...
Poczytaj w dokumentacji, sprawa jest tam poruszona. SysTick i PendSV mają być na najniższym, a inne przerwania - które używają funkcji RTOSa - nie mogą mieć wyższego priorytetu (niższego numerka) niż configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIO... lub configMAX_SYSCALL_INTERRUPT_PRIORITY. Obstawiam, że jedna z tych wartości nie jest używana i w ogóle jest...
SysTimer jest wykorzystywany w FreeRTOS jako zegar systemowy. Ale jeżeli potrzebujesz timera(dla zliczania czasu będącego wielokrotnością zegara systemowego) dla jakiejs innej biblioteki możesz wykorzystać vApplicationTickHook(), gdy tylko masz symbol configUSE_TICK_HOOK zdefiniowany na 1 (plik FreeRTOSConfig.h). Funkcja ta jest wywoływana w przerwaniu...
http://obrazki.elektroda.pl/4876103500_1... Witam wszystkich Tym razem lekki projekt, który w moim zamyśle ma być wstępem do zapoznania się z FreeRTOS-em oraz późniejszego, poważniejszego zajęcia się nim. Projekt ten, to demo chodzące pod kontrolą systemu operacyjnego FreeRTOS v7.3.0 dostosowanego do mikrokontrolera STM32L152, które...
Cześć, dotychczas podczas programowania wykorzystywałem jakieś IDE i automatycznie generowane projekty. Postanowiłem iść krok dalej i napisać własnego Makefile'a. Na razie wykorzystuję jeszcze skrypt linkera i plik startowy z IDE. Struktura projektu wygląda następująco: ├── Ac6LinkerScript.ld ├── Ac6Startup_stm32.s...
A co Ty piszesz o swoim RTOSie? Przecież wielokrotnie już w tym wątku napisałem, że przesadne skupianie się na prędkości jest bezcelowe (; Moja uwaga odnosiła się tylko do tego, że rzekomo taka a nie inna architektura FreeRTOSa jest podyktowana jakimiś ograniczeniami zasobów. Po prostu takie myślenie jest błędne, bo FreeRTOS po prostu _jest_ wolny,...
A uwzględniłeś czas w przerwaniach? Spróbuj wykonać każdy z testów z wyłączonymi przerwaniami, powiedzmy kilkaset razy i dopiero wtedy wylicz czas poszczególnego testu. Jeżeli różnice będą występować to jedyne wytłumaczenie, które przychodzi mi do głowy to takie, że być może część danych jest w innym segmencie pamięci. Wtedy przypadkowo możliwe że operacje...
Lepiej poczytać dokumentację FreeRTOSa. Jakiego konkretnie masz ARMa (Atmel, NXP itp.) ? FreeRTOS na pewno odpalałem na STM32, bodajże też coś z tym robiłem na LPC2148 i AT91SAM7Sxxx, tyle, że nie pamiętam czy to na 100% działało na dwóch ostatnich. Potem temat nieco zaniedbałem z uwagi na brak czasu. W każdym razie na STM32 działało mi to.
Jesli ostatni próbuje się wykonać memcpy, to na 99% jest to zapisz danych pod zero lub inna pamięc RO. Dowiedz się ile wynosi parametr pxQueue->pcWriteTo. Jeśli ta liczba to nie jest adres RAMu (0x20000000+ wskaznikiem , z ktorego korzysta RTOS. Skoro ten wskaznik u ciebie ==0, no to krzaki gotowe...
(at)kuczy Może nie będzie to to co chcesz usłyszeć i może wiele osób się z tym nie będzie zgadzać... Ale po jakiś tam różnych doświadczeniach i projektach powiedziałem jedno koniec z LwIP... Mi abym stwierdził to samo wystarczyło przeczytanie książki: "Mikrokontrolery STM32 w sieci Ethernet w przykładach" i analiza przykładowych kodów źródłowych. :)
Pytanie mam bardzo krótkie: jak dodaje się pliki do projektu w Eclipse? Uruchamiam port FreeRTOS dla STM32 i przyszła pora aby dodać do tego zestawu nowe funkcje. Mam plik eeprom.h i eeprom.c. Standardowo dodałem dyrektywę #include "eeprom.h" Oczywiście plik znajduje się w folderze gdzie sięga kompilator swoimi mackami. Wszystko fajnie tylko,...
Widzę jednak, że freeRTOS działa na AVRach: https://www.freertos.org/RTOS_ports.html W pierwszej wypowiedzi nie pisałeś, że chodzi o AVR. Odpuść sobie RTOS na AVR. Ma on spore ograniczenie no i RTOS wymaga "trochę" RAM, tak jak i wszelkie bufory (np dla UART) aby RTOS mógł "rozwinąć skrzydła" a AVR mają mało RAM poza Mega1284. Tak z ciekawości - próbowałeś...
Jeśli timer jest 16-bitowy to musisz dorzucić coś więcej - 16-bitów to zbyt mało. Licznik z którego korzystają run-time stats musi być 32-bitowy... Ja na STM32 mam to zrobione tak... 1. W FreeRTOSConfig.h mam: [syntax=C]... /*--------------------------------------... | Runtime...
W yagarto się kompiluje pewnie przez to, że ma on "wbudowane" sbrk() (inna konfiguracja newlib), a do CodeSourcery musisz dodać je samodzielnie. Rozmiar jest na 99% spowodowany funkcjami do obsługi wyjątków - niestety jednak się dodały. Tak czy siak nie jest źle - dla STM32 obsługa wyjątków to około 50-60kB. 4\/3!!
Pierwsza sprawa: void ToggleLedTask(void *pvParameters) { while(1) { xSemaphoreTake(xSemafor, portMAX_DELAY); vParTestToggleLED( 0 ); } } Powinno raczej wyglądać: void ToggleLedTask(void *pvParameters) { while(1) { if(xSemaphoreTake(xSemafor, portMAX_DELAY) ==...
Witam Kolegów Przy okazji problemu z jakim borykam się [url=http://www.elektroda.pl/rtvforum/vi... udało mi się poprawnie uruchomić na procesorze STM32F107 system freeRTOS. Jestem mega pozytywnie zaskoczony tym, że całość systemu udało mi się poprawnie odpalić w Eclipse w zaledwie 4 godziny. Do tej pory uważałem, że...
Zlecę skonfigurowanie dwóch projektów dotyczących sterowania urządzeniem audio na STM32F4xx w IDE na Windows (oraz ich późniejsze modyfikacje w ramach kontynuacji współpracy). Te dwa projekty mają podobną konstrukcję, są napisane w C, największa część ich funkcjonalności dotyczy przesyłania pomiędzy sobą po UART i SPI kilku typów komunikatów synchronicznych...
No właśnie tak myślałem, że im bardziej rozbudowany program (ma więcej co robić), to trzeba zwiększać częstotliwość przełączania kontekstu, więc i narzut rośnie. No ale dlaczego? Częstotliwość zmian kontekstu wpływa tylko na "responsywność" programu... W NuttX chyba jest 100Hz, a domyślnie 50. Muszę tylko trochę poszperać i zobaczyć czy jest RTOS,...
STM32 + FreeRTOS 7.1.0 + IRQ Siedze już dłuższą chwilą nad takim czymś. Mam zdefiniowaną kolejkę i zadanie: xQueueReceive definiuje po ilu taktach (czyli ms) zadanie ma przechodzić w stan ZABLOKOWANE. Co bym tam nie wpisał zadanie się nie blokuje i działa. Ilość znaków w kolejce się zgadza - po wyświetleniu ostatniego znaku z kolejki zwraca 0. Próbowałem...
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...
Pozycje w obcym języka są przydatne, ale dla tych, którzy już coś wiedzą na konkretny temat. Ucząc się od podstaw to tylko język ojczysty...(dla większości) Przejrzałem w/w pozycje - spis treści ładnie "wygląda" w pozycji "Mikrokontrolery STM32 w praktyce" - głównie interesuje mnie "instalacja i obsługa systemu operacyjnego FreRTOS". Ale patrząc po...
Aha. Ciekawostka - w rodzinie STM32 zatrzymując tok programu debuggerem - no teoretycznie powinniśmy zatrzymywać cały procek. JEdnak nie - na wyjściu PWM nadal mamy prawidłowy sygnał - timer kontynuuje pracę. Działa też DMA. Cuda wianki. Jeśli jeszcze o tym nie wiesz, to zainteresuj się rejestrem DBGMCU->CR 4\/3!!
Cześć, Platforma: STM32F769I-DISCO OS: FreeRTOS Środowisko: System Workbench for STM32 Próbuję zaimplementować PTP na podanej platformie, jednak od dłuższego czasu męczę się z regularnie pojawiającym się Hard Faultem. Jak zdołałem wybadać, błąd pojawia się prawdopodobnie, gdy upłynie czas jednego z timerów programowych, które są tworzone. Tworzonych...
Przyznam się, że jeszcze nie do końca się orientuję w tablicach wektorów i skryptach linkera. Zwyczajnie nigdy nie miałem potrzeby do tego zaglądać wcześniej. Wszystko co mam praktycznie bez zmian pochodzi z dema FreeRTOS dla płytki Premier. Ktoś to demo wpakował pod Eclipse. Miało być szybciej ale jak na razie tylko problemy z nim mam. W jakimś innym...
Cześć, Trochę za mało info dałem w pierwszym poscie. 1. Używam FreeRTOS. 2. Korzystam z DMA. Używam do obsługi karty SD zmodyfikowanej biblioteki SPL tak aby działało pod FreeRTOS (nie ja to wymyśliłem ale na tym etapie projektu nie mogę tego zmienić). Sam transfer DMA do karty podczas zapisu wykonuje się bardzo szybko. Zadanie, które zapisuje na karte...
Elektronika praktyczna: Dzięki za linki ale wydaje mi się ze jest to prawie to samo co w książce "Mikrokontrolery STM32 w praktyce" lecz przykład który był dołączony nie kompiluje się u mnie więc jeśli masz przykład do pierwszego artukułu to proszę o linka ; ). Na ChibiOS/RT natknąłem się ale wydawało mi się że FreeRTOS jest starszy i bardziej popularny...
Jeśli chcesz to zdebuggować, to możesz się "zaopatrzyć" w bleeding-edge-toolchain ( https://github.com/FreddieChopin/bleedin... ). Jest on kompilowany praktycznie tak samo jak toolchain ARMowy, z tym że biblioteki zawierają wszystkie symbole, a więc można je spokojnie debuggować i widzisz co się dzieje. Z Twojego opisu wynika, że problem...
Witam Dodałem lib STemWin520d_CM3_GCC.a w trzeba tylko skonfigurować Lcd i TouchPanel i program mi się skompilował. Jak znajdę trochę czasu to zobaczę czy to działa na - HY-mini STM32 emWimGUIBuilder V5.20 tworzy plik .c który można dodać do projektu. Pytanie czy to jest za darmo? bo te jest ewidentnie GUI Micrium. po dodaniu STemWin520d_CM3_OS_GCC.a...
Witam Jeśli chodzi o ustawienia (ze wszystkimi konfiguracjami PLL, AFIO, GPIO itd) to jest to plik system_stm32f2xx.c ze strony stm32. version V1.0.0, 18-April-2011. Jedyna zmiana to PG9 na PG10 + #define DATA_IN_ExtSRAM [syntax=c]//GPIOG->AFR[1] = 0x000000c0; GPIOG->AFR[1] = 0x00000c00; // GPIOG->MODER = 0x00080aaa; GPIOG->MODER = 0x00200aaa; // GPIOG->OSPEEDR...
Witam Przymierzam się do portowania FreeModbus na STM32 i mam kilka problemów wynikających z wymagań. Platform specifics (port.h) You should first check the file port.h and check the if the examples are already suitable for your platform. You must at least define the macros for enabling ENTER_CRITICAL_SECTION and disabling EXIT_CRITICAL_SECTION interrupts....
(at)Zari44 Mi sie bardzo nie podoba jak ty odbierasz dane z GPS, nie dosc ze parsowanie i to bardzo kiepskie zrobione jest w przerwaniu to masz bardzo duza szanse ze XXX_buffer_index wyjedzie poza zdeklarowany bufor w przypadku braku 0x0A Ja bym ten fragment doprowadzil najpierw do ladu i skladu np. dodal jakis ladny bufor kolowy i calosc parsowania...
Jest i na stronie FreeRTOSa jak wspomniał autor A special note for Cortex M3 users: Remember that Cortex M3 cores use numerically low priority numbers to represent HIGH priority interrupts, which can seem counter-intuitive and is easy to forget! If you wish to assign an interrupt a low priority do NOT assign it a priority of 0 (or other low numeric...
Ok, rozumiem. Chodziło mi o to, czy na bazie Target takie flagi sobie doda. Ale wydaje mi się, że to skutkuje tylko dodaniem pliku xml z ustawieniami, gdzie jest typ mcu, interfejs debug itp. Nie wiem czy na tej bazie zrobi cokolwiek więcej, np. doda sobie na bazie tego wskazanego typu MCU odpowiednie flagi.. sprawdzę... Natomiast teraz jeszcze się...
stm32 freertos stm32 freertos przerwanie stm32 freertos przerwać
wyświetlacz aparatu cyfrowego prostownik regulacja tyrystor atmega digital clock
Czy korek odpowietrzający ma otwór? Pobór prądu falownika Growatt SPF 3500