Witam Szybko sklejone ale powinno działać Źródła FreeRtos6.1 (katalog RtosV611) + Freddie Chopin (katalog Setup) i makeFile w Tasks\task1 powinien ci się uruchomić vTask1. Jak rozpakujesz dodaj folder out i skompiluj Pozdrawiam
Po namowie kolegi Freddie Chopin przeszedłem na środowisko eclipse. Wykorzystałem gotowy przykład z FreeRTOS-a. Powyrzucałem wszystkie "zbędne". Chciałem zostawić tylko sam system i przełączanie diodek. Po kompilacji mam bardzo duży plik wynikowy bin. Dodam że próbowałem skompilować przykład dla IAR i całość bez usuwania żadnych dodatkowych procedur...
Niestety do takiego HardCotu żaden się nie nada. Możesz dokładniej dlaczego sie nie nada, chodzi o odpalenie RTOSa? Dodano po 12 Co do tego co Freddie Chopin wymienił to najlepsze były by STM32. A jakieś konkretne powody? PIC32 ma port na FREERTOS Dodano po 45 Przejrzałem trochę tych ST32, i faktycznie np. STM32F103RBT6 wydaje się być ok
Podaj jeszcze jaką wersję pliku portmacro.h używasz. Ja nie widzę w źródłach FreeRTOS'a wersji dla MCU: STR91x dla kompilatora:GCC (jedynie dla IAR). Musiałeś coś pominąć, bo #define wybierające wersję portmacro.h nie jest "zdefiniowane" w tym, co wysłałeś. Skrypt linkera wygląda na standardowy, ale patrząc na STR91x_FLASH.icf w katalogu wersji IAR...
Ne wiem, po co do takiego zadania angażować RTOS, chyba, że docelowo ma być tego duo więcej. Skoro wiesz, co i jak trzeba zaprodramować - po prostu zaprogramuj timer, ADC i DMA, obrabiaj wstępnie próbki w przerwaniu DMA, a resztę przetwarzania zrób przez PendSV (obniż priorytet do najniższego), bez pętli głównej. Wiesz calosc dekodowania i wysylania...
Zrobiłem to bez przerwań. Program może nie działa idealnie (mam problemy z odbiorem znaków - jutro na tym się skupię), ale udaje mi się wysyłać at komendy do modułu (np. zmienić nazwę modułu, czy pin) oraz przesyłać stringi przez bluetooth na laptopa. Poniżej funkcja wysyłająca i odbierająca pojedynczy znak (w tym wypadku zrezygnowałem z bibliotek ST...
zasadniczo taska który to odbiera non-stop, bez żadnych delayów. Albo DMA RX z włączonym CIRC i w kółko odbierać to do zdefiniowanej globalnie tablicy. Serwer natomiast brałby sobie z tego miejsca zawsze najświeższy pomiar... UART nie ma w sobie żadnego magicznego buforowania - jak nie odbierasz, to dane lecą do śmieci Albo wywołują OVR i UART się...
Witam Może używasz innego skryptu linkera lub StarUp dla Keil i Ecpilse. W main.c masz dwa vTickTask1 i vTickTask2. Zobacz czy to ci działa (cały Setup procesora dałem od kolegi Freddie Chopin) + Rtos611 (ostatni ze strony).
Chodzi o dokumentacje FreeRTOSa zapewne. Teoretycznie jest "fajna" i zawiera dużo niuansów. W praktyce nigdy jej nie widziałem na oczy :) większość wątków musi być PRIVILEGED albo znowu konieczna jest ciągła rekonfiguracja MPU i dostęp globalny do większości zmiennych (żeby pobierać ich adresy)... przecież wątki żyją cały czas, więc zmienne odłożone...
Rzeczywiście, działa! Nie wpadłbym na to :) (at)Freddie Chopin , dzięki po raz kolejny! Zamykam temat
FreeRTOS bedzie potrzebny do innych zadan i komunikacji, ja tu pisze tylko o właczeniu modemu i ze musze mieć jakieś opoznienie/ odliczenie czasu Jeśli będzie jakiś wątek obsługujący komunikację, to wszystkie takie operacji powinny się znaleźć własnie w takim wątku, na samym początku, przed ewentualną pętlą. 4\/3!! wlasnie o to chodziło, a nie byłem...
Większa. Skoro przy korzystaniu z FreeRTOS ilość cykli wychodzi _MNIEJSZA_ niż bez niego, nie do końca o to mi chodziło. Może być różna ilość przerwan w kazdym z przypadkow. Ale jak wylaczyl przeewania to problem jakby jest nieistotny. Teraz jedyna metoda to umiescic wszystkie zmienne w tym samym bloku SRAM.
(prawidłowy dla STM32, u Ciebie przerwanie SVC ma inną nazwę niż "standardowa" dla STM32) SVC_Handler SVCall_Handler 4\/3!!
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
Zwróć uwagę, że tam komuś działa, ale nie we wtyczce GDB Hardware Debugging, tylko w Zylin. 4\/3!! No kurcza ale to jest z tego linka co Podałeś i pisze że konfiguruje OpenOCD. No ale racja screen mówi co innego to ja już nie wiem ;)
Freddie na Ciebie jak zwykle można liczyć:) Wszystko jest w tutorialu FreeRTOSa. Ukarz mnie... Zaledwie wczoraj pierwszy raz odpaliłem freeRTOS... :) Dzięki za wskazanie drogi. Jak zwykle instrukcje do czegoś czyta się na końcu... Ehh ta nasza mentalność, sam się na nią właśnie złapałem :)
Co więcej, jeśli chciałbym zrobić prymitywną synchronizację za pomocą flagi volatile, to też przestają działać przerwania od DMA (cała reszta programu chodzi). EDIT: przy synchronizacji flagą jakimś sposobem gubione jest pierwsze przerwanie, więc jeśli za pierwszym razem nie czekam na flagę, to potem już idzie, tyle że się trochę UART sypie - po 14tu...
Co one robią i czego wymagają - nie wiem, ale wcale bym się nie zdziwił, gdyby się "nie lubiały" z dowolnym innym RTOSem niż ten przygotowany przez producenta układu. Komercyjne RTOS dla ESP32: https://rtos.com/solutions/threadx/real-... https://www.zephyrproject.org/ http://www.riot-os.org/ Dodano po 1 Jeśli chcesz sobie ironizować,...
Przecież main() jest we flash. Jezeli flash jest. A w wielu go nie ma. Chodziło mi IMO trochę za daleko posunąłeś się z krytyką freeRTOS-a. To nie jest niedoróba - tylko świadomie wybrana metoda. Ja uważam że prawidłowa.
Czemu w opisie instalacji IDE mieli by pisać coś o instalacji toolchaina? W opisie instalacji IDE dla freeRTOS'a powinni chyba zacząć od początku. Zakładają że Yagarto już jest a piszą o instalacji Javy?
if( EXTI_GetITStatus( EXTI_Line5 != RESET ) ) Przyjrzyj się dobrze. 4\/3!! Dzięki za zwrócenie uwagi, jak to jeden nawias może namieszać :D
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ę wektorów, skrypt linkera, startup, Makefile (czy konfigurację...
(at)Freddie Chopin , już się uporałem z tym problemem. Tak myślę :) Faktycznie problem tkwił w złej implementacji jednej z funkcji. Działa! Dzięki za pomoc! W pliku FreeRTOSConfig.h dodałem tę linijkę: stm32f7xx_it Nie wiem, może da się to zrobić w jakiś bardziej elegancki sposób? (at)Freddie Chopin , dzięki jeszcze raz za pomoc! Zamykam temat.
niemniej jednak układ na pewno nie powinien się sam zatrzymywać. Masz na myśli to przechodzenie do stanu halted przy wywoływaniu reset run? Jeśli tak to przychodzi Ci może do głowy co może byc tego przyczyna?
Tak, Freddie Chopin ma rację, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIO... oraz configMAX_SYSCALL_INTERRUPT_PRIORITY powinny być spójne, ponieważ odnoszą się do tego samego lecz różnią się przesunięciem bitowym w celu stosowania tych flag w funkcjach bibliotecznych lub bezpośrednio w rejestrach.
Dlatego polecam Ci rozpoczęcie od pliku który działa, a potem zajmowanie się tworzeniem swojego. Działający makefile mam, np ten dostępny razem z demem FreeRTOS na dana platformę i to nie jest problem. Tylko strasznie niewygodnie dostosowuje się do innego kodu niż demo. A że kod źródłowy aplikacji w moim przypadku rozmieszczony jest na różnych poziomach...
(at)jaskol Dlatego warto olac gotowe IDE :) wez sobie sciagnij czyste Eclipse dla C/C++ jakis tolchain + plugin do Eclipse i tyle. Ja tak uzywam i wszystko smiga bez najmniejszych problemow. Nie wiem po co tyle kombinacji z jakimis gotowcami, do tego do F4 wybierz tolchain ktory wspiera FPU :) Jak czegos brakuje w takiej konfiguracji to dociaga sie...
Masz debugger? Powyżej piszesz o HardFault, ale czy jesteś PEWNY, że właśnie to się dzieje? Hard fault zwraca w moim przypadku CFSR = 1400 BFAR = E000ED38 Czyli wygląda to na błąd związany ze stosem? Dobrze patrzę?. Program działa pod FreeRTOS 7.3.0, a zmiana wielkości stosu dla task'a nic nie daje :(. Wywaliłem wszystko zostawiając sam CMSIS + 3 instrukcje...
To jest normalny objaw? Nigdy nie używałem semihostingu, ale przypuszczam że zachowanie które obserwujesz nie jest normalne Chyba musze dokladnie przestudiowac te opcje linkowania bibliotek i toolchain bo chyba cos sie tam dzieje czego nie widze i jest poza moja kontrola.
(at)Freddie Chopin No nie całkowicie. Często mamy do czynienia z warunkową kompilacją typu: [syntax=c] void fun(int *a, int *b) { #ifdef CONFIG_FEATURE_ENABLED //do something ... #else (void)a; (void)b; //do something else #endif }[/syntax] Tak czy inaczej fajnie wiedzieć, że w C++ jest coś takiego:)
grko , same się dodały :) Pomyślałem o tym samym zanim napisałeś z prośbą o kod. Wywaliłem cały folder z testami i pojawił się wtedy kolejny błąd, że nie ma pliku "lwipopt.h". Nie bardzo wiem gdzie go dodać i jak ma wyglądać... EDIT: OK, udało się. Program się kompiluje. Dodałem plik "lwipopt.h" i wywaliłem wszystko to, co powodowało błędy, a nie było...
Co do lock i unlock, to proponuję raczej sekcję krytyczną, chyba że alokujesz dynamicznie pamięci z kontekstu przerwania (to wtedy musi być blokada przerwań) lub nigdy nie wykorzystujesz selektywnego "zawieszania" tasków (wtedy może być suspend-all). Suspend all jest wywoływany w wewnętrznych funkcjach FreeRTOSa takich jak na przykład delay, więc lepiej...
Swego czasu aby STemWin działało, trzeba było w STM32 właczyć układ peryferyjny odpowiedzialny za liczenie CRC. Służyło to temu, że w STemWin był wkompilowany na stałe test czy owe CRC działa, co miało potwierdzić, że biblioteka używana jest z STM32, a nie np. z LPC17xx. Zobacz jakie wartości są w tych adresach 0x80069c2 i 0x80069ca. Dzięki Freddie,...
Problemowi ukręcono łeb ;] Skoro całość sypie Ci się gdzieś we wnętrzach FreeRTOSa, to pewnie teraz coś zajeżdża Ci zmienne samego RTOSa, co w pewnym momencie powoduje sypnięcie się całości. Zgadza sie... dokladniej robił to DMA, który dzięki temu, że był mu podawany lipny dest, nadpisywał danymi z karty cały .bss modułu tasks... readblock na pewno...
A kto czyści flagę przerwania? Bo tutaj nie widać... W zasadzie we wszystkich przykładach wykorzystania przerwania z UARTA nie było nigdzie czyszczenia flagi, więc założyłem, że jej nie potrzeba... gdzieś czytałem, że flaga jest automatycznie czyszczona, ale jestem laikiem więc mogę się mylić. Wdzięczny byłbym za wszelkie wskazówki jak do tego podejść....
zignoruj to co napisałem powyżej... Problem jest spowodowany tym, że masz w drzewie projektu dwa pliki o tej samej nazwie Tak są a raczej były 2 pliki o tej samej nazwie, wiedziałem nawet o tym ale jakoś nie skojarzyłem problemu.. Po zmianie nazwy pliku jest spokój - kompiluje się.. Ok, ale jeżeli chodzi o zaznaczanie obszarów na szaro to po operacjach...
Jakie Bez tego mechanizmu ciężko ogarnąć takie tematy jak zagnieżdżanie przerwań czy zmiana kontekstu po przerwaniu. Idea jest taka, że w twoim przypadku SysTick musi mieć wysoki priorytet (najwyższy w "systemie", w znaczeniu w RTOSie), tak aby tick był regularny i się nie gubił. Przełączanie kontekstu na najwyższym priorytecie zaś jest średnio zabawne,...
Bardzo ważne jest naprawdę dobre opanowanie programowania w C/C++ i nie mówię tutaj o podstawach. Raczej bym to uogólnił: nie ważny jest język programowania tylko umiejętność się liczy. W Pascalu czy Brainfuck'u da się napisać dobry program - tylko zależy od umiejętności planowania. Język programowanie jet tylko narzędziem wyrażania własnej woli. Też...
Implementacja funkcji _sbrk_r() (funkcjonalna) i pozostałych syscallsów (niefunkcjonalne - "stuby") do pobrania z mojej strony w dziale Download > ARM > Różne > syscalls. Funkcja _sbrk_r() dopasowana jest do skryptów linkera z przykładów, w przykładzie dla LPC2103 mogą występować jakieś minimalne różnice w nazwach, bo ten przykład jest dosyć stary....
SOA#1 - u mnie działa (; Ale czyste lwIP, a nie ten staroć który dołączają producenci mikrokontrolerów do swoich paczek. No wiem zabrzmiało to i fakt może LwIP się obecnie zmienił bo gdy zaczynałem zabawę miał wiele wad... Teraz jak mam już dobrze opanowany w/w stos nawet nie miałem ochoty przestawiać się znowu na LwIP. Zwłaszcza ze względu na to że...
Pewnego dnia naprawdę chyba zrobię fork tego projektu i zmienię te głupawe nazwy, bo przecież tego się nie da używać! Te wszystkie "pv", "x", "tsk" i tym podobne bezsensowne przedrostki niczemu nie służą. Dlaczego tak myślisz? Ja przykładowo - jak pisze program (dajmy na to w VB) zawsze oznaczam sobie formularze przedrostkiem frm, buttony - przedrostkiem...
Po wątku tym widać, że osoby kwestionujące zasadność istnienia RTOSów po prostu nie rozumieją ich możliwości... A ja po dzisiejszym dniu bym takie osoby kopal po tylkach ;) Aktualnie w pracy mam na tapecie taki kod bez FreeRTOS-a na H8/300 z wlasnymi scheduler-ami :) Kod w zasadzie z brakiem dokumentacji i IMHO do napisania na nowo (ale na razie nie...
Jakoś nie wydaje mi się, żebyś co 100 ms miał odświeżone wszystkie dane ze struktury zajmującej 80 kB. Po prostu to nie powinna być jedna struktura tylko wiele mniejszych. To że masz tylko jedną zmienną globalną naprawdę nie oznacza że to jest program lepszy od takiego który ma ich ze 100, ale każda po 4 bajty. Zgadza się, nie odświeżam całej struktury...
Generalnie nie ma się czym przejmować (; Obawiam się, że to nie pierwsza nieścisłość w artykule o toolchainie którą znajdziesz - tekst ten jest w końcu sprzed 5-ciu lat... Witaj! Może zechciałbyś go uaktualnić, napisać od nowa? Żeby nie za darmo to może niech będzie jak z manualem od freertos-a, ze znakiem wodnym za jakąś kwotę? Tylko najlepiej z punktu...
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...
Pokaż mi jakikolwiek komercyjny czy darmowy kod NIE-BĘDĄCY biblioteką do układów peryferyjnych od ST, NXP, Atmela itd., w którym jest coś podobnego, chętnie zobaczę. LWIP (biblioteka - od Ethernetu) * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *...
Jedyny problem jest taki, że zmienisz tym sposobem lokalizację tylko jednego stosu (np. tego od przerwań) - na stosy wątków wpływ masz minimalny. To fakt, choć jeśli chodzi o FreeRTOS, to wspomnianymi wyżej narzędziami stwierdziłem, że jest w miarę ok. Taski są w moim odczuciu na tyle przewidywalne, że jeśli są określone z zapasem za pomocą watermarków,...
Kolejne podejście: .ARM.exidx 0 (NOLOAD) : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } Ewentualnie bez "(NOLOAD)" No to zadziałało - francja elegancja :) Dzięki. Błędy które widzisz są dla mnie nie do końca jasne - wszystko wysypuje się, gdy chcesz załadować program do procka z tego co widzę. Jak duży jest ten plik po...
(at)grko & (at)tmf To jak są traktowane odpowiedzi na temat HAL itp. np. odnośnie "cudownego" wynalazku od ST - wszyscy wiedzą. Mało kto chce pomagać bo nikt do końca nie wie jak to działa ;) Tłumaczone było to wiele razy. Programowanie mikrokontrolerów to indywidualny wybór danej osoby jak to robi i czy używam bibliotek czy sam je pisze (jak ma na...
Większość rzeczy to nakładki, które mają ułatwić programowanie Pomoc jest zawsze mile widziana ^^ byle tylko jasno człowiek wiedział czy wszystko stroi. Windows 10 jako standard na KAŻDYM komputerze - Dobra praktyka ? Hej, dzięki mój błąd ;) już zmieniłem. Zakładam, że jesteś biegły w pisaniu C lub C++ na poziomie średnim. Jeżeli nie, to jedną z gorszych...
chopin stm32 sprzedać chopin freddie chopin
sherman wyłącza wyłącznik pozycja agregat sterowanie piecem
uszkodzona bateria roweru elektrycznego at9100 bc557c
Peugeot 508 – awarie i naprawa lampy LED, typowe usterki, diagnostyka, wymiana FIDEK G-12 producent – First Audio Manufacturing (Guangzhou) Ltd., marka FIDEK, sprzęt audio