prawoklik na katalogu webserver -> properties => C/C++ Build -> odhacz exclude from build
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...
Czy działa Systick to łatwo sprawdzić w debuggerze. Zresztą wiele spraw można sprawdzić. Ja bym zaczął od tego czy właściwe rejestry podlegają zmianom. To nie jest nic trudnego, w krokowym trybie Też jaka wartość jest SystemCoreClock, to zmienna globalna. Może ląduje gdzieś w HardFault, zaraz po uruchomieniu. EDIT. Często problemem przy kopiowaniu plików,...
1. Ta płytka nie ma wbudowanego JTAGa. W przeciwnym wypadku po do by jej było złącze JTAG 20-pin? 2 + 3. Na stronce dostępny jest trial wersji "rozbudowanej", w darmowej musisz sam zadbać o skrypt linkera i startup. Wbrew pozorom nie jest to takie trudne - dobry przykład (polecam te z mojej stronki dla stm32 - http://www.elektroda.pl/rtvforum/topic13...
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ś...
W skrypcie linkera. Kompilator tworzy jakieś sekcje (pewnie coś z obsługi wyjątków, takich sekcji jest kilka), które nie mają wpisów w skrypcie linkera, a więc domyślnie trafią one do RAM (tak jakbyś zrobił SECTIONS ... { ... } > RAM AT >RAM), ale zawartość tej sekcji jest inna niż same zera. Linker wypełnia więc obszar od flasha (adresy 0x8000000)...
Część, używam Eclipse + ARM GNU toolchain, mam problem z biblioteką StemWin. Gdy dodaje odpowiednie opcje w ustawieniach tj. Preferences->C/C++ General-> Pahs and Symbols http://obrazki.elektroda.pl/4797044000_1... http://obrazki.elektroda.pl/7180796800_1... Przy takich ustawieniach próbuje zbudować projekt, lecz linker...
błąd już w trzeciej linii. Dodatkowo potrzebujesz plik asm z wektorami i plik linkera aby to wszystko zebrał do kupy. Bez tego żaden program się nie uruchomi :) Po co się katować? Zaznacz Stm32Cube project. Jak nie chcesz HAL to skasuj jego pliki. będziesz miał wszystkie **aktualne** pliki CMSIS, statup i pliki linkera.
W skrypcie linkera nie można tego ustawić? Albo zerknij do źródeł NVIC_SetVector i tam dodaj offset. No właśnie. Chodzi mi o to, ile jeszcze podobnych "niespodzianek" można się spodziewać po standardowych bibliotekach STM, przy relokacji kodu. Oczywiście wyjdzie to i tak "w praniu", ale tak sobie pomyślałem że może już to przerabiałeś, więc po co wyważać...
http://obrazki.elektroda.pl/2463034100_1... Witam wszystkich, Chciałbym tym razem przedstawić projekt gotowego radiomagnetofonu internetowego. Jest to rozwinięcie opublikowanego wcześniej na Elektrodzie małego odtwarzacza MP3. Radiomagnetofon umożliwia granie strumieni radiostacji internetowych, nagrywanie tych strumieni na kartę SD,...
https://obrazki.elektroda.pl/9151185000_... Druga część artykułu o najtańszych nowych mikrokontrolerach z roku 2017. Ekosystem developerski Środowisko developerskie mikrokontrolera ma ogromny wpływ na jakość pracy z nim i w konsekwencji - na produktywność. Na to składają się różne czynniki – jakość IDE, dostępne biblioteki, płytki...
Witam, Zasiadłem do STM32 i zaczynam implementować coraz kolejne funkcjonalności do mojego projektu. Napotkałem jednak problem. Chodzi tu o używanie funkcji malloc() lub printf(). Chodzi o to, że program się nie kompiluje ponieważ brak jest referencji do _sbrk. Przeszukałem Google i znalazłem przykładową funkcję. Funkcja ta potrzebuje dodatkowych informacji...
A w skrypcie linkera sekcja z atrybutem KEEP? Wtedy nie powinien tego odśmiecacz wywalić, i potem po prostu sekcja #pragma? :/ Nwm tak sobie pomyslałem. Może zadziałać :D Zawsze też możesz zapisać coś do flasha pod odp oadresem jeden raz a potem to będzie. Jeśli zapiszesz to we fragmencie pamięci którego programator nie wyczyści :/ Edit: Pozwolę sobie...
Panujesz nad stosem w skrypcie linkera ?
Zasiadłem dzisiaj do mojej niebieskiej płytki i udało mi się wgrać bootloader od (at)piotrgo a przy jego użyciu własnego blinka. Jakby ktoś tu kiedyś trafił, albo ja sam potrzebowałbym przypominajki to: bootloader wgrywa się przy pomocy: rom (rx) : ORIGIN = 0x08001000, LENGTH = 60K , a następnie wskazać w platformio.ini [syntax=json] board_build.ldscript...
PS. co to jest RISC-V toolchain A co RISC-V ma wspólnego z STM32 i mikrokontrolerami ARM (a jest to dział, w którym zadajesz pytanie. Pytanie zatagowałeś STM32. STM32 nie sa RISC-V) Poważnie? Aż tak bardzo trudno napisać że toolchain do RISC-V to zestaw narzędzi potrzebnych do zbudowania na danej platformie kodu dla procesorów RISC-V? Pamiętaj że jesteś...
Flagi są uniwersalne dla kompilator opartych na gcc. Ich opis maszw internecie Google gcc compiler flags. Ale ponieważ jesteś zielony to bym jednak proponował coś co samo wygeneruje makefile do projektu, będzie miało jakiś podstawowy skrypt linkera i ustawi większość flag samodzielnie. Czyli eclipse + plugin. Szkoda Twojego czasu i wysiłku.
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?
A kiedy będzie projekcik dla STM32F107 ;) ? A tak na poważnie to czy aby dostosować projekt przeznaczony dla STM32F103RB do konkretnego STM32 to wystarczy w pliku linkera poprawić wartości pamięci, a w przypadku pliku z wektorami przerwań skorygować nazwy przerwań i dostosować to występujących dla danego mikrokontrolera ?
Zastosować structure, nie licz na powtarzalność działań linkera.
Witam, niestety muszę prosić o pomoc u podstaw, bo poległem. Problem jest taki: chciałem skompilować testowy program za pomocą arm-none-eabi-gcc z biblioteką CMSIS, bez żadnych eclipse, bez żadnych płytek rozwojowych - po prostu dioda podłączona do wyjścia procesora. Biblioteka chyba nie przewiduje bycia używanym przez arm-none-eabi-gcc więc: 1. utworzyłęm...
Pudło. Przy uruchomieniu aplikacji z Flash, pamięć Flash jest mapowana na adres 0, a domyślnie VTOR zawiera 0 (a przynajmniej powinien), nie ma więc potrzeby ruszania go w aplikacji. Jeśli, jak nakazuje zdrowy rozsądek, tablica jest na początku programu, to skrypt linkera załatwia wszystko.
Cześć, dotychczas podczas programowania wykorzystywałem jakieś IDE i automatycznie generowane projekty. Postanowiłem iść krok dalej i napisać własnego Makefile'a. Na razie wykorzystuję jeszcze skrypt linkera i plik startowy z IDE. Struktura projektu wygląda następująco: ├── Ac6LinkerScript.ld ├── Ac6Startup_stm32.s...
(at)gaskoin Jak by nie patrzec zegar, porty, jakis timer, dac, adc, dma, USART i masz juz znaczna czesc RM do przeczytania... Chodzi o to ze sa bardziej zlozone niz AVR-y PICe itp. i tych rejestrow trzeba wiecej poustawiac... a znajomosc dzialania jakiegokolwiek prostego procesora wiele ulatwia. Mozna zaczynac od zera ale trzeba poznac od podstaw wszytko...
Witam ponownie! Odkopuję temat. użyłem Twojego skryptu linkera od stm32 (zmienilem tylko sekcję memory i o dziwo działa), do tego wrzuciłem Twoje callbacki. niestety... wywala mnie przy sprintf. mało tego wcześniej działał dla zmiennych typu int, a przy floatach się wywalal.. teraz niestety wywala się przy obu... jeszcze jakies propozycję? generalnie...
Dziękuję za szybką odpowiedź Freddie. Powiem szczerze, że ten STM32 w tytule napisałem z rozpędu. Dokładnie to stworzyłem prosty projekt bazując na Twoich (np. stm32f4_blink_led) ale dla procesora NRF51822 firmy Nordic (z wbudowanym BLE i Corex M0) Startup i skrypt linkera mam od Nordica z małymi poprawkami. Makefile jest Twój, ale także z drobnymi...
malloc rezerwuje bloki pamięci na stercie poprzez _sbrk_r() z syscalls.c. Sprawdź czy sbrk zgrywa się ze skryptem linkera.
A tak na serio, to mnie najbardziej interesowałaby opcja opisana na ostatniej stronie jako "najbardziej interesująca", a więc wykorzystanie startupa i skryptów linkera (i tylko tych plików) dostarczanych razem z biblioteką (w połączeniu z "pierdołami" typu sbrk, malloc itp itp) No ale tu nie ma co opisywać, bo to będzie generalnie identycznie jak w...
Pliki makefile.init, makefile.targets nie znam tych plików. bezsensownie w ogóle się nimi zajmować i dotykać. Naprawdę tak trudno #ifdebug w kodzie wstawić i podać odmienne pliki linkera w opcjach budowania? (pliki różniące się tylko linijką w dziale MEMORY? Dodatkowe symbole dla właściwych kompilacji możesz sobie dodać w opcjach projektu.
Witam, Korzystając z makefile of projektu FreddiegoChoppina z STM32 blink... po drobnych modyfikacja flagi kompilacji na m4 oraz ścieżki dostępu do pliku linkera konsola wyrzuca mi taką informację: [syntax=actionscript] **** Build of configuration Default for project bob **** cs-make all Linking target: out/bob.elf arm-none-eabi-g++ -mcpu=cortex-m4...
To trochę dziwne odpowiadać samemu. Ale odpowiedź nie pochodzi ode mnie. Napisał do mnie na PW kolega (nick na razie pominę) nieco sfrustrowany tym, że dyskusja pewnie by się skończyła głupimi uwagami niektórych kolegów, którzy uważają - że już zjedli wszystkie rozumy i nikt nie może ich nic już nauczyć . Kolega ów podpowiedział mniej więcej to, że...
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",...
Witam Może używasz innego skryptu linkera lub StarUp dla Keil i Ecpilse. W main.c masz dwa vTickTask1 i vTickTask2. Zobacz czy to ci działa (cały Setup procesora dałem od kolegi Freddie Chopin) + Rtos611 (ostatni ze strony).
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.
Z kolei modyfikacja skryptu linkera ma tą wadę, że jeśli przeniosę kod na inny MCU to znowu bedę musiał ten skrypt modyfikować. Emulacja oparta na czystm C po prostu zadziała. No... bo każdy mikrokontroler ma dokładnie ten sam rozmiar strony i dokładnie ten sam kontroler pamięci, więc z pewnością zadziała Ci ten kod bez żadnych zmian... Ehe... Kupę,...
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...
Opcja -S, o której pisałem to opcja kompilatora, do użycia w komendzie ...-gcc ..., Z tym, że tak wprost się tego raczej nie da dodać. Niestety, CubeIDE nie znam, więc od ręki nie odpowiem, jak tej opcji użyć. Dobra to po kolei :) To już znam odpowiedz na to co mnie interesowało( czyli że to jest po prostu jakiś śmieciowy rozkaz, którego procek nie...
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: /* +---------------------------------------...
Piszę aplikację na STM32F103 i muszę umieścić niektóre skompiowane pliki pod konkretnym adresem we Flash (a właściwie od konkretnego adresu). Uzywam środowiska Ride7 i kompilatora GCC Wiem, że można to zrobić w pliku skryptu linkera ale za nic nie udaje mi się tego wykonać. Do tej pory nie miałem takiego problemu z innymi kompilatorami. Szukałem jak...
Praktycznie 100% plików z STM32 będzie kompatybilnych z innymi Cortex'ami. Rzeczy do zmiany: 1. wektory przerwań (to oczywiste [; ) 2. rozmiar i adresy pamięci w skrypcie linkera 3. opcję CORE w pliku Makefile przy Cortex-M0. Jak zwykle więc - http://www.elektroda.pl/rtvforum/topic13... 4\/3!!
Nie zgadzam się ;) Pisałem kiedyś coś na AVRa, w C ale było to dawno, małoskomplikowanie i dodatkowo napisałem ostatnio w C soft do detekcji kolorów na STM32 (na przetworniku TCS3200D) opierałem się na templacie Freddiego (skrypty linkera oraz makefile (bez używania libów)) więc "nie zaglądałem głęboko pod maskę" i myślę, że w końcu powinienem - więc...
Zamiast tworzyć sekcję poprzez makefile, stwórz ją normalnie w skrypcie linkera tak samo jak jest stworzona sekcja .text. Ewentualnie (jeśli koniecznie potrzebujesz mieć ją w konkretnym miejscu), to dodaj nowy region pamięci (tam gdzie zadeklarowany jest ram i rom), a swoją sekcję umieść właśnie tam. Problemem może też być to, że kompilator (a w zasadzie...
Praktycznie wszystkie te pliki są konieczne, a właśnie to co jest w /inc już nie, bo to jest potrzebne Twojej aplikacji... Pliki konieczne: Makefile startup skrypt linkera tablica wektorów + chyba wymagany jest jeden z plików hdr_..., bo jest zainclude'owany w startupie. Jeśli bawi Cię tworzenie od zera czegoś co już jest gotowe, to proszę bardzo -...
Tyle razy edytowałem ten post, że coś zgubiłem. Przede wszystkim próbuję uruchomić ... Error: No flash at address 0x08000000 Error: No flash at address 0x080003a7 Error: No flash at address 0x080003ae Error: No flash at address 0x080003d0 Error: No flash at address 0x080004b0 ... Od wczoraj nie mogę znaleźć jakiś konkretnych opisów...
1. Datasheet w STM32 to nie to samo co datasheet dla AtMegi (jeśli się akurat nimi interesowałeś wcześniej). Potrzebny Ci reference manual dla STM32 - ze strony ST oczywiście. 2. Te trzy kroki o których piszesz wystarczą, ale pod warunkiem, że masz sprawny startup, tablicę wektorów, skrypt linkera oraz poprawnie kompilujesz całość. 3. Odpowiedzią wciąż...
Witam. Do tej pory pracowałem na AVR Studio / Assembler, które jest dla mnie bardzo przejrzyste i oczywiste, teraz zasiadłem do Keila / STM32 / C i jest to dla mnie droga przez mękę - o ile gotowce są dla mnie zrozumiałe i na ich podstawie mogę bezproblemowo coś tam swojego zrobić o tyle utworzenie nowego projektu mnie przerasta :( Wybieram procesor,...
Symbole "początek X" i "koniec X" w moim skrypcie nazywają się inaczej niż tego oczekuje "ich" startup. Zmień "ich" _ebss na "moje" __bss_end itd. w startupie albo "moje" na "ich" w skrypcie linkera. Możesz nawet do skryptu linkera dopisac na końcu kilka linijek typu PROVIDE(_sidata = __data_init_start); ("remapując" moje symbole na ich nazwy) i wtedy...
Witam, Mam problem z uruchomieniem debugowania w Eclipse. Po zbudowaniu środowiska w toolchainie : http://www.freddiechopin.info/index.php/... i dołączeniu plików makefile , startup i linkera z przykładu dla STM32 udaje się skompilować projekt. Niestety nie potrafię uruchomić deguggera. Po odpaleniu OpenOCD jest...
Najprościej wygenerować przez jakieś darmowe środowisko, np.: Atollic TrueSTUDIO. [syntax=asm] /* ****************************************... ** ** File : stm32_flash.ld ** ** Abstract : Linker script for STM32F373C8 Device with ** 64KByte FLASH, 32KByte RAM ** ** Set heap size, stack size and stack location according...
pobralem najnowsza paczke Wersja? :> Wklejony przeze mnie kawałek pochodzi z core_cmFunc.h V4.30 (20 oct. 2015) z CMSIS 4.5. Makefile nie jest Ci potrzebny skoro wybrałeś wtyczkę do Eclipse'a. Opcje sobie "wyklikasz" wedle uznania w ustawieniach projektu. Modyfikacja skryptu linkera to najpewniej tylko zmiana wielkości pamięci zależnie od posiadanego...
stm32 skrypt linkera sekcja linkera skrypt linkera
oprogramowanie edimax whirlpool zmywarka zablokowany tranzystor bc857b
Ford C-Max 1.0 EcoBoost 2015 – rozrząd na mokrym pasku czy łańcuch? Co to są decybele w elektronice? Wyjaśnienie i zastosowanie