Tak oczywiście. Tylko że w polu location dla tej tablicy mam wpisane SRAM...a znajduje się z pewnością w pamięci programu (co do tego nie mam wątpliwości). No to powinno czytać z pamięci programu użyj "&"
wrzuc kod do flasha, przeciez te procki nie musza miec kodu w RAMie, zeby szybko dzialac. obecnie kod programu zajmuje ci ponad 28kB, wiec nie dziw sie, ze miejsca zaczyna brakowac na zmienne. w jakim srodowisku i z jakim kompilatorem pracujesz? widac z komunikatu, ze linker tego srodowiska w ogole nie wykorzystuje dodatkowych przestrzeni adresowych...
Witam, No trochę jaśniej jest. Ram który przeznaczyłeś na stos jest prawie całym obszarem RAMU mikrokontrolera. 0x1FE4 - wielkość twojego stosu (obliczone wierzchołek stosu(0x1FF0) - początek sterty(0xc). Stosu Ci zapewne nie zabraknie. np. wywołujesz w mainie moja_funkcja(int param1, int param2, char tab[20]) to musisz przy wywoływaniu z przekazaniem...
w PIC masz w pełni sprzętowy stos i nia ma do niego dostępu w sposób programowy. Ma stały rozmiar (oddzielna pamięć w procesorze), więc nie da sie go zmienić programowo. Nie znam microbasic'a, ale ten pewnie realizuje stos programowy, więc należałoby zasięgnąć porady dokumentacji tego programu, by się dowiedzieć, czy jest to możliwe.
A rozmiar stosu ustawiłeś?
Ustaw rozmiar stosu na przerwań - domyślnie w przykładzie jest 0, bo nie ma tam przerwań. 4\/3!!
Nie ma takiej zależności. Rozmiar stosu jest zależny od ilości zmiennych automatycznych i "łańcucha wywołań". 4\/3!!
Masz zapętlenie wywoływania podprogramów instrukcją GOSUB. każdy podprogram np: Wyswietlanie_alarmu_temp powinien być zakończony instrukcją RETURN. Jeśli tak nie masz to w nieskończoność wywołujesz kolejne podprogramy i po którymś cyklu kończy ci się rozmiar STOSU :( np HW_STACK. Dlatego program zaczyna wariować i gubić wartości zmiennych SOFT_STACK....
Skrypt linkera z Cube'a "działa" tak, że na początku pamięci ram ląduje sekcja data (zmienne inicjalizowane przy starcie programu - lokalne statyczne i globalne), potem jest bss (zmienne zerowane przy starcie programu - nie inicjalizowane statyczne i globalne). Następny kawałek to _user_heap_stack - czyli sterta i stos "w jednym". Rozmiar data i bss...
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...
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...
[syntax=asm]00E51353 sub esp,0F0h [/syntax] Tutaj masz ustawiany rozmiar stosu na zmienne lokalne, dzieje się tak w każdej funkcji. Jest także ustawiana ramka stosu. Odnoszenie się do zmiennych odbywa się poprzez obliczanie ich pozycji względem wartości rejestru ebp. W linii (z włączonym "Show symbol names"): [syntax=asm]00E5136E mov dword ptr [i],2...
Troszkę za dużym ogólnikiem rzuciłem... Tak, stos to HW Stack (sprzętowy) i Soft Stack (programowy). Należało by zwiększyć rozmiar stosu sprzętowego, bo używasz przerwania od Trmer1. Wywołanie obsługi przerwania powoduje zajęcie 32 bajtów stosu (czyli tyle, ile masz zadeklarowane), a nie tylko do tego jest on używany. Możesz ustawić np. dwukrotnie więcej....
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...
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ś...
Kompilacja nie przechodzi, bo brakuje mu funkcji IrqInit(). Co ta funkcja robi, skąd ją wziąć, o co w niej chodzi itd. - nie mam pojęcia. W każdym razie, żeby przy tym pliku vectors.S Ci działało FIQ, to musisz go zmienić w linijce 131: .FIQ: .wordFIQ Musisz to zastąpić np.: .FIQ: .wordFIQ_Handler Czy tam generalnie nazwą funkcji która będzie...
Witam, szukam porady, jak obliczyć ilość pamięci którą trzeba przeznaczyć dla stosu pojedynczego zadania w systemie czasu rzeczywistego FreeRTOS. Oczywiście zależy ona od konkretnego zadania, jednak nie wiem jak ją rozsądnie dobierać aby nie marnować pamięci oraz żeby nie było jej za mało. Pozdrawiam
Spróbuj ponownie, zwiększam rozmiar stosu
Teoretycznie rozmiar stosu ograniczają - przestrzeń adresowa - dostępna pamięć Jednakże, raz jeszcze podkreślę, prawidłowo napisany program nie powinien wymagać rozmiaru stosu większego, niż domyślny (z reguły 1MB).
Przekraczasz 64KB? uruchom shella i wpisz link /?. Poczytaj, zapamietaj. W glownym pliku projektu wpisz: #pragma comment(linker, "/stack:0x100000, 0x20000") 0x100000 - 1MB - tyle jest domyslnie zarezerwowane na stos. Puki druga wartosc nie przekracza tej wartosci - nie trzeba zmieniac. 0x20000 - 2*64KB (2 razy wiecej niz domyslnie)...
Ponieważ analyzePulseFromIR() jest teraz powiązane z przerwaniem to taki program musi być krótki i nie wolno w nim wykonywać żadnych podprogramów inaczej wyłożymy ESP - skończy nam się stos a jest go raptem 8192 Faktycznie, domyślny rozmiar stosu dla wątku, w którym wykonuje się loop() wynosi 8192 i wartość ta jest ustawiona przez stałą ARDUINO_LOOP_STACK_SIZE...
Dziękujemy za zgłoszenie. Wygląda na to, że ostatni PR znacznie zwiększył rozmiar stosu w HA Discovery. Zastosowałem wiele poprawek. Czy możesz spróbować z najnowszą wersją? PS: Jeśli chcesz uniknąć awarii, wyłącz na chwilę HA.
Nic nie daje i w żaden sposób nie wpłynie. Różnica będzie dopiero wtedy gdy zostanie przekroczony rozmiar zadeklarowanych wartości. Wtedy po prostu program się wykrzyczy. Deklaruje się po prostu trochę więcej niż absolutne minimum. A gdy się ma dużo wolnej pamięci RAM to chyba nejlepiej zadeklarować jak najwięcej. Nie ma żadnego skutecznego sposobu...
Jeśli używasz stosu USB z CubeMX, to: 1. Oprogramowanie urządzenia niekoniecznie jest poprawnie skonfigurowane, np. słynne już błędne ustawienie VBUS sensing lub bzdurny rozmiar bufora danych w CDC. 2. Funkcje wysyłania danych muszą być wołane z przerwania o tym samym priorytecie, co przerwanie USB - inaczej urządzenie się powiesi z powodu błędnych...
Nie odpowiedziałem na Twój ostatni post, ponieważ nadal uważam, że transmisja BL602 MQTT co minutę jest podsłuchiwana. Podejrzewam, że prędzej czy później upadnie. Obecnie posiada następującą adnotację: https://obrazki.elektroda.pl/1271277500_... Nie jestem pewien, co jest nie tak, myślę, że przyczyną może być wiele problemów. Wielokrotnie...
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...
Sprawdziłem tuya W800, sdk jest raczej przestarzały, v1.00.01 Zaktualizowano OBK: https://github.com/NonPIayerCharacter/Op... Dodatkowe funkcje w800 są takie same jak w nowszym sdk, easyflash dla fv, berry, newlib gcc, heap_5, rozmiar stosu 100k. Ale wyłączyłem również wiele niepotrzebnych funkcji, takich jak hostif/rmms...
Twoja GDT powinna wygladac mniej wiecej tak: - sys kod - sys dane - proces 1 kod - proces 1 dane - proces 1 tss - proces 2 kod - proces 2 dane - proces 2 tss - proces 3 kod - proces 3 dane - proces 3 tss - proces 4 kod - proces 4 dane - proces 4 tss Kazdy z segmentow dla "jadra" i roznych procesow powinien miec inna baze (bo nie uzywasz stronicowania)...
http://obrazki.elektroda.pl/1051495700_1... Tysiące mililitrów kawy, setki demotywatoro-godzin, kilkadziesiąt „THE NIGHT OF CODE” i o to jest. Przed Państwem zielona płytka i kilka układów scalonych! Wstęp Nadeszła chwila w której, chciałbym zaprezentować mój projekt szerszej grupie elektroników. Od jakiegoś czasu, w przerwach...
Chip ma tylko 128kb sram, i ten problem wyskakuje nawet bez mqtt. Kilka kb można zaoszczędzić (może?), jeśli zmniejszy się rozmiar stosu zadań wpa_supplicant z 10000 do około 6144, jak w esp-idf (nie wiem, czy nawet tyle zużywa). Binaria są już dostępne na githubie, zapraszam do testowania/poprawiania. Jak już pisałem na gh, nic nie działa. https://github.com/openshwprojects/OpenB...
Funkcji mqttConnect() nie używam w innym miejscu, tylko w funkcji poniżej. Na początek zwiększ rozmiar stosu dla tego zadania.
nie da sie wprost okreslic jaki rozmiar stosu bedzie potrzebny. mozna za to napisac sobie swego rodzaju funkcje kontrolujaca, ktora bedzie sprawdzala wartosc SP. najlepiej w postaci przerwania od timera. mozna tez recznie, w symulatorze lub debuggerze, podgladac wartosc rejestru SP. 4\/3!!
Czy na pewno wykonałeś pełny restart pomiędzy skryptami? Znajduję większość problemów w kompilacji Windows (symulator): [url=https://www.elektroda.com/rtvforum/... OpenBeken IoT device simulator - first early alpha version release for testing ale oczywiście jest to trochę inne niż działanie na MCU, więc używam również poziomów dziennika...
https://github.com/NonPIayerCharacter/Op... 🎈🎈NOT DYING🎈🎈 najdłuższy, jaki udało mi się nawigować. dużo zwalniania stosu w dzienniku RDA Boot ROM dla RDA5991H r550 Czas kompilacji: 15:50:19 - 10 maja 2017 r. RDA Microelectronics Copyright(C) 2004-2017 Wejście w tryb Mcu count_left=5 count_left=4 count_left=3 count_left=2...
Pierwsze uruchomienie na generycznych halsach [00:00:00.000]SDK version ECR6600F_v2.1.0b02p03t01, Release version 1.0.0 [00:00:00.022]EasyFlash V4.0.0 is initialize success. [00:00:00.044]NV get PsmPOREnable failed!! [00:00:00.046]NV get PsmFlag failed!! [00:00:00.049]NV...
Witamy w Elektrodzie. win_main.c jak sama nazwa wskazuje, działa wyłącznie na systemie Windows. To jest punkt wejścia dla unieważnij CFG_SetDefaultConfig() , ale nie jestem pewien, czy uruchamiać tam polecenia (nie jestem pewien, czy rozmiar stosu byłby wystarczający), musisz spróbować lub alternatywnie zmodyfikować strukturę konfiguracji bezpośrednio...
IRQ tester https://obrazki.elektroda.pl/3243423400_... IRQ Tester to proste narzędzie, głównie do testowania czasu odpowiedzi na impulsy, lub czasów międzyzboczowych dostarczonego sygnału. Program został napsiany na ukontroler AVR Atmega168, a jego głównym zadaniem jest funkcja multiwibratora monostabilnego, którego działanie polega...
Domyślnie włączona konfiguracja 1M (działa dobrze na module 4mb). dzięki. bl602_ir_9f263cba4454 https://github.com/NonPIayerCharacter/Op... Moduł 1mb. miegapele 1mb toml pierwsze uruchomienie: Starting bl602 now.... Uruchamianie BL602 Chip... """"""╗ ""╗ """"""╗ """"""╗ """"""╗ ""╔══""╗""║ ""╔════╝ ""╔═""""╗╚════""╗...
Problem z modułem CB2S, ponownie flashowany za pomocą `python uartprogram D:\OpenBeken\hid_download\OpenBK7231N_QI... -d COM11 -w --unprotect --startaddr 0x0` Po konfiguracji Wi-Fi przez AP utknął ```` ap_handle_timer: 4000,43063s wpis:0x408ec8 wpis->pre_rx_timepoint:43053 delta_sec:0 inactive_sec:0 fuzz:0 Debug:HTTP:TCP przetworzy pakiet...
Dzięki za podpowiedzi. Na razie kompiluję z opcją -O1. Wygląda że problemem był za mały rozmiar stosu (STACK) lub sterty (HEAP). Po powiększeniu rozmiaru obydwu program wystartował i nie mam żadnego HardFault (na razie sprawdziłem tylko podstawowe funkcje interfejsu). Pod debug czasami wygląda jakby w ICTM pojawiały się tymczasowe kopie zmiennych ale...
Przyznam się, że nie do końca rozumiem powszechnej fascynacji Thread, biorąc pod uwagę jego istotne ograniczenia. Działa w tym samym paśmie 2.4 GHz co Wi-Fi (b/g/n) i Bluetooth. Może to prowadzić do wzajemnych zakłóceń, szczególnie w gęsto zaludnionych obszarach, gdzie wiele sieci Wi-Fi konkuruje o wąski zakres częstotliwości. Mimo, że Thread został...
Witam Jakiś czas temu wykonałem projekt który końcowo nazwałem Brevis. W moich pierwszych założeniach miał on być niezależnym modułem, przez który inne konstrukcje miałyby dostęp do Internetu w sposób bezprzewodowy. A więc moduł miał mieć: a. własny interfejs komunikacyjny b. bezprzewodowe połączenie z Internetem c. możliwość fizycznej interakcji z...
... i zwiększ rozmiar stosu. Zwiększyłem rozmiar stosu w CubeMX przy generowaniu projektu z 0x400 do 0x800 i nic to nie dało.
Stawiam na zbyt mały rozmiar stosu dla poszczególnych wątków - w callback'ach używasz Serial.print(), a to zżera nieco pamięci. Proponuję zwiększyć rozmiar stosu do 4096 i sprawdzić. Ogólnie tendencja słuszna ;) Zainstaluj sobie Exception Stack Trace Decoder w Arduino IDE: https://github.com/me-no-dev/EspExceptio... Ten delay(500) pomiędzy utworzeniem...
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...
Wyjasnijcie to wyrownanie do 8 Chodzi o to, żeby rozmiar stosu był podzielny przez 8 Nie rozmiar stosu tylko adres początku stosu.
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).
Problemy które opisałeś brzmią jak zbyt mały stos, a tego z rozmiaru pliku bin nie wywnioskujesz. Wymagany rozmiar stosu można sprawdzić empirycznie, bo analiza "statyczna" jest zbyt skomplikowana. 4\/3!!
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... ;).
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?
cortex rozmiar stosu stm32 rozmiar stosu rozmiar stosu stm32
zasilacz vestel 17ips72 kalibracja dotyku android sensory termowizyjne
naprawa roweru treningowego murphy radio
Dahua VTO2111D-P-S3 – maksymalny prąd wyjścia 12V OUT, specyfikacja, ograniczenia Junkers piec dwufunkcyjny gaśnie przy CWU – fluktuacje temperatury, zakamienienie czy czujnik?