Dlaczego Arduino używa AVR? Rozumiem, że są one oficjalnym procesorem, ale nie ma powodu, dla którego kod nie mógłby być przeniesiony do ARM lub architektury Freescale innej niż koszt, prawda? Tak długo, jak jest wbudowana pamięć, pomyślałem, że migracja do tych części może być łatwa.
Widzę dużo ARM w przemyśle (wydaje się, że każdy sprzedawca popycha jednego do swoich projektów) i zastanawiałem się, dlaczego nie było więcej absorpcji w świecie programistów Arduino.
Odpowiedzi:
Tak i nie. Pracuję nad AVR32 dla konkretnego projektu, a środowisko programistyczne (w szczególności cykl kompilacji / programu / debugowania) jest przerażające w porównaniu do, na przykład, PIC32.
Klienci nie dbają o to, z wyjątkiem kosztów i konserwacji, aw przypadku systemu podobnego do arduino, programiści nie przejmowaliby się tym, ponieważ środowisko i cykl programowania arduino przeskakuje i przewyższa lepiej niż obecna konfiguracja AVR32.
Nie ma powodu, dla którego inny procesor nie mógłby być użyty, ale jest bardzo dobry powód, dla którego wybrali 8-bitowe urządzenie niższej klasy niż ARM, MIPS, PowerPC itp. Łatwość użycia.
Jeśli spojrzałeś na konfigurację nawet dolnych ramion, jest to rząd wielkości bardziej złożony (mapowanie pamięci, buforowanie itp.) Niż 8-bitowy procesor. Ale co ważniejsze - w tamtym czasie nie było procesorów uzbrojenia DIP, a te miały być używane i budowane przez artystów i hakerów, niekoniecznie elektroników i inżynierów, którzy czują się komfortowo nawet z 48-pinowym TQFP.
Powodem, dla którego AVR został wybrany zamiast PIC, jest to, że PIC tak naprawdę nie ma szeroko stosowanego, wolnego źródła, wolnego kompilatora C, między innymi (port SDCC nie jest dojrzały).
Głównie wynika to z łatwości użycia - złożoności, łatwości lutowania, kosztów oraz faktu, że nie ma takiej potrzeby. Deweloperom podoba się pomysł posiadania dużej mocy, ale pod koniec dnia, gdy wszystko, co musisz zrobić, to przesunąć serwomechanizmy i błyskać lampkami przy niskiej jakości FFT, 8-bitowy procesor jest w porządku.
Nawet dolne ARMS kory mózgowej wychodzące z 28-pinowych pakietów są nadal SOIC, a nie DIP.
AVR miał więc wszystkie właściwe funkcje:
W dużej mierze jest to nadal prawdą - nie znam ARM w formacie dip, a adaptery sprawiają, że jest znacznie droższy niż AVR. W przeważającej części producenci nie sądzą, że 32-bitowy procesor z pakietem DIP będzie bardzo opłacalny.
źródło
Nadchodzi rozwój uzbrojenia - spójrz na następujące projekty.
liść klonu
XDuino
Cortino
Illuminato
Rodzina ARM PRO
A teraz ARM w pakiecie DIP.
NXP LPC1114FN28
BASICchip
źródło
Ponieważ wydaje się, że szukasz odpowiedzi na opinię, oto moje 0,02 $. Niezależnie od tego, czy pracuję na ARM, czy AVR ma znaczenie (i dlatego zależy mi), głównie w oparciu o to, co próbuję zrobić. Są przypadki użycia, w których AVR ma sens, i są takie przypadki, gdy robi to ARM. Ogólnie rzecz biorąc, istnieje także kompromis między, powiedzmy, AVR i PIC.
Po pierwsze, podczas gdy prawdopodobnie będę miał kłopoty z powiedzeniem tego, „silny kontyngent w rodzinie Arduino” jest czymś w rodzaju głosowej mniejszości. Najbardziej znani ludzie (użytkownicy), z którymi się spotkałem, to tacy, którzy woleliby traktować swój sprzęt w taki sam sposób, jak wymyślili skrypt w języku Python, aby zrobić coś zabawnego, często z niższym poziomem zrozumienia zawiłości związanych z tym niż oni zrobiliby to, gdyby zrobili „z numpy import foo”. Chociaż sposób, w jaki Arduino robi rzeczy, ma pewne zalety, istnieje również wiele możliwości krytyki.
Myślę, że warto spojrzeć na AVR poza ekosystemem Arduino. Kontyngent Arduino również skorzystał bardzo dobrze z powodów, które uczyniły AVR czymś w rodzaju standardu dla hobbystów - płaszcz, który coraz bardziej przejmuje PIC, jeszcze zanim pojawił się arduino. Bezpośrednimi konkurentami AVR byłyby PIC oraz do pewnego stopnia MSP430, który zyskuje na popularności dzięki dużej sile marketingowej TI w połączeniu z narzędziami do subsydiowania.
Ekosystem
Jak wspomniano w innych odpowiedziach, AVR to jedna rodzina, która ma czysty, ustandaryzowany sposób na przejście od zera do cześć za pomocą bezpłatnych narzędzi. Port avr-gcc, elementy składające się na łańcuch narzędzi winavr, mnóstwo schematów programistycznych o różnym stopniu złożoności i cechach, ale wciąż związanych autorytetem wspieranym przez avrdude, znacznie ułatwia to niż radzenie sobie z opracowaniem łańcucha narzędzi.
Ekosystem PIC to koszmar, z dowolną liczbą kompilatorów, narzędzi programistycznych, asemblerów. Wiele z nich nie jest ze sobą kompatybilnych. Większość z nich jest płatna. Nie wszystkie są dobre. Co ważniejsze, nie ma standardu defacto. Alternatywne wersje darmowego / otwartego oprogramowania (powiedzmy SDCC) pozostawiają wiele do życzenia, ale ponadto nie udało im się uzyskać statusu standardu defacto, takiego jak avr-gcc i firma. Nawet po opracowaniu łańcucha narzędzi programowych będziesz musiał przynajmniej zainwestować w jakiegoś programistę. Zestaw PICkit może kosztować około 20 $, ale kiedy musisz dowiedzieć się, jak go kupić online (karty kredytowe, wysyłka międzynarodowa, problemy na rynku Forex), może być przełomem dla hobbystów. Nie ma dobra
MSP430 jest nieznacznie lepszy, głównie dlatego, że jest nowszy (co najmniej pod względem popularności) - Jest o wiele mniej hałasu, z którym trzeba się zmagać. TI dostarcza próbki IC z wydajnością, której nigdzie indziej nie widziałem. mspgcc jest w dobrej formie, a nawet oprogramowanie do debugowania open source, które nie jest trudne do znalezienia lub skonfigurowania. Problem polega jednak na tym, że nie jest tak przyjazny dla hobbystów, jak AVR. Nadal masz problem z Programistą, który jest droższy niż to, co musisz kupić za PIC. Operacja zasilania 3,3 V stanowi postrzeganą barierę dla osób przyzwyczajonych do logiki 5 V. I nie skaluje się w DIP - dostępne są te z niższej półki, ale nie po osiągnięciu bardziej rozwiniętych żetonów.
Łatwość użycia
Wydaje mi się, że DIP vs SMD jest ważniejszym rozróżnieniem, niż się często uważa. Układ DIP IC może być używany na desce do krojenia, na tablicach ogólnego przeznaczenia, jakkolwiek są nazywane w miejscu zamieszkania i tak dalej. Układ scalony SMD koniecznie wymaga uruchomienia produkcji lub zakupu kart adaptera, które nie zawsze są łatwe do uzyskania w pożądanym rozmiarze lub kształcie.
Istotna jest także jakość arkusza danych, uwagi dotyczące aplikacji i ich czytelność. Wydaje się, że Atmel wykonuje nieco lepszą pracę. Oczywiście jest to bardzo subiektywna ocena.
AVR mogą używać wewnętrznego RC, podczas gdy PIC często tego nie robią. Oni wymagają kryształu, co czyni go nieco ryzykowne w połączeniu z niedostatkiem zaufania.
AVR również wydawały się bardziej przyjazne w programowaniu systemowym w porównaniu do PIC kilka lat temu, chociaż bardzo łatwo mogłem się mylić.
AVR vs ARM
Twoje pytanie dotyczyło jednak AVR vs. ARM. Jak powiedziałem na początku, AVR i ARM zajmują różne przestrzenie w spektrum. Jeśli masz coś, co możesz zrobić za pomocą AVR, to dlaczego chcesz to zrobić za pomocą ARM? Procesory ARM są droższe, wymagają większej liczby części, zużywają więcej energii, tworzą bardziej skomplikowany kod, wymagają droższych procesów produkcyjnych. Lutowanie 100-pinowego TQFP jest droższe niż lutowanie 40-pinowego DIP / SOIC, w zależności od sposobu pomiaru kosztów. Może się to nie zdarzyć, jeśli produkujesz w dużych ilościach i korzystasz z przyjaznych technik produkcji, ale jeśli to robisz, różnica cen stanie się jeszcze bardziej przekonująca, aby wybrać tańsze rozwiązanie.
Jako podstawowy kontroler do ogólnego hakowania w domu lub co tam masz, powiedziałbym, że AVR jest łatwiejszy w użyciu, ponieważ: - Bardziej znormalizowany z perspektywy hobbystów, więcej kodu mogę ponownie użyć z Internetu, ponieważ nie ma tak wielu warianty kompilatora oraz różnice między nazwami rejestrów i API wśród członków rodziny. (Spróbuj przenieść kod LPC ARM na sprzęt ATMEL ARM, zobaczysz, co mam na myśli) - Kod staje się z natury bardziej skomplikowany (robi się. Naprawdę). - Zestaw narzędzi wymaga dodatkowej pracy przy konfiguracji. - Sprawia, że interfejs jest nieco łatwiejszy. Mechanizmy ARM generalnie upuszczają cię do logiki 3 na 3 lub 1 na 8, co sprawia, że połączenie z innymi zabawkami jest nieco problematyczne. - Tańsze - Uzyskanie układu ARM w lokalnym sklepie z narzędziami nie jest dla mnie opcją, gdzie mieszkam, uzyskanie AVR.
źródło
Jednym z powodów dużego zainteresowania społeczności Arduino jest fizyczna standaryzacja. Choć wygląd fizyczny jest niepozorny, dzięki włączeniu standardowej opcji rozszerzenia, programiści Arduino pozwolili ludziom wymyślić własne rozwiązania. Jeśli chcesz zastąpić podstawową kartę Arduino inną płytą, która korzysta z innego mikrokontrolera, możesz to zrobić. IIRC, ktoś już zbudował płytę opartą na PIC, która używa formatu Arduino. (Płyta PIC Ardunio nie ma tego samego kształtu, ale poza tym jest podobna.)
Kolejnym powodem sukcesu Arduino jest jego otwartość - większość mikrokontrolerów opartych na PIC została zamknięta; Użyli zastrzeżonych implementacji sprzętowych, więc jeśli chciałeś przeprojektować płytę, aby lepiej pasowała do konkretnej przestrzeni, nie miałeś szczęścia. Używali niestandardowego oprogramowania układowego i autorskich narzędzi programistycznych, więc jeśli miałeś błędy lub chciałeś rozszerzyć możliwości, nie miałeś szczęścia. Dzięki Arduino każdy element układanki jest otwarty: możesz kupować części w dowolnym miejscu, zmieniać ich rozmieszczenie według potrzeb, ulepszać lub modyfikować oprogramowanie układowe ORAZ narzędzia programistyczne. Możesz zacząć w prosty sposób z Arduino IDE, ale nadal możesz przejść do C lub Asemblera w dowolnym momencie.
Osobiście podoba mi się Arduino, ponieważ ma wiele rzeczy „w sam raz”: nie jest zbyt drogi, nie jest zamknięty w zastrzeżonych narzędziach, łatwo jest zacząć, ma wiele możliwości i ma dużą społeczność użytkowników , który wciąż się rozwija i robi porządne rzeczy.
źródło
Główną zaletą ATmel uCs jest to, że dostępny jest bezpłatny kompilator dla systemów Linux, PC i Mac. Dodaj do tego prosty wieloplatformowy interfejs GUI, a otrzymasz darmowy system programistyczny, który działa na wszystkich platformach.
Koszt jest głównym czynnikiem dla hobbystów. Ponieważ chcesz mieć cenę początkową w przedziale 30 USD, musisz mieć koszt uC, który nie przekracza kilku dolarów.
ARM byłby doskonałym kandydatem na płyty wyższej klasy. Wiele firm udziela licencji na rdzeń ARM i dodaje urządzenia peryferyjne. Wierzę, że istnieją darmowe kompilatory dla Linuxa, PC i MAC.
Bardzo podoba mi się Freescale Coldfire dla wysokiej klasy desek. Pracowałem nad tablicą do sprzętu testowego, który używał 5206e. Dodaliśmy trochę konwerterów DRAM i A / D i D / A o wysokiej dokładności. To było opłacalne rozwiązanie. Ostatnio nie porównywałem Coldfire do szerokiej gamy ARM.
Niektóre z 8-bitowych komputerów Freescale są ładne, ale nie jestem pewien, czy mają darmowe narzędzia.
źródło
Zgadzam się z pakietem zanurzeniowym, nie zgadzam się, że ramiona są trudniejsze do skonfigurowania, szt., Ale nie są to jedyne dzieciaki na bloku ramienia (sama atmel w tym przypadku). Z tego, co pamiętam i czego doświadczyłem, Atmel był i być może jest po prostu bardziej przyjazny programistom. Motyl AVR bardzo pomógł im w zdobyciu większej liczby użytkowników do ich i tak dobrej i zadowolonej bazy użytkowników. PIC był po prostu bolesny na wiele sposobów, narzędzia AVR były dostępne, programowanie było proste i nie kosztowało cię znacznie więcej niż niektóre przewody i złącze z shack radia. Narzędzia są dostępne i bezpłatne, ale nie tak łatwe jak główna linia gcc, w której znajdziesz rozwiązania dla ręki i kciuka. Na długo przed pojawieniem się arduino AVR był chipem z wyboru w projektach hobbystycznych.
Obecnie nic nie może konkurować z ARM. W przypadku każdego innego procesora, którego dotkniesz w ciągu dnia, dotkniesz kilku ARM co najmniej. Dla niektórych prawie wszystkiego, czego dotykasz, używa ARM. Jest to naturalne dopasowanie jako 8-bitowy zabójca, może uzyskać znacznie lepszą wydajność niż 8-bitowy dla tego samego rozmiaru, ceny itp. Narzędzia są znacznie lepsze, zestaw instrukcji jest znacznie czystszy niż większość konkurencji, więc ten sam kod działa znacznie szybciej itp. Ponieważ każdy i ich brat mogą osadzić ARM i nie jest on zamknięty w firmie takiej jak pic, avr, msp430, istnieje wiele różnych rozwiązań i wiele różnych sposobów radzenia sobie z mikrokontrolerami mieszanin rom / ram i tablica wektorów przerwań. Niestety najbardziej popularne rozwiązanie jest najbardziej bolesne. Wypróbuj sam7 lub coś w tym stylu lub gwiazdę.
Problemem nie zawsze jest procesor, niektóre układy mogą mieć problemy, inne mają inne znane problemy. niektóre mogą nie oferować styku typu otwarty kolektor ze słabym podciągnięciem i trzeba by umieścić sprzęt poza układem, aby połączyć się z czymś, gdzie inny może mieć ten dostępny na jednym lub wszystkich stykach. Polecam próbkowanie w terenie, wypróbowanie różnych firm i rozwiązań, aby gdy chcesz mieć niską moc, możesz łatwo użyć msp430, chcesz mocy obliczeniowej w małym chipie, z ramieniem lub jeśli chcesz stworzyć otwarty projekt, który masz nadzieję inni zbudują w swoim garażu, jeśli możesz, oprzyj go na arduino.
Najważniejsze jest jednak to, że tak naprawdę zależy to od aplikacji i sposobu jej pisania oraz wydajności i zasobów, którymi jesteś zainteresowany. W ten sam sposób, w jaki gcc lub firefox będą działać na wielu różnych platformach i procesorach, z pewnością możesz napisz aplikację C, aby działała na wielu różnych mikrokontrolerach ... JEŻELI... masz warstwę abstrakcji specyficzną dla mikrokontrolera, co ma koszt. jeśli mikrokontrolery mają wystarczająco podobne funkcje i funkcje, których potrzebujesz, i planujesz z wyprzedzeniem i włączysz je. Jeśli następna platforma ma wystarczającą ilość pamięci / zasobów. Bardziej interesuje Cię przenośność niż wydajność itp. Prawdopodobnie musisz to zaplanować z wyprzedzeniem. lub przynajmniej przy pierwszym przełączeniu z A na B ponownie projektujesz oprogramowanie, jeśli / kiedy jest trzecia zmiana z B na C, jest to mniej bolesne.
źródło
Wiem, że powiedziałeś „inne niż koszty”, ale tak naprawdę to jest najważniejsza rzecz dla hobbystów. Nie potrzebujesz więcej niż jednego UART lub więcej niż jednego SPI, co ma być tanią, ogólną platformą. Gdy zaczniesz potrzebować prędkości> 20 MHz, powinieneś naprawdę spojrzeć na konfigurację niestandardową (oczywiście ymmv)
źródło
Kilka drobnych punktów nie poruszonych w innych komentarzach:
Arduino jest przeznaczony do małych projektów we / wy, dodając niewielką ilość inteligencji do obwodu. Są to zazwyczaj jednowątkowe urządzenia czasu rzeczywistego, w których ARM byłby bardzo zmarnowany. Oczywiście istnieje wiele opcji dla kart ARM, ale przypadek użycia jest zwykle inny - zazwyczaj uruchamiają się one w pełnym systemie operacyjnym.
Dzięki ukierunkowaniu na ten niewielki przypadek użycia wszystko inne staje się łatwiejsze - liczba pinów, elementy pomocnicze, zużycie energii itp.
To powiedziawszy, w przypadku docelowego użycia Arduino, to nie tak, że go slummujesz. Procesor 16MHz to duży szum dla Twojego budzika ze zintegrowanym chaserem LED (lub cokolwiek innego :)
źródło
Arduino jest dostępne na innych procesorach. Sprawdź na przykład ChipKit firmy Microchip. Korzysta z PIC 32.
źródło
Druga próba (oryginalny tytuł posta i pytanie z +3 lata temu zostały zmienione od oryginalnej odpowiedzi):
Kurczak i jaja, ale szczególnie w ciągu ostatnich kilku lat (ARM 2007 wprowadził architekturę Cortex-M), 32-bitowe jednostki MCU zyskały na popularności, a dostawcy byli lepsi w zapewnianiu szybszego i łatwiejszego dostępu dla społeczności EE podczas projektowania w> 8- bit micros (lepsze narzędzia SW, darmowe narzędzia, więcej przykładów ...).
Ponieważ Atmel, wraz ze 100 innymi, oferuje również urządzenia Cortex-M i zaktualizował swój zestaw narzędzi do obsługi AVR do ARM, a także od dawna, podano ścieżkę aktualizacji Arduino (?). Ale pojawiają się alternatywy i wydają się obejmować alternatywne próby zdobycia udziału w „hobbistycznym” ciele: np. Mbed przez NXP / ARM, a ostatnio „CoAction Hero”: 32-bitowa płyta ARM Cortex-M3 Open-Source na KickStarter .
Ostateczna myśl, 3 lata po wstępnym pytaniu: kiedy wszyscy dostawcy oferują 32-bitowe rdzenie Cortex-M - czy Arduino może teraz stać się innym niż Atmel?
Oryginalna odpowiedź: Alf-Egil Bogen, jeden ze współzałożycieli Atmel AVR, przygląda się niektórym przyczynom przejścia branży z 8-bitowych na 32-bitowe rdzenie ARM na swoim blogu wideo tutaj http: //blog.energymicro. com / 2013/04/24 / avr2arm / .źródło