Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Computer ControlsComputer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ARM - Zbiór informacji z innych tematów plus FAQ (Dla początkujących)

15 Lut 2013 10:22 20886 110
  • Poziom 20  
    Witam

    Tworze ten temat aby ułatwić sobie i innym w podobnej sytuacji jak ja start z ARMami. Jak widzę informacje na temat ARMów są bardzo rozsiane, przez co wielokrotnie
    powtarzają się te same pytania co jak widać irytuje stałych doświadczonych bywalców tego działu przez co są oni coraz mniej chętni do pomocy i kończy się odsyłaniem do
    innych tematów. Patrząc z drugiej strony nowicjusza. Tematy do których jest się odsyłanym prócz przydatnych informacji posiadają długie dyskusję często na tematy
    których początkujący nie rozumie i tylko mglistym wzrokiem przeczesuje 20 stron nie zauważając nieraz odpowiedzi. A tych tematów jest kilka. Więc celem tego tematu jest
    zebranie wszystkiego do przysłowiowej "kupy". Wszystkie pytania znajdujące sie w tym temacie jak i odpowiedzi będę starał się podczepiać do pierwszego postu (jesli
    miał taką możliwość, ewentualnie robił posty podsumowujące/ aktualizujące) by stworzyć ARMowe FAQ Więc zaczynamy. Od razu uprzedzam że to co poniżej opiszę nie będzie w
    pełni wyczerpywało tematu tylko wskaże pewną ścieżkę często polecaną na tym forum.

    Literatura

    Ogólnie z tego co sam szukałem i z przeglądu forum widzę że dobrej literatury niema. Jest kilka książek paprockiego. Podobno jednak większość książek to po prostu tłumaczenie manuali. Nasuwa się więc pytanie skąd czerpać wiedzę. Odpowiedź brzmi: Z dokumentacji producenta. Wchodząc jednak na stronę producenta (STM lub NXP) można dostać małego oczopląsu. Gdyż są (wklejka z st)

    Cytat:
    Documents:
    Application notes (137)
    Technical notes (5)
    Programming manuals (10)
    Reference manuals (8)
    User manuals (84)


    Każdy dokument co najmniej 100 stron (dochodzą do 1000) Można czytać miesiącami a biorąc się w złej kolejności na dodatek nic nie zrozumieć.

    Jedynym rozwiązaniem jest:

    Jak wybierzemy układ na jakim zaczynamy naszą przygodę szukamy dla jego rodziny"Reference manual" To jest taki datasheet do jakiego jesteśmy przyzwyczajeni z AVR (jednak bez przykładów kodu) Plus datasheet dla konkretnego procka. Aby dodatkowo posilić się informacjami można zajrzeć do Programming Manual rozszerzając wiedzę o samym rdzeniu. I to podobno wedle rad ma wystarczyć. Czy wystarczy odpowiem na to pytanie za jakiś czas jak przyjdzie mój układ i bazując na manualach spróbuje go uruchomić.

    Ewentualnie:
    Jado_one napisał:
    Ostatnio pojawiła się taka książeczka w internecie (na licencji Creative Commons):
    Niestety jak zwykle opiera się o SPL library, ale może można coś tam z niej tak czy owak wyciągnąć.

    plus mój link http://www.cs.indiana.edu/~geobrown/book.pdf

    IDE

    Większość osób jak widzę poleca IDE zrobione wedle turiala Freediego.
    http://www.freddiechopin.info/pl/artykuly/35-arm/59-arm-toolchain-tutorial pl
    plus link do taśiemcowego jak moda na sukces tematu :P
    https://www.elektroda.pl/rtvforum/topic1313509.html

    UWAGA!!! Instalacja Ganymede opisana w turtorialu jest już nieaktualna. I powoduje wyskakiwanie błędów. W celu pozbycia się tych problemów należy zainstalować najnowszą wersje
    Na dzień 17.02.2013:
    http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/junosr1
    Wraz z Eclipsem zmienia się także ścieżka do pierwszego pluginu na
    http://download.eclipse.org/tools/cdt/releases/<nazwa wersji eclipsa>
    na dzień 17.02.2013 do powyższego eclipsa
    http://download.eclipse.org/tools/cdt/releases/juno


    Plus jak obiecałem mały UPDATE.

    Kompilator:

    W turtorialu polecany i jako jedyne wyjście jest zaprezentowany Code Sourcery. Jednak teraz freedi poleca inny kompilator a mianowicie bleeding-edge-toolchain. Do
    pobrania stąd http://www.freddiechopin.info/pl/download/category/11-bleeding-edge-toolchain który obsługuje miedzy innymi Cortexa M4.
    (adnotacja)
    Freddie Chopin napisał:

    Freddie Chopin napisał:
    m linaro lub bleeding-edge-toolchain. Bleeding-edge-toolchain jest dokładnie taki jak nazwa - używasz trochę na własne ryzyko (; Jak ktoś ma duży projekt to długi czas kompilacji w linaro zaczyna naprawdę irytować, wtedy jest wiec dobry moment na BET. Ewentualnie jak kogoś denerwują niektóre rzeczy z linaro, a które są poprawione/zmienione w BET (tego jest kilka - np. wyjątki C++ czy reent-small w newlib)... To jest ciężki temat...

    SeerKaza napisał:
    I teraz proźba do zaawansowanych
    użytkowników co należy wpisać w Eclipse zamiast cs-make. Bo podejrzewam że w oknie lokalizacja zamiast do coude sourcery wybieramy lokalizacje bleeding-edge-toolchain.


    Należy po pierwsze ściągnąć ze strony też paczkę coreutils i sobie ją zainstalować w ścieżce w której NIE MA nawiasów (odpada wiec Program Files (x86), które niestety jest domyślną ścieżką na systemie 64-bitowym). Zamiast tego można sobie zainstalować też np. MSYS albo skorzystać z plików z avr-gcc. Potem zaś korzystamy z normalnego make i rm, bez przedrostka "cs-". Krok w którym wpisuje się ścieżkę do c++filt i addr2line jest zbędny i niepotrzebny.
    [/quote]


    Debuger

    Najnowsza wersja to OpenOCD 0.6.1 Do pobrania http://www.freddiechopin.info/pl/download/category/4-openocd . Podpowiedź tę wersje się rozpakowuje a nie instaluje. I uwaga nie da się sprawdzić komendą openocd --version czy działa. Po prostu rozpakowujemy i linkujemy w eclipsie. Ewentualnie można dodać ścieżkę dostępu do PATH

    Plus moja prośba może ktoś zamieścić jakaś instrukcje do tworzenia argumentów dla OPENOCD. W turtorialu jest tylko jeden przykład -f interface/jtagkey.cfg -f target/lpc2103.cfg i nie wiem jakby to wyglądało dla STlinka z discoveryF4 Czyżby tak -f interface/stlink.cfg -f target/stm32f4.cfg czy jakoś inaczej.

    Odpowiedź na moje powyższe pytanie:
    Freddie Chopin napisał:

    SeerKaza napisał:
    Plus moja prośba może ktoś zamieścić jakaś instrukcje do tworzenia argumentów dla OPENOCD. W turtorialu jest tylko jeden przykład -f interface/jtagkey.cfg -f target/lpc2103.cfg

    Ciekawym źródłem informacji może być manual do JTAG-lock-pick Tiny 2, a w nim cały rozdział poświecony OpenOCD. Myślę że nie ma co specjalnie powtarzać tego w 100 miejscach (;

    SeerKaza napisał:
    nie wiem jakby to wyglądało dla STlinka z discoveryF4 Czyżby tak -f interface/stlink.cfg -f target/stm32f4.cfg czy jakoś inaczej.

    Najprościej -f board/stm32f4discovery.cfg (;
    ewentualnie -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg


    Alternatywa: (informacje od BlueDraco)
    Podręczny spis darmowych kompilatorów i środowisk gotowych (nie zrób-to-sam):(cześć tych środowisk jest dostępna tylko jako demo za wersje pełne trzeba płacić)



    1. IAR EWARM - darmowy do 32 KiB kodu (dane nie są wliczane do limitu!). Dla tych, co lubią IAR. Obsługa układów wielu producentów. Windows. Kompilator niezgodny z C99.
    2. KEIL MDK-ARM - oficjalne środowisko ARM - darmowe do 32 KiB, obsługa praktycznie wszystkich układów od wszystkich producentów, własny mechanizm łatwej konfiguracji parametrów oprogramowania poprzez menu zaszyte w kodzie źródłowym, dość przyjazny dla początkujących. Windows. Kompilator nieco opóźniony w rozwoju (brak C99), ale generuje dobry kod.
    3. LPCxpresso - wersja Code Red dla NXP, w pełni obsługuje tylko układy NXP, ale za to robi to bardzo dobrze. Bazuje na Eclipse i GCC. Wersja darmowa bez limitu długości kodu, ale z limitem programowania i debugowania do 128 KiB. Naprawdę przyjazny. Łatwa modyfikacja skryptów linkera i możliwość przełączania pomiędzy domyślnymi i własnymi - coś dla walczących z bootloaderami. Windows/Linux/Mac.
    4. CooCox... Ech... Produkt chiński, całkowicie darmowy i bez limitów, bazuje na Eclipse i ARM-GCC (niekoniecznie), teoretycznie jest przyjazny i obsługuje wszystkie możliwe układy (gorzej z raktyką), zawiera wiele gotowców - bibliotek i modułów pisanych przez użytkowników, które łatwo "wklikać" do własnego programu. Niestety, często można w nim spotkać drobne obsuwy i zupełnie głupie błędy, zwykle bardzo proste do poprawienia. Środowisko nie jest przywiązane do kompilatora, CooCox proponuje dwa do wyboru. Kompilator instaluje się oddzielnie samemu z gotowego pakietu instalacyjnego. Sponsorowany przez Nuvoton. Windows.


    Programator

    STlink/V2- Produkcji STM cena oryginału 120zł cena klonów w okolicach 80zł. Obsługiwany przez keila a od wersji 0.5.0 (nie pomyliłem się??)również przez OpenOCD. Jest on również wbudowany w kity STMDiscovery.

    JTAG-lock-pick Tiny 2 - Czysty JTAG produkcji Frediego. Cena 99zł plus przesyłka. Obsługiwany przez OpenOCD (i nie wiem co jeszcze) Więcej informacji na stronie producenta http://www.distortec.pl/jtag-lock-pick-tiny-2


    Kity

    STM
    piotrva napisał:
    Co do płytek to z STM32:
    ***Najtańsza***
    STM32F0 Discovery (zaletą wszystkich zestawów Discovery jest zintegrowany debugger, który możemy potem podpinać do swoich układów) - 40-50zł
    ***do 100zł***
    STM32F4 Discovery - 80zł (lub inne z rodziny Discovery - w zależności od tego jakie chcemy mieć peryferia i jaki procesor, F4 jest najbogatszym i najszybszym procesorem - ale jest wersja STM32L z LCD, STM32F3 z kompasem itd.)
    ***do 200zł***
    HY-Mini płyta z STM32F103VCT6 + LCD 3,2" (bez debugera, programowanie poprzez bootloader, ale za to dosyć kompaktowe rozmiary i LCD w komplecie, mimo to słabszy procesor niż F4) - 140-180zł
    ***na bogato***
    STM32F4 Discovery + płytki rozszerzeń: http://www.embest-tech.com/shop/category/extension-module_discover-mo
    W sumie mamy dosyć bogaty zestaw z STM32F4 + ethernet PHY + LCD + kamera + SD i to wszystko bez kabelków. Fajna sprawa do nauki, bo w sumie z tym zestawem wykorzystamy prawie wszystkie możliwości tego procesora.


    Inne

    BlueDraco napisał:
    W cenie ok. 20 EUR - LPCxpresso w różnych wersjach, z różnymi mikrokontrolerami serii LPC.
    Bardzo interesujące są chińskie płytki z LPC1768 i kolorowymi graficznymi LCD z panelami dotykowymi, do kupienia m.in. na eBay - płytki o nazwie LandTiger (ok. 65 USD) i MiniDK (40 USD). Ta pierwsza ma wbudowany programator/debugger, druga - nie (ma złącze JTAG 20 pin)


    FAQ

    1.Freddi Czym się rózni OpenOCDDev od OpenOCD ten pierwszy masz na swojej stronie w wersji 0.7.0 a drugi tylko do 0.6.1 ??

    Cytat:
    To są snapshoty wprost z repozytorium (takie bleeding-edge-openocd [; ) czyli innymi słowy wersje rozwojowe. Nie ma gwarancji że działają, a ja tylko sprawdzam je pobieżnie przed wrzuceniem (i potem oczywiście sam ich używam, więc powiedzmy, że te funkcje których akurat używam działają, w przeciwnym wypadku usuwam taki plik).


    2. Kolejne pytanie które powstało gdy chciałem zamienić OpenOCD 0.4.0 na 0.6.1 Te nowe to nie jest instalka . I teraz po usunięciu 0.4.0 i rozpakowaniu 0.6.1 po wpisaniu w cmd openocd --version dostaje komunikat że nie rozpoznaje polecenia. Co muszę zrobić by to smigało ??

    Errors List
    Błedy wywalane przez IDE z rozwiązaniami:

    1. warning który jest ciągle od kiedy jakiś przykład wsadziłem do ecpilsa

    Description Resource Path Location Type
    Error launching external scanner info generator (gcc -E -P -v -dD D:/ARMWorkspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0) test Unknown C/C++ Problem
    Rozwiązanie:
    Nieaktualny Eclipse. Należy zaktualizować.

    Heyka powoli będę post uzupełniał. Bardzo proszę o pomoc i podpowiedzi doświadczonych użytkowników. Mile widziane będą porady i teksty gotowe do wklejenia.

    Zmiany:

    17.02.2013- Dodane porady rozwiązujące problemy z Eclipsem
  • Computer ControlsComputer Controls
  • Specjalista - Mikrokontrolery
    Podręczny spis darmowych kompilatorów i środowisk gotowych (nie zrób-to-sam):

    1. IAR EWARM - darmowy do 32 KiB kodu (dane nie są wliczane do limitu!). Dla tych, co lubią IAR. Obsługa układów wielu producentów. Windows. Kompilator niezgodny z C99.
    2. KEIL MDK-ARM - oficjalne środowisko ARM - darmowe do 32 KiB, obsługa praktycznie wszystkich układów od wszystkich producentów, własny mechanizm łatwej konfiguracji parametrów oprogramowania poprzez menu zaszyte w kodzie źródłowym, dość przyjazny dla początkujących. Windows. Kompilator nieco opóźniony w rozwoju (brak C99), ale generuje dobry kod.
    3. LPCxpresso - wersja Code Red dla NXP, w pełni obsługuje tylko układy NXP, ale za to robi to bardzo dobrze. Bazuje na Eclipse i GCC. Wersja darmowa bez limitu długości kodu, ale z limitem programowania i debugowania do 128 KiB. Naprawdę przyjazny. Łatwa modyfikacja skryptów linkera i możliwość przełączania pomiędzy domyślnymi i własnymi - coś dla walczących z bootloaderami. Windows/Linux/Mac.
    4. CooCox... Ech... Produkt chiński, całkowicie darmowy i bez limitów, bazuje na Eclipse i ARM-GCC (niekoniecznie), teoretycznie jest przyjazny i obsługuje wszystkie możliwe układy (gorzej z praktyką), zawiera wiele gotowców - bibliotek i modułów pisanych przez użytkowników, które łatwo "wklikać" do własnego programu. Niestety, często można w nim spotkać drobne obsuwy i zupełnie głupie błędy, zwykle bardzo proste do poprawienia. Środowisko nie jest przywiązane do kompilatora, CooCox proponuje dwa do wyboru. Kompilator instaluje się oddzielnie samemu z gotowego pakietu instalacyjnego. Sponsorowany przez Nuvoton. Windows.
  • Pomocny post
    Specjalista - Mikrokontrolery
    SeerKaza napisał:
    W turtorialu polecany i jako jedyne wyjście jest zaprezentowany Code Sourcery. Jednak teraz freedi poleca inny kompilator a mianowicie bleeding-edge-toolchain. Do
    pobrania stąd http://www.freddiechopin.info/pl/download/category/11-bleeding-edge-toolchain który obsługuje miedzy innymi Cortexa M4

    No wiem czy ja specjalnie go polecam (; Generalnie polecam linaro lub bleeding-edge-toolchain. Bleeding-edge-toolchain jest dokładnie taki jak nazwa - używasz trochę na własne ryzyko (; Jak ktoś ma duży projekt to długi czas kompilacji w linaro zaczyna naprawdę irytować, wtedy jest wiec dobry moment na BET. Ewentualnie jak kogoś denerwują niektóre rzeczy z linaro, a które są poprawione/zmienione w BET (tego jest kilka - np. wyjątki C++ czy reent-small w newlib)... To jest ciężki temat...

    SeerKaza napisał:
    I teraz proźba do zaawansowanych
    użytkowników co należy wpisać w Eclipse zamiast cs-make. Bo podejrzewam że w oknie lokalizacja zamiast do coude sourcery wybieramy lokalizacje bleeding-edge-toolchain.

    Należy po pierwsze ściągnąć ze strony też paczkę coreutils i sobie ją zainstalować w ścieżce w której NIE MA nawiasów (odpada wiec Program Files (x86), które niestety jest domyślną ścieżką na systemie 64-bitowym). Zamiast tego można sobie zainstalować też np. MSYS albo skorzystać z plików z avr-gcc. Potem zaś korzystamy z normalnego make i rm, bez przedrostka "cs-". Krok w którym wpisuje się ścieżkę do c++filt i addr2line jest zbędny i niepotrzebny.

    SeerKaza napisał:
    Plus moja prośba może ktoś zamieścić jakaś instrukcje do tworzenia argumentów dla OPENOCD. W turtorialu jest tylko jeden przykład -f interface/jtagkey.cfg -f target/lpc2103.cfg

    Ciekawym źródłem informacji może być manual do JTAG-lock-pick Tiny 2, a w nim cały rozdział poświecony OpenOCD. Myślę że nie ma co specjalnie powtarzać tego w 100 miejscach (;

    SeerKaza napisał:
    nie wiem jakby to wyglądało dla STlinka z discoveryF4 Czyżby tak -f interface/stlink.cfg -f target/stm32f4.cfg czy jakoś inaczej.

    Najprościej -f board/stm32f4discovery.cfg (;
    ewentualnie -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg

    BlueDraco napisał:
    darmowych kompilatorów

    One nie są "darmowe" tylko dostępne w "wersji demonstracyjnej". Darmowe to jest GCC i CooCox - cała reszta którą wymieniłeś to narzędzia komercyjne (zresztą pominąłeś np. bardzo dobrego i bardzo taniego CrossWorksa), które często kosztują dziesiątki tysięcy złotych za JEDNĄ licencję na JEDEN rok.

    4\/3!!
  • Poziom 20  
    Dzięki za wszelkie informacje. Jakie jeszcze kity można polecić na start prócz STM32F4DISCOVERY w kilku przedziałach cenowych powiedzmy. Najtańszy, do 100 zł, do 200zł, do 400zł, i na bogato.
  • Computer ControlsComputer Controls
  • Pomocny post
    Specjalista - Mikrokontrolery
    Płytki demostracyjne:

    Prawdopodobnie najtańsza - STM32F0DISCOVERY
    Nieco droższe - STM32FxxxDiscovery z nieco mądrzejszymi mikrokontrolerami serii STM32F,
    W cenie ok. 20 EUR - LPCxpresso w różnych wersjach, z różnymi mikrokontrolerami serii LPC.
    Bardzo interesujące są chińskie płytki z LPC1768 i kolorowymi graficznymi LCD z panelami dotykowymi, do kupienia m.in. na eBay - płytki o nazwie LandTiger (ok. 65 USD) i MiniDK (40 USD). Ta pierwsza ma wbudowany programator/debugger, druga - nie (ma złącze JTAG 20 pin)

    Freescale FRDM z Kinetis KL25 - 25 USD.
    Texas Instruments Stellaris LM4F120 LaunchPad - 13 USD.

    Freddie: Jeżeli środowisko ma darmową licencję zezwalająca na użytkowanie w celach komercyjnych i limit rozmiaru kodu umożliwiający tworzenie sensownych (a nawet całkiem sporych) aplikacji, to takie środowisko nazywam darmowym - na pewno kwalifikuje się tu przynajmniej LPCxpresso.
  • Pomocny post
    Moderator na urlopie...
    Co do środowisk - wszystko zostało powiedziane.
    Co do płytek to z STM32:
    ***Najtańsza***
    STM32F0 Discovery (zaletą wszystkich zestawów Discovery jest zintegrowany debugger, który możemy potem podpinać do swoich układów) - 40-50zł
    ***do 100zł***
    STM32F4 Discovery - 80zł (lub inne z rodziny Discovery - w zależności od tego jakie chcemy mieć peryferia i jaki procesor, F4 jest najbogatszym i najszybszym procesorem - ale jest wersja STM32L z LCD, STM32F3 z kompasem itd.)
    ***do 200zł***
    HY-Mini płyta z STM32F103VCT6 + LCD 3,2" (bez debugera, programowanie poprzez bootloader, ale za to dosyć kompaktowe rozmiary i LCD w komplecie, mimo to słabszy procesor niż F4) - 140-180zł
    ***na bogato***
    STM32F4 Discovery + płytki rozszerzeń: http://www.embest-tech.com/shop/category/extension-module_discover-mo
    W sumie mamy dosyć bogaty zestaw z STM32F4 + ethernet PHY + LCD + kamera + SD i to wszystko bez kabelków. Fajna sprawa do nauki, bo w sumie z tym zestawem wykorzystamy prawie wszystkie możliwości tego procesora.
  • Poziom 14  
    piotrva napisał:


    ***na bogato***
    STM32F4 Discovery + płytki rozszerzeń: http://www.embest-tech.com/shop/category/extension-module_discover-mo
    W sumie mamy dosyć bogaty zestaw z STM32F4 + ethernet PHY + LCD + kamera + SD i to wszystko bez kabelków. Fajna sprawa do nauki, bo w sumie z tym zestawem wykorzystamy prawie wszystkie możliwości tego procesora.


    Na bogato to to jeszcze jest taki zestaw
    http://www.wvshare.com/product/Open407I-C-Package-B.htm
  • Poziom 20  
    Freddi Czym się rózni OpenOCDDev od OpenOCD ten pierwszy masz na swojej stronie w wersji 0.7.0 a drugi tylko do 0.6.1 ??
  • Specjalista - Mikrokontrolery
    SeerKaza napisał:
    Freddi Czym się rózni OpenOCDDev od OpenOCD ten pierwszy masz na swojej stronie w wersji 0.7.0 a drugi tylko do 0.6.1 ??

    To są snapshoty wprost z repozytorium (takie bleeding-edge-openocd [; ) czyli innymi słowy wersje rozwojowe. Nie ma gwarancji że działają, a ja tylko sprawdzam je pobieżnie przed wrzuceniem (i potem oczywiście sam ich używam, więc powiedzmy, że te funkcje których akurat używam działają, w przeciwnym wypadku usuwam taki plik).

    4\/3!!
  • Poziom 20  
    Kolejne pytanie które powstało gdy chciałem zamienić OpenOCD 0.4.0 na 0.6.1 Te nowe to nie jest instalka . I teraz po usunięciu 0.4.0 i rozpakowaniu 0.6.1 po wpisaniu w cmd openocd --version dostaje komunikat że nie rozpoznaje polecenia. Co muszę zrobić by to smigało ??
  • Specjalista - Mikrokontrolery
    Nic - po prostu uruchamiać z podaniem pełnej ścieżki - w Eclipse wystarczy wyklikać plik i gotowe. Ewentualnie można sobie dodać folder z plikiem exe do PATH, ale to nie ma specjalnego sensu. Z linii komend wystarczy wejść do folderu gdzie masz plik exe, a nie działać np. bezpośrednio z C:\

    4\/3!!
  • Moderator na urlopie...
    Ja jeszcze ze swojej strony dodam informacje o książkach.
    Osobiście miałem w rękach książkę M. Paprockiego "Mikrokontrolery STM32 w praktyce" - moim zdaniem nie warto kupować. Książka to praktycznie przetłumaczone noty katalogowe i dokumentacje bibliotek standardowych na przykładzie tylko jednego procesora z rodziny STM32F1 (STM32F103xxx). Niby można czegoś się tam nauczyć, ale tylko na SPL i potem trzeba mieć i tak pewną sprawność w grzebaniu po dokumentacjach, żeby podobne funkcjonalności uruchomić ręcznie bez SPL lub na innych procesorach.
    Może więc do kompendium dorzućmy kolejny temat - kursy/książki o programowaniu STM32?
  • Poziom 20  
    No waśnie kłopot w tym że takich książek brak za wyjątkiem tych 3 Od Paprockiego. Na dodatek oparte są one na Keilu i płytkach z kamami (nie wiem jak wygląda praca bez tych kitów). Myślę że to co jest najważniejsze to dobra znajomość C uzupełniona o informacje z manuali, porady użytkowników forum i analizowanie gotowych przykładów. Trochę łatwiej maja ludzie którzy programowali inne uC bo wiadomo o co mniej wiecej chodzi z pracą na rejestrach które jak oglądam te w Cortexach są naprawdę rozbudowane.

    --------------------------------------

    Coś mi się skaszaniło w eclipsie i w zakładce projekt./properties /build pojawia sie okno z komunikatem An error has occurred. See error log for more details.
    java.lang.NullPointerException

    Pojawiło się po instalacji core utilis

    Bład pojawia się tylko w projekcie do którego zaimportowałem przykład ze strony frediego w nowym projekcie mozna edytować ustawienia

    Plus warning który jest ciągle od kiedy jakiś przykład wsadziłem do ecpilsa

    Description Resource Path Location Type
    Error launching external scanner info generator (gcc -E -P -v -dD D:/ARMWorkspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0) test Unknown C/C++ Problem
  • Moderator na urlopie...
    No powiem po swoim doświadczeniu, że znajomość AVR bardzo pomaga. I oczywiście podstaw pracy z układami cyfrowymi też. A, żeby może temat poradników dla początkujących rozwinąć, może ktoś trafił na jakieś dobre i przejrzyste anglojęzyczne kursy w internecie?
  • Poziom 15  
    Tu jest dobry tutorial, raczej tylko dla początkujących:
    Link
  • Poziom 20  
    Dzięki za informacje. o literaturze. Jak widzę większość jest anglojęzyczna i opiera się na bibliotekach. Sam powoli zaczynam się zastanawiać czy nie lepiej byłoby jednak zacząć z bibliotekami....... NIE!!! Jadę na hardcora bez bibliotek :)
  • Specjalista - Mikrokontrolery
    SeerKaza napisał:
    Coś mi się skaszaniło w eclipsie i w zakładce projekt./properties /build pojawia sie okno z komunikatem An error has occurred. See error log for more details.
    java.lang.NullPointerException

    Pojawiło się po instalacji core utilis

    Bład pojawia się tylko w projekcie do którego zaimportowałem przykład ze strony frediego w nowym projekcie mozna edytować ustawienia

    Nie wiem jaki może być związek Coreutils z błędami Eclipse...

    SeerKaza napisał:
    Plus warning który jest ciągle od kiedy jakiś przykład wsadziłem do ecpilsa

    Description Resource Path Location Type
    Error launching external scanner info generator (gcc -E -P -v -dD D:/ARMWorkspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0) test Unknown C/C++ Problem

    Bo masz źle skonfigurowany projekt, co każe mi przypuszczać, że jednak nie zaimportowałeś przykładu poprawnie.

    4\/3!!
  • Moderator na urlopie...
    Ja powiem tak, miałem na początku bardzo optymistyczne nastawienie do bibliotek SPL - niby kompletne, polecane przez producenta. Nie rozumiałem dlaczego wszyscy na nie narzekają.
    Ale po paru dniach z STM32F4 i SPL zacząłem rozumieć skąd ta frustracje.

    Ja np. trafiłem na problem z obsługa UART - jak się okazało zdefiniowanie częstotliwości taktowania peryferiów w pliku stm32f4xx_system (nb. generowany przez generator od producenta) nie wystarczyło dla bibliotek, żeby się zorientować jak ma wyliczyć baudrate. Trzeba było osobno zdefiniować w poleceniach kompilatora, żeby biblioteka sobie wyliczyła.

    Przy okazji zajrzałem też do kodu bibliotek (pierwsze debugowałem, żeby sprawdzić co jest nie tak) i powiem szczerze, że do optymalnych to one nie należą - bo po co np. wyliczać baud programowo, skoro w sporej liczbie przypadków ten się nie zmienia podczas pracy i możnaby zamiast 20 linijek wpisać jedną z wcześniej wyliczoną stałą?

    Nie mówię, że te biblioteki są do szpiku złe, ale jeśli miałyby być dla początkujących to mogą być powodem frustracji. A bardziej zaawansowani pewnie prędzej czy później rozkodują rejestry i operacje na nich będą już dużo szybsze i prostsze.
  • Poziom 20  
    Freddie Chopin napisał:

    SeerKaza napisał:
    Plus warning który jest ciągle od kiedy jakiś przykład wsadziłem do ecpilsa

    Description Resource Path Location Type
    Error launching external scanner info generator (gcc -E -P -v -dD D:/ARMWorkspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0) test Unknown C/C++ Problem

    Bo masz źle skonfigurowany projekt, co każe mi przypuszczać, że jednak nie zaimportowałeś przykładu poprawnie.


    Czyli błąd w imporcie projektu a nie w konfiguracji środowiska ??
  • Poziom 20  
    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
    Cytat:

    **** Build of configuration Default for project stm32f4_blink_led-1.2.2-120323 ****

    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. -Iinc startup.S -o out/startup.o

    Compiling file: gpio.c
    arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffast-math -O0 -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -Wextra -std=gnu89 -g -ggdb3 -fverbose-asm -Wa,-ahlms=out/gpio.lst -DSTM32F4XX -MD -MP -MF out/gpio.d -I. -Iinc gpio.c -o out/gpio.o

    Compiling file: main.c
    arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffast-math -O0 -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -Wextra -std=gnu89 -g -ggdb3 -fverbose-asm -Wa,-ahlms=out/main.lst -DSTM32F4XX -MD -MP -MF out/main.d -I. -Iinc main.c -o out/main.o

    Compiling file: vectors.c
    arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffast-math -O0 -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -Wextra -std=gnu89 -g -ggdb3 -fverbose-asm -Wa,-ahlms=out/vectors.lst -DSTM32F4XX -MD -MP -MF out/vectors.d -I. -Iinc vectors.c -o out/vectors.o

    Linking target: out/stm32f4_blink_led.elf
    arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffast-math -TSTM32F4xxxG_rom.ld -g -Wl,-Map=out/stm32f4_blink_led.map,--cref,--no-warn-mismatch -Wl,--gc-sections -nostartfiles out/startup.o out/gpio.o out/main.o out/vectors.o -o out/stm32f4_blink_led.elf

    Creating extended listing: out/stm32f4_blink_led.lss
    arm-none-eabi-objdump -S out/stm32f4_blink_led.elf > out/stm32f4_blink_led.lss

    Creating memory dump: out/stm32f4_blink_led.dmp
    arm-none-eabi-objdump -x --syms out/stm32f4_blink_led.elf > out/stm32f4_blink_led.dmp

    Creating IHEX image: out/stm32f4_blink_led.hex
    arm-none-eabi-objcopy -O ihex out/stm32f4_blink_led.elf out/stm32f4_blink_led.hex

    Creating binary image: out/stm32f4_blink_led.bin
    arm-none-eabi-objcopy -O binary out/stm32f4_blink_led.elf out/stm32f4_blink_led.bin

    Size of modules:
    arm-none-eabi-size -B -t --common out/startup.o out/gpio.o out/main.o out/vectors.o
    text data bss dec hex filename
    104 0 0 104 68 out/startup.o
    416 0 0 416 1a0 out/gpio.o
    628 0 0 628 274 out/main.o
    408 0 0 408 198 out/vectors.o
    1556 0 0 1556 614 (TOTALS)

    Size of target .elf file:
    arm-none-eabi-size -B out/stm32f4_blink_led.elf
    text data bss dec hex filename
    1556 0 1024 2580 a14 out/stm32f4_blink_led.elf
  • Poziom 20  
    Zamówiłem STM32F4DISCOVERY (sorki freddi jednak nie od Ciebie) jak przyjdzie będe kombinował mając już układ. Bo moje eclipse jest jakieś dziwne. Jak zaimportuje przykład do F4 to krzaczy mi się jak wchodzę w ustawienia Build projektu A jak zaimportuje stm32cl to jest ok. Co do tych warningów to znikły. Pozatym oba projekty kompilują sie poprawnie. Ale zobaczę jak to wszystko będzie działać z fizycznym układem

    PS. Jedyne co do tej pory zrobiłem to nowy workspace całego eclipsa nieprzeinstalowywałem
  • Poziom 20  
    Eclipse Platform

    Version: 3.4.2
    Build id: M20090211-1700

    Ganymede

    Podejrzewam że jak importuje projekt pobieram tez jego konfiguracje i moj eclipse nie jest w stanie poradzić z twoja konfiguracja od F4
  • Specjalista - Mikrokontrolery
    No ale przecież to jest wersja sprzed 4 lat... Przykłady są robione na zawsze aktualnej wersji (w chwili wydania), więc większość przykładów jest chyba na Indigo, ale na najnowszym Juno wszystko działa jak trzeba (u siebie mam Juno i na tym sprawdzałem).

    4\/3!!
  • Poziom 20  
    No widzisz a ja pobrałem Ganymede tak jak w turtorialu. To jak przesiądę się na Juno to konfiguracja wygląda tak samo ??

    PS. Jest różnica miedzy x86 a x64 ?


    ------------------------------------------------------------------------
    EDIT 13.46
    ------------------------------------------------------------------------
    Miałeś racje powodem kłopotów był stary Eclipse. Po zainstalowaniu Juno zniknął problem z edytowaniem właściwości projektu. Zaraz dopisze porady w pierwszym poście by inni nie mieli tego problemu.
  • Specjalista - Mikrokontrolery
    No i teraz napisałeś, że należy pobrać wersję Juno SR1, która już za 5 dni będzie nieaktualna. Ja w tutorialu nie napisałem, że MUSI być Ganymede, po prostu taka była wtedy najnowsza. A ścieżka jaką podałeś do plugina jest całkowicie zła - przyjrzyj się dobrze co jest w tym adresie.

    4\/3!!
  • Poziom 20  
    Teraz lepiej ???