1. GNU ARM to najzwyklejsza paczka taka jak CodeSourcery, WinARM czy Yagarto, więc po co tego używać i po co to w ogóle roztrząsać? 2. CodeSourcery Lite jest darmowe. Jeśli nie jest wystarczająco darmowe, to wystarczy ściągnąć sobie źródła GCC i skompilować samemu [; Jest to możliwe, skrypty z Codesourcery to znacząco ułatwiają. 3. Niczym 4. Bo kompilujesz...
Może chodzi o to że Caller ma zarezerwowane trochę stosu dla siebie (ale go nie używa), i wskaźnik SP stoi na końcu tej rezerwacji? Tak to się nazywa "stack frame". Zademonstruje Ci to na przykładzie: [syntax=c]void __attribute__((noinline)) a(int a00, int a01, int a02, int a03, int a04, int a05, int a06, int a07, int a08, int a09, int a10, int a11,...
, książki , kursy itp ... [url=http://margines.pl/index.php?ukey=p... Definitive Guide to the ARM Cortex-M3 No i podstawa to dokumentacja oraz FAQ ze strony ARM.com
Nie prościej tak nie kombinować? Funkcje zdefiniowane wewnątrz definicji klasy (zwykle w nagłówku) są domyślnie traktowane jako z atrybutem "inline" i po co kombinować więcej? A już jakieś atrybuty "always_inline", to prosta droga to zabawy w assembler++, bo skoro kompilator uznał, że inline'owanie nie ma sensu, to zapewne tak właśnie jest.
Tak się składa, że wiem, że R0 jest wolny a każdy inny zajęty. Dziś jest wolny, jutro jest zajęty - obyś się nie przejechał. No i coś takiego nie działa, bo zmienna StackPointer Działa - potem R4 będzie przepisane do R0 żeby prawidłowo zwrócić wynik. jest ładowana do R4, który to ma być zrzucony instrukcją STMDB Wstawki assemblerowe są dużo bardziej...
A zobacz jak będzie wyglądał assembler z flagą -fsingle-precision-constant
matko bosko kochano :) Sieger :) ile to czasu minęło? :) JA juz praktycznie nic... zdrowie siadło...od paru lat staram sie przerzucić na jakies army chociaż (chociaż cortex m0+ :) ) i tez mam z tym problem - bo sie zastanawiam - czy assembler... Czy może C (chyba odpuszczę) - czy moze jakiś zdechły micropython... Niestety lata lecą - myślenie juz nie...
Faktycznie było napisane. Sorki ale natłok informacji jakie trzeba przetrawic na raz aby uruchomic to środowisko jest dosyc spora. Po wykonaniu wspomnianych czynności log po kompilacji wygląda następująco: **** Build of configuration Default for project stm32_blink_led **** cs-make all 'Assembling file: startup.s' arm-none-eabi-gcc -x assembler-with-cpp...
Obawiam się, że sam nie zerknąłeś ;-) A do autora: To jest kompilator/assembler gcc dla ARM. więc wszystkie przykłady jakie znajdziesz będą OK. Musisz tylko uwzględnić zestaw instrukcji. Albert
Problem udało się rozwiązać. Jest to program w tzw. "bare metal" tworzony w GNU Macro Assemblerze. Wygląda na to, że jako szablon wziąłem ustawienia z Blue Pill, a skoro działało z ST-LINK, to niczym się nie przejąłem. Dopiero teraz, gdy odłączyłem programator, okazało się, że to był błąd i Macro Assembler źle inicjował tablice wektorów dla STM32H7....
Skoro nie działa, zakładam że gdzieś jest błąd. W celu jego rozwiązania napisałem tutaj. Wynik kompilacji: [syntax=c] make all Assembling file: startup.S arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffast-math -g -ggdb3 -Wa,-amhls=out/startup.lst -DSTM32F4XX -MD -MP -MF out/startup.d -I. startup.S...
Przerwania, w odróżnieniu od starych ARMów są w całości zarządzane przez ARM'a czyli CortexMx. W dokumentacji ARM znajdziesz opisy rejestrów i jako to działa. Każdy producent, taki jak ST zmienia znaczenie linii przerwań, definiując je po swojemu za wyjątkiem kilku pierwszych zarezerwowanych przez ARM. Ponadto, Cortex'y mają możliwość nadania przerwaniom...
Zainstalowałem Coreutils oraz toolchain linaro. W Eclipse zmieniłem właściwości projektu GNU Elf Parser na nowy toolchain. Niestety projekt nadal się nie kompiluje: cs-make all Assembling file: startup.S arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffast-math -g -ggdb3 -Wa,-amhls=out/startup.lst...
Rzeczywiście, domyślnie stos ten ustawiony jest na 0 :) Wersja wtyczki to 5.0.2... (at)vonar, GDB z Raisonance został już wykasowany z systemowego PATH. Wgrałem chwilowo Eclipsa v.Mars.2 i tu przynajmniej mogłem dołączyć "ilg.gnuarmeclipse.repository". Ale problem z Debugerem też jest. Jednak z wielu powodów chcę pozostać przy starej wersji Eclipsa....
witam, Dzięki za odpowiedź. Zmieniłem w Makefile na -STM32L1xx_MD i teraz mam coś takiego: cs-make all System nie moľe odnale«† okre?lonej ?cieľki. 'Assembling file: startup.S' arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m3 -mthumb -g -ggdb3 -Wa,-amhls=startup.lst -MD -MP -MF startup.d -I. -Ilib startup.S -o startup.o ' '...
Ściągnij sobie z mojej strony przykład dla Cortex-M3 i zobacz jakie dodatkowe parametry są potrzebne w pliku assemblerowym, bo "trochę" Ci jeszcze brakuje. Pozatym do linkowania TRZEBA używać gcc, a nie ld. P.S. Co to za moda na assembler dla ARMów? 4\/3!!
Jakie zagadnienie realizujesz, że tak stawiasz temat ? To taki hobby project. Tworzę go już z przerwami od dłuższego czasu. Generalnie chodzi o sprzętowy symulator układów/modułów. Chodzi o to, aby reakcje systemu były jak najszybsze, ale i aby były z tym samym, a przede wszystkim znanymi opóźnieniem, co pozwala np. układowi dostosować się do różnych...
Assembler na STM no szacun... Jakich padów używasz? Ps2 czy może klawiatura tylko? Do czego wykorzystujesz usb? A może zamiast vga jakiś wyświetlacz graficzny? I było by pseudo psp.
W sumie gdy przeczytałem Twój post uzmysłowiłem sobie, że ten startup to i tak w większości assembler, bo korzysta mocno z wstawek... Zaczynam wątpić w sens tego przedsięwzięcia [; W zasadzie to taka sama kwestia dotyczy tablicy wektorów w C - o ile te dla Cortex-M3 są sensowne (bo to tablica adresów funkcji), to dla ARMv4 już nieszczególnie... /; Czyżbym...
Hello Sir, please help me in compiling lpc4330_led_blink code downloaded from freddiechopin.info compiling through the arm tool chain. Assembling file: startup_ARMv7-M_E_.S arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffast-math -g -ggdb3 -Wa,-amhls=out/startup_ARMv7-M_E_.lst -DCORE_M4 -DCMSIS_BITPOSITIONS...
to jest ten kod od freddiego nie robi i w tej chwili nic Dodano po 1 [syntax=basic4gl]11:45:25 **** Build of configuration Release for project disc **** make all Building file: ../main.c Invoking: Cross ARM C Compiler arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -g -std=gnu11 -MMD...
Można kompilować kod dla rodziny Cortex-Mx bez problemu, ale i tak potrzebny jest linker, assembler i biblioteki. Żeby daleko nie szukać, możesz wykorzystać clang -target armv6m-none-eabi -mcpu=cortex-m0 -mfloat-abi=soft -mthumb -ccc-gcc-name arm-none-eabi-gcc -std=c99 -fshort-enums -fdata-sections -ffunction-sections -ggdb -g3 -O0 -Isrc -o foo.o -c...
dzieki Freedie, pierwszy przykład blinky działa bez zarzutu, tak naprawdę wystarczyło zmienić 3 liczby :D, ram zaczyna się w tym samym miejscu co prawda działa to ładnie aczkolwiek nie pokoi mnie komenda w consoli na początku kompilacji: **** Build of configuration Default for project test **** cs-make all The system cannot find the path specified....
Moim zdaniem za użyciem RTOS przemawia po prostu lenistwo, zresztą podobnie jak za 99% praktyk programistycznych. Bardzo merytoryczny argument. W zasadzie większość Twojego postu można niestety streścić tak - "jestem mega mistrzem programowania, każdy kto robi coś inaczej niż ja jest niedouczonym leniem"... Praktycznie nie ma tam żadnego merytorycznego...
w ARMach taka sama porazka z tymi przerwaniami... sa tylko dwa wektory przerwan na caly procesor no! tragedia! Polecam Cortex-M3 ;) Wektorów w pierony a nawet wiecej.
Moim zdaniem problem jest znacznie prostszy niż się wydaje. Mikrokontrolery mają znacznie okrojone zasoby sprzętowe. Skupmy się na pamięci. C bez używania bibliotek umożliwia napisanie programu z narzutem na pamięć FLASH porównywalnym z assemblerem. Z ich użyciem (startup, printf itp) to kilkanaście kb (dla rzeczonego Cortexa) C++ podobnie ale tylko...
make all Assembling file: startup.S arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m0 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffast-math -g -ggdb3 -Wa,-amhls=out/startup.lst -DSTM32F0XX -MD -MP -MF out/startup.d -I. -Iinc startup.S -o out/startup.o Compiling file: gpio.c arm-none-eabi-gcc -c -mcpu=cortex-m0 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16...
Analog produkuje 12MIPS'owe '51 a ciekawe jest to że nie jest to mikrokontroler a przetwornik A/D :wink:...zresztą bardzo dobry i wart swojej ceny. Podobne rzeczy "robi" Silicon Laboratories ze swoimi 100MIPS'owymi '51. Kwestię mylenia się muszę niestety odbić do Ciebie. Celowo przy '51 nikt nie podaje Ci informacji o DMIPSach, bo mogłoby to wymagać...
Mam problem musiałem postawić od nowa środowisko na win8.1 Stawiałem wedle rad freddiego i pierwszy raz trafił mi się poniższy błąd wspomne że jest to przykład do stm32f4 który pobrałem z strony freddiego choć wprowadziłem drobne zmiany w discovery 21:16:03 **** Build of configuration Default for project stm32f4_blink_led **** make all 0 [main]...
Korzystam z zaproponowanego przez Ciebie gcc-arm-none-eabi-4_6-121013.7z Nawet nie zciągałem linearo. Nie jestem biegły w temacie wiec trzymam się poleceń. Log wygląda tak: 12:21:17 **** Build of configuration Default for project stm32f4_blink_led **** make all 0 [main] sh 6084 sync_with_child: child 5980(0x138) died before initialization with status...
Jak stoisz z programowaniem? W starszych samochodach królowały rdzenie 68k, '51 i ew PIC, dzisiaj głownie ARM Cortex, Tri-Core, Renesas/RX. Podstawy assemblera dla tych rdzeni są wskazane, a już na pewno wiedza na temat organizacji pamięci. Na ile rozumiesz algorytmy sterujące ECU silnika?
Bo ten program jest zły! Cortex-M3 pod konkretnymi adresami oczekuje konkretnych rzeczy - na samym początku flasha - wartości dla SP, potem adresu (adresu! nie instrukcji!) wektora obsługi wyjątku reset itd. Zapomnij o takim prostym programiku - to tak po prostu nie zadziała. Potrzebna Ci jest tablica wektorów, potrzebny Ci jest "normalny" skrypt linkera...
Nie ma potrzeby aby vectors był osobno wydzielony. Tak akurat zrobił kol. Freddie, że oddzielił wektory do oddzielnego pliku. W zależności od tego skąd bierzesz te pliki to napotkasz się na różne podejścia w organizacji tych plików. Np Atmel ma rozbiegówkę i wektory przerwań w jednym pliku *.c. Nie ma jakieś potrzeby aby rozbiegówka dla Cortexów była...
Dzień dobry! Czy ktoś może próbował odpalić na makefile i kompilatorze od Freddiego build parallel w eclipse ustawiłem coś takiego: https://obrazki.elektroda.pl/4063788200_... Bez tej opcji oczywiście wszystko do tej pory działa świetnie! Dostaję takie odpowiedzi: 12:20:41 **** Build of configuration Default for project led_blink_103C8T6...
Arduino ma tę zaletę, że można kupić płytkę za 30zł i coś na niej robić. Gdyby nie to, że osoby które prowadzą laboratoria po prostu kupiły kilka zestawów Arduino, to zajęcia laboratoryjne z mikrokontrolerów jednoukładowych byłyby prowadzone wyłącznie w oparciu o dwa zestawy DSM-51 i ew. mocno niedorobiony emulator tego systemu na PC. Można się nauczyć...
https://sourceware.org/binutils/docs-2.1... "This directive specifies that the following symbol is the name of a Thumb encoded function. This information is necessary in order to allow the assembler and linker to generate correct code for interworking between Arm and Thumb instructions and should be used even if interworking is...
Co do samego toolchaina, to nie lepiej po prostu ustawić go sobie w systemowym PATH i wywoływać bez żadnej ścieżki? No tak ale grzebanie w Systemowym PATH nie idzie w parze z portable i własnie tego starałem się pozbyć z Twojej konfiguracji. Zacznij od miejsca w którym wykonywany jest program make, a potem zgrabnie '..' i '\' dojdziesz do właściwego...
Gdzieś tyle ( http://www.freddiechopin.info/pl/downloa... -> stm32_blink_led): [syntax=Bash]$ make 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. startup.S -o out/startup.o Compiling file: gpio.c arm-none-eabi-gcc -c -mcpu=cortex-m3...
ARM7, Cortex-M3 to - powiedzmy - "handlowe nazwy" architektur, odpowiednio ARMv4 i ARMv7-M. Oczywiście nowsza jest ARMv7 czyli własnie Cortex. ARM7 jest już nieco przestarzały, a układ LPC2106 to w ogóle antyk - NXP od czasu tego układu wypuściło bardzo wiele fajnych układów z tym rdzeniem, dokładnie chodzi o rodziny LPC23xx i LPC24xx - LPC2106 to...
Witam Freddie, http://www.elektroda.pl/rtvforum/topic13... http://www.elektroda.pl/rtvforum/topic13... 4\/3!! Ad. link 1. Chcialem zauwazyc, ze do kompletowania toolchainu uzylem artykulu z Twojej strony. Jedyna roznica to ta, ze nie uzywam Eclipse tylko Vim (na tym etapie eclipse nie jest mi potrzebny) i niemoznosc zaladowania programu...
No skoro nagle wszystkie ARM7 mają jakiś VIC, no to faktycznie problem nie istnieje :] Ale z tego co pamiętam, to nie wszystkie procki ten VIC mają... Dwie najpopularniejsze rodziny - LPC2xxx i AT91SAM7 - mają takie kontrolery, a pytanie z tematu było dodatkowo o w miare popularny i rozbudowany układ, więc... Pewnie znajdzie się jakiś egzotyczny ARM7...
Po pierwsze, ten temat zszedł na bok jak tylko się dało. Żyjemy w demokracji i każdy ma wolny wybór ;) Ja wybrałem asemblera ,bo denerwowało mnie ciągłe poprawianie i debugowanie programów w celu usunięcia błędów ,które często były winą kompilatora C . Teraz po debuger sięgam znacznie rzadziej i mam czarno na białym co robi mój mały krzemowy przyjaciel...
U mnie pliki zajmują trochę więcej... Ponawiam pytanie o wersję kompilatora i dopytuje jakie zmiany zrobiłeś w projekcie? 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. startup.S -o out/startup .o Compiling file: gpio.c arm-none-eabi-gcc...
Pewnie mnie ktoś zaraz ochrzani że mnóstwo tego, wystarczy wygooooglować , ale po kilku godzinach rozpaczliwych poszukiwań ośmielam się prosić kolegów o udostępnienie jakiś przykładów projektów do wyświetlania statycznej grafiki na LCD, bardzo chętnie z karty pamięci flash. Zanabyłem bardzo ciekawy moduł HY-SMART z ARM Cortex M3 , ST32F103VCT6 i wyświetlaczem...
Jako że CMSIS jest od ARM, to nie muszę buszować w internecie w poszukiwaniu startupów dla różnych rdzeni, tylko mam wszystko w jednym miejscu. To daj znać jak daleko zajedziesz na tych startupach, skoro wszystko już masz gotowe i to jeszcze w jednym miejscu (; No i skoro te startupy są w C, to po co w ogóle "startupy dla różnych rdzeni"? Czyżby nie...
Zgodnie z zaleceniem wywołanie w linii komend C:\stm32f4_blink_led-1.2.2-120323>... all 0 [main] sh 3344 sync_with_child: child 4608(0x110) died before initializa tion with status code 0x0 1695 [main] sh 3344 sync_with_child: *** child state waiting for longjmp /usr/bin/sh: fork: Resource temporarily unavailable...
Przedewszystkim chciałbym podziękować za serie fantastycznych tutoriali - zaoszczędziły mi sporo czasu. Jednak natknąłem się na jeden, pewnie dosyć błachy problem. Do rzeczy: Zainstalowałem całe środowisko i skonfigurowałem, tj: - eclipse 20120614-1722 + pluginy c/c++ GDB Hardware Debugging 7.0.0.201206111645, Zyling Embedded CDT 4.18.1 - sourcery codebench...
Przepraszam, że tak późno ale wcześniej nie miałem możliwości tego wstawić. Logi z kompilacji po "clean" 21:09:55 **** Rebuild of configuration Debug for project test_timera_v5 **** Info: Internal Builder is used for build arm-atollic-eabi-gcc -c ..\src\system_stm32f0xx.c -mthumb -mcpu=cortex-m0 -std=gnu11 -DSTM32F030xC -DHSI48_VALUE=((uint32_t)48000000)...
Skoro wcześniej już miałeś do czynienia z programowaniem mikrokontrolerów, to rozpoczęcie programowania ARM'ów nie będzie już taką straszną przeprawą przez tą tematykę, jak dla zwykłego nowicjusza. Ja bym na Twoim miejscu w wyborze książki kierował się tym, której treść bardziej Ci podejdzie. Pozycji o CORTEX'ach jest znacznie więcej w języku polskim,...
Wywaliłem stare projekty i zaimportowałem od nowa. Opcją Import/existing project to workspace I znowu tosamo wykrzacza mi się bład jak wchodze w ustawienie build w project properties. Na dodatek podkreśla mi #include <stdint.h> jako unresolved inclusion. Jednak po nacisnieciu przycisku run kompilacja odbywa się z wynikiem **** Build of configuration...
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...
Kompilacja pliku asemblerowego oraz linkowanie wyglądają jak poniżej. Handler dla systicka jest obecny. Building file: ../startup/startup_stm32f030x6.S Invoking: Cross ARM GNU Assembler arm-none-eabi-gcc -mcpu=cortex-m0 -march=armv6-m -mthumb -mfloat-abi=softfp -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -ffunction-sections -fdata-sections -Wall -Wextra...
Witam, Chciałem uruchomić działające projekty które kiedyś zrobiłem na nowym laptopie. Ściągnąłem Eclipse Helios'a. Reszta zgodnie z opisem Freddiego, który pewnie wszyscy znacie. Mój makefile również bazuje na jego. Problem leży w tym że przy kompilacji wyrzuca mi taki błąd: Creating extended listing: out/stm32_blink_led.lss arm-none-eabi-objdump...
slawek-matyl: Witam, drodzy fani robotyki ten projekt jest naprawdę bardzo udany. Pomysł upakowania tak dużej ilości peryferiów wprawdzie powala, ale jednak spowalnia inne procesy a generalnie te autonomiczne. Drogi Sławku jestem pewny, że Twój projekt wzbudzi zainteresowanie wśród fanów robotyki, lecz wetknę tutaj swoją szpilkę. Ja AVRy porzuciłem...
Poprawiłem #include "lpc13xx.h" na #include "LPC13xx.h" już nie ma tych błędów natomiast pojawił się nowy make -r all Building file: ../src/core_cm3.c Invoking: MCU C Compiler arm-none-eabi-gcc -DDEBUG -D__CODE_RED -D__REDLIB__ -I"/home/andrzej/mikrokontroler/LPC... -O0 -g3 -Wall -c -fmessage-length=0 -fno-builtin...
No pewnie się zmieści ale trochę mnie to przeraziło zważywszy na to że kod nic nie robi. Czy to po prostu tyle zajmuje konfiguracja rejestrów plus to że są 32 bitowe i taki rozmiar to normalka. Ale wiesz że rozmiar pliku .hex nie jest równy rozmiarowi skompilowanego programu? Czy na tym etapie (zupełne początki) naprawdę musisz sobie dokładać problemów...
Gdzieś wyczytałem, nie wiem gdzie, że w Cortex'ach funkcje obsługi przerwań mogą być użyte jako zwykłe funkcje. Odwrotnie - funkcje przerwań mogą być zwykłymi funkcjami, bez żadnych dziwactw, bez atrybutów, bez assemblera. Ale jak jest przerwanie to skąd procesor "wie" że wychodząc z przerwania ma nie odtwarzać LR bezpośrednio tylko to ma inicjować...
W zasadzie program do testowania wymaga tylko kilku zmiennych. A więc napisany w assemblerze mógł by się zmieścić w rejestrach procesora a więc nie używać ani jednego bajta pamięci RAM.
Dodałem tę deklarację ale i bez niej funkcja obsługi przerwania jest poprawnie przypisana w tabeli wektorów. ... 8000060:0800057d .word0x0800057d 8000064:0800054d .word0x0800054d 8000068:0800057d .word0x0800057d ... 0800054c <EXTI3_IRQHandler>: Oto rezultat w konsoli: 18:12:43 **** Build of configuration Default for project XBee_v1 **** make all...
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...
To nie jest element języka C. Język C nie oferuje żadnych funkcji odmierzających czas. Ogólnie sam C się do tego kiepsko nadaje. Trzeba zejść do "sprzętu". Metody są 2. Odliczanie ticków - kiepska metoda, mało dokładna oraz raczej koniecznie trzeba wykorzystać assembler, albo policzyć ile tików trwają operacje które kompilator wypluje (czyli itak assmeblera...
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. startup.S -o out/startup.o Compiling file: core_cm3.c arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -O0 -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -Wextra -std=gnu89 -g -ggdb3...
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...
No tak, może dlatego ze ja juz w tym roku 4 rodziny/architektury przerobiłem, a tu jak widzę wciąż nie ma końca :-) Pisząc w C, to w zasadzie nie ma róznicy czy piszę na STM32 czy PIC32 - dopóki nie bede chciał robić wstawek assemblerowych.... Ale peryferia..... Reference Manuale licza teraz po 1200 stron.... Trzeba się troche przegryźć, żeby chociaż...
No tak, ale niektóre kompilatory umożliwiają podłączanie się do wyjątku w formie kodu C, np. __cs3_isr_dabort(). No i na pierwszej instrukcji assemblerowej tuż po wejściu do tej procedury wywala mi abort. To jest ta pierwsza instrukcja od tej procedury: push {r2-r3,r11} A więc nawet nie zdąrzam wejść głębiej by obsłużyć wyjątek.
Więc stąd moje pytanie w tym wątku: Czy ładować sieci (Ethernet, Canopoen) do jednego procka czy rozdzielać to na różne mikrokontrolery. Z tego co mi kolega wyjaśnił to o Linux itp lepiej zapomnieć. Przecież to nie jest zależne od samego sprzętu (no dobra, może troszkę), tylko od tego jak dobry kod napiszesz. Czy to będzie pod Linuxem na Cortex-A15,...
Zazwyczaj najwygodniej uczyć się języka C na desktopie, czyli swoim PC-cie. Programując STM32 lub AVR-ki używa się języka w ten sam sposób, ale zwykle nie mamy dostępu do pewnych bibliotek standardowych, które na desktopie są od razu, bo komputer ma monitor, klawiaturę, dysk twardy itp.. W mikrokontrolerach tego nie mamy, więc użycie printf(), getch()...
czy jeśli zacznę od jakiegoś stm32 na cortex-M3 lub M4 to potem bez większych zmian w zasadzie działania będę się mógł przesiąść Tak. na cortex-R? A skąd je weźmiesz? czy to sprawia, że programowanie w assemblerze lub w C będzie podobne? Podobne....w assemblerze, w C nie zauważysz różnicy. dlaczego i czy PIC mogą być lepsze w takich zastosowaniach?...
Na pewno masz: http://obrazki.elektroda.pl/3055062900_1... Wychodziłoby tutaj, że jedna linia Twojego kodu zajmuje mniej niż 2 bajty, więc w przypadku ARM Cortex jedna linia kodu przekłada się na mniej niż jeden rozkaz assemblera. Przyznasz że jest to dosyć dziwne... Też jestem w stanie absolutnego podziwu. Taki projekt (18.000l) i 32k....
Moim zdaniem nauka sama w sobie assemblera nie ma sensu, w czystym assemblerze już raczej nikt nie pisze, co innego intrinsics które są namiastką assemblera i bez nich nie da się wyciągnąć pełnych możliwości niektórych architektur (np cortexy m3 w górę). Inna sprawa analiza assemblera, to już warto znać gdyż kompilator (zwłaszcza przy optymalizacji)...
AVR - początki z uC. Głównie assembler oraz C.Projekty tworzone głównie za czasów AS4, bardzo dawno, dawno temu :) Wtedy to był tylko cel hobbistyczny, jakieś ATMegi i ATTiny. Proste układy, bez USB czy Ethernetu. Później pary razy zdarzyło się zrobić projekt na ATXMega (wersje A). Tutaj to był przekompilowany GCC 4.7 do AVR i jakiś klon programatora...
Dobra, już się poprawiam. Od razu mówię, że nie znam się tak bardzo na dyrektywach kompilatora i poruszam się po omacku, dlatego frazę Freddiego wpisałem tak: arm-none-eabi-objcopy -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O binary "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.bin"; arm-none-eabi-size "${BuildArtifactFileName}" co zaowocowało...
Sprawa bierze się stąd, że adresy rejestrów są znane kompilatorowi, a adresy zmiennym przydzielane są dopiero na etapie linkowania. Stąd kompilator nie może optymalizować kodu. Można definiować zmienne globalne jak rejestry, lub zastosować wstawki assemblerowe. Albert
Oj, procesor wykonuje swoje operacje z prędkością taktowania. I na tym koniec. reszta zwykle ma swoją prędkość, wolniejszą od procesora. Wtedy procesor czeka aż się operacja wykona. Procesor wykonuje 1 instrukcję na cykl tylko wtedy gdy: 1) Operacja nie wymaga użycia pamięci (chyba że wewnętrzna pamięć procesora, ARM'y czasami mają Tightly Coupled...
1. Jak jest zdefiniowane float32_t? 2. Literał 2.4567 jest domyślnie typu double. Użyj 2.4567f. 3. W jaki sposób odczytujesz wartość przekazywaną do funkcji? 4. W jaki sposób wykonujesz konwersję do stringa? 1. Próbowałem z float wynik taki jak poprzednio. 2. Próbowałem też tak. 3. Odczytuje w trybie debug 4. void floatToString(uint8_t *stringTab,...
Czy ten LPC1111 można programować w GNU? Można. Problemem jest tylko debuggowanie, bo niestety OpenOCD nie obsługuje jeszcze SWD, a w tych malutkich prockach jest tylko ten interfejs - nie ma zwyczajnego JTAGa, za dużo pinów by używał... Być może SWD będzie obsługiwane już niedługo - oby! BTW - udało mi się właśnie przekompilować spory projekt z Cortex-M3...
Nie do końca rozumiem co masz na myśli. Cała magia RISC-V to skalowalność. Najpierw musisz kogoś nauczyć co to jest procesor i co to jest komputer. Potem trzeba pokazać jak działa procesor, w jaki sposób są budowane instrukcje i jak przebiega proces ich wykonywania. Dalej - jak to wszystko tworzy język maszynowy, na bazie którego powstał asembler,...
Hej, Do tej pory zabawiałem się mikrokontrolerami '51 przy użyciu języka assemblera i C. Do mojej pracy inżynierskiej chciałbym jednak wykorzystać coś bardziej zaawansowanego i pomyślałem o Cortexie-M3 a konkretniej płytce ewaluacyjnej Butterfly. Mam tylko pytanie, jaki podręcznik mogli byście mi polecić? Znalazłem książkę Paprockiego opartą o blibiotekę...
witam uklady wyykonawcze to uklady z rownolegla szyna danych (8 bitow) - tylko do zapisu (odczytanie tych rejestrow zawsze zwraca 0x00) tak wiec piszac aplikacje obslugi tych ukladow trzeba operowac na pamieci ram i wyniki transferowac do rejestrow - w ten sposob zawsze moge sprawdzic co bylo i jest w danym rejestrze. uklady posiadaja tez rownolegla...
Teraz wgrywałem projekt z pustą pętlą, ale wcześniej udało mi się pomyślnie wgrać miganie diodą. Oczywiście z tym nieszczęsnym fizycznym resetem. Ogólnie konflikt jest zawsze ten sam, niezależnie od kodu. Mam dołączone biblioteki StdPeriph jako pliki źródłowe. Log kompilacji [syntax=actionscript] 22:19:18 **** Build of configuration Debug for project...
Zainstalowałem CoIDE oraz GCC ARM Utworzyłem prosty projekt: http://obrazki.elektroda.pl/2950715100_1... Podczas kompilacji mam takie błędy: GCC HOME: C:\Program Files\GNU Tools ARM Embedded\4.8 2013q4\bin compile: Miał ktoś podobną sytuacje? Proszę o podpowiedź odnośnie usunięcia tych błędów.
Hmmm... U mnie ten projekt po rozpakowaniu się skompilował od razu, nawet nie otworzyłem Makefile żeby zobaczyć co w nim jest... [syntax=bash]>make Assembling file: startup.S arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m4 -mthumb -mfloat-abi=h ard -mfpu=fpv4-sp-d16 -ffast-math -g -ggdb3 -Wa,-amhls=out/startup.lst -DSTM32F 4XX -MD -MP -MF...
Ależ owszem istnieje: https://cortex-m.com/arm-cortex-m-instru... Tyle że to nie jest "lista rozkazów dla STM32F410, inna niż lista rozkazów dla STM32F1", tylko lista instrukcji assemblerowych dla rdzenia ARM Cortex-M, który akurat jest z grubsza identyczny w jednym i drugim układzie. I doskonale wiem co to jest 0x15, jak byś czytał to byś wiedział,...
Witam, małe uzupełnienie do wcześniejszego postu: Procesor: STM32F303RE Płyta ewaluacyjna: Stm32nucleo zmiany w linkerze: [syntax=c] /* +=======================================... | stacks sizes +=======================================... */ /* Handler mode (core exceptions / interrupts)...
Koledzy. Też jakiś czas temu, z mojej płytki (HY-MiniSTM32) zostało wycięte demo. Skorzystałem z archiwum Project.rar, który udostępnił kol finger6, przekonwertowałem plik Project.axf na Project.bin, używając narzędzia fromelf.exe --bin --output Project.bin i uzyskany plik załadowałem w procesor, używając programu CooCox Cortex flash programmer. Demo...
Wszystkie te których używam (sqrtf(), powf(), acosf()) są liczone przez FPU? Niekoniecznie. W Newlib (czyli libm.a) nie ma implementacji specjalnie dla tego koprocesora, jednak jeśli masz włączoną optymalizację, skonfigurowane FPU (opcje kompilacji) i dodaną flagę -ffast-math, to kompilator niektóre z nich potraktuje jako funkcje inline i zastąpi odpowiednimi...
Chociaż w komentarzach na tej stronie co podałeś ktoś zauważył że zapis do rejestrów systemowych nie powinien być na to wrażliwy. Ale jakie to ma znaczenie? Dołożyłeś jedną instrukcję i ta jedna instrukcja wystarczyła. Na końcu przerwania jest zawsze jeszcze co najmniej kilka instrukcji assemblera (co najmniej jedna - powrót, zwykle dwie jeśli przerwanie...
Problem jest do obejścia, ale myślę, że lepiej zajrzeć w kod assemblera i zobaczyć po pierwsze jakie instrukcje zostały wygenerowane, a po drugie - jakie są wartości owych stałych _bss i _ebss. (hint: arm-none-eabi-objdump -S plik.o) Tak swoją drogą, to te stałe (_etext, _ebss, _bss itp.) to po prostu wartości, a traktowane są jak konkretne zmienne...
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"...
o też ciekawe: http://www.hackaday.com/2008/02/06/20-mi... widziałem już, że trochę to rozgryziono. Kupiłem sobie STM32 (u polskiego dystrybutora) razem w kurierem wyszło 180 zł. Na drugi dzień!!! Dostajemy pudełeczko 10x10 cm (darmo dostajemy znacznie większe pudełko i pół kilo pęcherzykowej folii :) ), w nim ośmio centymetrową...
Tak, więc pytanie czy stwierdzenie, że AVRy są łatwiejsze niż np taki PIC czy cortex nie wynika z tego, że powtórzono tysiąc razy to stwierdzenie? Nie nie wynika. Tylko właśnie trzeba popatrzeć trochę lat do tyłu i nie porównywać procków które były już dostępne pod koniec lat 90-tych poprzedniego wieku z prockami sporo nowszymi. Tutaj bardziej pasuje...
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...
bo to moze byc np kombinacja powyzszych a nie jakies makro oznacza to ze ustawiasz bit 1szy drugi i trzeci np xxxxxxxx1110. Wg mnie coś Ci się przesunęło bo bit 4 (licząc od 1) jest zarezerwowany i musi być wyzerowany joł. Dziękuję za podrzucenie tego nazwy tego PM0056 Programming manuala :) Pomogło! Jeśli chodzi o rodzinę 32F1xxx to wystarczi Ci PM0056...
Nie przesadzajmy - nie jest to znowu taki wielki problem. Co do sterowników urządzeń, to przy prostym założeniu można sprawę zredukować do zwyczajnego kodu jaki każdy tworzy bez RTOSów - to założenie to "danego urządzenia używa tylko jeden wątek". To pozornie wielkie ograniczenie w większości wypadków jest całkowicie słuszne, bo np. jak by wyglądał...
Proszę bardzo: Program jest taki prosty testowy: #include "stm32f1xx_hal.h" int main(void) { HAL_Init(); while (1) { }; } A oto Build Log: Komunikaty występują przy kompilacji plików: - stm32f1xx_hal.c - stm32f1xx_hal_cortex.c - stm32f1xx_hal_flash.c - stm32f1xx_hal_gpio.c - stm32f1xx_hal_rcc.c ----------------Make...
Witam Mam pewien problem wyrzuca mi następujący błąd przy użyciu sprintf i ADC. Sprintf mam tak wpisany: [syntax=c]sprintf((char *)wartoscADC1VTekst, "%d,%03d V\0",( wartoscADC1V / 1000),( wartoscADC1V % 1000));[/syntax] Tak mam wpisany przetwornik AC [syntax=c]void ADC_Config(void)...
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 jak już wyląduje w tym HF, to jakie są wartości rejestrów rdzenia? Przejrzałem kompilację u siebie i plik assemblerowy wygląda generalnie ok. Jak w opcjach debuggera odznaczysz opcje "resume", to można debuggować funkcję Reset_Handler(), tyle że trzeba sobie przed zrobieniem czegokolwiek zaznaczyć opcję "instruction stepping mode". Wtedy by można...
Próbuję bawić się systemem FreeRTOS. Mam problem, gdy uruchomię tylko jedno zadanie led lub tx to wówczas one działają. Gdy próbuję uruchomić 2 zadania, nie działa nic. Próbowałem zmieniać rozmiar stosu, priorytety zadań i nic. [syntax=c]#include <stm32f4xx_usart.h> #include <misc.h> #include "stm32f401_discovery.h" #include "usart.h" #include...
Witam Posiadam plytke Embest LPC1700 na NXP1766. Jako srodowisko uzywam Keil MDK. Interesuja mnie programowanie w czystym asemblerze. Mam dwa problemy: 1. Kompilowanie w Keil. Zauwazylem, ze tam parametry kompilacji sa niezmienne poza obszarami pamieci. W czym problem. Chce skompilowac taki program: STACK_TOP EQU 0x20002000 ; constant for SP starting...
assembler darmowy assembler cortex firmware cortex przerwania
zmywarka bosch chiny laser rozbieżność stare hydrofory
skymaster 32sh4520 ekspres bosch ctes32
Fiat Ducato 2.8: Zamiana elektronicznej pompy na mechaniczną Kody FMR F120 i EDC F150 w Mercedesie 1824AK