No właśnie. Nauka nowej platformy to inwestycja. Ja wybrałem AVR32, gdyż do jednego projektu był mi potrzebny szybki procek 60MHz. Nie wiem, czy coś przegapiłem, ale nie znalazłem na tyle szybkiego ARM (oświećcie mnie, jeśli się mylę, to jeszcze w tym tygodniu zacznę się uczyć o ARM). Niemniej bardzo chętnie bym wszedł w ARM. W przypadku AVR32 żadna firma nie oferowała (teraz może jest inaczej) płytki z wlutowanym prockiem, kondensatorami, kwarcem, co byłoby dla mnie bardzo przydatne. ARM jest powszechny i myślę, że tu takie płytki można byłoby kupić bez problemu.
O rety! Wejdź na stronę Kamami i zerkni do działu minimoduły:
formatting link
na oko jest około 150 modułów izestawów uruchomieniowych z ARMami. Do wyboru, do koloru. Chyba zdecydowana większość potrafi pracować z zegarem 60MHz a część nawet wielokrotnie więcej.
Jestem hobbystą, dopiero niedawno zacząłem z ARMami - wcześniej AVR, 8051.
Na razie mój kurs to procesory ST: cortex M0/M3 - są tańsze i z większymi możliwościami niż AVR a podobnie proste w obsłudze (1 zasilanie, oscylator wbudowany).
Próbowałem AT91SAM7S, ale moje doświadczenia są bardzo złe - z trzech procesorów, zakupionych w różnym czasie jeden ma pamięć do której się nie można dostać z poziomu JTAGa (ogólnie nie działa), drugi się nie enumerował po usb - w końcu z oscyloskopem w ręku doszedłem, że na kwarcu jest "prawie jak sinus" o częstotliwości pływającej od 17.9 do
18.7MHz (powinno być 18.432). W trzecim SAM-BA (wg. dokumentacji domyślny bootloader) nie była zainstalowana, ale po "recovery" ruszył i jak na razie działa.
Prośba o nakierowanie mnie na jakąś rodzinę ARM, w którą mógłbym wejść i pozostać na lata. Do tej pory programowałem mikrokontrolery Atmel AVR ATmega8/16/32. Używałem WinAVR. Mam doświadczenie w programowaniu AVR32 (60MHz). Do mikrokontrolera podłączam wyświetlacze LCD znakowe (będę chciał także niewielkie monochromatyczne graficzne). Steruję różnymi urządzeniami (np. kluczuję tranzystorami bądź tyrystorami w falownikach z relatywnie dużą częstotliwością). Korzystam z PWM, UART, przetworników A/C, timerów, przerwań sprzętowych wyzwalanych sygnałami zewnętrznymi bądź wyzwalanych tikami trzech zegarów. Podłączam przyciski i przełączniki. Zapisuję wprowadzone przez użytkownika ustawienia urządzenia w nieulotnej pamięci EEPROM.
Chciałbym, aby wybrana rodzina ARM umożliwiała mi to wszystko co powyżej, a ponadto oferowała większą moc oraz spełniła jakieś moje potrzeby w przyszłości (może USB, może kiedyś Ethernet, może kolorowy wyświetlacz).
Moje potrzeby:
- taktowanie od 60MHz do kilkuset MHz (teraz chciałbym mieć ze 100MHz, a w przyszłości 200-300MHz byłoby OK; ew. łatwość migracji od wolniejszych do tych szybszych, w obrębie produktów danego producenta; do jednego projektu może mi starczy 60MHz, a do innego chciałbym 200MHz
Aby nie płacić licencji ARMowi od każdego procka. Wymyślili swojego własnego 32-bitowego RISCa i próbują namówić świat na kupowanie go.
Podobnie zresztą postąpił Microchip z serią PIC32, tyle że AFAIR zamiast wymyślać procek od zera wzięli sprawdzoną konstrukcję jądra firmy MIPS. Pewnie tańszą niż ARM. Zresztą same procki z jądrem MIPS są popularne m.in. w routerach a kiedyś też były stosowane w PDA równolegle z ARMami. Teraz w urządzeniach przenośnych są stosowane prawie wyłącznie ARMy.
No to tutaj mamy pierwszy problem - bo im szybszy procek tym (zwykle) bardziej skomplikowane jądro, brak wewnętrznej pamięci Flash oraz dużego RAMu (jest tylko cache). Przy 200MHz nie ma co liczyć na coś mniejszego niż 926EJ-S (np. ze stajni Atmela AT91RM9200 czy AT91SAM9261). Mocno zintegrowane układy za to (np. 512KB Flash + 64KB RAMu w środku) są dużo wolniejsze (np. atmelowy AT91SAM7S512 chodzi na 48MHz). Może ktoś poda przykłady innych producentów ale nie liczyłbym na dobrze zintegrowanego ARM7TDMI szybszego niż 60-80 MHz.
Jak na razie ARMy dobrze się trzymają. Conajwyżej przeskoczysz tylko do innego producenta (przerobisz tylko sterowniki I/O a reszta kodu pozostanie taka sama).
Małe szanse nawet z prostymi ARMami. Z obsługą przerwań czy USB tyle się narobisz, że od razu lepiej pomyśl chociaż o małym darmowym systemie. Nawet gdyby miał tam działać tylko 1 wątek. Polecam zainteresować się np. Nut/OS lub FreeRTOS.
A no właśnie. Ale nawet tych kilkudziesięciu KB RAMu nie mają procki, od których wymagasz 200 czy 600 MHz. Zresztą przy ARMach zajętość pamięci szybko rośnie i szybko stwierdzisz, że zamiast 32 wolałbyś jednak mieć
512 KB RAMu.
W Atmelach nie znam (za to procek może sam programować swój Flash i tam od biedy emulować niby EEPROM). Może ktoś podać przykłady od innych producentów?
No to większy wybór chyba tylko NXP (LPCxxx) oraz Atmela (AT91xxx). Innych producentów procków ARM (ST, TI) znajdziesz conajwyżej pojedyncze płytki.
Są od wszystkich producentów. Ale często ceny fabryczne bardzo nie zachęcają.
Jest do wszystkiego.
A tu jest akurat pełna zgodność i do wszystkiego pasuje gcc. Podstawowe instalacje pecetowe to Yagarto oraz gnuarm+Cygwin. Można do tego podczepić Eclipse, bardzo wygodne debugowanie przez JTAG (jak w AVR Studio dla AVRków z JTAGiem).
No to do rozpoczęcia zabawy z ARMami polecam jakiś zestaw startowy z AT91SAM7S256. Sam procek kosztuje ze 30 zł (tyle co ATmega128) a ma
256KB Flasha i 64KB RAMu oraz USB. Śmiga na 48 MHz (a gdy nie używasz USB to do 55MHz), wystarczy do wielu zastosowań gdzie ATmedze nie starcza RAMu lub po prostu brakuje wydajności.
:) Nie wiedziałem, że go nie rozwijają. Od ponad roku nie używam. Yagarto rzeczywiście było lepszym przykładem. Ostatnio z kompilatora ARMa korzystam tylko w Android NDK.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.