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...
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...
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)...
To że generowane jest przerwanie i kod się zawiesza nie jest winą OpenOCD tylko kodu... sub.w sp, sp, #24576 ; 0x6000 sub sp, #32 w tym miejscu funkcja alokuje sobie na stosie 24576 + 32 bajtów - nie sądzę aby twój stos to przeżył... 4\/3!!
Źle popatrzyłem w twój kod i wygląda na to że miałeś inne literki do zapisu BSRR. Rozejrzę się z ciekawości po dokumentacji i może coś wymyślę. Na razie olej pętle i delaye, wpisz do ODR same jedynki i zakończ while(1); Zobacz diodę, ale zmierz też woltomierzem co się tam dzieje. Zastanów się też czy linker Ci nie nie dodaje jakiś wstępnych ustawień...
Arm-none-eabi-gcc (GNU Tools for STM32 7-2018-q2-update.20190328-1800) 7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907] options -mcpu=cortex-m3 --specs=nosys.specs -Wl,-Map="${ProjName}.map" -Wl,--cref -Wl,--gc-sections -nostartfiles -nodefaultlibs -nostdlib -static -L"..\ldscripts" -T mem_overlay.ld -T sections_overlay.ld -T libs.ld...
Witam programuje w AC6 Work Bench STM32 jako nakładka na Eclipse, wybrany zestaw startowy to STM32f407 discovery, program przy innych projektach działa i poprawnie tworzy wsad, dopiero po dodaniu plików z zewnątrz są problemy, wszystkie pliki mam zainkludowane a mimo tego wyświetla mi się błąd, że nie mam odwołania do prototypu funkcji podczas wywoływania...
Linker nie widzi tych funkcji, które są wypisane, napewno zaincludowałeś przed main-em te fragmenty bibliotek od ST, które zawierają te funkcje?
A więc tak: - dopisałem do syscall funkcję _exit() - usunąłem -march skopiowałem do flash.ld twoją definicję sekcji .bss. oto wynik: make ========================================... Build info: BOARD: maple MCU: STM32F103RB MEMORY_TARGET: flash See 'make help' for all possible targets ========================================...
Po wyrzuceniu ENTRY(Reset_Handler) powinien zatem ustawić go na .text Co będzie błędne, bo pierwszą rzeczą jaką robi Twój program jest jednak Reset_Handler, a nie to co przypadkiem trafiło na początek sekcji .text. "Entry point" jest - wg mojej wiedzy - używany do tego, żeby linker wiedział co może wywalić a co musi zostawić, a żeby do takich wniosków...
Uruchomienie biblioteki stm32 z moimi przykładami sprowadza się do dodania folderów źródeł, nagłówków i jakichś wymaganych deklaracji. Z FreeRTOSem pewnie będzie tak samo... [; 4\/3!!
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...
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...
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...
Tak naprawdę jak dla mnie jedyna trudność jaką miałem to ogarnięcie środowiska i plików początkowych (startup ,linker, makefile, tablica vektrów) i nadal lekkie problemy mi one czasami nastręczają. No i wiadomo zrozumienie organizacji mikrokontrolera. Jak to się już zrozumie to obsługa konkretnego peryferia to żadem problem większość peryferii (timery...
Jak uruchomić STM32 z FLASH by działał później w pamięci RAM. Dedykowane dla Keil: - plik startup_stm32f10x_xx.s Ułatwię niektórym czasu i szukania w necie rozwiązań flashowania z poziomu własnego bootloadera pamięci programu. Ja przyznam szczerze nie znalazłem żadnego opisu w necie, wobec czego napisałem własne rozwiązanie. Jako że asembler ARMów to...
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...
Cześć, Projekt zaraz będę konfigurował od początku. Fakt, podałem za mało danych, wybaczcie, skrajna nerwica mnie na to wzięła. Od początku: Używam SW4STM32, ale chciałbym od tego odejść mocno, bo za dużo automatów i za mało szczegółów, może dlatego, że nie potrafię tego wszystkiego ogarnąć. Kompilatora używałem poprzez naciśnięcie "build". W ustawieniach...
Przyznam się, że jeszcze nie do końca się orientuję w tablicach wektorów i skryptach linkera. Zwyczajnie nigdy nie miałem potrzeby do tego zaglądać wcześniej. Wszystko co mam praktycznie bez zmian pochodzi z dema FreeRTOS dla płytki Premier. Ktoś to demo wpakował pod Eclipse. Miało być szybciej ale jak na razie tylko problemy z nim mam. W jakimś innym...
Hejka, robię właśnie przesiadkę projektu z kompilatora IAR'a do GCC'a i mam problem z przeniesieniem niektórych ustawień, konkretniej chodzi o nie wycinanie przez linker konkretnych, nieużywanych zmiennych globalnych wygenerowanych przez zewnętrzne narzędzie, zawierających informacje np. o dacie buildu, checksumie itp. które są potem w przypadku reklamacji...
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,...
tmf napisał: Kolego, kompilator nic nie wie o adresach, typach pamięci i całym tym bałaganie. Cóś jednak wie czasami - bo jak by nie wiedział to jak by avr-gcc generował poprawny kod dla NAS? Przecież nie generuje. NAS powoduje tylko związanie z danym obiektem jednobajtowego identyfikatora przestrzeni, a reszta leży po stronie frontendu. Każde odwołanie...
Ja nie lubię STM32, a STM32 mnie! Muszę coś zrobić na STM32 i robię to w Truestudio. Na razie proste testy na przypomnienie sobie STMów i wejście w C++ i na dzień dobry ściana! Po kompilacji w tablicy wektorów przerwań jest tylko adres na DefaultHandler. Mimo tego, że nazwa funkcji obsługi przerwania jest taka sama jak w pliku ze startupem i funkcja...
GPIOA->BSRR |= GPIO_BSRR_BS5; To nie źródło problemu ale tak się tego rejestru nie używa. To jest write only rejestr czyli tylko samo przypisanie Zgadza się, dzięki :) Co do głównego problemu, punkt 1. Użyj debugera okazał się bardzo pomocny :) Założyłem, że skopałem coś w Makefile (np. brakuje jakiejś flagi) i podczas debugowania nic ciekawego...
Tylu fachowców, a o narzędziach niezależnych od procesora jakoś nie słyszałem - także, ten.. Jak na wstępie: może komuś się przyda. Trollić umie każdy. Ciężko by było by narzędzie było całkowicie niezależne od układu. Sercem serii STM32 są rdzenie cortex-mx i to jest w sumie procesor, reszta to peryferia zależne od tego co już ST tam właduje a one...
Utworzę nowy workspace i zaktualizuję tego SW4STM32 i postaram się utworzyć nowy projekt. Dodano po 33 Tworzę nowy projekt, wybieram Ac6 STM32 MCU Project , i wybierma MCU z jakiego będe korzystał. https://obrazki.elektroda.pl/8719332400_... https://obrazki.elektroda.pl/1615833000_... https://obrazki.elektroda.pl/9393146000_...
Fajna ta flaga, nie znałem wcześniej (; To jest "świeża" opcja, więc niech najpierw każdy sprawdzi wersję binutils zanim zacznie się jej doszukiwać. Changes in 2.26: * Add --fix-stm32l4xx-629360 to the ARM linker to enable a link-time workaround for a bug in the bus matrix / memory controller for some of the STM32 Cortex-M4 based products (STM32L4xx)...
w końcu naprawili błąd indeksera w F4, nie linkera. Czytaj chłopcze co napisałem..... Proszę, by kolega zaprzestał w ten sposób zwracać się do innych użytkowników. Dobrze kolega wie, że nie tolerujemy takiego zachowania. 6. grudnia brałem udział w STM32 Ecosystem workshop w Eindhoven Ja w Sopocie i co? Nie bardzo rozumiem dlaczego musisz robić makefile...
Czy można używać kompilatora Keila, a pisać kod programu w Eclipse? Można ( http://www.keil.com/support/man/docs/ecl... ), tylko po co? Jaki tego cel i sens? Jeśli ktoś ma licencję na KEIL'a, to po co mu pakować się w Eclipse? Dla samego edytora? Linker skrypty (niestandardowe dodajmy) też będziesz sam "dziergał" w Eclipse? Keil naprawdę się poprawił...
Dr Piotrva. Oczywiście poszło od razu przy domyślnych ustawieniach Flashloadera ST. Dziękuję pięknie. Ojjjj, te przyzwyczajenia z AVR - trzeba chyba na chwilę zaorać tą szczegółową wiedzę i zacząć od tabuli razy. Drukuję manual do procesora - tam pewnie jest to wszystko napisane. Ale żeby nie tracić czasu - kolejne pytanie. Czym i w jaki sposób można...
No więc zasadniczo w każdym przypadku (w sensie niezależnie od tego jakiego ARMa masz) musisz zmienić skrypt linkera. Z grubsza wywalasz z niego definicję pamięci rom, a następnie wszystkie sekcje umieszczasz w ram ("... } > ram AT > ram"). Poniżej różnice między skryptem dla rom i dla ram z projektu STM32: >diff -u stm32f103rb_rom.ld stm32f103rb_ram.ld...
Wydaje mi się że mnie plik wygląda okay [syntax=c] /** ****************************************... * (at)file startup_stm32f030xc.s * (at)author MCD Application Team * (at)version V2.3.0 * (at)date 27-May-2016 * (at)brief STM32F030xc/STM32F030xb devices vector table for Atollic TrueSTUDIO toolchain. * This module performs:...
Faktycznie! Jeśli nie przekroczę 4 breakpointów to nic się złego nie dzieje. W kail-u wyświetla się okienko informujące że nie można dodać kolejnego breakpointu (max to 5). Dzięki Freddie! Mam jeszcze jedno pytanie. Chciałem użyć w projekcie kontenerów z biblioteki standardowej C++ (konkretnie vektora i kolejki) jednak gdy program chciał wykonać którąś...
Wielkie dzieki za pomoc ale mam jeszcze z tym problemy. Jeśli chodzi o umieszczanie funkcji w konkretnym miejscu (czyli konstrukcja void f(void) __attribute__ ((section(".NAZWA_SEKCJI"))); to oczywiście działa. Jednak gdy zrobię listę plików, która ma być umieszczona od konkretnego adresu to co prawda linker "nie czepia się " do niej ale i tak umieszcza...
Przyznam się że nie uruchamiałem biblioteki na żadnym z AVR'ów, ale bez problemu działała na STM32 oraz LPC1754. Jeżeli chodzi o błędy dt. funkcji napisanych w pliku wystarczy je sobie przerobić pod stosowany AVR. Jeżeli nie znamy asm tworzymy nowy plik .c a w nim umieszczamy funkcje o nazwie takiej samej jak w pliku usi.S. Linker sam zadba o ich znalezienie....
odpisałeś w trakcie edytowania przeze mnie pierwszego posta. Użycie zmiennych pomogło na błąd debuggera lecz problem tego samego adresu pozostał. Co ciekawe, podglądając pamięć okazuje się że wartości inicjalizacji są zapisane do pamięci prawidłowo. Problem polega na przypisaniu złych adresów do wyrażeń słownych określających zmienne. Nie bardzo orientuje...
Wygląda na to, że projekt dla STM32 zlepiony z przykładem LPC się kompiluje bez błędów i ostrzeżeń. Teraz muszę go przerobić na przykład STM32L, bo takie mam Discovery, żeby sprawdzić na żywo debuggowanie itp. Dodano po 48 Hmm, utknąłem na dość trywialnej rzeczy, czyli dodawanie bibliotek do ścieżki... wykłada się na poszukiwaniu pliku misc.h z STM32L1xx_StdPeriph_Driver...
A czy uważasz że wszystko jest linkowane? Twoje pytanie sporo sugeruje. Jakoś bylem zafiksowany na to, że w ten sposób dołączany kod musi być "wrzucony" w całości, ale cóż błądzenie to rzecz ludzka, sporo wody jeszcze upłynie zanim takie mechanizmy będą dla mnie zrozumiałe :) Cały czas mam przed oczami ten goły kod, który do STM32F103VCTx się nie mieścił,...
W celu uruchomienia kodu z pamięci RAM (aby pamięci FLASH nie nadwyrężać zbytnio..) użyłem skryptu linkera przeznaczonego dla Attolic TrueStudio, ze standardowej paczki firmware dla stm32 discovery. Jednakże po wgraniu programu, nie uruchamia się, w związku z tym pytanie, co trzeba jeszcze ustawić aby uruchomić kod z RAM'u ? poniżej wspomniany skrypt...
No właśnie nie do końca. Skrypt startowy jak i całą resztę wziąłem z bibliotek STM. Tak samo skrypt linkera jednak tutaj troszkę pogrzebałem i stąd problem (prawdopodobnie). Mam taki plik: /* Default linker script for STM32F10x_512K_64K Copyright RAISONANCE S.A.S. 2008 */ /* include the common STM32F10x sub-script */ /* Common part of the linker scripts...
Hm w cubie pewnie jest, ale jakoś nie jestem w stanie tego przezwyciężyć. Poziomy abstrakcji są fajne ale zupełnie niepotrzebnie pożerają zasoby uC. Moje urządzenie z kodem keila oczywiście odnajduje USB natomiast ten sam kod "przystosowany" (zmiany polegały głównie na dopasowaniu do standardu gcc) na atollicu ten kod nie działa. Czy oby tylko linker...
michalko12: Zmieniłem xHandleTaskLED1, xHandleTaskLED2 na static, ale nic to nie pomogło. xLastFlashTime nie można: error "initializer element is not constant". W keilu żadnej tej zmiennej nie miałem jako static a program działał więc podejrzewam, że nie tu jest problem. Dodano po 4 Smashing: Jak wrzucam Twój program do Eclipsa to się nawet nie kompiluje...
Widzę że dosyć cich. dorzucam jeszcze skrypt linkera i startup. nawet mam brakepointa w void Reset_Handler(void) i w niego nie wchodzi. ale na brakepointa w Default_Handler reaguje. Zanaczam że jak wgram program na mikrokontlorer to działa bez zarzutu... [syntax=c]/* Procedura startowa dla STM32 connectivity line devices */ /* NastÄ™pujÄ…ce...
Poniżej przedstawiam korespondencję oraz dalsze kroki mające na celu wykorzystanie implementacji funkcji printf pochodzącej z strony freddiego chopina. Ja: Witaj, Chcialem wykorzystac twoja funkcje printf, jednak w paczce z nia zabraklo pliku usart.h . Brakowolo jedynie referencji do funkcji usart_put_char więc ją dopisalem. Niestety nie ma również...
Wygenerowany jest bezpośrednio z CooCoxa Linkera tutaj nie ma chyba jest zaszyty w środowisku. Wersja CoIDE to: Version: 1.7.8 [syntax=c] /** ****************************************... * (at)file startup_coide.c * (at)author Coocox * (at)version V1.0 * (at)date 20/07/2010 * (at)brief M0 M3 Devices Startup code. *...
Wiesz co ja dopiero zaczynam z programowaniem stm ale jedna sprawa rzuciła mnie się w oczy. twoja funkcja jest prawie funkcją z biblioteki której definicja i rozwinięcie znajduje się w pliku core_cm4.h [syntax=c] __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible...
Tak wyglada kompilacja w consoli: [syntax=text] 16:18:26 **** Build of configuration Debug for project stm32F103RB_template **** cs-make all Building file: ../Setup/startup.S Invoking: ARM Sourcery Windows GCC Assembler arm-none-eabi-gcc -x assembler-with-cpp -Wall -Wa,-adhlns="Setup/startup.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Setup/startup.d"...
Hej Freddie, tym razem to już mam poważny problem i proszę Cię o pomoc. Problem mam cały czas z przerwaniami. Nigdy mi w sumie tak naprawde nie zadziałaly na tym projekcie od stm. Przerobiłem Twoją tablice wektorów przerwań: /** \file vectors.c * \brief STM32 (STM32F101 - STM32F103) vector table and __Default_Handler() * \details STM32...
Czyj plik linkera...? TAK! To plik linkera na koniec usuwał symbole! Dzięki wielkie! To są skutki stosowania "KWIATKÓW"
Ale to widziałeś? http://www.freddiechopin.info/pl/artykul... Nie. Jestem ostatnio regularnym bywalcem twojej strony, ale to przegapiłem. Mea culpa.. W skrypcie linkera należy ustawić rozmiar stosu dla przerwań - domyślnie jest zero, co zwykle źle się kończy. Ustawiłeś jakąś sensowną...
stm32 linker stm32 skrypt linker linker error
płyta pavilion dv6500 programator helios programowac kluczyk
Czy uszkodzony wodomierz obniża ciśnienie wody? Zielony opornik za licznikiem w Łada Niva - funkcje i diagnoza