A rozmiar stosu ustawiłeś?
Rozmiar stosu? 4\/3!!
http://obrazki.elektroda.pl/1647269200_1... Witam wszystkich Tym razem chciałbym przedstawić jeszcze programowy projekt odtwarzacza i dyktafonu zrealizowany na STM32F4Discovery. Pisząc ten program, sporo rozwiązań wykorzystałem z mojego poprzedniego projektu małego odtwarzacza MP3 na ARM-ie, ale dołożyłem też dużo nowości i usprawnień....
Szukałem, jednak nie potrafię znaleźć co to dokładnie jest te wyrównanie do 4 bajtów. Szukaj pod hasłem attribute aligned. Program wskakuje mi często do Default Handler. Rozmiar stosu już ustawiłem na dużą wartość, nic to nie pomogło. Może to być tego wina? Zdarzają się przypadki, że przyczyną wyjątków jest "niewyrównany" dostęp, ale w tym przypadku...
Zwiększyłem rozmiar stosu w CubeMX przy generowaniu projektu Napisałem Ci chyba, że to tak naprawdę nie jest rozmiar stosu bo na nic realnie nie wpływa. Tak że zwiększanie go ma taki skutek jak umieszczenie komentarza w kodzie. Co masz w Device Manager? i rozpoaczęciu debugowania Ale nie zatrzymujesz programu? Nie zatrzymuję. Klikam tą zieloną strzałkę...
https://obrazki.elektroda.pl/6678526600_... https://filmy.elektroda.pl/59_1553290096... https://obrazki.elektroda.pl/6296500900_... https://obrazki.elektroda.pl/9260337200_... Zapewne nic odkrywczego ale wolnej chwili udało się połączyć parę projektów i wyszło takie coś. Jeśli chodzi o hardware to...
O rozmiar stosu, bo printf to lekko licząc zwykle sobie zajmuje z 750B. No i jeszcze dochodzi wyrównanie stosu do 8, co również może być czasem problemem przy printf(), choć tutaj akurat nie. Proponuję na początek zamiast printf() stosować iprintf(), bo raczej żadnych zmiennoprzecinkowych liczb nie będziesz używał w takim zastosowaniu. 4\/3!!
Rzeczywiście. Rozmiar stosu mam 1024 więc się przepełnia. Dzięki. Skoro stos ma rozmiar 1024B to pozostałymi 111kB SRAMu są nie używane? Co stoi na przeszkodzie na rozszerzeniu stosu na cały zakres pamięci? Nie ma innego sposobu niż globalna zmienna? Czasami potrzebuję zapisać dużo danych tylko w obrębie jednej funkcji. Natomiast Malloc wydaje mi się...
stos o rozmiarze 1024, linker z drobnymi zmianami (dodałem kilka własnych sekcji, o wyrównaniu pamiętam. definicja text pozostała bez zmian. Wszystko oparte o pliki freddiego. Gdy obsługa przerwania zawiera jedynie zapis do DR wszystko jest ok, gdy wygląda jak wcześniej podałem (a to działało na 103) coś się sypie. oba stosy o rozmiarze około 5k i coś...
Z tym SRAM właśnie chyba się mylisz, choć ja tego do końca nie rozumiem. Ale wydaje mi się, że właśnie ten bufor fb siedzi z SRAM. A gdzie jest stos? no właśnie pisałem. Ze wszystko umieszczona w CCRAM. data bss zero stosy stertę. A w zwykłym RAM trzymasz tą ramkę a co wiecej nie wiem
Ten fragment kodu pisałem z pamięci i mogły być błędy, dlatego nadmieniłem, żeby potraktować to jako pseudokod, gdyż chciałem pokazać , o co mi chodzi. Przedstawioną metodę stosowałem do odczytu tablic zawierających dźwięki. Sprawdzę metodę przedstawioną przez JackaCz. Dodano po jakimś czasie: Mam tylko pytanie do metody JackaCz: po co definiujemy DataSize...
Jawne określenie rozmiaru stosu (stosów) zajmuje jakieś 3 sekundy, a dzięki temu zyskujesz świadomość jego rozmiaru i tego że kiedyś może się skończyć. Rozwiązanie typu "stos na końcu zajmuje sobie tyle miejsca ile jest" to taka wycieczka w ciemnościach. Przecież program skompiluje się bezproblemowo nawet jeśli nie będzie ani pół wolnego bajtu na stos...
Co do stosu to nie jestem pewien. Wziąłem ten skrypt linkera: https://github.com/PaxInstruments/STM32C... Widzę tam tylko: _Min_Stack_Size = 0x400;; /* required amount of stack */ Czy rozmiar stosu jest jeszcze gdzieś indziej? Bo...
Ok już nieco rozumiem ocb z tymi adresami. Nie wiem do końca jak to działa (jak przenoszone są dane) ale idąc dalej. Czy poprawnie zrobiłem własną sekcje? Umieściłem ją za sekcja stosu: Dodano po 16 Wydaje mi się że działa stworzyłem w pliku jedną zmienną: volatile uint32_t count_max __attribute__((section(".graf"))); Tylko nie wiem czemu w wyniku kompilacji...
Pierwsza propozycja, w czwartym wywołaniu zamiast oczekiwać 10000 itemów przestaw się na oczekiwanie 8400 itemów, wtedy nie będziesz musiał przerywać pracy DMA w innym przerwaniu (takie przerwanie pracy może powodować błędy). A miałem napisać w pierwszym poście że nie ma to sensu :D Taki sam efekt uzyskam ustawiając transfer na 9600 itemów. A nawet...
Zacznij od ustawienia poprawnego rozmiaru dla stosu przerwań w skrypcie linkera, albo od wyłączenia używania dwóch stosów w startupie (choć wtedy też trzeba zmienić w skrypcie linkera rozmiar stosu).
Co ciekawe - paczka została wysłana z Polski kawał czasu po tym jak zamawiałem na ali-e (nadawca to światprzesyłek czy jakoś podobnie - pisane jednym słowem). Znam sprawę. Firma z Nysy. Też tak dostałem kilka przesyłek i to właśnie zamawianych z darmowa wysyłką. Ciekawa była też etykieta pod spodem tej nalepionej w Polsce. Na moje nazwisko, poczta...
(at) mrh Do mnie kod z Atollic doszedł w ciągu kilkunastu sekund. (at)Freddie Chopin Wersja Lite nie jest ograniczona ani czasowo, ani rozmiarem kodu i chyba nawet można jej używać komercyjnie. :D Jest okrojona funkcjonalnie w stosunku do wersji profesjonalnej. Listę różnic można znaleźć na stronie Atollic. Szczegółów nie znam, bo nie używam. Zainstalowałem...
SPL - Standard Peripherial Library od ST, producenta uC z serii STM32Fxxx to zestaw funkcji, które w założeniu miały ułatwić pisanie programów. Założenia były bardzo dobre, ale wykonanie, a chyba jeszcze bardziej sposób korzystania z funkcji dostępnych w pakiecie sprawia, że kod jest nieefektywny, nie daje pełnej kontroli nad układami i wcale nie jest...
Audio, wideo, ile kanałów, tylko RTP czy też inne elementy stosu media? Ze względów licencyjnych (BSD) poleciłbym re/rem/baresip, oRTP to GPL lub licencja komercyjna. Prostą, naiwną implementację stosu media można zrobić od zera w kilka godzin: http://tomeko.net/projects/rtp_pager_eth... (tylko odbiornik audio, bufor jittera o stałym rozmiarze, brak PLC,...
Standardowo proponuję zacząć od zwiększenia rozmiaru stosu, a następnie od pokazania reszty plików projektu, szczególnie tych w których integrujesz handlery przerwań z odpowiednimi funkcjami FreeRTOSa (hint: jeśli nie wiesz o czym piszę, to jest spora szansa, że tego nie zrobiłeś, w efekcie masz efekt dokładnie taki jak opisujesz).
Ponieważ aktualnie mierzę się z podobnym problemem w driverach zaimplementowanych w moim RTOSie, powiem Ci szczerze, że taki sposób obsługi SPI jest po prostu niemożliwy do zrobienia poprawnie i tak żeby osiągnąć jakąś rozsądną częstotliwość. Sytuacja którą obserwujesz jest stosunkowo prosta. Natychmiast po uruchomieniu transmisji masz pierwsze przerwanie...
Wygenerowałem sobie prosty projekt na układ STM32F070CBTx w CubeMX i odpaliłem w Keilu. Jedyne co włączyłem w CubeMX-ie to w RCC zegar - zewnętrzny kwarc 12 MHz i USB_FS skonfigurowane jako VCP (CDC). Po załadowaniu do Keila i skompilowaniu programu wgrywam go (J-Linkiem po SWD) do mojego układu na płytce. I nic się nie dzieje, a komputer (do którego...
Freddie Chopin napisał: A stos dla przerwań sobie ustawiłeś? Nie No to jeśli chcesz używać przerwań, to raczej dobrym pomysłem będzie ustawienie dla nich stosu o rozmiarze innym niż zero (; 4\/3!!
Witam. Pisze bibliotekę dla wyświetlaczy TFT i jestem na etapie bitmap. Problem mam z wyświetlaniem danych obrazu: http://obrazki.elektroda.pl/6060830300_1... Według mnie obie wersje kodu robią to samo, co oczywiście jest nieprawdą, jak widać na zdjęciu:) Zastosowany sprzęt to STM32F407 + ILI9320 Od razu mówię że nie jest to problem...
Bo rozmiaru stosu nie da się ograniczyć "programowo" - po prostu jak go źle określisz to w różnych przypadkach mogą (ale nie muszą) wystąpić różne problemy. Tutaj pewnie stos ustawiany jest na końcu pamięci, wiec zanim coś zajedzie to chwila minie. Nie wiadomo też czy używane są dwa stosy czy jeden... P.S. Jeśli plik który pokazałeś jest z TrueStudio,...
Mam pytanko czy, żeby przerwania poprawnie działały na podstawie tego szablonu od f4, to czy wystarczy tą tablicę przerwań skonstruować zgodnie z datasheetem od f3, czy wymagane są jeszcze jakieś inne zabiegi działania w kodzie?? Może być jeszcze wymagane dostosowanie rozmiaru odpowiedniego stosu
Program zawiesza się i już nie wiem, co z tym począć. Sprawdzić rozmiar stosu dla przerwań. NVIC_SetPriority(SysTick_IRQn,2); NVIC_EnableIRQ(SysTick_IRQn); Przerwania SysTick nie da się wyłączyć, więc "włączanie" go to nie jest dobry pomysł. Raczej podobnie jest z priorytetem. 4\/3!!
No ale właśnie tak jest. Bierzesz przykład USB Host CDC. Jak odpowiednio długo podrążysz, to okazuje się, że np. ich świetny kod jest zrobiony tak, że niby możesz zażyczyć sobie odczytu jednego bajtu, ale wewnętrznie odczyta Ci tyle ile wynosi rozmiar endpointa (czyli zwykle coś w stylu 64 bajty), dokładnie do tego bufora który podałeś (o rozmiarze...
Gorzej, że to jest tak trochu losowe. Bo ja radośnie korzystałem sobie z przerwań i nic się nie sypało, dopiero przy przechodzeniu na inny układ zajrzałem do skryptu linkera ustawić rozmiary pamięci a tam zdziwko ;) EDIT: działały bo coś sobie zamazywałeś pisząc po stosie, którego ni ma (czyli de facto po zajętym lub nie obszarze pamięc). U mnie wszystko...
Od pewnego czasu zauważyłem na forum zainteresowanie tematyką programowania mikrokontrolerów i mikroprocesorów ARM w języku C# z wykorzystaniem platformy .NETMF będącej córką słynnej platformy Microsoft .NET Framework, którą zna chyba każdy. Niedawno wpadła mi do rąk nowa książka wydawnictwa BTC na ten temat. Zauważyłem wiele nowych zestawów uruchomieniowych...
https://obrazki.elektroda.pl/9151185000_... Autor poniższego zestawienia jest inżynierem i konsultantem wsparcia dla systemów wbudowanych. W swojej karierze poznał on szereg różnych architektur mikrokontrolerów, różniących się wydajnością, wyborem peryferii, poborem zasilania etc. Wybór odpowiedniego układu stanowi zawsze o sukcesie...
Próbuję bawić się systemem FreeRTOS. Mam problem, gdy uruchomię tylko jedno zadanie led lub tx to wówczas one działają. Gdy próbuję uruchomić 2 zadania, nie działa nic. Próbowałem zmieniać rozmiar stosu, priorytety zadań i nic. [syntax=c]#include <stm32f4xx_usart.h> #include <misc.h> #include "stm32f401_discovery.h" #include "usart.h" #include...
No i dalej jest źle, o czym z pewnością mówi Ci warning który ignorujesz. Funkcja zapisu do kolejki przyjmuje ADRES a nie wartość, a to właśnie przekazujesz. Innymi słowy do kolejki wstawiasz śmieci z jakiegoś z grubsza losowego miejsca w pamięci. Poniżej tej wypowiedzi wysłałem kod z poprawioną wersją tego co napisałem, rzeczywiście miał być adres...
http://obrazki.elektroda.pl/6138058800_1... Mikromedia7 to płyta z 7" wyświetlaczem przeznaczona do projektowania prostych aplikacji multimedialnych z wykorzystaniem mikrokontrolera STM32F4. Stosunkowy duży rozmiar PCB pozwolił producentowi na umieszczenie wielu dodatkowych peryferiów ułatwiających proces projektowania. Kompaktowa budowa...
Witam! Timer generuje przerwanie periodyczne. W procedurze obsługi testowo chciałem przełączać stan na jednej z linii portu GPIO (prymitywny debug na LED), ale... okazało się, że nie działa. W pierwszej chwili szukałem błędów w inicjalizacji timera, ale później się okazało, że przerwania się generują, tylko ja tego nie widzę, bo nie wykonuje się przełączenie...
Czy ja dobrze widze F0xx tez ma wsparcie? Tak, już od dosyć dawna, bo od wersji 0.2.0 (maj 2016). Już kompiluje najnowszego bleeding edge, a w weekend pierwsza próba odpalenia blinking LED na Distortos. Jakbyś natrafił na jakieś problemy - a wiadomo że zawsze się na jakieś natrafia - to pisz, na pewno pomogę (; Mam płytkę Nucleo-F411RE to mogę przy...
rozmiar stosu stm32f4 konfiguracja stosu cortex rozmiar stosu
szyby peugeot bosch sterownik silnika perkins ciśnienie wtryskach
taśma samowulkanizująca taśma samowulkanizująca
Laser K40 zamiast wycinać, graweruje - przyczyny i rozwiązania Szarpnięcie silnika elektrycznego 220V przy włączaniu i wyłączaniu