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ś...
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!!
W funkcji xmit_spi_multi() masz błąd. 4\/3!!
W pliku konfiguracyjnym OpenOCD z którego korzystasz ustaw _WORKAREASIZE na rozmiar pamięci jaką dysponujesz. set _WORKAREASIZE 0x4000 4\/3!!
Każdy nowy projekt (w nowym katalogu) generuje nowe pliki, razem z core_cm3.c, więc będzie trzeba za każdym razem zmieniać te wpisy lub podmieniać plik. Wystarczy zmienić plik źródłowy w folderze ..\CoIDE\repo\Components\54_M4 CMSIS Core\src\cmsis (to jest akurat dla STM32F4xx). W ten sposób zmodyfikowałem sobie wszystkie pliki, które potrzebuję na...
Ogólnie dobrze kombinujesz. Wyrzuć ustawienie VTOR z aplkikacji - niech ustawia go bootloader. W bootloaderze zawołaj procedurę spod adresu pobranego z adresu 4 aplikacji, czyli o 4 dalej niż wartość VTOR. Jedyna potrzebna zmiana w skrypcie konsolidatora - to adres startowy (no i zmniejszony rozmiar dostępnej pamięci ROM)
Tak słyszałem, ale jeżeli chcę mieć np 4 kilka różnych takich funkcji i w każdej static o rozmiarze 50, to chyba lepiej jedna globalna o rozmiarze 50?
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ć ?
W zasadzie to jakiegoś zysku to nie ma jeśli chodzi o ilość danych przesyłanych a może być nawet gorzej w zależności od rozmiaru długości, ale chociaż nie trzeba wymyślać specyficznego niepowtarzalnego SOF-a.
Mam pytanie z innej beczki:) Co mam zrobić aby w Atollic TrueStudio pokazywało mi rozmiar wgrywanego programu?
Przy okazji walki z "magicznymi cyframi" - zapewne korciło Cię (może nawet tak zrobiłeś) żeby do funkcji podać rozmiar "4", natomiast o wiele lepszym rozwiązaniem jest napisać "sizeof (nazwa_twojej_zmiennej)". 4\/3!!
Wiele zależy od tego co ten program robi, a poza tym Arduino IDE nie słynie z bardzo optymalnego kodu. Chcąc w pełni wykorzystać była to biblioteka do wyświetlacza lcd tyle że ta nieoptymalizacja również dotknęła atmegę a kod ten sam
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...
*wsk++; Ciekawe co ta linijka ma niby robić i niby po co? 4\/3!! ..tak głeboko to nie analizowałem :) ..popełniłem tylko *wsk=0; jako znacznik końca (kolejny za wczytanym z klawiatury) Powinna być jeszcze kontrola zakresu żeby nie przekroczyć rozmiaru bufora.
Zrobiłem własne formaty bitmap, 2,4 bity na pixel. To najprostsze a daje nawet więcej jak 2-krotne zmniejszenie rozmiaru, kwestia kompromisu.
nie mam pojęcia jak wpisać zmienną Dane do bufora TxBuf. Normalnie to się robi tak: Jeśli wysyłasz coś z pamięci procesora przez DMA gdziekolwiek (USART, SPI, I2C itd) to musisz wpierw przygotować dane do wysyłki - wszystkie! A dopiero później przygotowaną paczkę wysyłać. Czyli Twój TxBuf powinien być tablicą, nie pojedynczą zmienną. Wypełniasz go...
Odbiór danych o nieznanym rozmiarze przez DMA jest bardzo problematyczny... Ponieważ włączyłeś tryb "circular", to w zasadzie jedyna opcją jest późniejsze składanie danych w dodatkowym buforze - będziesz musiał skopiować to co jest na końcu bufora DMA i potem to co jest na początku - tak aby dane znów były w poprawnej kolejności. DMA realizuje po prostu...
Wygląda na to, że się całość się jakoś skompilowała pomimo warningów i zlinkowała (bo powstały mi pilki hex i elf). ...aczkolwiek rozmiar pliku wynikowego *.hex = 34 bajty każe przypuszczać, że jeszcze sporo przede mną... Brakuje Ci tablicy wektorów i startupa. Prościej będzie Ci zacząć od kompletnego przykładu, ewentualnie od przykładu + modyfikacje...
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
(at)Mscichu Te linki dotyczą modułu a nie gołego wyświetlacza. To jest pierwszy lepszy z brzegu link z opisem złącza. Z drugiej strony wystarczy przecież zajrzeć do noty katalogowej wyświetlacza: https://www.waveshare.com/w/upload/7/77/... Kolejną sprawą byłby sens produkcji mało używanych wyświetlaczy w tym samym rozmiarze...
-- EDIT -- W sumie założyłem, że te funkcje dotyczą emulowanego we flash eepromu wg pomysłu ST. W sumie jednak nie wiem co to za funkcje i co robią, ponieważ ich związek z tematem jest dosyć nikły... Tak więc nie jestem w stanie precyzyjnie odpowiedzieć na pytanie, a to co napisałem poniżej może być zupełną bzdurą. -- EDIT END -- Wygląda OK. memset()...
Nie reklamuję żadnego środowiska, sam używam czterech, a wszystkie projekty na M0 robię w Keilu, bo tak jest najłatwiej i najszybciej. Naprawdę uważasz, że dla początkującego jest coś prostszego i szybszego w instalacji/użyciu, niż Keil? Zanim początkujący dojdzie do 32 KiB, to i nauczy się pracy ze środowiskami na Eclipse. Zresztą w 32 Kib zmieści...
w przybliżeniu (rozmiar_strony / rozmiar_elementu) [; Pamiętaj, że dwa pierwsze bajty strony zajęte są przez jej "status", a do rozmiaru elementu musisz wliczać zarówno przechowywaną zmienną jak i jej ID. Jak Ci mało, to można rozszerzyć funkcje tak, aby korzystały ze dwóch zestawów stron parami, trójkami itd. Zrobiłem taką emulację, tyle że wzbogaciłem...
Od kilku lat widać, że ST idzie w naprawdę bardo fajną stronę z tymi zestawami. Ostatnie miałem okazję zobaczyć na żywo większość ich shieldów, z którymi się wcześniej nie spotkałem. Naprawdę szeroka oferta, nie miałem pojęcia, że mają np.: zestawy z silnikiem bezszczotkowym w komplecie.
TFT i ekran dotykowy słusznego rozmiaru to duża zaleta tego zestawu. Osobiście uważam że lepszy jest V3 ze względu na swobodniejszy dostęp do złącz. NSCNT a odpaliłeś już miganie diodą? Co do TFT to możesz zajrzeć na [url=http://www.micro4you.com/store/mini... gdzie znajdziesz demo do LCD -...
W emulowanym EEPROMie najwygodniejszą opcją jest przechowywanie danych o stałym rozmiarze, który przy okazji w jakiś sensowny sposób pozwala wykorzystać rozmiar strony. Jeśli możesz się ograniczyć tak że KAŻDY wpis ma ten sam rozmiar, to emulowany EEPROM jest opcją. Choć wiele zależy od tego jaki dokładnie STM32 - w niektórych (np. STM32F4) najmniejszy...
Proszę Szanownych Kolegów i Koleżanek o pomoc. Do zaprojektowania urządzenia: schemat i PCB. Pierwszy raz będę to robił NIE hobbystycznie. Specyfikacja: - płytka 4 warstwy - rozmiar ok. 80 mm × 80 mm - STM32 - Ethernet, PoE - wyświetlacz OLED (podstawowe komunikaty diagnostyczne) - interfejsy szeregowe: CAN, LIN Jak to wygląda na normalnym rynku? Zakładam...
A nie prościej jak człowiek rozmiar przekazać jako argument, którym mógłby być sizeof?
Kopia posektorowa to zapis sektor do sektora. Miejsce jest potrzebne takie samo lub większe niż rozmiar partycji.
Szkoda, że nie ma STM32F4 na płytce takich samych rozmiarów jak w pierwszym poście. Byłoby nowocześnie i w małych rozmiarach.
Tak to RGB565, no zastanawiało mnie to, wyobrażało mi się, że uint16_t zostanie zapełniony przez dwa kolejne bajty przysłane przez kamerę. Dzięki za kod, zaraz sobie go użyczę na chwilę... Dziwne, ale zawiesza mi się procesor po dodaniu twojego kodu. P.S. zmieniłem tylko zmienną i rozmiar bufora w NDTR.
Tak, ćwiczenia z książki są napisane pod ten zestaw. Kod programu możesz pisać w środowisku Keil, i pod to środowisko są te przykłady. Ale możesz pisać w System Workbench for STM32. Ja w tym piszę, jest to program pod eclipse, nie ma ograniczenia w rozmiarze kodu. W Keil jest ograniczenie do 32kB, i jak dla mnie Keil jest trudniejszy. Płytka w całości...
Znalazłem informację, że: text + bss = FLASH data + bss = RAM To powinno wygladac tak: text + data = FLASH data + bss = RAM Zmienne zainicjalizowanie (.data) powinny zostac przekopiowne z FLASH do RAM przed funkcją main. 1) Deklarujesz tablice i ja inicjalizujesz (bedzie zajmowala miejsce we FLASH oraz RAM) 2) Tylko flash. 3) Zadeklarowałeś tablicę...
1. Na stos , a czasami nawet 2 stosy trzeba poznaczyć jakiś obszar RAMU. Stos jest umieszczany zaraz za danymi czyli sekcjami data i bss. Rosnąc w dół może wejść na dane. Dlatego należy przewidzieć wystarczający rozmiar stosu(ów). Na temat zarządzania stosami i błędami można doktoraty pisać. Temat rzeka i do prostych nie należy. 2. Rozmiar zajętości...
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!!
Witam, Długo już szukam i nigdzie znaleść nie mogę: Jak rozpoznać jaki jest rozmiar obszaru backup danego stm32? Niektóre mają 10słów (20bajtów), inne 42słowa (84bajty), ale nigdzie nie mogę znaleść klucza które są jakie, i czy może są jeszcze jakieś inne wersje. Przekopałem dużo dokumentacji, jedyne co zauważyłem to że procki z małym flash'em zazwyczaj...
Datasheet wbrew Twoim ironiom jest bardzo jasny. W rozdziale, o którym piszesz: The STM32F405xx and STM32F407xx are part of the STM32F4 family No to dobra bierzemy jakiś STM32F103RFTx i on na pinie 64 ma mieć VDD Btw, nie wiem jak Ty czytasz te dokumentacje, ale z tego co widzę i F103 i F405 mają na pinie 64 Vdd... Więc nawet nie mam pomysłu dlaczego...
Spróbuj zmniejszyć w tym pliku "set _WORKAREASIZE 0x4000" - przetestuj np połowę rozmiaru pamięci RAM. Problemy wynikają zapewne z tego, że w kodzie OpenOCD jeszcze nie ma zaimplementowanych parametrów dotyczących tego akurat mikrokontrolera. Przejrzę ten kod wieczorem i postaram się stworzyć patcha. 4\/3!!
A ustawiłeś sobie rozmiar stosu dla przerwań (w pliku linkera)? 4\/3!!
Standard C nic nie mówi o kolejności zmiennynch w pamięci. Przyzwoity kompilator i linker będzie rozmieszczał dane w kolejności malejącego rozmiaru, a nieupywane będzei eliminował całkowicie. Chcesz mień znany rozkład danych - użyj struktury - kompilator nie ma prawa jej zoptymalizować, ale będzei stosował wyrównanie naturalne, czyli np. int32_t będzie...
Spróbuj zwiększyć rozmiar stosu w Twoim startupie do np 1kb
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...
W podanym linku brakuje kilku ważnych danych: Pasma oscyloskopu, pojemności sondy, długości ścieżek przy dzielniku. Zastosowany oscyloskop to prawdopodobnie analogowo-cyfrowy sprzęt o paśmie ok 20MHz i przebieg prostokątny 8MHz 5V już będzie miał znacznie zniekształcone zbocza choć w rzeczywistości zbocza będą 'ostre" rzędu 10-20 ns. Pojemności montażowe...
Jedynie programem HDD Capacity Restore przywróciłem rozmiar dysku. Rano odpalam kompa i dysk się skurczył. Mam zrobić pełen skan NTSF czy tylko pare GB?
Dwa bufory uzupełniane danymi naprzemiennie najlepiej o rozmiarze będącym wielokrotnością jednego sektora SD ( chyba 512B ). Bufory muszą być na tyle duże aby w czasie zapisu na SD mieściły wszystkie dane z czujników. Coś więcej: [url=http://elm-chan.org/fsw/ff/en/appno... -> Using Mutiple-Sector Write Uwaga, karta SD szczególnie większych...
Rozwiązałem problem - przynajmniej w mojej sytuacji. Powodem błędu były problemy z rozmiarem bloku - wpisanie na sztywno wartości 512 w odpowiednim miejscu (w tej chwili nie pamiętam gdzie a nie mam dostępu do plików) jako rozmiar bloku (gdzieś przy inicjalizacji na początku odczytu danych o rozmiarze karty itp.) pomogło w 100%.
Pomijając fakt, że dla tablicy o rozmiarze 1000 x 16 indeksy struct S s; s.tab[999]15] = 20; Tyle że tutaj schodzimy na poziom podstaw programowania, a te opisane są w książkach i w milionach tutoriali na necie.
1) Czy dla zmiennych o rozmiarze poniżej 32bity zawsze przydzielane jest 4 bajtowy rozmiar pamięci? To nie ma nic wspólnego z 32 bitami :) Masz wyrównywane adresy do 4 bajtów, dlatego kompilator dodał Ci w środku tablicę 3 bajtową. Jeżeli chcesz żeby taka struktura miała 9 bajtów to musisz jej nadać atrybut packed. 2) Czy stosowanie zmiennej 8 bitowej...
Nie wiedziałem, że duży rozmiar pamięci obliguje programistę do pisania dłuższych i mniej czytelnych programów. ;)
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...
Zwiększ rozmiar tablic tab_1 i tab_2. I pokaż jak to wysyłasz.
Moim zdaniem nie jest to wina kompilatora. Powinieneś sprawdzić rozmiar sterty, ponieważ funkcja malloc właśnie w tym obszarze rezerwuje pamięć.
Jeśli problem zaczął występować po włączeniu jakichkolwiek przerwań, to sprawdziłbym na samym początku rozmiary stosów.
#define UART_BUFOR 32 // definiujemy buf... Zalecam raczej kurs podstaw języka C.
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!!
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!!
Inne środowiska są albo płatne i darmowe wykorzystanie ograniczenia do np. 32kB niczego nie rozwiązuje, bo prosty wyświetlacz graficzny na starcie wykorzysta tą pamięć Używam Atollic TrueSTUDIO for ARM Lite. Ma co prawda ograniczenie rozmiaru ale dotyczy ono tylko kodu. Dane takie jak tablice fontów czy grafiki nie są liczone, natomiast funkcjonalnością...
No generalnie OpenOCD do workspace pakuje kod do przegrania oraz krótką procedurkę która dokonuje faktycznego zapisu. Możesz ustawić ten parametr na dowolnie duży byle mniejszy/równy niż max rozmiar pamięci RAM. 4\/3!!
Do STM32 jest bardzo dużo fajnych zestawów startowych. Najprostsze to wydatek do 100zł. Jak ktoś ma jednak minimalne zdolności, aby polutować 0.5mm rozstaw nóżek to taki zestaw zrobi samemu w cenie procka + laminatu :) Bo kolejną zaletą tej rodziny jest to, że aby je odpalić wystarczy minimalna ilość podzespołów. A za 300zł faktycznie można mieć niezłe...
Było problemem, ale akurat dlatego, że autor się uparł jak osioł, że wina leży w linkerze/startupie i tak tam naprawiał, że aż zepsuł :) Ja na skrypcie linkera i startupie Freddiego odpaliłem usb bez problemu. Jedyna modyfikacja to rozmiar stosu bo standardowo jest za mały.
Najprościej chyba jest zainstalować keila - tyle że jego darmowa wersja ma ograniczenie na rozmiar kodu. PS. Jeśli poddajesz się przy IDE to parno widzę twoją karierę z stm32 ;)
Podstawową rzeczą jaką należy rozważyć, to to jakiego widma oczekujemy. To znaczy: FFT daje widmo liniowe w osi częstotliwości, czyli mamy równy skok w HZ między prążkami, zależny od częstotliwości próbkowania i rozmiaru algorytmu FFT. W zastosowaniach akustycznych, oczekuje się widma rozłożonego w częstotliwości logarytmicznie, co stoi w opozycji do...
Witam. Zaopatrzyłem się niedawno w aplikację zwaną Flash loader demonstrator. Umożliwia ona m.in. zapis i odczyt pamięci programu mikrokontrolera STM32 przez bootloader poprzez RS232. Gdy chciałem odczytać pamięć flash i zapisać obraz pamięci w pliku hex mocno się zdziwiłem, gdyż plik miał rozmiar 319744 bajtów, a flash mojego STM32F103RB ma "tylko"...
przy debugowaniu, warto zmniejszyć poziom optymalizacji, nawet do -O0 Ogólnie doczytałem, że masz rację. (ciekawy artykuł znalazłem np. tu: Ciekawie się zapowiada. Korzystam z Atollic TrueStudio (oparty na Eclipse). Jak zmniejszyć poziom optymalizacji? Bo chyba się jeszcze w tym gubię ;) Właściwości Projektu->Settings->Tool Settings->MCU GCC Compiler->Optimization->Optimization...
Tak naprawdę, to ten wzór powstał z waszych :) Z lewej strony równania (at)stmx, a z prawej Twojego :) Page_127 to początek ostatniej strony flash = 0x0801FC00. U mnie w STM32F103 strony mają rozmiar 16x1024. Kompilator utworzony w Eclipsie na podstawie poradnika Freddie Chopin.
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!!
Tyle, że oba kompilatory sprawdzałem na tych samych programach opcjach - z wyłączoną optymalizacją. Tak jakby wyrokować o prędkości maksymalnej samochodu na podstawie tego ile "wyciągnie" na wstecznym... Poza tym nie byłbym taki pewny Twoich porównań nawet przy takim założeniu, bo ponoć w Keil optymalizacja jest domyślnie WŁĄCZONA, więc jeśli jest...
Nie nm, bo to by był systemowy, tylko arm-none-eabi-nm. Jak w Eclipse, to raczej w post-build steps. Dobrze też posortować malejąco, włączyć demangling nazw i przekierować wyjście do pliku. Ostatecznie: arm-none-eabi-nm --size-sort -rC "${BuildArtifactFileName}... >> rozmiary.txt Co do błędu OpenOCD - może problem wynika ze sterownika...
Nie bardzo rozumiem. Testowana przez kogo? Flash testowany w fabryce. Mowiłem o flashu. Sorki. A RAM określisz na podstawie rozmiaru flash i DEV ID jeśli chcesz dla wszystkich STMów.
(at)tzok Mamy w PL taki rynek PCB, wiele małych firm które urosły do trochę większego rozmiaru niż garaż powstałych 20-30 lat temu. technika poszła do przodu, wymagania przeciętnego konstruktora elektronika wzrosły a firmy zostały tam gdzie były więcej niż dwie warstwy? ścieżki węższe niż 0,2mm? nie, otwory mniejsze niż 0,4mm? nie, soldermaska rozjeżdzająca...
Zastanów się dobrze czego rozmiar tak naprawdę podajesz. [syntax=c]DMA2_Channel1->CNDTR = sizeof(dst_buf); //Buffor size :[/syntax]
Jeżeli funkcja nie jest zadeklarowana jako static, to usunąć niepotrzebną funkcję może jedynie konsolidator, POD WARUNKIEM, że wywołując kompilator uaktywnisz opcję generowania oddzielnych sekcji dla poszczególnych funkcji - to b.ważne dla optymalizacji rozmiaru kodu. Kompilator nie "analizuje całego projektu", chyba, że używamy LTO.
Wszystkie pliki mam właśnie z Twojego przykładowego projektu. Zmieniłem tylko rozmiar pamięci bo tam było chyba na f103. No nie wiem, to pokminię jeszcze nad tym
Nie można w ten sposób inicjalizować tablicy data, bo ona musi mieć albo podany konkretny rozmiar, albo musi być zdefiniowana gdzieś indziej i tutaj tylko wskaźnik. 4\/3!!
Witam, Czy udało się rozwiązać problem ? Mam podobny problem z zapisem MultiBlock, tyle tylko ża zamiast oczekiwania funkcja konczy swoje dzialanie lecz zapisany na karcie plik ma 0 bajtow. Ja również wykorzystuję DMA do obslugi karty. Funkcja f_write dziala poprawnie w przypadku zapisow do 1023 bajtów, natomiast od 1024 bajtów jako resultat jej dzialania...
Kolego "fazolek": Poradziłeś coś bo u mnie też się procesor wiesza na DMA z sd karta ale od czasu do czasu. Jak kopiuję plik np 20 mega do na 10 prób 6 zwiech. Nie wiem czy mam coś źle podłączoną kartę ale czyta mi tylko microSD, SD i miniSD czyta ale tylko rozmiar, na danych się wiesza. Sam robiłeś płytkę z Stm32 czy masz kupioną?
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ę...
Wielkość tablicy nie musi być potęgą dwójki, ale jeżeli jest, to znacznie ułatwia indeksowanie i przyspiesza pracę algorytmu wyliczającego wartości. To co potrzebujesz zamyka się w tych kilku linijkach wywoływanych cyklicznie przez kontroler DMA pracujący w trybie cyklicznym; w połowie transferu i po zakończeniu. Ta funkcja wypełnia połowę bufora DMA...
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, samo _sbrk() nie alokuje pamięci. Nie mniej jednak _sbrk() może mieć mechanizm sprawdzający ilość pamięci dostępnej dla sterty. W związku z tym dlaczego ten rozmiar musi być w moim przypadku (a może nie tylko w moim) większy od 0x20+0x9E4 i gdzie jest to napisane, że rozmiar pamięci dostępnej dla utworzenia sterty musi być większy od jakiejś wartości?
Dołącza - libc, libm, libgcc. Może one się różnią wersjami? Z drugiej strony jak widzę w pierwszym przypadku wskazujesz mu na skrypt linkera stm32_ROM.ld, może tam tkwi odpowiedź.
Ustawiłem taki mały rozmiar, aby móc to przetestować ;-) Alokacja: [syntax=cpp] uint32_t *numbers = new(std::nothrow) uint32_t[256]; if (numbers == NULL) { } [/syntax]
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.
(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...
ogólnie rzec biorąc wszystkie nastawy mam z klawiatury zewnętrznej wiec nic tu bym nie zmieniał ,poza rozmiarem wyświetlacza na którym wszystko jest wyświetlane może jakieś sugestię co do większych wyświetlaczy nie muszą być kolorowe
Zapisujesz dane do nieistniejącej pamięci poprzez wskaźnik "ramkaodbierz", który na nic nie wskazuje. Zamień ten wskaźnik na tablicę o odpowiednim rozmiarze, nie będziesz musiał w kodzie zmieniać niczego innego, a rozwiążesz ten problem.
Dzięki za odpowiedź, ale to chyba nie jest w HAL... Zgadza się. Nie jest. Ale STM przepisał te algorytmy również na HAL i te źródła znajdują się np. w repozytorium CubeMx w ścieżce: Repository\STM32Cube_FW_F1_V1.6.1\Projec... To jest akurat dla tego typu uC który jest na tym Nucleo, ale jeśli potrzeba...
protezy w postaci środowisk DIY Nie no... Jestem w stanie zrozumieć, że "środowisko DIY" nie jest może najlepsze dla początkującego, ale że "awansowało" już do kategorii "protezy" to jakaś nowość. "Proteza" to właściwie tylko figura retoryczna i to w kontekście początkującego, ale jak widać po wątku, autor po niej tylko "kuleje" . Zagrzebał, a na końcu...
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!!
Kontroler karty operuje na sektorach 512B nie blokach 128kB Czytaj uważnie. Ja pisałem o blokach w pamięciach NAND flash, a nie o tym co emuluje kontroler karty SD. Zbych_: skąd masz taką informację? Z lektury datasheetów pamięci NAND flash, które są wkładane do kart SD, np. pamięci ST (obecnie numonyx) 8Gb (1GB) mają bloki w rozmiarze 128kB.
A co jest złego w odczytaniu portu GPIO do zmiennej , zmianie wymaganych bitów i zapisaniu z powrotem do portu wszystkich bitów jedną operacją? 1. Możliwe błędne działanie przy modyfikacji linii jednego portu z dwóch fragmentów kodu o różnych priorytetach (np. pętla zdarzeń i przerwania). 2. Czas wykonania. 3. Rozmiar kodu. Wystarczy?
Tak tylko w niektorych wypadkach to nie realne - u mnie na okroglo procek robi tez za modem (odbieranie/nadawanie AFSK) wiec musi caly czas nasluchiwac czy jakies pakiety sie nie pojawily... Generalnie jak zostalo powiedziane STM i GPS to glupie polaczenie. Zewnetrzna antena owszem ale musi byc mocno oddalona, wszelkie testy jakie robilem ekranowanie...
Przez bootloader albo Jtaga. Nie wiem po kiego grzyba się bawić z lutowaniem kabelków z JTAGA do uC. Jeżeli już będziesz robił do niego płytkę i nie chcesz wstawiać tam 20 pinów na JTAG to postaw 2 i wgraj przez bootloader. Program nie będzie działał. Chociażby ze względu na to, że procki mają różne rozmiary pamięci.
W F3 ST zrobiło całkiem inaczej konfigurację długości ramki (można wybrać rozmiar inny niż 8 lub 16bit) więc nie przejmuj się tym bitem. Sprawdź czy masz wszystko na pewno dobrze połączone i sprawdź konfigurację GPIO jeszcze raz :)
W tym kawałku skryptu linkera masz rozmiar stosu dla przerwań ustawiony na 0, a przecież FreeRTOS je wykorzystuje. 4\/3!!
Witam serdecznie. Próbuje zaprogramować czytnik karty SD na NUCLEO stm32f103rb. Wzorowałem się na tutorialu: f_mount zwraca FR_OK , natomiast funkcja f_open zwraca FR_DISK_ERR . Sprawdzałem na stronie [url=http://elm-chan.org/fsw/ff/doc/open... co oznacza ten błąd, ale niestety nie wiem co to znaczy i jak mogę go naprawić. Połączenie między...
Ustawiłeś 4 pomiary. Nie ustawiłeś ROZMIARU danych DMA w CR.
Nie jest to żadna "druga" partia po 4kB... Spróbuj zrozumieć jak działa ten mechanizm a nie szukaj w nim dziury. malloc() wewnętrznie ma swój "pool" pamięci do przydziału, który domyślnie jest pusty. Jeśli prosisz o alokację i malloc() w swoim poolu nie ma wystarczającej ilości (lub odpowiedniego "układu") pamięci aby spełnić to żądanie, to prosi funkcję...
A no dobra, sorry - to jest inny problem. Najszybciej będzie, jak w pliku Makefile wyłączysz generowanie pliku .bin. Rozwiązanie 100% poprawne to dodanie czegoś do skryptu linkera do sekcji w SDRAM, żeby nie pakował ich do obrazu binarnego, ale chwilowo nie jestem 100% pewny co dokładnie [; Chyba (NOLOAD) (do _WSZYSTKICH_ sekcji w pamięci SDRAM), ale...
rozmiar stosu stm32 stm32 rozmiar flash stm32 rozmiar stosu
hydrofor silnik pompy wyłącznik wiertarki podłączenie unitra t3015
taśma kaptonowa praca programista
Mercedes Actros - problem z poziomowaniem i pilotem Makita 4120 - Silnik włącza się i od razu gaśnie