Obetnij program do minimum, w przy którym błąd dalej występuje. Podeślij program, skrypt linkera i plik map. Kłopot jak piszą kol. Freddie i kol. linker jest gdzie indziej. W ramie nie mieszczą się nie stałe, lecz zmienne niezainicjowane (sekcja .bss) Albert
Freddie Chopin : uaktualniłem startup oraz linker (od Ciebie) ustawiłem : __main_stack_size = 1024; __process_stack_size = 1024; i dalej ten sam problem, przy uruchamianiu oraz przy debugowaniu. gaskoin : zaraz zabiorę się za wrzucenie projektu do Eclipse i wtedy pokombinuję ze stosami
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.
Spróbuj z tym, powinno działać lepiej (nie sprawdzałem czy działa w ogóle [; ) [syntax=bash]#==========================... # ARM makefile # # author: Freddie Chopin, http://www.freddiechopin.info/ # last change: 2012-01-07 # # this makefile is based strongly on many examples found in the network #=======================================...
W odpowiednim źródle wiedzy nie ma podanego wariantu, który by wrzucał data tylko do romu, am I right? E: directx11: Sposób w jaki Freddie pomaga odpycha wielu początkujących, ale jego rady zazwyczaj są trafne.
Dzięki opcjom, które podał Freddie nie trzeba nawet żonglować. Każda funkcja znajdzie się wtedy w swojej sekcji i linker to potraktuje tak jakby każda była w swoim własnym pliku o. Do tego można dodać jeszcze optymalizację całości (wymagającą wywołania wszystkich jednostek kompilacji jednocześnie) i wszystko co nieużywane zostanie wyrzucone. No ale...
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ż...
Sorki, powinno być [syntax=bash]objcopy -I binary -O elf32-littlearm -B arm plik.bin plik.o[/syntax] a najlepiej to jak wyżej napisał Freddie Chopin [syntax=bash]objcopy -I binary -O elf32-littlearm -B arm --rename-section .data=.rodata,alloc,load,readonly,data,c... plik.bin plik.o[/syntax] wtedy linker nie będzie krzyczał.
Dobra, to ja się podczepię: odpaliłem w końcu semihosting, natomiast nie bardzo wiem, co zrobić ze skryptem linkera - bo nie do końca łapię pewne rzeczy: /* Linker script to place sections and symbol values. Should be used together * with other linker script that defines memory regions FLASH and RAM. * It references following symbols, which must be...
OK, więc tak: startup.s /* +=======================================... | includes +=======================================... */ #include "hdr/hdr_cpsr.h" /* +=======================================... | startup code +=======================================...
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ąś...
Weźmy na przykład Twój plik linkera oraz plik linkera projektu dsonano (oscyloskopu) ze strony http://code.google.com/p/dsonano/ a dokładnie http://dsonano.googlecode.com/files/DS0%... Znajduje się tutaj skrypt linkera o nastepującej treści: /*for stm32f103VBT6 link scipt*/ /* Stack Sizes */ _STACKSIZE = 512; /* just X2*/ _HEAPSIZE...
Wiesza się w tym samym miejscu co w moim programie - po włączeniu przerwania NVIC_EnableIRQ. W stosunku do oryginału zmieniłem tylko port GPIO oraz dodałem obsługę TIM3 i mryganie diodą na podstawie TIM3->CNT by wiedzieć czy licznik rzeczywiście działa. W skrypcie linkera ustawiłem oba stosy oraz tak jak sugerowałeś zmniejszyłem pamięć o połowę -...
Witam, Mam pewien problem z dynamiczną alokacją pamięci. W momencie gdy wykonuję dynamiczną alokację pamięci poprzez "new", program ląduje w FaultISR(); Środowisko: procesor: lm3s6965 gcc: bleeding-edge-toolchain (linux) syscalls.c od Freddie Chopin Organizacja pamięci jaką staram się ustawić: http://obrazki.elektroda.pl/7477258900_1...
Mam na pewno sterownik WinUsb.sys. Poniżej cały skrypt linkera: Dodano po 10 Zapomniałem dodać, że używam zewnętrznego ST-linka dołączonego do płyty Nucleo-f103rb. Mam drugą taką płytkę i gdy teraz ją podłączyłem ale skorzystałem z wbudowanego ST-linka wszystko zaczęło działać prawidłowo. Co w takim razie może być nie tak?
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...
Ok. Przeprowadziłem eksperyment. Jeżeli chodzi o Cortex M3 to dodałem plik z rozszerzeniem cpp i kompilacja przebiegła bez błędów. Tylko nie działa standard C++11 tylko jakiś starszy. Sprawdziłem to dodając słowo kluczowe auto, które podobno jest elementem języka od chwili pojawienia pojawienia się standardu C++11. Poniżej zdjęcie ilustrujące pewne...
Wyjasnijcie to wyrownanie do 8(robie to na str912 ale to chyba zadna roznica jesli chodiz o ten blad to dotyczy on codesourcery a nie konkretnego proca) Moj skrypt linkera: /** * File: STR91x-ROM.ld * * Project: STR91x Eclipse demo * * Description: Linker script to load the application in flash. * * Created: 27/08/2008 * * <dl> * <dt>Author:</dt>...
Freddie Chopin dzięki za odpowiedź! Czy mógłbyś podzielić się fragmentami skryptu linkera z poprawnie zdefiniowanymi symbolami __heap_start i __heap_end ? Aktualnie Twój skrypt którego używam wygląda tak: [syntax=c] /***************************************... * author: Freddie Chopin, http://www.freddiechopin.info/...
Witam, mam taki problem, program na lpc1768 nie startuje mi po zaniku napięcia, czy też odłączenia i podłączenia po pewnym czasie, najpierw muszę go zresetować ręcznie, później dopiero startuje. Używam makefile z przykładu lpc1114 na stronie Freddie Chopin. Środowisko eclipse + arm-none-eabi. Makefile [syntax=c]#=====================...
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...
Tak wygląda skrypt linkera po poprawach [syntax=c] /***************************************... * author: Freddie Chopin, http://www.freddiechopin.info/ * file: STM32F4xxxG_rom.ld * last change: 2012-03-15 * * chip: STM32F4xxxG * compiler: arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 4.6.2 * 20110921 (release)...
dzięki za artykuł, dzięki niemu dodałem odpowiednie rzeczy do CXX_DEFS i C_DEFS których wcześniej nie dodałem. Ale problem pozostał ten sam. zmieniony makefile: http://obrazki.elektroda.pl/7932168800_1...
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...
Ok, coś jest nie tak. Przede wszystkim systick działa na trybie optymalizacji O1 i O2. Bez zmiany kodu. Na O0 od razu jest hard fault. Ale nie występuje na żadnej linijce kodu. Nie wchodzi do przerwania i wywala od razu błąd. EDIT: Działa w momencie kiedy wywaliłem inicjalizacje: N VIC_Init(&NVIC_InitStructure); A w to miejsce dałem: NVIC->ISER...
Witam, Posiadam mikrokontroler LPC2364, w którym nie potrafię uruchomić pętli PLL. Środowisko programistyczne to Eclipse skonfigurowane według tutoriala Freddiego Chopina. Do uruchomienia LPC2364 posłużyłem się projektem przykładowym naipisanym dla LPC2103 i znajdującym się również na stronie Freddiego Chopina. Zmieniony został plik linkera: /***************************************...
Witam, Mam problem z debugowanie procesora LPC2478. Środowisko: postawione zgodnie z tutorialem ze strony Freddiego Chopinna czyli Eclipse (helios edition with HDT hardware debugging) + OpenOcd + Code Sourcery Lite edition Procesor: ARM NXP LPC2478 z kwarcem 12MHz Aplikacja: Na tym etapie mrugająca diodka na timeocie opartym o przerwanie timer0, PLL...
Czy o takie poprawki chodziło? Dodano po 6 Kompilacja przebiega trochę dłużej, ale pomyślnie. Tak długo tworzy się plik wyjściowy *.bin. Czemu?
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...
Witam wszystkich. Uzywam Eclipse + OpenOCD (0.9.0) + GCC. Do tej pory używałem STM32F103 (Cortex-M3), a teraz przesiadłem się na STM32F373 (Cortex-M4). Wziąłem ze starego programu skrypt linkera, startup, vectors.c i posklejałem do kupy odpowiednio je modyfikując. Program generalnie odpala się, mogę sterować GPIO. Następnie spróbowałem uruchomić SysTicka....
Co znaczy zbyt mały, czy 1024 bajty to za mało? Używam twojego (jakiegoś może nie najnowszego) skryptu linkera... [syntax=c] /***************************************... * author: Freddie Chopin * file: stm32f103rb_rom.ld * last change: 2009-09-19 * * chip: STM32F103RB * compiler: arm-none-eabi-gcc 4.3.3 * * description:...
Freddie używa niestandardowych nazw zmiennych. Dopisz do linii LINKER_FLAGS = ... lub LIBS = Albert
Skompilowałem nieco przerobiony (usunąłem konfigurację PLL, itp..) pod mój procesor (STM32F100RB) przykład z twojej strony. Ze standardowym skryptem linkera działa, po zmianie TYLKO skryptu linkera na przerobiony pod RAM (kod poniżej) niestety nie: [syntax=asm] /***************************************... * author:...
Witam, Bazuje na projekcie ze strony Freddie Chopin dla stma F4 z dodanymi bibliotekami STM32F4xx_StdPeriph_Driver. Zdefiniowałem sobie konfigurację timer'a w następujący sposób: [syntax=c]void Timers_Config(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TI... ENABLE); NVIC_InitTypeDef NVIC_InitStruct; NVIC_InitStruct.NVIC_IRQChannel = TIM1_CC_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptio...
Ja bym dodał dodatkową sekcję i przy pomocy attribute w gcc jawnie umieścił zmienne i funkcje w tej sekcji. Potem tylko wywołując linker należy określić gdzie ta dodatkowa sekcja ma wylądować. Inne rozwiązanie wskazał już kol. (at)Freddie Chopin .
To zależy, jak jest napisana ta biblioteka. Jeżeli każda z funkcji (stanowiąca samodzielna całość) jest w oddzielnym pliku źródłowym, a te po skompilowaniu zostaną połączone w jedną bibliotekę statyczną (.a), to podczas konsolidacji programu linker będzie mógł wybrać z biblioteki tylko to, co potrzebne (z dokładnością do pliku źródłowego biblioteki)....
...zależy co masz w skrypcie linkera, więc ewentualnie to też wrzuć. wybacz, ale jaki/który to ma być plik ów linker?
Freddie. Chodziło mi o to by nie musieć ręcznie wybierać co tam ma być umieszczone. Linker sam zapełnił by jeden region a jeśli by nie wystarczył skorzystałby z drugiego.
co kompilator i linker w dobrze skonfigurowanym projekcie robią w 3 sekundy. Akurat to sądzę że nie zajmuje im aż tyle czasu :) Wielu tu pisało to samo - po co (at)_jta_ odkrywa koło na nowo. Cały ten projekt (czyli czytanie z ADC i wysyłanie do PC-ta już byś dawno zrobił, przetestował i zapomniał. Aż się boję pomyśleć jak zamierzasz pracować nad stosem...
Ł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 ?
No ja wiem o tym, tylko zastanawiam się czemu linker nie może jeszcze jej pomnozyć przez 32 i dodać do niej 16 To może zrobić bez problemu, ale nie może zmienić kodu wygenerowanego wcześniej przez kompilator. PS zerknij post wyżej, bo dopisałem w tym samym czasie co Ty wysłałeś Albert
(at)Freddie Chopin Być może się mylę - ale nie zauważyłem żadnej różnicy w tym co wypluwa linker. Być może wynika to z tego że używam dość starego toolchaina (6.3.1) ale istnienie lub brak root symbolu nie ma wpływu na to co jest discard-owane (poza wpisem w elf-ie oczywiście).
A jakiś link do tego, który mas na myśli? Chociażby blink led Freddiego: https://freddiechopin.info/en/download/c... Osobna sprawa, że plik startowy musi być specyficzny dla procesora. I tak i nie. W sumie to od Ciebie zależy co umieścisz w startupie a co w funkcji main(). Najczęściej w startupie są dwie ważne...
Nie jest możliwe całkowite wyrzucenie obsługi wyjątków jeśli używasz bibliotek, które te wyjątki mają włączone. Ty sobie swoim -fno-exceptions oraz -fno-rtti wyłączasz wyjątki i RTTI, ale _TYLKO_ w swoim kodzie który jest właśnie kompilowany. Dociągnięcie dowolnej funkcji z blibliotek standardowych (czyli np. z libc, libgcc czy - szczególnie - libstdc++v3)...
Podaj jeszcze jaką wersję pliku portmacro.h używasz. Ja nie widzę w źródłach FreeRTOS'a wersji dla MCU: STR91x dla kompilatora:GCC (jedynie dla IAR). Musiałeś coś pominąć, bo #define wybierające wersję portmacro.h nie jest "zdefiniowane" w tym, co wysłałeś. Skrypt linkera wygląda na standardowy, ale patrząc na STR91x_FLASH.icf w katalogu wersji IAR...
tylko że zwróć uwagę na to, że autor wątku NIE CHCE jej wgrywać za każdym razem (tylko jeden raz), więc wychodzi naprawdę na to samo. Wystarczy zmniejszyć rozmiar FLASH w skrypcie linkera, a następnie umieścić tablicę binarnie w zwolnionej przestrzeni. W ten sposób linker sam nas poinformuje, że przekroczyliśmy "granicę". Prawda?
1. Czy powyższy przykład z atrybutem dla konkretnej zmiennej da się rozciągnąć na szerszy zakres na zasadzie "od tego miejsca do odwołania"? Raczej nie, ale jeśli nie chce Ci się dużo pisać, to po prostu możesz sobie zdefiniować stosowne makro #define. Myślałem, że jest jakiś odpowiednik "#pragma GCC optimize ("")" dla zmiennych. No trudno, jakoś sobie...
Witam Rozumiem, że chcesz aby cały kod wynikowy został umieszczony w pamięci RAM. Żeby tego dokonać należy zmienić adres sekcji ROM w skrypcie linkera: "rom (rx): org = 0x08000000, len = 128k" na pamięć RAM(zaczyna się od adresu 0x20000000 dla stm32). Pamięć RAM również należy przesunąć o odpowiedni adres. Jeżeli masz w kodzie przerwania to nie zapomnij...
A dlaczego miałby zgłaszać błędy? Co ty robisz jeśli nie masz wystarczająco informacji, aby podjąć decyzję? Zawieszasz się, czy podejmujesz decyzję w oparciu o swoje przeczucia, co może okazać się nieoptymalne? Tak samo robi kompilator, podejmuje potencjalnie nieoptymalne decyzje z jednym celem - aby mieć 100% pewność, że kod będzie dało się potem zlinkować...
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...
linker error stm32 linker stm32f0 linker
zabezpieczenie termiczny spawarka peugeot wycieraczki spryskiwacz moduł sim800
oświetlenie biurka tiguan schemat
Niebieska dioda LED nie świeci – diagnostyka, Sharp, LG, Samsung, uszkodzenie, wymiana Luz zaworów Stiga RS 100 – wartości serwisowe i regulacja kosiarki spalinowej