...czy masz może jakiś ładny przykładowy projekt dla CM0? Zamieszczam swój przykład na płytkę Discovery F0. Makefile Freddiego, linker i startup zaczerpnięty z przykładowych projektów ze strony ST. W programie skonfigurowany GPIOC, licznik TIM3 i przetwornik ADC. Projekt jest pod CodeBlocks. Miałem jeszcze ogarnąć UART i debugowanie za pomocą gdb ale...
1) zobacz czy w linker skrypcie nie wycinasz libm.a jest taki "template" w internecie 2) dopisz libm.a albo -lm na końcu listy linkowanych plików ".o" !
Przeczytaj wyżej w oknie raportu opis tego błędu - tam jest dokładnie opisane, czego linker nie znalazł. Zapewne nie dołączyłeś do projektu plików z funkcjami, których używasz - skoro uparłeś się na bibliotekę SPL, to musisz włączyć jej nagłówki i same pliki - do wyklikania w komponentach.
Z tym stosem to tez za bardzo nie wiem. W skrypcie linkera, który sobie pożyczyłem z TrueStudio nie było nigdzie rozmiaru stosu. Trochę przerobiłem skrypt ale nawet jak wpisze rozmiar stosu 0 to program się uruchamia. Tutaj fragment linkera: [syntax=text]/* Linker subscript for STM32F051 definitions with 64K Flash and 8K RAM Copyright RAISONANCE 2007...
OpenOCD zaktualizowanie tak jak kompilator wcześniej. Przerabiam przykład od początku teraz na bazie tego o którym mówiłeś LPC Będe wklejał tutaj co dokładnie przerabiam. Jeśli coś robię źle to mam nadzieje że mnie poprawicie. Jeśli dobrze to mam nadzieje że komuś się przyda. 1.Import projektu lpc1114_blink_led i rename na stm32f0_blink_led 2. Zmiany...
w załączniku archiwum z kilkoma ciekawymi plikami dla STM32F0. 1. Cortex-M0.ld oraz STM32F051x8.ld Skrypty linkera - w projekcie używać należy bezpośrednio tylko tego drugiego, który zaś w środku dołącza ten pierwszy. Podział spowodowany jest tym, że "mapa" pamięci generalnie jest wspólna, więc wszystkie takie rzeczy są w tym Cortex-M0.ld, zaś w tym...
pewnie 2 to prawdziwe RCt6 reszta pewnie nie ma takiego ram. Zmniejsz ilość RAM w pliku linkera i zmien asdres stosu i zobacz. Zmniejszyłem na 16kB, nic to nie zmieniło: https://obrazki.elektroda.pl/5788846000_...
Jedyne "pewne" podejście do tej kwestii, to zmniejszenie rozmiaru flash w skrypcie linkera o rozmiar przynajmniej dwóch ostatnich stron i użycie właśnie tych dwóch ostatnich stron. Każda inna opcja to proszenie się o kłopoty.
Witam Jest sobie STM32F030K6T6, środowisko to Eclipse z GCC. Próbuję napisać najprostszy projekt z HALem ST. Mam pliki startup_stm32f030x6.S i STM32F030K6_FLASH.ld od ST. Niestety w startupie pojawia się hard fault na linijce: [syntax=armasm]bl __libc_init_array[/syntax] Podobno trzeba albo przekazać flagi -mcpu=cortex-m0 i -mthumb do linkera albo usunąć...
Wpadłem na pomysł jak to "obejść". - w bootloaderze przekierować tablice na RAM; - "skoczyć" pod adres Reset_Handler w aplikacji użytkowej; - podczas inicjalizacji przekopiować adresy wektorów z flash do RAM (sekcja .data); Na razie próbuję: 1. umieścić wektor przerwań w sekcji .data; 2. umieścić startup.S na początku aplikacji użytkowej; Jak ktoś ma...
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...
Czy można to zrobić? - Oczywiście. Pytanie, czy trzeba? W miarę łatwo uzasadnić to, że np. jakieś dane konfiguracyjne są zapamiętywane w stałym miejscu pamięci Flash albo dane nie mają mocnego związku z kodem i są ładowane niezależnie od kodu dla każdego egzemplarza urządzenia, ale Twój przypadek jest zupełnie inny. Zamiast uczciwie wstawić dane do...
Siemka Postanowiłem zaprogramować procek programatorem od stm32discovery. Jednak wywala mi taki błąd: [syntax=ASP]Open On-Chip Debugger 0.7.0 (2013-05-05-10:44) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxyg... Info : This adapter doesn't support configurable speed Info : STLINK v2 JTAG v16 API v2 SWIM...
Rozumiem ze w syscalls sa callbacki z funkcji bibliotecznych do obslugi alokacji pamieci itp. Jesli nie uzywam alokacji to czemu linker ich potrzebuje ? Przeciez linker ma mozliwosc usuwania nieuzywanych sekcji, wiec czemu tego nie robi ?
Dobre pytanie. Możesz wrzucić pełne wywołanie kompilatora i linkera? Nie obiecuję, że dziś dam radę to obejrzeć, ale mówiąc szczerze sam jestem ciekaw co tam poszło nie tak.
Jeśli nie masz ochoty używać C++ , przejdź do startupa (*.s) i zakomentuj tą linijkę co zawiera w sobie __libc_init_array albo otocz ją #ifdef __cplusplus #endif .
Proponuję poczytać o skryptach linkera. Jest wiele stron łatwo znaleźć przez google. A co w tej sytuacji poprawiłaby ta zmiana skryptu linkera?
Witam, właśnie dostałem płytki stm32fdiscovery i chciałem zacząć z nim pracować w oparciu o gcc. Sciągnąłem sobie taki szablonowy program z tej strony /usr/lib64/gcc/arm-none-eabi/4.8.1/../..... error: Libraries/libstm32f3.a(stm32f30x_ext... uses VFP register arguments, main.elf does not /usr/lib64/gcc/arm-none-eabi/4.8.1/../.....
Twoja linijka od linkowania jest błędna. Biblioteki _MUSZĄ_ być na samym końcu, po wszystkich plikach obiektowych - tak działa linker. W ogóle to połowa flag które przekazujesz linkerowi nie ma dla niego znaczenia.
Używam przerwań. To teraz zobacz co ciekawego możesz wyczytać w skrypcie linkera... 4\/3!!
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:...
To raczej nie skrypt linkera, a zewnętrzny program, który przetworzy obraz binarny, który masz zapisywać - w każdym środowisku istnieje możliwość wywołania takiego programu, zwykle pod nazwą "post build step".
Czy plik ten się komplikuje? Masz to w logu kompilacji w konsoli Dodano po 2 Jak zcleanujesz projekt to nie oznacza że zadziała. Spowoduje to że zacznie kompilowac wszystkie pliki z projektu. Zobacz czy tm_stm32f4_watchdog.c się kompliluje. podejrzyj plik objects.list i zobacz czy tam jest tm_stm32f4_watchdog.o - to bedzie chyba najprostsza metoda
Funkcja SystemInit jest wywoływana w obu przypadkach na początku main. Podałem ją w kodzie. Może tutaj faktycznie jest problem. Pliki startup.s Keila i Cube się różnią. Zauważyłem, że funkcja SystemInit jest wywołana w pliku dla Cube. Niestety te pliki to dla mnie czarna magia. Czytałem o nim artykuł waszego kolegi z elektrody. https://www.elektroda.pl/rtvforum/topic3...
No ale dostajesz informację, że plik nie został odnaleziony... Co to ma do rzeczy czy został skompilowany dla Keila czy nie, skoro po pierwsze musi zostać odnaleziony? podając do linkowania parametr -lgui wcale nie powodujesz wyszukania pliku gui.a - linker poszuka tylko pliku libgui.a (w ramach potwierdzenia sprawdź czy biblioteka matematyczna nazywa...
Bezedura.. Keil i może potrafi wykryć takie coś, jednak nie GCC. No faktycznie, po próbach z GCC, przyznaję Ci rację, że nie jest w GCC tak prosto i wygodnie ze zmiennymi absolutnymi, jak mi się wydawało po praktyce w Keil. Ale pewnym prostym wyjściem może być zdefiniowanie buforów w sposób podobny jak tu: [syntax=c]unsigned char __attribute__((section...
Twoja tablica jest alokowana na stosie, ktorego jest ograniczona ilosc (w skrypcie linkera mozesz ja zwiekszyc). Tworzenie duzych obiektow na stosie nie jest zbyt dobrym rozwiazaniem. Powinienes w takim przypadku uzyc tablicy globalnej lub zaalokowac ja dynamicznie (za pomoca malloc).
te 2 pliki musze zmienić oraz dane w makefile i linkerze tak ?? W Makefile to za dużo zmian nie będzie (może jakieś nazwy plików), więc głównie linker i tablica wektorów. O to jaki kompilator będzie użyty chodziło mi że w includes są scieżki do g++ i jeśli będzie kompilować się w edge to nie będzie żadnych komplikacji ?? Te ścieżki są wykrywane automatycznie...
Jest to do zrobienia, ale wszystko zależy od tego jak bardzo jesteś biegły w posługiwaniu się C, kompilatorem i linkerem. Jak to może być rozwiązane to możesz sobie podpatrzyć w dokumentacji np LPC1549, tam są biblioteki ROM i stamtąd możesz czerpać inspiracje.
Hmmm... nie jestem pewien. Da się gdzieś dodać opcje dla linkera tak żeby była "normalna", a nie poprzedzona "-X linker"? Ważne jest też, żeby biblioteka była w wywołaniu linkera na końcu - po wszystkich plikach z rozszerzeniem .o. Nie używam tej wtyczki, więc nigdy nie uświadczyłem takich problemów (;
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...
Za dużo tego jest :^( Z tego merge wynika, że zostało dodane/zmienione 55 plików :^O No widzisz, tak to właśnie wygląda (; Niemniej jednak z tych 55 plików 17 związanych jest z paczką CMSIS dla serii STM32F1 (external/CMSIS-STM32F1), a 9 związanych jest z wsparciem dla płytki NUCLEO-F103RB. Zostaje więc 29 (; Z tych 29 można wyodrębnić absolutne minimum,...
Adresy pamięci Flash i RAM są takie same. Kontroler GPIO i RCC są troszkę inne niż w STM32F1, więc trzeba zmienić. Szczególnie chodziło mi oto czy Pana linker i startup będą pasować do STM32F2.
Zacznijmy od klawisz i EXTI - bardzo razem się nie lubią. Poruszane na tym forum zylion razy
A jak to jest z atrybutami regionów MEMERY?? Z goła dokumentacja wspomina, że linker jeśli czegoś nie może umieścić w jednym regionie umieszcza w innym o takim samym atrybucie. Tak to rozumiem. Nie do końca, niemniej jednak dzięki temu że linker "resztę" umieści w innym miejscu tylko 2 pierwsze strony trzeba "zaalokować" ręcznie. Po prostu na stronach...
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,...
Witam, poczytałem sporo informacji nt. skryptów linkera, ale niestety jednej rzeczy nie mogę zrozumieć. Mam przykładowy zapis (sam napisałem): [syntax=c] .text : { . = ALIGN(4); __text_start__ = .; /* zmienna zawierająca początek sekcji text */ *(.text) /* kod wykonywalny aplikacji */ *(.text.*) *(.rodata) /* dane tylko do odczytu przechowujemy we flashu...
Zamiast instalować Windowsa, to ściągnij sobie z mojej strony przykładowy projekt - weź ten dla STM32F1 albo dla STM32F4 - i na jego podstawie opracuj sobie szablon dla STM32L1. Mogę Ci nawet wrzucić kilka plików, bo kiedyś robiłem projekt na STM32L1 i mam ich kilka. http://www.elektroda.pl/rtvforum/topic13... W Twoim projekcie nie ma tablicy...
Którego stosu i czy aby na pewno tego co trzeba? Jeśli używasz moich plików (skrypt linkera, startup, itd.) to polecam ze zrozumieniem przeczytać opis powyżej rozmiarów stosów w skrypcie linkera. 4\/3!!
Swoją drogą skrypt linkera też mógłbyś wziąć z właściwego przykładu (;
Akurat zmiana skryptu linkera jest najprostszą rzeczą [; 4\/3!!
Wystarczy zajrzeć do startupu co się dzieje po powrocie z funkcji main. To nie jest jakiś wielki błąd. Polecam natomiast poczytać jak działa kompilator i linker.
Wszelkie informacje są w dokumentacji linkera. Trochę za dużo tych pytań masz na raz... 4\/3!!
Łatwość z jaką osiągniesz swój cel jest uzależniona od tego jak bardzo LM4 są podobne do LM3 (; Przecież LM4 = LM3 + FPU Czyli linker i startup będzie podobny do tego z stm32f4 ?
Mam zamiar kupić sobie zestaw Kinetis KwikStik. Chcę zrobić przykładowy projekt w Eclipse i sobie tak myślę czy by czasem linker i startup nie podszedł z STM32f4, bo w końcu mają ten sam rdzeń CM4 ?
Przecież ten kreator nie robi nic innego jak tylko tworzy ci skrypt linkera. W okienku konfiguracji możesz dać "dont use standard memory configuration" i podać mu skrypt linkera. Więc wybierasz podobny procesor, zaznaczasz tą opcję i edytujesz plik link.ld
screen z wyboru mikrokontrolera Procesor nie może być GENERIC. Powinnaś wybrać konkretny :) Wtedy ręczna modyfikacja linker -skryptu nie będzie konieczna. Załóż projekt od nowa, wybierz właściwy MCU.
W skrypcie linkera wszystko jest OK, więc generalnie powinno działać jak należy (; Tylko nie wiem jak z tym codesourcery, bo sam nie używam go już od dawna i nie wiem czy tam teraz coś się nie zmieniło w kwestii syscallsów... Jeśli nie jesteś z tym pakietem bardzo zżyty, to spróbuj albo "linaro" ( https://launchpad.net/gcc-arm-embedded ), albo bleeding-edge-toolchain...
Witam, przejrzałem tematy od STM32F3 odnośnie migracji z szablonu od Frediego z STM32F4 do F3 ale nie udało mi się zamrugać diodami. Co zrobiłem: # ściągnąłem źródła ze strony Frediego, # w makefile zmieniłem Global_defs # w linkerze obszary pamięci + pamięć na stos # w projekcie dodałem plik stm32f30x.h # zakomentowałem ustawianie PLL projekt się kompiluje...
(at)KFplay4free Plik z rozszerzeniem .o jest wynikiem kompilacji pliku .c lub asemblacji (bo niektórzy nie rozróżniają jednego od drugiego) pliku .s. To co obserwujesz to błąd przy konsolidacji. Oznacza mniej więcej to, że linker nie mógł odnaleźć symbolu o takiej nazwie. Wrzuć tutaj cały plik startup_stm32.s oraz pełny log z budowania Twojego projektu....
linker error stm32 linker flash linker
oporność głośnik instrukcja ustawiania programu prania error amica
analizator widma przetwornica prądu stałego
Nissan Pathfinder R51 – kolorowe kreski na wyświetlaczu, przyczyny usterki AV/NAVI Mocowanie zębatki na osi silnika DC – śruba dociskowa, piasta zaciskowa, wpust, klej Loctite