Zauważyłem twoją poprzednią pracę nad cmd_newEnums.c. Więc rozszerzyłem ją, dodając ChType_Enum i HA discovery i przesłałem SetChannelType 50 Enum SetChannelLabel 50 "Device Control" SetChannelEnum 50 "0:Buttons Locked" "1:Device control" "2:Remote Control" "3:Any Control" linkTuyaMCUOutputToChannel 121 enum 50 Kanały Enum pojawiają...
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...
Problem nie leżał więc w partycjach, ale w CONFIG_MALLOC_MODE. Na XR806 musi być ustawiony na 0, co nie jest dobre - nie wiem, czy mogę uzyskać wolny rozmiar sterty i potencjalne problemy z fragmentacją. XR809 i XR872 działają dobrze, gdy jest ustawiony na 1. Teraz przechodzę do testów. Najważniejszą rzeczą jest oczywiście uart. I OTA.
https://obrazki.elektroda.pl/8064219100_... Witajcie, dzisiaj przedstawię jak okiełznać kolejny chiński mikrokontroler WiFi+Bluetooth, a dokładniej W800-C400 od WinnerMicro. Na ten moment można go kupić za około 10 zł, z kolei płytkę startową z nim już za 25 zł i obie te ceny uwzględniają już przesyłkę. Oczywiście nie będę tu korzystać...
Nowa kompilacja sdk: https://github.com/NonPIayerCharacter/Op... Zwiększony rozmiar stosu do 100k, wolna sterta to około 88k. To pozostawia około 40-50k dla sterty libc. Wersja Freertos to teraz V10.4.1 zamiast V7.0.2 (dostarczona z nowym sdk) i używa heap_5. LFS jest teraz dostępny, długość 0x1B000, zastępuje sekcję...
Szukałem w repozytorium OpenBK7231T_App, ale nie mogłem znaleźć bZachowaj flaga, może szukam złej lokalizacji. Co się stanie, jeśli addChangeHandler zostanie wykonany dwukrotnie z różnymi powtarzającymi się wartościami, np.:- addChangeHandler Channel1 == 1 addRepeatingEvent 500 1 setChannel 1 0 addChangeHandler Channel1 == 1 addRepeatingEvent 300 1...
https://obrazki.elektroda.pl/2141571100_... Od systemów wbudowanych do inteligentnych produktów oczekuje się coraz większej funkcjonalności. Można to łatwo osiągnąć dzięki Linuksowi, który oferuje oprogramowanie do wszechstronnego zastosowania. Jednakże Linux wymaga dość dużych zasobów sprzętowych, w szczególności pamięci, więc platforma...
Poszukaj w plikach konfiguracyjnych definicji z rozmiarem sterty GUI (prawdopodobnie bedzie to w pliku GUIConf.c/h). Powinieneś zmniejszyć rozmiar sterty tak aby całośc się zmieściła w RAM.
Nie ma rzeczy nieograniczonych w informatyce. Rozmiar sterty jest ograniczony miejscem w pamięci fizycznej i pliku wymiany. No więc też argument mało wartościowy, skoro i stos i sterta mają swoją granicę
Test aktualizacji Xradios LFS dla wszystkich, Easyflash dla wszystkich, OTA dla wszystkich (XR809 nie działa, XR872 nie ma jeszcze wygenerowanego obrazu), Pins dla wszystkich, berry dla XR806. Zaimplementowano PWM, ADC (w tym VBAT), UART, watchdog w APP, delay_us, RSSI i adresy ip, pozostały rozmiar sterty. Naprawiono MAC dla XR806. https://github.com/NonPIayerCharacter/Op...
Ale malloc nie ma prawie nic do stosu. Dynamiczna alokacja umieszcza zmienne na stercie (heap). Jeżeli ten projekt dostałeś w takiej wersji (z make i startupem) to nie powinno być tutaj problemu, ale dla pewności sprawdź jaki masz rozmiar sterty (heap size) w startupie zadeklarowany (bodaj plik SAM7.s)
Sterta nie odnosi się tylko do C++, wydaje mi się, że ocenienie tego to zależy przede wszystkim od tego do jakiego problemu np. sterty potrzebujemy. Bo np jak nie mamy jakiegos OSa postawionego to w zasadzie rozmiar sterty ~taki rozmiar ile ma rozmiar danych dynamicznych tworzonych przez nas (oczywiscie to nie jest do konca prawda bo np. fragmentacja)....
jeśli chciałbym użyć pojedynczego stosu Proponuję po prostu w skrypcie linkera ustawić rozmiar odpowiedniego stosu (bodajże main), a drugi dać na zero, w startupie usunąć linijki które pokazałeś i nic więcej nie zmieniać. czy linker policzy sobie rozmiar sterty i wszystko zatrybi? Nie, rozmiar musi być jakoś podany, ale jest to kwestia kilku odejmowań....
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...
Witam, mam problem z którym nie umiem sobie poradzić, a mianowicie: napisałem funkcję (char*)_sbrk(int size), która to przy wywołaniu przez malloc wyrzuca na UART wartość size i co się okazuje, że przy wywołaniu np. malloc(0) funkcja _sbrk wyrzuca najpierw wartość 0x20 a potem 0x9E4 Eclipse + Sourcery G++ Lite + STM32F2xx_StdPeriph_Lib_V1.1.0 niby wszystko...
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.
Ok, zrobiłem test i rozmiar globalnego bufora wykorzystywanego przez zadanie nie jest doliczany do stosu zajmowanego przez zadanie.
Debug -> Use ST-Link (Deprecated) mam prawidłowy tryb - SWD. Jako driver mogę wybrać wersję nie-deprecated, algorytm odpowiedni i dalej to samo. Tak samo mam wrzucając hexa przez ST-Link Utility. Jakby wsad tworzony przez Keila nie był ok. Jeszcze konfiguracja targetu: http://obrazki.elektroda.pl/8816767600_1... Opymalizacja c/c++ na...
Twoich plików nie używałem. Szczerze mówiąc jestem raczej początkujący jeśli chodzi o mikrokontrolery. Do tej pory wystarczało mi: -konfiguracja mC i peryferiów i napisanie jakiegoś algorytmu obliczeniowego. Zarządzanie pamięcią nawet się nie tykałem (stosy, sterty itp). Jeśli chodzi o problem to zwiększyłem rozmiar stosu dwa razy i wygląda na to, że...
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...
po co ci struktura w ktorej jest TYLKO INT?! Czy ty znasz zastosowanie struktur? Po co przepisujesz stałą tablicę intów do dynamicznej tablicy intów (bo w efekcie wlasnie to osiągasz alokując na stercie miejsce na te swoje struktury)... 1. Nieeleganckie otagowanie struktury - Dlaczego typ u ciebie nazywa się tak samo jak tag?... eleganckim rozwiazaniem...
W skrypcie linkera muszą być zadeklarowane symbole o nazwach jak wyżej wyznaczające obszar pamięci przeznaczony dla sterty (heap). Proponuję ściągnąć projekt dla lpc2103 i przystosować postawowe pliki (startup, Makefile, skrypt linkera, tablica wektorów: lpc2103_rom.ld, Makefile, startup.S, vectors.S, hdr\hdr_cpsr.h) do swojego projektu, a większość...
Witaj, Z tego co widzę to jakaś komercyjna wersja ide do LPC-ków bazująca na eclipse. Nie napisałeś jakiego kompilatora używasz. Informacje o wykorzystaniu ramu znajdziesz w *.map pliku lub po wykorzystaj plik kompilatora size do określenia zajętości obszaru pliku wynikowego. Naturalnie ja mam na myśli kompilator gnu gcc. Co do stosu to w gcc jest tak...
Nie patrzylem w ten przyklad, nie wiem po co tutaj sie okresla ten rozmiar i czy on jest maxymalny czy minimalny? Może się autor wypowie. W przykładach (w skrypcie linkera) ustawiany jest rozmiar maksymalny. Ułożenie w RAM jest następujące: data - bss - stos 1 - stos 2 - sterta. Co do sprzętowej kontroli, to jest kilka opcji, ale z każdą jest problem....
Sugerowałbym, aby najpierw zacząć obserwować rozmiar sterty. Co więcej, być może będziemy musieli włączyć watchdoga na BL602 w taki sam sposób, jak zrobiliśmy to na BK7231.
Zawsze robie clean. Nie po zmianach, które wprowadziłem. To nie ma związku. W projekcie, w main() mam przygotowanie obszarów tablic, w których będą wykonywane transformaty fft. Zakomentowanie tego, co poniżej nie powoduje w/w błędów. Odkomentowanie powoduje błąd. [syntax=c]int dims_obraz[2] = {Ma,Na}; // dimensions of fft obraz int dims_znak[2] = {Ma,Na};...
Witam, mam problem z zawieszaniem się freeRTOSa. Program grzęźnie w funkcji vListInsert void vTaskUSART3(void * pvParameters) { portCHAR i; vSemaphoreCreateBinary( xSemaphore_US3_O ); xSemaphoreTake( xSemaphore_US3_O, 0); xQueue3_TX = xQueueCreate( 32, sizeof( portCHAR ) );//32 xQueue3_RX = xQueueCreate(...
Moim zdaniem nie jest to wina kompilatora. Powinieneś sprawdzić rozmiar sterty, ponieważ funkcja malloc właśnie w tym obszarze rezerwuje pamięć.
Tak, w międzyczasie: wygląda to na problem przepełnienia sterty. Czy sprawdzałeś ile masz wolnego miejsca na stercie (ESP.getFreeHeap())? Z tych dwóch fragmentów kodu, które przedstawiłeś wynika, że dość rozrzutnie korzystasz ze sterty :) Dla przykładu poniższy kod też powinien zadziałać (dla małych rozmiarów danych): [syntax=c]int numSSID = WiFi.scanNetworks(false,...
203 = Heap overflow error Błąd może się pojawiać na skutek tego, co napisałem w ostatniej linijce pierwszego postu. To nie jest brak pamięci, tylko przekroczenie rozmiaru sterty. Masz taki bałagan z wcięciami i sekcjami begin-end, że kod jest nie do zanalizowania.
Stało się możliwe używanie wyłącznie mbedtls (bez wolfssl) na BK7231U/T i BK7252. To znacznie zmniejszyło rozmiar binarny. Dodatkowo przyszedł mi do głowy pomysł, aby pobawić się konfiguracją mbedtls. Usunąłem kilka niepotrzebnych rzeczy, aby zmniejszyć rozmiar binarny. Dodatkowo wypróbowałem mbedtls 2.27.0 (domyślnie 2.6.0). Rozmiar binarny został...
Da się jakoś zwolnić zajmowaną przestrzeń w tablicy, kiedy jest mi już niepotrzebna ? Jak często ten obszar pamięci w programie będziesz wykorzystywał? Tylko raz? Można alokować i zwalniać dynamicznie (za pomocą new/delete) żądany obszar pamięci, ale w wypadku 20kB "cienko" to widzę na ESP8266 (sam program też używa sterty). Na pewno lepiej jest korzystać...
Dzięki za pomoc! freeRTOS już działa -uruchamiają się 2 zadania z diodami:) Z kronikarskiego obowiązku -co zrobiłem: -w FreeRTOSConfig zmniejszyłem rozmiar sterty, wyłączyłem "chechforstackoverflow" -wyrzuciłem podmiany nazw wektorów przerwań i wpisałem właściwe w tablicy, w vectors.c wyrzuciłem funkcje ich obsługi z vectors.c i zadeklarowałem jako...
Tak, jest kompilator C++. Głównie chodzi jednak o to, że język ten w niektórych zastosowaniach powoduje nadmierne obciążenie procesora lub zużycie zasobów (przydzielanie obiektów wymaga obecności sterty). W przypadku mikrokontrolerów ze względu na częstotliwość zegara często bardziej zależy na wydajności niż przenośności kodu, a pisanie w C pozwala...
(at)korteksik A widzisz ile zarezerwowałeś na stos i stertę? Właśnie 1.5kB 48 bajtów to stawiam, że jest z pliku startup. Jeżeli chcesz zmienić rozmiar stosu i sterty, to w skrypcie linkera znajdź: [syntax=c] _Min_Heap_Size = 0x200; /* required amount of heap */ _Min_Stack_Size = 0x400; /* required amount of stack */[/syntax] i zmień wartości na takie,...
Stos jest do zmiennych chwilowych o małym rozmiarze do większych używaj sterty. [syntax=cpp] void GenUniformInitialize(){ int *tab = new int[50000]; (...) delete []tab; } [/syntax] Eagle
A jak sprawdzać wolną pamięć w czasie pracy programu na AVR, podaj przyklad kodu Dodano po 1 Cześć! Bardzo dobrze, że pytasz o monitorowanie wolnej pamięci w trakcie pracy programu na mikrokontrolerach AVR, ponieważ jest to ważny aspekt w projektowaniu stabilnych i efektywnych aplikacji. Istnieje kilka metod na sprawdzanie dostępnej pamięci RAM, ale...
Ten przykład akurat da się wyjaśnić. Sterta układana jest od dołu w górę a stos odwrotnie (przynajmniej w większości). Jak zaczną zachodzić na siebie to tak może być. Ale regularność tej 46 komórki raczej wykazuje na błąd typu indeksowanie tablicy poza jej rozmiarem. Sporo by można scenariuszy snuć. Czasami takie kłopoty dobrze że wychodzą bo świadczą...
Witam, Nie mogę rozwiązać jednego problemu, może będziecie w stanie mi pomóc. Próbuję na STM32F042 uruchomić biblioteki dla czujnika VL53L (biblioteki ULD), ale problem w sumie raczej nie w tym. Kompilacja przechodzi bez problemu, ale przy próbie wywołania funkcji wpada w HardFault i nie mam pojęcia czemu. https://obrazki.elektroda.pl/7548785900_...
Właśnie chciałem odchodzić od statycznych tablic na rzecz dynamicznego przydzielania pamięci, ale kolejny raz czytam, że to nie jest najlepsze rozwiązanie. Każde przemyślane rozwiązanie jest dobre. Jeśli nie przesadzisz z dynamiczną alokacją to też będzie ona działać OK. Dużo osób pisze o statycznym deklarowaniu obszaru pamięci i późniejszym podziale...
Powracam do tego urządzenia teraz, gdy (at)insmod wprowadził kilka zmian w kodzie XR809, w tym: -posortowanie, oznaczenie i udostępnienie wszystkich użytecznych GPIO -włączono https://obrazki.elektroda.pl/6353781500_... Myślę, że to rozsądny startowy autoexec, nie do końca przetestowany. https://obrazki.elektroda.pl/9693166000_...
Minifikacja – droga naprzód Udało mi się jeszcze bardziej poprawić wymagania dotyczące przestrzeni dyskowej ręcznie Minifikacja części zawartości .vue 1. Udało się zmniejszyć rozmiar partycji do 196kB 0x30000. Nadal otrzymuję komunikat „Błąd: MAIN: Ostrzeżenie o niskim stercie!” 2. Pliki .vue mają następującą strukturę: <template> . . . </template>...
Ile pamięci jest przeznaczone na stertę w tym skrypcie? Nie wiem jak to sprawdzić.
Kontynuuję prace nad wcześniej wspomnianą przeze mnie biblioteką. Chciałbym, aby sama biblioteka natywnie była thread safe, bez brania pod uwagę docelowego (RT)OSa. Nie mam najmniejszego pomysłu jak to porządnie zrealizować... tej stercie, wywołując ten Xmalloc, Xfree itp. Pozwoli to na stworzenie kilku niezależnych stert, co bardzo przydaje się w pewnych...
Tak też próbowałem, tylko nie rozumiem jaki teraz będzie rozmiar przeznaczony dla tego bufora? Bo nie jest to chyba określone jawnie, tak jak np dla stosu, czy sterty. Dla drugiego bufora stworzyć identyczną sekcję w sdramie? Gdy zapiszę ją pod sekcją frame, to umieszczona ona zostanie zaraz za sekcją frame w pamięci?
Możesz rozwinąć temat? O stos dbam(w sensie mam miejsce). Jaka inna alternatywa? Sterta czy global? Zależy w którą stronę chcesz pójść. Możesz ograniczyć liczbę zapisanych znaków używając wariantu funkcji z literką "n" (snprintf, sniprintf, vsnprintf, vsniprintf, ...), dzięki czemu nigdy nie przepełnisz tego bufora. Możesz też używać dynamicznej alokacji...
Musisz sobie zachować parametr przekazany do konstruktora jako właściwość (pole) obiektu. Innej opcji (poza nieprzenośnymi, niskopoziomowymi sztuczkami grzebiącymi w stercie) nie ma. Operatorem sizeof też tutaj nic nie wskórasz, bo on zwraca rozmiar obiektów (typów) znanych w trakcie kompilacji - czyl sizeof(Lista) == 4, bo Lista jest wskaźnikiem a...
Gdybyś wykazał ODROBINę dobrej woli i użył do tego Googli zrobiłbyś to już kilka dni temu, ale nie... lenistwo jest silniejsze. Bo wystarczy wpisac w google pytanie: Jak zmienić rozmiar pliku wymiany i oto dostajemy: [url=http://www.google.pl/search?hl=pl&q... stertę użytecznych linków...
Dla przykładu FreeRTOS z dwoma taskami na AVR mi zajął około 8kb a na STM32F1xxx zajmuje koło 3kb True - dwa taski (wspólny kod, funkcja z parametrami) na LPC1769 + jakaś tam podstawowa inicjalizacja zajmują tyle (optymalizacja na "s"): Size of target .elf file: arm-none-eabi-size -B out/lpc1769_blink_led.elf text data bss dec hex filename 3088...
Wszystko pięknie, ale użycie ASan w symulatorze systemu embedded na linuksie czy window$ nie gwarantuje, że kod będzie wolny od błędów po przeniesieniu na docelowy układ embedded. Docelowe układy moją inną architekturę, różne rozmiary słów, wyrównanie pamięci czy specyficzne mechanizmy zarządzania pamięcią. Te różnice mogą prowadzić do błędów, które...
rozmiar akumulatora rozmiar alokacji rozmiar papieru
asrock tuning ustawi dmuchawa pedal fault
peugeot boxer kierunkowskazy centrum multimedialne
Kondensatory do zwrotnicy Tonsil Altus 110 – jakie wartości i typy MKP/NPE wybrać? Zamiennik triaka Z7MY243 – Z0107M, BT131-600, MAC97A8, BCR1AM-12, parametry, obudowy