logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Płytka i literatura do nauki ARM dla osoby z doświadczeniem w AVR i C?

squelch 04 Cze 2017 18:51 3720 48
Najlepsze odpowiedzi LABEL_AI_GENERATED

Jaką płytkę i jaką literaturę wybrać do nauki ARM, jeśli mam doświadczenie z AVR i C, ale nie znam angielskiego technicznego?

Do nauki ARM musisz przynajmniej podstawowo ogarniać angielski techniczny, bo manuale, dokumentacja bibliotek i opisy rdzenia są po angielsku, a książki szybko się dezaktualizują [#16511956] Na start wystarczy STM32F0Discovery; doświadczenie z tej rodziny łatwo przenosi się potem na F3 i F4, a jeśli chcesz więcej materiałów książkowych, to STM32F103 jest często wybierany, bo jest do niego sporo literatury i przykładów, choć część opiera się na starym SPL [#16512092][#16512704][#16512737] Z polskich źródeł polecano poradnik Szczywronka na forum oraz książkę „Mikrokontrolery STM32 w praktyce” K. Paprockiego [#16512139][#16512729][#16515051] Najlepiej uczyć się na prostych zadaniach typu LED, UART i potem korzystać z CubeMX/openSTM32 (lub System Workbench), bo generuje aktualne pliki CMSIS i upraszcza start bez ręcznego wygrzebywania nagłówków z archiwów [#16512680][#16513085][#16518263]
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA
  • #1 16511935
    squelch
    Poziom 11  
    Posty: 299
    Pomógł: 6
    Ocena: 2
    Witam

    Siedzę już w AVR i C kilka dobrych lat i chciałbym zacząć bawić się ARM, jaką płytkę polecacie i literaturę. Wiem że wiele osób napisze, że żadna literatura, tylko manuale, ale ja nie umiem angielskiego i czuję, że zgubiłbym się w tych manuałach. Jest jakaś dobra książka na rynku?

    Pozdrawiam
  • REKLAMA
  • #2 16511956
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Moim zdaniem - i naprawdę nie piszę tego żeby być złośliwym - nie ma fizycznej możliwości używać takich układów bez choćby podstawowej znajomości angielskiego. Manuale są po angielsku. Dokumentacja do tych durnych bibliotek jest po angielsku. Dokumentacje samego rdzenia są po angielsku. Dokumentacja dowolnej biblioteki (GUI, TCP/IP, USB, ...) jest po angielsku. Sytuacja na tym rynku zmienia się tak dynamicznie, że jak ktoś wyda książkę, to na 99% nie dotyczy ona najnowszych układów.

    Aby zrozumieć dokumentację nie trzeba kończyć filologii, ot jakąś tam podstawową znajomość technicznego języka trzeba mieć i już.
  • REKLAMA
  • #3 16511958
    squelch
    Poziom 11  
    Posty: 299
    Pomógł: 6
    Ocena: 2
    mam płytkę stm32f0discovery ale czy jest ona dobra na start z stmami czy może pójść w stm32f4discovery czy coś lepszego?

    Dodano po 10 [minuty]:

    no to uczymy się angielskiego, może to nie czas i miejsce ale wystarczy mi angielski techniczny jaka literaturę polecacie do nauki angielskiego tak żebym umiał czytać te manuale.

    Pozdrawiam
  • #4 16511985
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #6 16512092
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    Moim zdaniem książka po polsku nie jest zła. Niestety książki są pisane pod bibliotekę SPL, a o niej już wielu zapomniało. Na start może się jednak bardzo przydać. Do nauki dobry jest STM32F103 (dobrany pod książki). Niezbyt trudny do AVR'owca, ale mimo wszystko mózg wyżyma bo wymaga innego podejścia niż AVR. Po "angielsku" łatwiej się "domyślać" jak ma się już jakąś ogólną wiedzę na temat kontrolera.
  • #7 16512139
    Konto nie istnieje
    Konto nie istnieje  
  • #8 16512556
    linuxtorpeda
    Poziom 26  
    Posty: 825
    Pomógł: 93
    Ocena: 295
    W sumie to na początek wystarczy ściągnięcie dowolnego IDE z toolchainem i przykładami, np. CooCox, i analiza kodu. Często w nagłówkach w samej implementacji są komentarze opisujące wykorzystane mechanizmy.
  • #9 16512609
    Konto nie istnieje
    Konto nie istnieje  
  • #10 16512667
    squelch
    Poziom 11  
    Posty: 299
    Pomógł: 6
    Ocena: 2
    Czytałem tego gościa co mi polecaliście i jak na razie wszystko fajne tylko przydałaby się poprawa ścieżek prowadzących tzn.
    Cytat:

    Jak i skąd to wszystko zdobyć? Plik nagłówkowy mikrokontrolera oczywiście ze strony ST. Dokładniej trzeba pobrać paczkę z narzędziem STM32Cube i wyłuskać z niej odpowiedni plik nagłówkowy. Przykładowo dla STM32F103:
    www.st.com
    Products → Microcontrollers → STM32 32-bit ARM Cortex MCUS → STM32F1 Series → STM32F103
    Software → STM32Cube
    STM32CubeF1
    Get Software → Download
    w rozpakowanym archiwum: Drivers → CMSIS → Device → ST → STM32F1xx → Include
    w pliku stm32f1xx.h sprawdzamy nazwę pliku nagłówkowego dla naszego mikrokontrolera (np. mikrokontroler STM32F103VC to plik stm32f103xe.h)
    i mamy nasz garniec złota na krańcu tęczy – plik nagłówkowy mikrokontrolera z definicjami rejestrów i bitów: stm32f103xe.h

    już napisałem do niego.
  • #11 16512680
    Konto nie istnieje
    Konto nie istnieje  
  • #12 16512701
    linuxtorpeda
    Poziom 26  
    Posty: 825
    Pomógł: 93
    Ocena: 295
    @Piotrus_999, moim zdaniem szkodliwa jest właśnie nauka "na zapas". Po pierwsze, człowiek zapomina większość rzeczy, z których nie korzysta. Po drugie, jest to zwyczajnie niepraktyczne, tym bardziej, że mikrokontroler programuje się w C, nie w assemblerze. Po trzecie, jest to często zbędne, chyba że ktoś za cel sam w sobie ustala dogłębne działanie konkretnego uC. Oczywiście zakładam, że pytający ma wiedzę ogólną na temat programowania i pobieżną wiedzę na temat budowy mikrokontrolerów. Resztę można doczytywać na bieżąco z dokumentacji.

    Przykłady na STM32F4 (wystarczy zbudować i sflashować uC):
    https://github.com/k-code/stm32f4-examples
  • #13 16512704
    rb401
    Poziom 39  
    Posty: 3002
    Pomógł: 750
    Ocena: 984
    squelch napisał:
    mam płytkę stm32f0discovery ale czy jest ona dobra na start z stmami


    Dobra jak i inne, tym bardziej jeśli zaczynasz od prostych rzeczy typu miganie LED, port szeregowy itp. . Doświadczenie z jednej rodziny przydaje się w drugiej. A już szczególnie jeśli się używa bibliotek (SPL czy HAL).
    Ale w zasadzie sedno problemu tkwi w materiałach do nauki. Jeśli nie czujesz się zbyt mocno w angielskim to chyba lepiej kursy po polsku. Przynajmniej do czasu gdy "złapiesz" filozofię STM i ogarniesz temat na tyle by samemu coś kreować..
    Nie ma tych kursów zbyt dużo.
    Jest tu, wspomniany, bardzo przyjemny poradnik kolegi Szczywronka ale ale bazuje na programowaniu rejestrów sprzętowych (metoda jaką tak właściwie powinieneś kojarzyć z AVR), co znów pociąga za sobą bardzo intensywne korzystanie z angielskojęzycznej dokumentacji w kwestii opisów rejestrów sprzętowych.
    Są też dwa kursy na Forbocie, jeden oparty o biblioteki SPL (stare i niezalecane ale wciąż popularne) i bibliotekę HAL.
    Ten drugi szczególnie fajny, bo używa też narzędzia CubeMX, które np. tworzy szablony programów ale i bardzo pomaga w rozeznaniu się w danym kontrolerze, peryferiach, łącznie z np. graficzną konfiguracją zegara i innymi pożytecznymi sprawami.
    A to że kurs jest na konkretną płytkę z F4, nie przeszkadza dopóki nie wchodzi się w specyficzne sprawy typu żyroskop itp. Co do prostszych zagadnień to w większości powinny analogicznie dać się zrobić nawet na F0 (oczywiście pilnując ustawień programu).

    http://forbot.pl/blog/artykuly/programowanie/stm32-praktyce-1-platforma-srodowisko-id2733

    http://forbot.pl/blog/artykuly/programowanie/...4-1-czas-poznac-hal-spis-tresci-kursu-id14114

    Co do programowania z pomocą bibliotek, to kwestia przechodzenia na inne rodziny STM jest dużo łatwiejsza (niż w programowaniu "na rejestrach"), bo nieraz ten sam program (z ewentualnymi kosmetycznymi zmianami) działa na bardzo różnych rodzinach. Szczególnie przy prostszych zadaniach.
    Dlatego materiału tych kursów na bibliotekach możesz próbować na innym STM niż w kursie, zmieniając tylko kluczowe ustawienia dotyczące wyboru procesora.
    Posiadając nawet tylko to stm32f0discovery, zyskujesz możliwość programowania innych STM na płytkach nie posiadających programatora. Przykładowo możesz dokupić bardzo pospolitą i tanią płytkę z F103R8 i trenować też na niej, bo pomimo że F103 jest troszkę stary to jednak do niego powstało najwięcej literatury.
  • #14 16512705
    Konto nie istnieje
    Konto nie istnieje  
  • #15 16512711
    linuxtorpeda
    Poziom 26  
    Posty: 825
    Pomógł: 93
    Ocena: 295
    @Piotrus_999, przecież nie krytykuję korzystania z dokumentacji, wręcz zachęcam. Odradzam raczej z korzystania z literatury (szczególnie polskiej, dość miernej zresztą). Nie zachęcam też do przeklejania kodu bez jego rozumienia, pisałem na temat jego analizy. Czytanie książek też nie da Ci tej umiejętności.

    FYI, nie pisałem nigdy na Arduino, więc trudno mi się odnieść do argumentu, że to rzekomo metoda "na arduino". Analiza kodu i czytanie dokumentacji to normalna rzecz w zawodzie programisty. Kupowanie książek rezerwuję dla rzeczy wymagających poznania zupełnie nowych idei, łatwiej zaczynać mając jakiekolwiek podstawy w dowolnej dziedzinie.
  • #16 16512729
    SyriuszPL
    Poziom 10  
    Posty: 40
    Ocena: 7
    Jestem w podobnej sytuacjii, również zaczynam przygodę z ARM-ami. Z literatury w języku polskim to mogę polecić "Paprocki K. - Mikrokontrolery STM32 w praktyce". Dobre źródło podstawowej wiedzy. Są też przykłady ale radziłbym przysiąść się do zrozumienia i przeanalizowania zamieszczonego tam kodu.
  • #17 16512737
    rb401
    Poziom 39  
    Posty: 3002
    Pomógł: 750
    Ocena: 984
    SyriuszPL napisał:
    Są też przykłady ale radziłbym przysiąść się do zrozumienia i przeanalizowania zamieszczonego tam kodu.


    Co samej książki to dobrze jest przeczytać, ale z ćwiczeniami na kodzie to może być kłopot.
    To wydanie które mam (nie wiem na ile poprawione są jakieś nowsze wydania) bazuje na starej wersji SPL i narzędziach które na dzień dzisiejszy są inne. Co prawda sam F103 wiecznie żywy i jest w tej książce dużo wartościowego materiału na temat jego peryferii, ale mogą być kłopoty (może nie potrzebne) aby na przykład zrobić sobie kurs ściśle według tej książki.
  • #18 16512739
    Konto nie istnieje
    Konto nie istnieje  
  • #19 16512743
    rb401
    Poziom 39  
    Posty: 3002
    Pomógł: 750
    Ocena: 984
    Piotrus_999 napisał:
    1. Podstawa to dobre rozumienie C lub C++ w zależności jakie mamy preferencje.


    No tak, tylko kolega squelch, przyznał się że w C już tam coś strugał. Dlatego myślę że, wobec tego główny problem nie leży w opanowaniu C a w różnicy między AVR i STM32 oraz specyfiki narzędzi.

    I tak po przemyśleniu zaproponowałbym na początek pójść ścieżką poradnika kolegi Szczywronka. A to z powodu że jest napisany w dużej mierze dla ludzi przesiadających się z AVR i zawiera liczne nawiązania typu, w AVR tak było a STM32 tak. To akurat powinno koledze pomóc wobec posiadanego już doświadczenia.
    Może tylko IDE jakieś łatwiejsze w obsłudze by się przydało, żeby nie musieć walczyć z narzędziem na początku drogi.
    A później już po uzyskaniu pewnej biegłości w metodzie "rejestrowej" i przede wszystkim zrozumieniu konstrukcji STM32 i filozofii tej rodziny, wdrożyć się w HAL.
  • #20 16513085
    Konto nie istnieje
    Konto nie istnieje  
  • #21 16515051
    matti0010
    Poziom 11  
    Posty: 319
    Pomógł: 8
    Ocena: 25
    Zaczynałem od STM32F0DISCOVEY i nie narzekam z tego powodu. Teraz regularnie skaczę między F0, F3 i F4 bez najmniejszego problemu. Poradnik o którym wspomniało tutaj kilka osób jest zaje***ty i autor tego poradnika jak dla mnie jest prawdziwym bohaterem na tym forum :P Skoro siedzisz w AVR od dawna to taki poradnik pozwoli Ci lepiej zobaczyć różnice między AVR a ARM (też tak przeskakiwałem choć zapewne miałem mniejsze doświadczenie w AVR niż Ty).

    Poradnik co prawda opisuje wszystko z wykorzystaniem rejestrów, ale ma to ogromną zaletę. Poświęcisz na niego sporo czasu, będziesz mieć sporo problemów ale potem gdy będziesz chciał wskoczyć na HALa, to zrobisz to bez problemu. Naprawdę szczerze polecam.

    Tylko ostrzegam, jeżeli chcesz naprawdę się czegoś nauczyć z poradnika to musisz samemu robić opisane tam rzeczy a nie jedynie czytać. Będziesz mieć wiele problemów przy F0 ale dasz radę (ja dałem, choć zapewne takie osoby jak @Piotrus_999, @freddie Chopin czy inni mają mnie już serdecznie dość bo nieraz potrzebowałem pomocy :P ). Gdybyś zabrał się za poradnik i używał STM32F0DISCOVERY to pisz, mam chyba prawie wszystko przerobione z tego poradnika (jeżeli jakieś kody nie skasowały się przy przenoszeniu na nowy sprzęt).
  • REKLAMA
  • #23 16515119
    Konto nie istnieje
    Konto nie istnieje  
  • #24 16515127
    matti0010
    Poziom 11  
    Posty: 319
    Pomógł: 8
    Ocena: 25
    Piotrus_999 napisał:
    squelch napisał:
    Wielki dzięki że podzieliście się ze mną waszymi próbami i zmaganiami z opanowaniem ARMów, spróbuje jakoś przez to przebrnąć.

    Może to moje osobiste ale mnie się duzo łatwiej i przyjemniej programuje peryferia arm-ow niż AVR-ów. Do tego znikają Ci wszystkie (prawie) ograniczenia architektury 8 bitowe. Do tego jak dodamy że za 10-11zł możesz kupić procesor z koprocesorem matematycznym (czyli floaty nie zjedzą Ci procka), orz tak bogatą lista rozkazów, że kompilatot ma naprawdę na czym poszaleć generując kod.


    Dorzucę swoje 5 groszy :P Dla porównania:
    - ATmega8 w SMD kosztuje 3,5zł
    - STM32F030F4P6 w SMD kosztuje 3,5zł

    ATmega ma kilka wyprowadzeń więcej ale mniej bajerów w środku (jak się mylę to mnie proszę poprawcie). Teraz wystarczy odpowiedzieć sobie na pytanie: jak często potrzebuję wielu wyprowadzeń? :P Czasem potrzebujemy tak naprawdę kilka.
  • #25 16515144
    elkopyto
    Poziom 12  
    Posty: 13
    Pomógł: 2
    Ocena: 2
    Ja polecam do programowania STM32 program https://www.embitz.org/. Według mnie jest dużo lepszy od programów opartych na Eclipse. Nie wymaga instalacji, ma gotowe szablony do projektów, zintegrowany kompilator gcc. Po instalacji można szybko stworzyć nowy projekt i od razu debbugować program. Przy wykorzystaniu SVD można prosto podglądać rejestry kontrolera. Oparty jest o CodeBlock. Ja jestem zachwycony.
  • #26 16515146
    matti0010
    Poziom 11  
    Posty: 319
    Pomógł: 8
    Ocena: 25
    elkopyto napisał:
    Ja polecam do programowania STM32 program https://www.embitz.org/. Według mnie jest dużo lepszy od programów opartych na Eclipse. Nie wymaga instalacji, ma gotowe szablony do projektów, zintegrowany kompilator gcc. Po instalacji można szybko stworzyć nowy projekt i od razu debbugować program. Przy wykorzystaniu SVD można prosto podglądać rejestry kontrolera. Oparty jest o CodeBlock. Ja jestem zachwycony.


    Ma jakieś ograniczenia? Można go wykorzystać komercyjnie?
  • #27 16515156
    elkopyto
    Poziom 12  
    Posty: 13
    Pomógł: 2
    Ocena: 2
    To darmowy program. Nie wiem jak wygląda sprawa z wykorzystaniem komercyjnym. Na stronie programu nie ma żadnej ceny zakupu. W ostatniej wersji pojawiła się opłata za korzystanie z serwera SVD. Pliki SVD można wgrać ręcznie. Podobno są na stronie internetowej ARM. Ja używam plików SVD z dysku, ale nie pamiętam czy sciągnełem je ze strony ARM czy mam je ze starszej wersji programu. Mogę je udostępnić.
  • #28 16515162
    Konto nie istnieje
    Konto nie istnieje  
  • #30 16515550
    Konto nie istnieje
    Konto nie istnieje  

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik z doświadczeniem w AVR i C poszukuje płytki oraz literatury do nauki ARM, wyrażając obawy dotyczące zrozumienia anglojęzycznych manuali. W dyskusji podkreślono, że znajomość angielskiego jest kluczowa, ponieważ większość dokumentacji i bibliotek jest dostępna tylko w tym języku. Rekomendowane płytki to STM32F0Discovery oraz STM32F4Discovery, z sugestią, aby rozpocząć naukę od STM32F103, który jest bardziej przystępny dla osób z doświadczeniem w AVR. Wskazano również na przydatność poradnika kolegi Szczywronka, który ułatwia przesiadkę z AVR na ARM, oraz na znaczenie analizy kodu i dokumentacji. Użytkownicy polecili różne IDE, w tym openSTM32 oraz Embitz, jako bardziej przyjazne dla początkujących. W literaturze polecano książkę "Mikrokontrolery STM32 w praktyce" autorstwa Paprockiego, mimo że bazuje na starszych wersjach SPL.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA