Hej, mam przykład z blink led dla stm32f103 ze stronki Freddiego i na jego podstawie portuje kod pisany pod KEIL'em do czystego eclipse'a + toolchain bleeding edge. Jestem już na etapie gdzie wszystko mi się kompiluje (aczkolwiek wciąż na bibliotekach ST dotyczących peryferiów itd). Musiałem wrzucić także syscalls itp. Niemniej - przykład ten jest dla...
Zanim coś napiszesz to proszę uzupełnij wiedzę co to są funkcje veneer (https://www.keil.com/support/man/docs/a... Funkcje są przenoszone do RAMu (sprawdzone, mam ich >100). Startup nie ma tu nic do rzeczy. Lepiej powiedz przed wszelkimi radami czy pisałeś funkcje które działają pomiędzy RAM i FLASH na procku STM32F103...
jest kompletnie niepotrzebn pod warunkiem że w tej rodzinie startup ustawił STKALIGN. Albo sam gdzieś napisał SCB -> CCR |= SCB_CCR_STKALIGN_Msk;
Strzelam - startup inicjuje pamięć ustawia wektory, itd., itp.
Wnioski z artykułu : startup wolniejszy bo kopiuje serial FLASH do SRAM Wydajność większa bo wykonywane ze SRAM Ciekawe jak działa emulowanie EEPROM w FLASH, ale skoro Na tą chwilę załadowałem bootloader stm32duino i działa ok to pewnie problemu nie ma?
Aby zobaczyć gdzie problem : 1. Uzyj debugera 2. Pokaż skrypt linkera i startup Dodano po 47 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
Moje wątpliwości budzi: Thread mode can use main stack Nie miałym dotąd potrzeby zastanawiania się nad tym, w jakim mode działam. Przerwania działaja w jednym trybie, "nie-przerwania" w drugim. Ponieważ każdy tryb używa osobnego stosu, to konieczne jest ustawienie DWÓCH stosów. Nie są zbyt zagnieżdżone przerwania, zresztą spod keila program działał....
Przyszedł czas na zrobienie własnego bootloadera a z nim kilka problemów i pytań. Pierwszym problemem jest skrypt linkera: nie potrafię stworzyć sekcji bootloadera na początku programu. Stworzyłem sekcję na końcu. Co muszę poprawić w poniższych skryptach żeby mój bootloader był za tablica wektorów przerwań aż do adresu 0x08000400? Od 0x08000400 ma być...
O ile przerwania SysTick działały, to jak tylko używam przerwań z NVIC to już nie działa, takie mam wrażenie. Próbuję właśnie migać diodą w przerwaniu Timera 1 i ta sama sytuacja...;/ Rdzeń zamiast do IRQ ucieka w Reset_Handler i koniec programu. Mam debugger i sprawdzam co się dzieje, rejestry się ustawiają jak powinny, w rejestrach NVIC coś się zmienia,...
Masz rację, że szkoda całego tygodnia na taki problem:). Oto cały kod: Main: http://obrazki.elektroda.pl/2257364500_1... podłączenie do STM'a wygląda nastepująco: RxD do PA10, TxD do PA9. Więc nadal stoję w miejscu, ale nie poddaje się;).
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....
Default Handler, więc pierwsze pytanie: Czy masz zdefiniowany wektor przerwania RTC_IRQ w pliku startup_stm32.s?
W pliku startup_xxxxx.s
To co jest w tym pliku zip na pewno nie miga diodą (niczym innym zresztą tez nie) W pętli while jest następujący kod, którego brakło w paczce: [syntax=c] while (1) { /* USER CODE END WHILE */ HAL_Delay(1000); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); HAL_Delay(1000); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); /* USER CODE BEGIN...
Dziękuję lazureus. Myślę, że masz rację z tym Watgdog'iem okienkowym WWDG, jednak w celu poprawnego skonfigurowania WWDG wczytuję się w książkę Krzysztofa Paprockiego "Mikrokontrolery STM32 w praktyce" w której autor używając uVision opiera się o najnowszą wersję bibliotek stm32f10x Standard Peripherals Library V3.4.0 i CMSIS. Tak więc i ja korzystam...
Mimo to nie pozwoliło to na kompilację (czerwony napis "BUILD FAILED"). Zapewne projekt nie został poprawnie skomponowany (CMSIS, startup, ścieżki, skrypt linkera, itd.). Dlaczego piszesz w CooCox i bibliotekach SPL? Całkiem możliwe, że prowadzący zajęcia niestety nic innego nie zna.
Zastanawiam się, czy to nie jest kwestia vector.c albo startup.S których używam od Freddie Chopin. Może coś tam powinienem jeszcze zmienić? Patrząc na te przykłady z Keila w samej aplikacji mam tak samo. Zmienilem rozszerzenia, bo nie mogłem dołączyć załączników: startup.h -> startup.S stm32f103rb_rom.h -> stm32f103rb_rom.ld
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...
automatyczna konfiguracja stosu, zegara, przerwań (startup). Kolego, nie opowiadaj bajek. Gdzie jest ta automatyczna konfiguracja??? Na przykład dla STM32F4xx, wielkość stosu definiujesz w pliku startup_stm32f4xx.c, konfiguracja zegara w pliku startup_stm32f4xx.c, bazuje na ustawieniach zawartych w stm32f4xx_conf.c, co często sprawia, że rdzeń jest...
W poradniku Szczywronka opis konfiguracji zegara był dokładnie opisany dla STM32F103. Przepisanie kodu stamtąd powinno dać Ci poprawny wynik konfiguracji. Teraz piszę z pomocą CMSIS". Pracę z STM zaczynam zawsze od przygotowania funkcji SystemClockConfig() jak to opisano w poradniku, posiłkuję się zarazem schematem z zegarów z CubeMX . Całość odbywa...
Jakiego środowiska używasz? W Crosstudio trzeba zdefiniować #define STARTUP_FROM_RESET żeby program ruszył bez programatora.
Chodzi mi tu głównie o ograniczanie wielkości bibliotek standardowych Nie używam. Operacje bezpośrednio na rejestrach. Startup, konfiguracja taktowania własne. Jedynie *.h z rejestrami od producenta. Jest z tym trochę roboty, ale całość działa szybko i tak jak chcę. Książki nie polecę bo żadnej (poza tymi o assemblerze c51) na oczy nie widziałem. Grzebię...
No i nie będzie działać, bo to startup dla CortexM3, a STM32F0 to CortexM0, o mniejszej liczbie rozkazów. Startup dla M0 jest w przykładzie Freddiego Chopina dla lpc1114.
lub jak te przerobić ?? No trzeba przerobić głównie te dyrektywy typu EXPORT, AREA itd. Jeśli takiego kodu assemblerowego nie ma zbyt dużo to przeróbka nie będzie problemem. Zobacz sobie jakiś plik assemblerowy przeznaczony dla GCC to sam zobaczysz jak to powinno wyglądać (choćby ściągnij przykłady dla ARM z mojej strony i tam jest startup w assemblerze)....
Minimalizm totalny a ty się dziwisz. Weź stosuj makefile Freddiego. Przesada Co złego jest w minimalizmie? Mam wszystko co jest potrzebne. Kompilator wywoływany jest z takimi samymi parametrami i tak samo. Masz automat, z dodaniem każdego pliku chcesz makefile edytować? Tak, chce za każdym razem edytować makefile, ale o gustach się nie dyskutuje. To...
Witam! Czy ktoś walczył w CrossWorks z opcją STARTUP_FROM_RESET? Zmieniłem w pliku STM32F10x_Startup.s fragment: #ifdef STARTUP_FROM_RESET .word reset_handler #else .word reset_wait #endif /* STARTUP_FROM_RESET */ na .word reset_handler jednak nawet wtedy procesor nie startuje po zaprogramowaniu i wciśnięciu na płytce reset. Automatycznie startuje jednak...
Witajcie, Kontynuując moją przygodę "chirurga ARM" doszedłem (i zatrzymałem się) do plików startup'owych i linkera. Przeglądając czarne zakamarki internetu znalazłem jakieś przykłady (Fredie'go też) lecz nie rozumiem na jakiej podstawie one powstały. Jako główne źródło podawana jest biblioteka standardowa STM i zawarte tam przykłady. Interesuje mnie...
Racja... Zamiast '==' ma być '<'. Zauważyłem też, że inicjalizacja portów z ledami powinna być po wystartowaniu i ustawieniu zegara. Z działaniem programu po resecie też już wiem o co chodzi. Ale dalej nie mam pomysłu dlaczego nie działa ten odczyt w funkcji reciever_startup().
Wszystko fajnie, pod warunkiem, że chce się używać STM32. Dodanie podstawowego wsparcia dla innych układów jest porównywalne z postawieniem projektu na FreeRTOSie - ot po prostu musisz mieć tablicę wektorów i skonfigurowane rozmiary/adresy pamięci i dokładny typ układu. We FreeRTOSie przecież wsparcie dla STM32 czy dla LPC tak samo nie istnieje - tablicę...
Problem rozwiązany: Dodatkowo w drugim programie, w pliku startup_stm32f10x_hd.c, trzeba było zmienić: #define VECT_TAB_OFFSET 0x0 na: #define VECT_TAB_OFFSET 0x3000 I chyba już wszystko ładnie chodzi:)
No ale ja przecież mówię, że poznać można, warto itd., ale nie w pierwszym kroku z nowym układem, a nawet nie w drugim... Równie dobrze można przeformułować Twoje pytanie i spytać ilu początkujących się zniechęciło, bo z racji braku dobrych i uniwersalnych przykładów (a nie gotowców) musieliby poznawać zawiłości startupów, skryptów linkera itd., zamiast...
Po długiej przerwie wracam do tematu bootloadera. Zrobiłem nowy projekt w Eclipse z pomocą tutoriala Freddiego i na podstawie projektu bootloadera z EP. Połączyłem projekt stm32_blink_led z plikami bootloadera wykorzystując makefile, startup i .ld z projektu Freddiego. Udało się uruchomić i debugować aplikacje bootloadera. W załączniku połączone projekty...
Witam, mam problem z debugowaniem uC stm32f103RCT6 w środowisku Keil uVioson 4. Po wejściu w tryb debugowania wchodzę w zakładkę Peripherals i niestety nie mam podglądu stanu ADC3, paru timerów (są tylko 1,2,3,4) oraz DAC. Kolega ma ten sam problem na STM32F103ZET6. Dostępne są tylko jakby standardowe peryferia, które można znaleźć w stm32f103RBT6....
Ogólnie to w startup.s masz tablice wektorów przerwań i jeśli w zależności od implementacji powinny one wskazywać na początku jakiś defaultowy handler. Nie powiem jaki mechanizm jest wykorzystany bo w zależności od narzędzi może być to napisane trochę inaczej. Takim deafultowym handlerem może być np nieskończona pętla, co by użytkownik łatwo mógł zdebugować...
1. Odpowiedź pytaniem - a dlaczego by nie? Równie dobrze mogę Cię spytać, czemu Twój program składa się z x plików zamiast z jednego i byłoby to nawet lepsze pytanie, bo taki program może być bardziej zoptymalizowany przez kompilator niż coś rozdzielonego na setkę plików (; 2. Jedyne miejsce gdzie kolejność ma znaczenie to sama tablica. W końcu w C...
Od niedawna wróciłem do zabawy z ARMami. Mam płytkę ewaluacyną z procesorem: STM32F103VBT6. Oczywiście przeszperałem forum, poczytałem, skonfigurowałem środowisko i odpaliłem (z flasha) klasyczne miganie diodą zrobione przez Freddiego - za co dzięki. Kompilacja, linkowanie i flashowanie bez problemów. Uruchomiło się i działa. Potem kolejne coraz bardziej...
Wreszcie udało się skonfigurować to wszystko i działa. Projekt kompiluje się poprawnie. Jednak jak wrzucę do projektu bibliotekę standardową od STM to kompilują mi się wszystkie C w obrębie projektu. Co gorsza nie istnieje optymalizacja na poziomie linkera i wszystkie punkcje nawet te nie wywołane lecą do pliku wynikowego przez co staje się ogromny....
Ja się przyznam, żeby zacząć przejrzałem kilka potężnych pdfów i naczytałem się o startupach i innych badziewiach, bez bólu przyznam, że zajęło mi to z miesiąc lub dłużej nawet. Jak ktoś ma Ci napisać na forum w 3 zdaniach co i jak, co czytał miesiącami ? Na stronie freddiego masz GOTOWY działający projekt. A zainstalowanie toolchaina + konfiguracja...
Co na to wszystko linker i inicjalizacja sekcji .data w startupie? Nie wiem jak to w Keilu działa, bo używam gcc, ale nie musisz włączyć pamięci najsampierw?
Zwalczyłem problem. Przycisnąłem przycisk Boot0 i w tym czasie uruchomiłem flashowanie projektu, który wcześniej działał - pomogło. Prawdpodobnie startup jakiś miałem dziwny i coś przestawił w procku. Dziękuję za odpowiedz i pozdrawiam, Eddie TR
Ale to nie ten startup
Kiedyś pisałem programy na uC w Keilu, ale dzisiaj jakoś nie mam ochoty krakować oprogramowania. Właśnie na początek KEIL to dobre rozwiązanie, a 32kB to sporo, zwłaszcza, że sa uC, które mają 32 czy 16kB pamięci. Dodano po 8 A wektory przesunąłeś? Robiłem wszystkie te czary mary z wątku, które rzekomo miały działać. Tylko tyle, bo za słaby jestem...
Witam, Dopadłem taki Example Mass storage pobawiłem się nim troche, działa z debugiem i bez debugu co oznacza ze podłączam urządzonko do PC i otwiera się dysk bez względu czy jest podłączony debug czy nie. Połączyłem to z softem do FAT i rozwijałem pod debugiem i fajnie to działa. Przyszła pora odpalić bez dabugu i niestety po podłączeniu do PC dysk...
Dzięki za pomoc, po zainstalowaniu giveio, układzik komunikował się już poprzez telneta, z powodzeniem zrobiłem reset i halt. Zabrałem się więc za sprzężenie tego openocd z eclipse, jednak gdy chciałem debuggować otrzymałem taki komunikat: 'Launching progsik_test.elf' has encountered a problem. Error starting process. Error starting process. Cannot...
(at)Marek_Skalski Tymbardziej nie rozumiem, dlaczego po przestawieniu na HSE w CubeMX wskazuje taktowanie szyn APB na 8 MHz a ja muszę takie zmiany wprowadzać. Co do funkcji ustawiającej zegar to jeśli projekt używa SPLa to wcale nie ma pewności, że faktycznie ten zegar masz ustawiony na 8 MHz, bo równie dobrze może być jednak ustawiony na zupełnie...
Witam wiem ze temat wałkowany, czytając poprzednie posty jak zwykle mam mętlik. STM32F103ZET Używając: monitor reset halt (lub reset_halt ) load dla ram i flash program staje zawsze w startup.s: Reset_Handler: /* +---------------------------------------... | Initialize the process stack pointer +---------------------------------------...
A co jeśli HSEStartUpStatus != SUCCESS? Taktowanie zostanie pozostawione jako domyślne. Prawdopodobnie taktowanie zostaje na 8MHz. I czasami tak się właśnie dzieje, program rusza ale chodzi dużo wolniej. Jaki masz czas oczekiwania na start HSE? Dokładnie nie wiem. Wykorzystuję bibliotekę STMa więc wydaje mi się prze powinien być poprawny ale dołączę...
Co to za środowisko? CoIDE. Mam takie ikonki. Tylko jak wyżej napisałem , w czasie kiedy wisi aktywny jest tylko stop i pause. Dodano po 48 Ale jeśli w czasie debugowania zatrzymam debugowanie "pause" to wychodzi na to że program jest w pętli w tym miejscu : Dodano po 3 Dodano po 10 Wypinając linie RX mikroprocesora z układu MAX485 program działa o...
Czy jest nadzieja, że pojawi się podobny do LPC1117 projekt dotyczący LPC1759 ? Próbuje zgodnie z helpem w CMSIS NXP stworzyć make i skrypt linkera, ale Eclipse uparcie wyrzuca dwa errory: cs-make: *** [out/test_lpc1759.elf] Error 1 test_lpc1759 C/C++ Problem undefined symbol `__cs3_interrupt_vector_cortex_m' referenced in expression ldscript_rom_gnu.ld...
Mam skopiowany do głównego katalogu następujące pliki: stm32_flash.ld - jest skopiowany z TrueStudio, ale probowalem rownież na jakiejś konfiguracji z neta odpalić i również nic startup_stm32f10x_md.s oraz startup_stm32f10x_md_vl.s skopiowane z biblioteki dostarczanej przez ST syscalls.c - ściągnięte z neta dla STM32F103. Sprawdziłem w stm32_flash.ld...
startup sourcery startup monitor startup stm32
wymiana grzałki zabezpieczenie indukcja kamera rejestrator schemat
Opel Vivaro A 2.0 114KM 2009 - kontrolka ładowania podczas deszczu Zwiększenie pojemności baterii Ryobi 5Ah do 9Ah - Jakie ogniwa wybrać?