Dobry czas na przeprowadzkę; 8 bitów umiera szybko; kiedy możesz kupić płytę za 5 USD z (na przykład) STM32F103, który jest raczej zdolnym 32-bitowym mikrokontrolerem ARM (nawet z USB!), nie ma wątpliwości, że czasy się zmieniły.
Masz już doskonałe odpowiedzi, ale przede wszystkim powiedziałbym „zapomnij o montażu” i prawie „zapomnij o dbałości o to, jak procesor działa na niskim poziomie” - pewnego dnia będzie narożna skrzynka, w której musisz się w nią zagłębić (konkretna optymalizacja lub debugowanie), ale rdzenie ARM wykonują kod C wyjątkowo dobrze (zgodnie z projektem) i rzadko się zapuszczasz w głąb wnętrzności.
Oznacza to, że poświęcisz pewną ilość czasu na walenie z problemami z kompilatorami (a zwłaszcza linkerami i plikami makefile) objaśnianie ci błędów, ale wszystkie one są do pokonania.
Wrażenia na temat działania ARM (tj. Książek procesora ARM) są gęste i niezbyt interesujące aż do dnia, w którym faktycznie trzeba zoptymalizować (i będziesz zaskoczony, jak rzadko to się dzieje, gdy masz 32-bitowe rejestry i twój PLL) d Zegar procesora jest w zakresie 100 MHz).
Zestaw instrukcji ARM „old skool” jest znacznie łatwiejszy do odczytania z demontażu niż znacznie nowszy „Thumb2” - taki jest w większości nowoczesnych ARM-ów na poziomie mikrokontrolera (Cortex) - ale znowu wewnętrzne instrukcje instrukcji w asemblerze głównie znikają w tle; jeśli masz odpowiedni zestaw narzędzi (szczególnie porządny debugger na poziomie źródła z punktami przerwania / pojedynczym krokiem itp.), po prostu nie przejmujesz się zbytnio tym, że jest to ARM.
Gdy znajdziesz się w świecie 32-bitowych rejestrów i 32-bitowych szerokości magistrali danych i wszystkiego, co kiedykolwiek chciałeś, dostępne na chipie, nigdy nie będziesz chciał wrócić do 8-bitowego procesora; w zasadzie często nie ma kary za „łatwe” i pisanie kodu, aby był bardziej czytelny niż wydajny.
Jednak ... urządzenia peryferyjne ... tak i jest tarcie.
Na pewno masz mnóstwo rzeczy do zabawy na nowoczesnych MCU, a wiele z nich to dość fantazyjne rzeczy; często znajdziesz świat wyrafinowania daleko poza AVR, PIC i 8051 urządzeniami peryferyjnymi.
Jeden programowalny zegar? Nie, miej osiem! DMA? Co powiesz na 12 kanałów z programowalnym priorytetem i trybem seryjnym oraz trybem łańcuchowym i automatycznym przeładowaniem oraz
I2C? I2S? Dziesiątki opcji miksowania pinów? Piętnaście różnych sposobów przeprogramowania pamięci flash na chipie? Pewnie!
Często wydaje się, że przeszedłeś z głodu na ucztę z urządzeniami peryferyjnymi i często zdarza się, że są całe fragmenty układu, które podziwiasz, ale których prawie nie używasz (stąd; zegar bramkowy).
Ilość sprzętu na chipie (i odmiany tego tylko w linii chipów jednego dostawcy) jest obecnie dość zadziwiająca. Jeden sprzedawca chipów będzie oczywiście ponownie używał bloków IP, więc kiedy poznasz pewną markę, staje się to łatwiejsze, ale „gówno zrobiło się teraz craaaazy”.
W każdym razie urządzenia peryferyjne i ich interakcje (i DMA i przerwania i alokacja magistrali oraz i i ...) są tak skomplikowane (i czasami nie dokładnie tak , jak opisano w arkuszach danych), że inżynierowie często mają ulubiony zakres jednostek MCU ARM i mają tendencję do trzymania się tego po prostu dlatego, że znają urządzenia peryferyjne i narzędzia programistyczne.
Dobre biblioteki i narzędzia programistyczne (tj. Szybka kompilacja + cykl debugowania z odpowiednim debuggerem) oraz duży zestaw przykładowych projektów kodu przykładowego są obecnie absolutnie kluczowe dla twojego wyboru ARM MCU. Wygląda na to, że większość dostawców ma teraz wyjątkowo tanie tablice ewaluacyjne (
Jak jestem pewien, zauważyłeś, że kiedy przekroczysz poziom mikrokontrolera z ARM i przejdziesz do poziomu SOC (np. SOC w stylu Raspberry Pi / itp.), Reguły zmieniają się całkowicie i wszystko zależy od tego, jaki rodzaj Linuxa wybierasz uciekać, ponieważ - z znikoma nielicznymi wyjątkami - wariowałbyś, próbując cokolwiek innego.
Gruntownie; bez względu na procesor, który (być może) został wcześniej wybrany dla ciebie na tym koncercie, kup sobie garść super tanich płyt ewaluacyjnych opartych na Cortex od kilku różnych dostawców (TI, STM, Freescale i więcej) zrób hack z dostarczonym przykładowym kodem.
Ostatnia rada; gdy znajdziesz stronę trzecią lub trzecią w arkuszu danych opisującym opcje miksowania pinów dla dokładnego numeru części, z którym pracujesz, możesz wydrukować go i przykleić na ścianie. Dowiedzenie się późno w projekcie, że pewna kombinacja urządzeń peryferyjnych jest niemożliwa z powodu multipleksowania pinów, nie jest przyjemnością, a czasami te informacje są tak zakopane, że przysięgam, że próbują to ukryć :-)