Zgaduję, że w tym przypadku w pliku startupxxx.s masz ręcznie zmienić rozmiar stosu. Lepiej jednak i prościej będzie zwyczajnie nie deklarować dużych tablic w procedurach, bo to fatalny nawyk w przypadku mikrokontrolerów, zwłaszcza, kiedy programista jest początkujący i nie wie, gdzie się zmienia rozmiar stosu... ;).
Zajrzyj do skryptu linkera, zobacz jaki jest rozmiar stosu. 4\/3!!
Próbuję pożenić template Freddiego (stm32_blink_led) z StdPeriph Ale to widziałeś? http://www.freddiechopin.info/pl/artykul... Ma ktoś pomysł co może być nie tak ? W skrypcie linkera należy ustawić rozmiar stosu dla przerwań - domyślnie jest zero, co zwykle źle się kończy. Ustawiłeś...
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
Jeśli chcesz używać przerwań, to musisz zadeklarować rozmiar stosu dla przerwań... W przykładzie nie ma przerwań, więc rozmiar tego stosu wynosi 0. 4\/3!!
Na razie mam ustawione: __main_stack_size = 1024; __process_stack_size = 1024; i wszystko działa poprawnie. Gdy będzie jeden stos to jaki rozmiar założyć ?
Freddie natomiast przeznacza na nią wszystko to co zostało niewykorzystane. Co oznacza możliwość wykorzystania w pełni ramu. Nie do końca (; Wszystko co zostało po zlinkowaniu sekcji .data, .bss i po uwzględnieniu zadeklarowanego rozmiaru stos ów .
Spróbuj zwiększyć rozmiar stosu w Twoim startupie do np 1kb
A ustawiłeś sobie rozmiar stosu dla przerwań (w pliku linkera)? 4\/3!!
Od pewnego czasu walczę z chińską płytką (blue-pill) z STM32F103 na pokładzie Przeczytaj ten wątek i kup sobie inną płytkę. https://www.elektroda.pl/rtvforum/topic3... Jeśli koniecznie chcesz się męczyć z chińskimi podróbkami, to na mojej stronie ( http://www.freddiechopin.info/ > Download > ARM > Przykłady > stm32_blink_led) znajdziesz szablon...
Jeśli problem zaczął występować po włączeniu jakichkolwiek przerwań, to sprawdziłbym na samym początku rozmiary stosów.
Masz jakoś zdefiniowany rozmiar stosu dla przerwań? Jeśli korzystasz z mojego skryptu linkera, to w pliku tym musisz sobie zdefiniować jaki jest rozmiar stosu, bo bez tego przerwania się sypią. 4\/3!!
lbo dlatego, że zwiększyłem STACK_SIZE z 64 do 128 Chodzi o rozmiar stosu dla taska, czy dla całej aplikacji? <: 4\/3!!
Jeśli zmiana rozmiaru buforów powoduje że program przestaje działać oznacza to że prawdopodobnie kończy się pamięć na stosie. Kilka rozwiązań jest. 1. zwiększyć stos 2. zdefiniować bufory jako static albo zmienne globalne wtedy nie trafią na stos 3. jeżeli idea projektu na to pozwala podzielić odczyt na mniejsze paczki i zapisywać po trochu(używając...
Jak go rozwiązałeś? W pliku startup wywaliłem 2 rozkazy i wstawiłem tam "siłowe" wpisanie adresu 0x20005000 do SP tuż przed wejściem do funkcji main. Jednocześnie testuję jednak drugi projekt w którym stos ustawiany jest z sugestiami Freediego - zwiększyłem po prostu rozmiar stosu w ustawieniach linkera i przetestuję czy stos nie wejdzie na dane.
Czyżby źle dobrany procesor ? Zajrzyj do skryptu linkera i ustaw rozmiar stosu dla przerwań. Jaką masz dokładnie zainstalowaną wersję wtyczki GDB Hardware Debugging?
Zmienia się tylko w razie potrzeby, normalne ustawienia domyślne są dobre w większości przypadków. Np. zegar jest ustawiany w tryb PLL na max. częstotliwość. Wielkość stosu też ustawiona jest w marę optymalnie.
Pierwsza opcja to oczywiście zdefiniowanie NAPRAWDĘ DUŻEGO stosu, ale to średnie rozwiązanie jak wiadomo [; Do rozbudowanej aplikacji na ARMa myślę że należy liczyć minimum 1kB, jeśli używa się jakichś potwornych funkcji standardowych (printf!) i to głęboko to lepiej zaopatrzyć się w 2kB (o apetycie tych funkcji na pamięć pisałem ostatnio http://www.elektroda.pl/rtvforum/topic13...
A masz dobrze ustawiony rozmiar stosu i sterty w startup.s ? Być może za mało przydzieliłeś im pamięci i stąd taki efekt.
A rozmiar stosu ustawiłeś? To taka słynna pułapka Freddiego na początkujących. ;) Poszukaj w podobnych wątkach (wracają co tydzień), to znajdziesz rozwiązanie.
W tym kawałku skryptu linkera masz rozmiar stosu dla przerwań ustawiony na 0, a przecież FreeRTOS je wykorzystuje. 4\/3!!
Bierzesz przykładowy projekt z mojej strony, wrzucasz do tego FreeRTOSa - czyli dodajesz katalogi FreeRTOSa do odpowiednich pól w Makefile: [syntax=bash]# additional directories with source files (absolute or relative paths to # folders with source files, current folder is always included) SRCS_DIRS = FreeRTOS FreeRTOS/portable/GCC/ARM_CM3 FreeRTOS/portable/MemMang...
Otwierasz plik startup_xxxxx.s, klikasz poniżej okna edytora w zakładkę Configuration Wizard i ustawiasz rozmiar stosu. Radziłbym jednyk przemyśleć deklaracje danych. To na ogół nie jest dobry pomysł, żeby mieć zmienne lokalne procdury o objętości setek bajtów lub więcej.
Zwiększ rozmiar stosów, bo przerwania mogą po prostu przepełniać stos. No i jeśli ich nie potrzebujesz, to wyłącz możliwość przerwań zagnieżdżonych. 4\/3!!
Teraz pozostało mi przenieść projekt z stm32 na lm3s, ponieważ zajmuję się tym w wolnym czasie od pracy, to efektem podzielę się pewnie za kilka dni. To naprawdę nie jest dużo roboty, generalnie (pomijając detale typu zmiana nazw plików czy nazwy projektu) trzeba zrobić mniej więcej "aż" tyle: 1. poprawić tablicę wektorów (to i tak byś miał kiedyś...
Dzięki za chęć pomocy mi, ale chyba nie jestem w stanie tego ogarnąć. No ale czego? Jak mają Ci działać przerwania, skoro rozmiar stosu dla nich wynosi 0 bajtów? Tu nie ma co ogarniać tylko trzeba przeczytać ze zrozumieniem komentarze. 4\/3!!
Faktycznie uint8_t hexek Nawet jeśli to pierwsze "działało", to tylko na zasadzie przypadku. A może mi ktoś wytłumaczyć czemu uint16_t Pamięć przeznaczona na stos nie jest workiem bez dna i ma jednak jakieś granice. Fajnie się tak pisze - 3 znaczki i już super - tyle że ta tablica zajmuje prawie 1kB, a bardzo często (np. w moich przykładowych projektach)...
Chcę móc dynamicznie alokować pamięć, której rozmiar jest z góry znany, a nie ograniczony stosem. A mółbyś tę myśl rozwinąć? Czy stos ma wielkosć nieznaną bo nie rozumiem.
Bardziej chodziło mi o to że, nie jest dobrym pomysłem deklarowane dużych zmiennych na stosie. A taki typedef tylko utrudnia decyzje: [syntax=c] T_Localization Lokalizacja; size_t rozmiar; [/syntax] Niby jedno i drugie typedef ale ...
Jaki masz rozmiar stosu? BTW - to będzie najmniej wydajna biblioteka do HD44780 na planecie, a wszystko to dzięki bibliotece peryferyjnej od ST. No i formatowanie tego kodu to też tragedia. 4\/3!!
Czyżby? Czy dla AVR ktokolwiek przejmuje się skryptami linkera, startupem, tablicą wektorów i Makefilem? Przecież dla tej platformy jest DOKŁADNIE TAK SAMO jak dla ARM, a jakoś nikomu nawet na myśl nie przyjdzie zajmować się tymi plikami - każdy korzysta z gotowców zawartych w pakiecie avr-gcc. Te pliki tam fizycznie są, nikt nie zajmuje się tym jak...
Obecne startupy w przykładach dla STM32 i LPC1114 używają dwóch stosów - jeśli chcesz to zmienić (czyli wszystko będzie używało tylko MS), to - poza ustawieniem odpowiedniego rozmiaru odpowiedniego stosu w skrypcie linkera - wystarczy zakomentować w startupie linijki odpowiedzialne za ustawienie PSP oraz przestawienie stosu, czyli ten fragment: /* +---------------------------------------...
Ja za to mam pytanie do Freddiego: Mam tu taki przykładowy blinky led dla F103 z Twojej strony i tam stos (stosy bo i MSP i PSP) jest ustawiony między sekcją .bss i stertą. Dlaczego tak? A dlaczego by nie? (; W swoich projektach (praktycznie wszystkich) przyjąłem, że rozmiar stosu jest określony wprost. Z tego względu nie muszę go umieszczać na końcu...
witam :) Mam dwa pytanka związane z projektem przykładowym na STM32. Jestem początkujący w tematyce ARM-ów. Odpaliłem sobie projekt w eclipse. Wszystko działa ładnie, podpiąłem też bibliotekę od ST (swoją drogą nie za bardzo mi przypadła do gustu). Przechodząc do konkretów zacząłem się bawić przerwaniami i początkowo nie działało ale pogrzebałem trochę...
Obsługa UART'a przez DMA czy (tylko) przerwania to najniższa warstwa stosu - to co zrobimy z danymi dalej zależy już od konkretnego przypadku. Przerwania i FIFO (o odpowiednim rozmiarze) znacząco odciążają CPU ale korzystając z DMA zostają tylko przerwania przy zakończeniu nadawania/odbioru. Poza przypadkiem, kiedy trzeba analizować każdy nadchodzący...
Witam! Eclipse Kepler Sourcery CodeBench Lite 2011.09-69 OpenOCD 0.6.1 STM32F103ZET6 Szablon projektu - Freddie Chopin Do tej pory wszystkie projekty na STM32 działały dobrze jednak teraz buduję większa aplikację i pojawiają się problemy. Objawia się to losową zmianą wartości zmiennych np. zadeklarowanych jako const czy przerwaniem __Default_Handler....
Tak na przyszłość - na stosie lepiej nigdy nie tworzyć obiektów większych niż kilkaset bajtów, zwłaszcza że stos często ma ograniczony rozmiar (np do 1kB, poniżej są już inne zmienne). Do tak dużych elementów lepiej coś globalnego, albo jak koniecznie musi być zwalniane albo potrzebne jest rzadko, to malloc() / new. 4\/3!!
Rozmiar stosu dla przerwań? 4\/3!!
Próbowałem najpierw skopiować "na głupiego" kod z drugiego linku, niestety zawieszał się w EE_Init(); Spróbowałem ten cały przykład z mbed przenieść do SW4STM (ale bez biblioteki mbed, tylko do szablonu z CubeMX) i po drobnej kosmetyce chodzi całkiem dobrze. Kod jest dobry a przyczyną zawieszania pod SW4STM jest, jak się obawiałem, nieskuteczność tego...
Nie nie nie nie... Heap nie ma ze stosem nic wspólnego, bo heap służy do alokacji DYNAMICZNEJ. Swoją drogą niezły "problem" - "Mam procka z 20kB RAMu i jak mu dam lokalną zmienną o rozmiarze 22kB to się wywala... Co z tym zrobić?????///???". No comment... 4\/3!!
wstawię cały projekt... Panuje w nim pewien chaos za co z góry przepraszam, ale służy mi to tylko nauce/zabawie... Z góry dziękuję za pomoc. PS: Jeśli chodzi o moją naukę to może właśnie źle robię? Bo posiadam książkę "STM32 Aplikacje i ćwiczenia w j.C. M.Galewski" i staram się robić kolejne ćwiczenia które w niej występują z tym że tam autor korzysta...
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...
Zaczynam się zastanawiać czy odpowiednio zmodyfikowałem skrypt linkera z przykładu (stm32f103xB) bo te cuda które się dzieją wskazują raczej na problemy ze stosem. Objawem problemów ze stosem są "losowe" zawieszenia programu lub tzw. "pójście w maliny". To że jakaś funkcja nie działa raczej nie ma nic wspólnego ze stosem... Modyfikacje skryptu linkera...
Ale po uploadzie core blokował się, komunikat: the core is locked up! Skoro używałeś przerwań, to pewnie problemem był rozmiar stosu dla przerwań (konfigurowany w skrypcie linkera, domyślnie zero), więc układ się wieszał.
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).
Czyli nie dość, że na stosie masz 1 kB tablicę, to jeszcze używasz funkcji która jest znana z tego, że używa naprawdę DUŻO stosu. Zacznij od zmniejszenia tej tablicy albo przeniesienia jej do zmiennych globalnych, a następnie - jeśli nie pomoże - znajdź jak w Keilu zwiększyć rozmiar stosu. Wielkie dzięki, pomogło. Przeniosłem do globalnych Do sekcji...
http://www.elektroda.pl/rtvforum/topic13... http://www.elektroda.pl/rtvforum/topic13... Na początek może pożegnaj się ze starociami i zainstaluj coś nowego (CodeSourcery). Co do reszty: Moim zdaniem nie ma sensu pisanie samemu tych plików, ale warto rozumieć co i dlaczego tam jest. Szczególnie nie warto pisać ich "tylko pod konkretny zestaw",...
Trzeba zmienić PROGRAM. Domyślnie w STM32 tablica wektorów znajduje się w flash, a to skąd uruchamiasz program czy jak jest skompilowany nie ma żadnego znaczenia. Manual: Boot from the embedded SRAM: SRAM is accessible only at address 0x2000 0000. Note: When booting from SRAM, in the application initialization code, you have to relocate the vector table...
Firmowy bootloader mi nie wystarczy. Potrzebuje SPI i prawdopodobnie USB. Ustawiłem w pierwszym programie na: NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00003000); i w drugim na: NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00000000); Więc tablica wektorów powinna się przełączać, ale dalej miga tylko czerwona dioda. Uruchomiłem dodatkowo TIM4 i przeniosłem...
Mam podobny problem i również z tym walczę na F107. Podpinam się :) Zmieniłeś rozmiar stosu main w skrypcie linkera od Freddiego ?
Właściwie nie zaczynam, optymalizacją wyłączona, dlatego jestem zaskoczony. Czy powinienem może zmienić rozmiar sterty lub stosu, bądź ustawić jakąś opcję dodatkowo? Program Size: Code=24376 RO-data=396 RW-data=768 ZI-data=11176 STM32F103 (20KB RAM, 128FLASH), Keil 5.10.0.2 Stack_Size EQU 0x00001000 Heap_Size EQU 0x00000800 Przyznam jedynie że nie mam...
1. Biorę przykład projektu ARM (akurat ten dla STM32, bo posiadane przezemnie LPC2103 ma za mało pamięci flash na te okrutne funkcje printf()) z mojej strony - http://www.elektroda.pl/rtvforum/topic13... 2. Wrzucam do main() następujący kod: #include <stdio.h> #include <math.h> #include <errno.h> #include <sys/types.h>...
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...
Sprawa wielokrotnie poruszana. Jak zajrzysz do skryptu linkera, to znajdziesz tam takie coś: /* +=======================================... | stacks sizes +=======================================... */ /* Handler mode (core exceptions / interrupts) can use only main stack */ /*...
1. Dokonywałeś jakichś innych zmian w "plikach bazowych"? Jaki jest rozmiar drugiego stosu? 2. Jak wygląda Twój konfig dla OpenOCD (chyba że to standardowy plik stm32f1x.cfg)? 3. W jaki sposób programujesz układ? Piszesz że wgranie przez GDB nic nie daje, a jakbyś wgrał np. przez bootloader UART? 4\/3!!
Czy tylko to może kierować program akurat w te maliny ( default handler)? Oczywiście że nie tylko, jednak portal stackoverflow.com nie nazywa się tak przypadkowo (; Skoro przed chwilą miałeś problem, że stos masakruje Ci zmienne, to wydaje się całkiem logiczne, że teraz stos masakruje Ci coś innego - tyle że tym razem kończy się HardFaultem. Możesz...
Wszystko da się zrobić, ale nie wszystko ma sens. Moduły będą miały strukturę płaską tzn wywołując moduł z modułu nie będzie się zmieniał stos moduły wiedzą który jest kolejny a który poprzedni moduł. I tu chyba nie rozumiesz, o czym piszesz. Jeśli jeden moduł woła drugi, to ten drugi musi wrócić do tego pierwszego, a takie wywołanie zajmuje miejsce...
1. rozmiar stosu. 2. niewłaściwa nazwa przerwania 3 zła konfiguracja dostępu do flash. .......
Czy w skrypcie linkera (pochodzącym z odpowiedniego przykładu) ustawiłeś odpowiedni rozmiar stosu dla przerwań, z których zamierzasz korzystać?
Bardzo ciekawa sprawa. Nie mam niestety aktualnie dostępu do tego tunera. Jak tylko będę miał możliwość to oczywiście spróbuję to zabootować. Można by to też skompresować przez LZMA, przez co może obraz ten zmieściłby się we flashu Można by, choć z mojej perspektywy na ten moment nie ma sensu. Mam pendriva który ma ogromny rozmiar w stosunku do wewnętrznego...
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...
Ponieważ dopuszczalne są też pytania z dziedziny, być może tych niemądrych Bynajmniej nie jest to żadne "niemądre" pytanie. Jest bardzo dobre i pokazuje właśnie jak bardzo zmitologizowane są RTOSy. czy taki STM32G070RBT6 z 36 KB ram oraz 128 KB flash (w detalu ok. 5.5 zł) to już się nada czy nie do RTOS? Jak najbardziej. Ilość flash jest zwykle mało...
Stosy są wyrównane do 8. A pamięci prawie nie używam, zmiennych globalnych jest jakieś 100b a stos jest ustawiony na 2000b. Trochę podłubałem w temacie i doszedłem do wniosku, że wykrzaczanie następuje gdy rozmiar kodu wynikowego zbliża się do 8kB (robię na F100c4t6b który ma 16kB). Dla testu zrobiłem [syntax=c]int sscanf_( char *src, const char *format,...
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ń....
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...
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!!
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,...
Rozmiar stosu można przewidzieć maksymalnym zagnieżdżeniem, ale uwaga na rekurencje :P Co do sterty. Są momenty kiedy nie da się do końca przewidzieć rozmiaru. Np stos tcp/ip. Pakiety przychodzą prawie losowo, i one wymuszają zakładanie/zwalnianie buforów. Oczywiście się to da obejść. Ale gdyby to było łatwe i proste do przewidzenia/obliczenia na pewno...
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!!
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ę...
(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...
Nie mogę tego za nic namierzyć, wrzucam w różne miejsca kod od zapalenia diody abym wiedział która funkcja jest wywoływana w czasie zapytania o dane, ale nigdzie nic się nie dzieje... Data_setup() wykonuje się jedynie raz w czasie podłączenia urządzenia. Ale co z tego korzysta to nie mam pojęcia, przyjmuje wartość uint8_t RequestNo ale skąd ją bierze?...
A rozmiar stosu ustawiłeś?
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,...
Najprościej będzie chyba wziąć pliki z projektu dla LPC1114 i poprawić w nich stosowne rzeczy (rozmiary pamięci, ich adresy i rozmiary stosów w skrypcie linkera, przerwania w tablicy wektorów). Nie jest to dużo roboty, choć jest dosyć nudna.
http://obrazki.elektroda.pl/6945964700_1... Przedstawiamy robota klasy Line Follower o nazwie Impact. Jest to ulepszona wersja Moduł z czujnikami Jest to element najdalej wysunięty od środka obrotu. Moment bezwładności jest duży (masa pomnożona przez kwadrat odległości od środka obrotu), dlatego też aby móc wysunąć daleko czujniki,...
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...
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).
uint8_t znak_table Niemniej jednak zauważ że te 3 tablice zajmują _NA_ _STOSIE_ ze 120 kB. Teraz zobacz jaki masz rozmiar stosu w skrypcie linkera. EDIT: albo i ze 3x tyle, bo wg kodu który wrzuciłeś kiedyś sama tablica z double będzie miała 0.5 MB. Na stosie. Który jest w wewnętrznym RAM. Który ma 320 kB.
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ść...
Przegryzienie się przez ponad 1000 stronicowego manual'a i "ogarnięcie" procesora jest procesem dość długotrwałym i żmudnym, stąd też następuje próba przeskoczenia tematu za pomocą gotowych bibliotek. Nigdy jakoś nie miałem okazji "przegryzać się" przez ten 1000 stron Reference Manual. Od razu przechodzę do Register Descriptions, bo ile to razy można...
http://obrazki.elektroda.pl/3353424200_1... Szanowni Forumowicze! Jest to mój debiut jeśli chodzi o publikowanie swoich konstrukcji. Zapraszam do dyskusji i konstruktywnej krytyki, która jest zawsze mile widziana i pozwoli na poprawienie ewentualnych błędów. Chciałbym Wam przedstawić urządzenie, które szumnie nazwałem GSM GPS tracker....
Rozmiar stosu? 4\/3!!
No i bez żadnych "Panów" mi tutaj! (; Kultura musi być. skonfigurować sobie rozmiar stosów A rozmiar stosu to zostawić taki jak tam jest czy może zwiększyć ?
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...
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...
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!!
Znów się podczepię: jeśli chciałbym użyć pojedynczego stosu, to wtedy: w skrypcie linkera robię np. tak: __stack_size = 2048; PROVIDE(__stack_size = __stack_size); (ciach) .stack : { . = ALIGN(8); __stack_start = .; PROVIDE(__stack_start = __stack_start); . += __stack_size; . = ALIGN(8); __stack_end =...
Gdy dodałem jako atrybut do funkcji "weak" żeby kompilator nie dodawał na wejciu odkładania na stos Atrybut "weak" służy do zupełnie czego innego. To o co Ci chodzi to atrybut "naked" - funkcja z tym atrybutem w zasadzie powinna zawierać tylko assemblera. Co do plików których używasz, to ja mogę polecić jak zwykle to samo, czyli mój szablon dla STM32F1...
Po pierwsze ta linijka jest bardzo ciekawa: DISCARD : { libc.a ( * ) libm.a ( * ) libgcc.a ( * ) } Ja bym to wywalił od razu, bo to wcale nie usuwa informacji debugowania, tylko CAŁOŚĆ kodu biblioteki, który w tym momencie nie będzie zlinkowany - dzielenie, funkcje matematyczne, dowolne funkcje "standardowe" - aż dziwne że z czymś takim się to kompiluje....
(at)ElektrodaBot wyjaśnij użytkownikowi (at)oscil1 na czym polega czytanie cudzych postów ze zrozumieniem, a nie tylko własnych. Niepotrzebne zaśmieca ten wątek swoimi narcystycznymi wizjami. Bezpośrednia odpowiedź dla (at)oscil1 - „Czytanie ze zrozumieniem” na forum technicznym to nie tylko przeczytanie własnych wpisów, ale przede wszystkim uważne...
Na pewno jest więcej literatury o 8051 i co z tego? Jak dla mnie bogata literatura to tylko problem, bo ileż książek można kupić i potem jeszcze przeczytać? Ważne są przejrzyste przykłady, na podstawie których można wiele zrobić. True, ale pytający pisał o książkach, więc poruszyłem tą kwestię. Dla mnie większość z tych książek to tłumaczenie manuali,...
lub pewnie ładniej by było: ładniej by było tak jak napisałem na początku - 3 definicje. I nic nie obchodzi Cię czy ma być naked, interrupt czy może obydwa (albo żaden). Każdy Task w FreeRtos ma swój stos, podaję go jak tworzę task, A skąd pewność, że rozmiary które podajesz nie są za małe? Sprawdzałeś? 4\/3!!
(at)PDT Moim nie są dobrym przykładem dobrze napisanego softu. I nie chodzi tutaj o rozmiar tego kodu czy o błędy w sofcie (bo każdy soft jest zabugowany mniej lub bardziej). Nawet nie chodzi mi o poziom abstrakcji tego kodu bo sam stosuje większą abstrakcję (np uniwersalny interfejs do IO, interfejs urządzenia blokowego etc). Po prostu sam styl w...
https://obrazki.elektroda.pl/1627311300_... Cześć Od dawna chciałem zrobić własny cyfrowy multi-efekt do gitary elektrycznej. Długo nie mogłem zabrać się za to z powodu różnych rzeczy no ale wreszcie jest. Mój projekt dotyczy tylko oprogramowania na gotową płytkę uruchomieniową STM32F746G-DISCO. Jest to raczej koncepcja/prototyp urządzenia...
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ść. Zamiast zgadywać, zakładać i czekać na odpowiedzi...
Witajcie, moją przygodę z STM32 zacząłem stosunkowo niedawno, praktycznie od samego początku staram się stworzyć "protokół" do bezawaryjnej komunikacji po USARcie, który wykorzystany będzie do transmisji danych z małego robota typu LineFollower. Nie mam większej wiedzy, ani doświadczenia z tej dziedziny. Stworzyłem trochę kodu na podstawie własnych...
Wystąpiła pewna nieścisłość w Twoim sformułowaniu.: To ja nawet nie wiedziałem że stosuję konwersję typów z C99:) Czym innym jest konwersja typów, a czym innym są same typy danych. W poście wyżej przyczepiłem się, że stosowałeś char i uint16_t zamiast uint8_t i uint16_t albo char i unsigned short int . Chodziło mi bardziej o styl, bo stosowanie tych...
(at)cicho-ciemny No jeśli masz funkcje do sterowania wyświetlaczem i masz wybrane piny sterujące to trzeba plugin skonfigurować. Wybierasz jaki wyświetlacz i jak wirtualne sygnały są podłączone. Następnie kompilujesz projekt, załączasz wyświetlacz (OFF->ON) i wykorzystujesz wbudowany w IDE symulator. A działa to... stosunkowo wolno. Co do przechodzenia...
1. Co będzie jak nie wyrównam stosu, kiedy natknę się na problem? Zasadniczo problem występuje praktycznie tylko przy przekazywaniu 64-bitowych zmiennych do funkcji o zmiennej ilości argumentów, takich jak printf() (tutaj od razu uwaga - 32-bitowy float dla takich funkcji zawsze jest konwertowany do 64-bitowego double). Ze względu na to jak zdefiniowane...
stm32 rozmiar stosu rozmiar stosu cortex rozmiar stosu
przycisk restart bezpiecznik prostownik obliczenie prądu zwarcia
kocioł elektryczny kospel spawarka weldman
Wymiana przełącznika świateł Skoda Fabia 2003 Kod instalatora sterownika DEFRO APC 3 - dostęp i bezpieczeństwo