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...
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...
A jeśli chodzi o typ, to w tym przypadku powinienem użyć IRQ? Nie powinieneś używać żadnego. Jeśli używasz STM32F1 (technicznie rzecz ujmując - jeśli używasz rdzenia ARM Cortex-M3 w rewizji r1r1), to po prostu na początku main() (albo w startupie, albo gdzieś "bardzo wcześnie" - byle przed pierwszym przerwaniem) dodaj taką oto magiczną inwokację: SCB->CCR...
W pliku startup_xxxxx.s
jest kompletnie niepotrzebn pod warunkiem że w tej rodzinie startup ustawił STKALIGN. Albo sam gdzieś napisał SCB -> CCR |= SCB_CCR_STKALIGN_Msk;
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.
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)....
Strzelam - startup inicjuje pamięć ustawia wektory, itd., itp.
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...
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ę...
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...
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...
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.
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....
Dzieje się coś dziwnego z mikrokontrolerem i już sam nie wiem co ja z tego wnioskuję, na pewno wnioskuję, że nie działa tak jak powinien, prosty program, #include "stm32f10.x" int test=0; int main(void) { while(1) { test++; } } Czyli według Ciebie kod powyżej jest kompletny i powoduje ustawienie flagi resetu od watchdoga? Nie inicjalizujesz nigdzie...
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ę...
No i kurczę już nie wiem czym to się różni: Tutaj jak się kompiluje za pomocą freediego: (...)(at)(...)-jacek:... make Assembling file: startup.S /home/(...)/arm/gcc-arm-none-eab... -x assembler-with-cpp -c -mcpu=cortex-m3 -mthumb -g -ggdb3 -Wa,-amhls=out/startup.lst...
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:)
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...
.ctors i .dtors - rozumiem, że tu chodzi konstruktory i destruktory C++, gdzie to jest u Ciebie Freddie? Bo widziałem jedynie ich wywołanie w startupie. Zbędne - to jest stara metoda, obecnie wszystko jest robione przez init_array. .stack - rozumiem, że to jest stos typu "narastający w dół" (descending), u Ciebie Freddie są dwa+ich rozmiar jest ustalony....
Default Handler, więc pierwsze pytanie: Czy masz zdefiniowany wektor przerwania RTC_IRQ w pliku startup_stm32.s?
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...
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...
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....
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
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...
Ale to nie ten startup
Problem jest szerszy niż skrypty startowe, z nimi było akurat wszystko w porządku, konkretu żadnego Ci więc nie rzucę. Próbowałem uruchomić freertos-a, ale ciężko było to ruszyć z braku przykładu który pasowałby akurat do mojego środowiska a nie potrafiłem sobie poradzić z konfiguracją, tak samo w przypadku frameworka stm32. To de facto spowodowało...
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ę...
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...
No ale jeśli nie korzystasz z przerwań, to ten rozmiar stosu może być równy zero... Jeśli skonfigurujesz (w startupie) użycie tylko jednego stosu (albo raczej - "nie skonfigurujesz użycia dwóch" - jak jest to domyślnie zrobione), to musi być jeszcze inaczej... Prawda jest taka, że informację o tych stosach można znaleźć w 100 miejscach, włącznie z opisem...
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...
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?
No ale skąd pewność? Po pierwsze domyślnie tryb thread jest "nieuprzywilejowany", można to sobie zmienić w startupie. Po drugie gdy tylko wywołasz pierwsze przerwanie to po jego powrocie już jesteś w trybie thread, czyli domyślnie nieuprzywilejowanym. A przynajmniej tak mi się wydaje [; Ciekawą, prostą i pewną opcją może być wywołanie programowego resetu...
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
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 +---------------------------------------...
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...
Faktycznie, program wywala się na startupie. Fault analyzer pokazuje coś takiego: https://obrazki.elektroda.pl/1071757400_...
Witam, właśnie próbuję ustawić środowisko eclipse do współpracy na podstawie tutorialu Freediego :) I jest parę problemów : - w nowym Eclipse nie można podać ścieżek do : GNU Elf Parser , można oczywiście zaznaczyć je, ale nie ma żadnych pól aby wpisać ścieżki dostępu. - nowe OpenOCD - jest w wersji nie instalacyjnej, w jaki sposób go używać (na razie...
(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...
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
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ł....
Dodałem: [syntax=c]__enable_irq();[/syntax] Nic nie pomogło. Dodałem sekwencję: [syntax=c]__disable_irq(); __enable_irq()[/syntax] Również bez zmian. Pobrałem i zainstalowałem Atollic TrueStudio for ARM. Wygenerowałem czysty projekt, sprawdziłem wektory, startup, plik linkera - nie różnią się w istotny sposób od moich (są niemal identyczne). Debugowałem...
Jakiego środowiska używasz? W Crosstudio trzeba zdefiniować #define STARTUP_FROM_RESET żeby program ruszył bez programatora.
Witam Mam problem z debugowaniem i programowaniem mikrokontrolera STM32F103VE. Używam plików udostępnionych na stronie FreddieChopina. Problemów jest kilka: 1. Nie da się zaprogramować mikrokontrolera. Wcześniej przy openocd 0.4.0 cały czas po resecie występował Hard Fault. Teraz zainstalowałem 0.5.0 i już tego nie ma, za to próba wgrania pliku ELF...
Chcę ustawić przerwanie na GPIOB_6, ale w pliku startup nie mam czegoś takiego jak EXTI6, jest tylko EXTI0-EXTI4 i EXTI9_5 oraz EXTI15_10. Mam ustawione tak, ale nie działa: [syntax=c] // inicjalizacja { RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; GPIO_Config(GPIOB,6,FLOATING_INPUT); AFIO->EXTICR[1] |= 0x0100; EXTI->IMR |= 0x0040; EXTI->FTSR |= 4; //zbocze...
spróbuj zegary zainicjalizować funkcją SystemInit(), musisz tylko dołączyć do projektu plik z C:.........\Keil\ARM\Startup\ST\STM32F10... + włączyć odpowiednie peryferia, jeżeli zacznie działać to znaczy że z zegarem coś jest źle ustawione
1.Czy da się kompilować programy w trybie "Release" czyli bez informacji o debugowaniu, aby działały jak najszybciej i zajmowały mniej miejsca w pamięci. Taka opcja jest dostępna np. w Rowley Crossworks. Informacje o debuggowaniu niczego nie zmieniają. Można sobie ręcznie zmienić w Makefile opcje optymalizacji. Przykładowe projekty mają optymalizację...
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...
Hmmm. Wgrałem oryginalny program z Stm32 MassStorage. vectors.c startup.S i .ld o kolegi Freddie Chopin. Mam obecnie dwa przerwania z Usb: USB_HP_CAN1_TX_IRQHandler i USB_LP_CAN1_RX0_IRQHandler ( w vectors.c było bez jedynek kolo CAN ). Zrobiłem takie coś, orginalny program void USB_HP_CAN1_TX_IRQHandler(void) { CTR_HP(); }...
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...
To i ja swoje dołoże... Zacząłem bawić się stm32 właśnie od poradnika Szczywronka. Pokazał jak to się robi na rejestrach. Biorę RM i robię co chcę. Tyle że trzeba było się przekonać do metody, bo też zaczynałem o HALa i nigdy nie wiedziałem za pomocą jakiej funkcji włączyć to czy owo. Na rejestrach mam prosto. Jest RM, są inne dokumenty. Wszystko można...
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().
Ten adres nie jest prawidłowy w STM32. Flash zaczyna się od 0x8000000 Flash jest widoczny zarówno od 0 jak i od 0x8000000. W "dolnym" zakresie może być widoczne coś innego - np. RAM - zależnie od konfiguracji pinów BOOTx. To samo dotyczy nie zainicjalizowanego statica w funkcji. Niezainicjalizowana zmienna statyczna ma zawsze wartość 0. ZAWSZE. Jeśli...
wiesz - moze jest cos o czym nie wiem, niemniej jednak dla testow sprawdzilem taki ultra proty kod (bez startupa i innych bajerow, po prostu jakis main i jakies operacje) i wygladalo w miare ok. moze biblioteki sa jakies dziwne i nie beda dzialac na stm? tak czy siak zamiast toolchain'a yagarto mozna sciagnac toolchaina codesourcery, ktory oficjalnie...
Spróbowałem tak jak pisałeś używając twojego przykładu (podmieniam plik main.c i następnie "make"). Zaincludowałem potrzebne nagłówki i nie wiedzieć czemu biblioteka odwołuje się do nieistniejącej funkcji. Co mogę jeszcze poprawić? ... Linking target: out/stm32_blink_led.elf arm-none-eabi-g++ -mcpu=cortex-m3 -mthumb -Tstm32f103rb_rom.ld -g -Wl,-Map=out/stm32_blink_led.map,--cref,...
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,...
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...
Zamówiłem dwa Cortex'y STM32F103ZET6, czekam na przesyłkę... W między czasie, patrzę na przykłady z STM32 i nie mogę się nadziwić.... no cóż czasem człowiek potrafi skomplikować proste sprawy... Używam startup.S i vectors.c od kolegi Freddie Chopin. Niby wszystko ok, ale jak ktoś przerabia jakieś rzeczy z USB, niech zwróci uwagę na dwie rzeczy. w ST...
Nieco podłamany tematem kol. (at)PiotrLenarczyk postanowilem jednak napisac jednak trzeci krótki prosty mikro poradnik dotyczący startupu. Wszystkie dywagacje będą dotyczyć C i najbardziej popularnego wśród hobbystów i nie tylko gcc. Standard C wymaga aby zgodny (nieco upraszczając) ze standardem toolchain ma: 1. Zapewnić obserwolną zgodność działania...
Nie wiem czemu wg was te linki nie działają :) Daje bezpośredni adres: http://img36.imageshack.us/img36/6918/st... http://img27.imageshack.us/img27/196/bez... Dorzucam projekt. Mam nadzieje ze się odnajdziesz. Myślę, że za wszystko odpowiada skrypt linkera + startup. Na chwile obecna ustawione jest: lib/etc/ld/stm32f103vb.ld (zly) i lib/stm32/CMSIS/Core/CM3/startup/arm/sta...
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...
Zaczynam przygodę z STM32 i na początku już schody z którymi nie mogę sobie poradzić. Mam zainstalowane Eclipse jak i Sourcery 4.7.3, ściągnąłem przykładowy projekt z strony Freddiego do mrugania diodą i tu kompiluje się bez problemu. Lecz nie bardzo leży mi ten przykład (bez obrazy). Lubię mieć wszystko poukładane a w tym przykładzie wszystko jakoś...
Fredie, Prawie, że poszło. Stary projekt się skompilował, wgrałem działa. Niemniej projekt był oparty na jakichś starych twoich przykładach jeszcze z roku 2009. Chciałem zaktualizować projekt za pomocą twoich najnowszych przykładów, wobec czego wywaliłem podkatalog Setup z plikami hdr_special_registers.h, startup.S, stm32f103ve_rom.ld, vectors.c oraz...
Witam, Proszę o pomoc w konfiguracji CoIDE dla procesora nie wpieranego w moim przypadku jest to STM32F217VGT6. Oczywiście dla procesorów wpieranych jak STM32F103 konfiguracja jest banalna (włączenie CMSIS core i boot, RCC, Flash itp). Dodatkowo można dorzucić ręcznie biblioteki np USB i wszystko śmiga pięknie. Niestety dla nie wpieranych konfiguracja...
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ć...
Ostatnio przechodziłem "tą ciernistą drogę" kompilacja i poprawne wgranie pierwszego programu zajęło mi chyba 3 dni. Ale dałem radę sam (choć już miałem pytać na forum). Generalnie to dzięki szczywronek za poradnik! jesteś miszcz! A co do środowiska. Zaczynałem z pluginem i tam całe środowisko chodziło z tym że zaciągane są biblioteki a nie o to mi...
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, proszę, poniżej konsola: "16:39:42 **** Incremental Build of configuration Default for project stm32_blink_led **** make all Assembling file: startup.S arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m3 -mthumb -g -ggdb3 -Wa,-amhls=out/startup.lst -MD -MP -MF out/startup.d -I. -Igpio -IRTOS/include startup.S -o out/startup.o Compiling...
Może zbyt namieszałem. Zasadniczo chodzi po prostu o to jak stworzyć projekt w SW4STM, który nie zawierałby tych wszystkich śmieci z SPL i HAL i dało się pisać na rejestrach. Taki czysty podstawowy projekt pod rejestry z tylko niezbędnymi rzeczami jak w przypadku pisania na AVRy. Ja robię to tak: I. Potrzebne narzędzia: 1. System Workbench for STM32...
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"...
Witam, Piszę o pomoc z nietypowym problemem dotyczącym mikrokontrolera stm32f103vct6. Ściągnełem demo ze strony stm do obsługi usb HID i teraz napisze kroki które wykonałem: 1. odpaliłem demo w Keil i wszystko elegancko działa 2. odchudziłem i wrzuciłem do eclipsa (projekt c i c++, gdzie c++ musiałem lekko zmodyfikować)i tu zaczyna się problem, wszystko...
Korzystam z gotowca Freddie'ego Chopin'a dla uC stm32f103 i używam CodeSourcery. Mam następujący problem: Próbuję obliczyć splot korzystając z funkcji: Linking target: out/stm32_blink_led.elf arm-none-linux-gnueabi-g++ -mcpu=cortex-m3 -mthumb -TSTM32F103xB_rom.ld -g -Wl,-Map=out/stm32_blink_led.map,--cref,... -Wl,--gc-sections -nostartfiles...
Tzn nie koniecznie chcę jej używać ale jak na początek chciałem coś zautomatyzować. Szczerze mówiąc nie pisałem jeszcze makefile i stąd ten pomysł. Sekcję .jcr teoretycznie nie wykorzystuję. A przynajmniej jej sam nie deklarowałem. Tym bardziej że znajdują się w niej jakieś pliki z Code Sorcerery (crtend.o oraz crtn.o). Wedlug mnie gdzieś to w tym skrypcie...
Wiec tak.. Pobralem program z poprzedniego linku i go skompilowalem (nie wiem czemu ale nie posiadam cs-make cs-rm ...): $ pwd /home/holekrob/workspace/stm32_blink_led... $ make Size of modules: arm-none-eabi-size -B -t --common out/startup.o out/main.o out/vectors.o text data bss dec hex filename 104 0 0 104 68 out/startup.o 444 0 0 444...
Wczoraj uruchomiłem RTC, działa ładnie, choć nie wiem dlaczego na koniec wpisu do rejestru RTC_CNT muszę dwa razy wyzerować bit RTC_CRL_CNF:) W następnej kolejności chcę uruchomić przerwanie od RTC, no i oczywiscie nie działa, inaczej nie pisałbym tu. Jak rozumiem z dokumntacji (tej cześci którą przeczytałem) i opisu przykladów, najpierw powinny być...
Bawię sie STM32F103ZET + zewnętrzny RAM i nie bardzo potrafię wyczarować działającą konfigurację tak, aby stos był w pamięci wewnętrznej, natomiast sterta w pamięci zewnętrznej i jednocześnie uzyskać działającą funkcję malloc na tejże stercie w pamięci zewnętrznej. O ile pomijajac malloc cel osiągnąłem, jednak szkoda 512KB ramu bez dobrodziejstw płynących...
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...
Chodzłio mi też (głównie) o linijki w asm (dla fragmentu z delay'em) dla każdego z przypadków. Na tym się trzeba głównie opierać. Jakiś startupowy plik w pierwszym przypadku (przed dołączeniem pliku z SPL do projektu) też masz zapewne generowany i wykonywany. Nie wiemy jak wygląda plik startupowy - chociaż wątpię, żeby to na coś wpływało jak i tak się...
Dokładnie tak, interesowało mnie dlaczego kod nie działa w takiej sytuacji. Miałem takie problemy z testowaniem własnego kodu po wrzucaniu do ram lub flash naprzemiennie, niestety nie dotarłem do przyczyny i sobie darowałem. Płytka to olimexino stm32 z STM32F103RBT6. Zasadniczo wszystko ma swoje źródło w tablicy wektorów, znajdującej się w pamięci...
Witam! Postanowiłem zacząć korzystać ze środowiska Coocox, proste programy typu miganie diodami udało mi się skompilować i uruchomić. Jednak chciałbym napisać program do obsługi wyświetlacza i wykorzystać bibliotekę uCGUI. Dodałem plik uCGUI.lib do folderu mojego projektu i dodałem go do "Linked Libraries" w konfiguracji projektu. Podczas kompilacji,...
Witam Niedawno zacząłem "zabawę" z zestawem Kamami ZL27ARM z procesorem STM32F103VB. Mam problem z przerwaniem od timera SysTick. Jest ono generowane 4 razy za często - miało być 1 raz na sekundę, a jest 4. Kwarc 8MHz, SYSCLK = 72MHz, SysTick_CLK= 72/8=9MHz czyli załądowanie do licznika wartości 9'000'000 powinno dać zgłoszenie przerwania co 1s, więc...
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...
Ok, no to lecim: Toolchain: codesourcery Mam: STM32f103VBT6 Wgrywam przez OpenOCD i GDB - łacze się do OpenOCD z GDB i wgrywam poleceniem: (gdb) monitor flash write_image erase sciezkadohexa.hex Wgrywa się bez problemu: xPSR: 0x01000000 pc: 0x08000130 msp: 0x20000000 auto erase enabled wrote 2048 bytes from file (...)/stm32_blink_led-1.2.1-1201...
Ok. Postawiłem eclipse już normalnie robiąc makefile project. Działa to, ale dwie sprawy. 1. Pierwsza. Przy projekcie z STM32F103RB pojawiają się dziwne małe znaki przy plikach z rozszerzeniem .c lub .cpp. Chcę pisać w C++ i stworzyłem C++ project. Może to jest powód? Jeżeli chodzi o STM32L053R8 to takie znaki się nie pojawiają. W sumie kompilacja przebiega...
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ąś...
Mam problem z uruchomieniem Eclipse + usbscarab2 + stm32f103rbt6 (eval board od stm). Calosc robiona wg poradnika ze strony Freddiego. Czesc narzedziowa, tj openocd + jtag oparta na openocd w wersji 0.4.0, wywolany z argumentami: -f interface/usbscarab2.cfg -f target/stm32.cfg gdzie usbscarab2.cfg jest tresci: #interface interface ft2232 ft2232_device_desc...
Dziękuję bardzo za pomoc :) Dziwne bo kompilator widzi jeszcze jeden błąd. **** Build of configuration Default for project freeRTOS_uIP **** cs-make all Linking target: out/FreeRTOS_uIP.elf arm-none-eabi-g++ -mcpu=cortex-m3 -mthumb -Tsetup/STM32F103xB_rom.ld -g -Wl,-Map=out/FreeRTOS_uIP.map,--cref,--n... -Wl,--gc-sections -nostartfiles...
Witam, Od niedawna planuję przejść na mikrokontroler stm32f407vgt6 z stm32f103vct6, ze względu na szybszą pracę. Niestety napotkałem na bardzo poważny problem. Aby przedstawić jak najlepiej dany problem, zamieszczę printscreen z analizatora stanów. http://obrazki.elektroda.pl/6745447700_1... Na wykresie widzimy przerwanie pracy timera,...
1. Jeśli jest poprawnie odkomentowane to pewnie nie jest włączane do kodu wynikowego. 2. GCC ma rację: STM32 nie ma zestawu instrukcji ARM tylko THUMB2 Ad.1. Już są dołączane. Ad.2. Faktycznie, zapomniałem zaptaszkować opcji Compile Thumb Code. Po tym zabiegu już się kompiluje, ale pojawiły się nowe errory: Build target 'STM32' assembling startup_stm32f10x_md.s......
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...
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ł,...
o co w tym biega? Pierwszy przykład jaki pokazałeś kompilator najprawdopodobniej optymalizuje, bo wie ile wynosi wynik, więc w ogóle nie ma żadnych wywołań funkcji. Może jakiś przykład który u ciebie działał. Bierzesz z mojej stronki przykład-szablon (ja wziąłem ten dla stm32f103, ale to bez znaczenia - po prostu akurat był pod ręką), wrzucasz do niego...
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łaśnie nie chcę przechodzić na coś innego, bo dostaliśmy z uczelni paczkę z eclipsem i Yagarto i wolałbym działający startup i .ld na ten toolchain.
Wprowadziłem poprawki typu ">RAM AT>RAM" itp. oraz zrobiłem tak: /* .ARM.exidx is sorted, so has to go in its own output section. */ __exidx_start = .; .ARM.exidx : { __exidx_start = .; *(.ARM.exidx* .gnu.linkonce.armexidx.*) __exidx_end = .; } >ROM AT>ROM __exidx_end = .; _etext = .; I teraz mam taki oto komunikat: make...
Ten kod jest dla Keila, musisz go przerobić albo znaleźć inny. Generalnie wystarczy poprawić komentarze, definicje i pewne elementy specjalne. Znajdź jakiś startup dla GCC i zobaczysz jak tam jest to zrobione. 4\/3!!
Próbowałem wcześniej robić takie definicje w nagłówkach, ale kompilator zgłaszał błąd, nie wiem dlaczego, po wstawieniu definicji w makefile wszystko poszło gładko i cały projekt się kompiluje, walczę tylko z przerwaniem od ETH_IRQ, ponieważ startupy się różnią i coś nie tak z adresem jest.
nie bardzo rozumiem. Otóż chciałem nawet przerobić gotowy przykłąd Blinky, który znajduje się w podfolderach Keil'a ale w nim np nie ma folderów SRC, LIB. Jest tylko StartUp, Source Files i Documentation. Przypuśćmy że chcę korzystać w tym gotowym projekcie z funkcji z pliku stm32f4xx_gpio.h, więc co muszę zrobić? próbowałem już dodawać plik .h oraz...
przerwa startup startup kompilacja startup monitor
hamulec skrzynia katalog bipolarnych kabel mercedesa
kamera cofania alternator rozładowuje akumulator
Szum i tarcie w lewym przednim kole Passat B5 1.9 TDI 90KM Układ balansujący ładowanie baterii 3S3P 3500mAh