Mój zespół sprzętowy planuje użyć 8-bitowego mikrokontrolera Atmel AVR do przyszłego projektu.
O ile wiem, musi być zaprogramowany w C. Znalazłem JVM dla AVR, chociaż jest on bardziej ograniczony niż natywne biblioteki C z Atmel.
Czy możesz zasugerować mi 8-bitowy mikrokontroler obsługujący Javę?
PS. Nie znam C i nie mam doświadczenia w programowaniu mikroprocesorowym.
microcontroller
avr
java
sterz
źródło
źródło
big_floating_skirt
obiekt implementującyboat
interfejs worg.buoyant
pakiecie orazpole
obiekty, które mają jakiś dziwny wzorzec dziedziczenia, zjava.net
którym już nie pamiętam (ale jest to wyraźnie opisane w UML)?Odpowiedzi:
Jeśli nie masz doświadczenia w dziedzinie programowania mikroprocesorów / mikrokontrolerów, prawdopodobnie powinieneś najpierw nauczyć się języka C, aby zrozumieć, kiedy i dlaczego Java jest złym wyborem dla większości projektów mikrokontrolerów.
Czy przeczytałeś ograniczenia dotyczące JVM, które połączyłeś? Obejmuje następujące problemy:
Jeśli nie wiesz, co oznaczają te ograniczenia, upewnij się, że masz plan B, jeśli okaże się, że nie możesz faktycznie wykonać projektu z Javą z powodu ograniczeń przestrzeni i prędkości.
Jeśli nadal chcesz korzystać z Javy, być może dlatego, że spodziewasz się, że urządzenie będzie programowane przez wielu ludzi znających tylko Javę, zdecydowanie sugeruję zakup większego sprzętu, prawdopodobnie czegoś, co obsługuje wbudowany system Linux. Zobacz tę stronę Oracle, aby znaleźć specyfikacje do uruchomienia wbudowanej maszyny JVM, w często zadawanych pytaniach do dyskusji zalecają minimum 32 MB pamięci RAM i 32 MB pamięci Flash. To około 32 000 razy więcej pamięci RAM i 10000 razy więcej niż flash AVR, na który patrzysz. Strona Oracle Embedded Intro Intro zawiera bardziej szczegółowe informacje na temat ograniczeń JVM. Ich głos jest, jak można się domyślać, dużo bardziej przyjazny dla Javy niż mój. Należy pamiętać, że tego rodzaju sprzęt jest znacznie trudniejszy do zaprojektowania niż 8-bitowy AVR.
Jestem studentem inżynierii komputerowej z nieletnią informatyką. Dział CS mojego uniwersytetu wypił program Java Kool-help, więc wielu studentów programu inżynierskiego zna tylko Javę (co jest dla programisty smutną sytuacją, przynajmniej naucz się języka Python lub C ++, jeśli nie chcę się uczyć C ...), więc jeden z moich profesorów opublikował Ściągacz C dla studentów z rocznym doświadczeniem w Javie. To tylko 75 stron; Sugeruję przeczytanie lub przejrzenie go przed podjęciem decyzji. Moim zdaniem C jest najbardziej wydajnym, trwałym i profesjonalnym językiem, w którym można opracować osadzony projekt.
Inną alternatywą do rozważenia jest platforma Arduino . Wykorzystuje uproszczoną wersję z Wiring języku, który jest jak C ++ bez obiektów lub nagłówków. Może działać na wielu układach AVR, zdecydowanie nie jest ograniczony do ich sprzętu. Zapewni to łatwiejszą krzywą uczenia się niż skakanie prosto do C.
Podsumowując,
tekst alternatywny: zajęło mi pięć prób znalezienia właściwej, ale w końcu udało mi się uratować naszą noc - jeśli nie łódkę - na końcu.
źródło
Najpopularniejszym środowiskiem programistycznym dla Atmel AVR jest Arduino . Język Arduino jest podzbiorem C ++.
„Szkice” / programy Arduino wydają się bardzo podobne do Java. Język Wiring, z którego wywodzi się Arduino, ma implementacje w C ++ ( Arduino ), Java ( Przetwarzanie ) i JavaScript ( przetwarzanie.js ).
Oba języki mają ten sam styl deklaracji, konstrukcje pętli i operatory arytmetyczne ze względu na ich wspólne pochodzenie w Algol68. Zazwyczaj wszystkie obiekty w Arduino są deklarowane globalnie lub na stosie, więc podobnie jak Java, funkcje składowe wywoływane są przez
.
operatora (np.LED.flash()
).Język będzie bardzo dobrze znany programistom Java - ale, co ważne, szkice Arduino są kompilowane w natywny kod, który działa z pełną prędkością i pełnym dostępem do sprzętu. Ma to kluczowe znaczenie dla jak najlepszego wykorzystania mikrokontrolera.
Oto API .
Arduino zapewnia wszystko, czego potrzebujesz: tani sprzęt, bezpłatne zintegrowane środowisko programistyczne i bootloader (dzięki czemu możesz ładować kod przez USB / szeregowy).
źródło
Chcę wyjaśnić, że nie korzystałem z nich wcześniej, ale przed laty istniała nazwa Javelin. Możliwe, że Parallax je nabył lub coś takiego, ponieważ teraz pojawia się tylko „Pieczęć oszczepu”. Wiele lat temu istniała także firma Velocity Semiconductor, która (rzekomo) zastąpiła moduły podstawowe Rabbit Semiconductor i miała sprzętową maszynę JVM, ale ta firma najwyraźniej zniknęła. Powodzenia w wyszukiwaniu!
źródło
Firma Sun Microsystems tworzyła platformę o nazwie Sun Spot, która była zasadniczo wbudowaną platformą Java. Teraz oczywiście nie ma już Sun Microsystems (Oracle je kupił), ale wygląda na to, że nadal możesz kupić Sun Spots - http://www.sunspotworld.com/products/ . Nie przepadam za pomysłem używania Javy w środowisku osadzonym (zły poziom abstrakcji dla zadania imho), ale wydaje się, że jest to najbardziej naturalna platforma osadzona dla Javy. Zwróć uwagę na specyfikację tych rzeczy - są to wytrzymałe pamięci RAM 180 MHz / 512 kB i nie są tanie w cenie 400 USD za zestaw startowy.
Będę więc drugą lub trzecią osobą udzielającą odpowiedzi na pytanie Arduino. Istnieje jedna społeczność, która może cię wspierać, jeśli potrzebujesz pomocy. A jeśli potrzebujesz sprzętu peryferyjnego, poszukaj w Google „Arduino Shields” i daj się zaskoczyć - możesz zrobić wszystko, od sterowania serwosilnikami po przeskoczenie w sieci bezprzewodowej 802.11 z odpowiednią kombinacją osłon. Nauka języka C (wskaźnik mówi co !?) nie jest praktyczna, ale możesz zacząć pisać szkice Arduino w mgnieniu oka ... Możesz także uzyskać „prawdziwe” platformy Arduino za około 30 USD i klony (np. RBBB lub DorkBoard) za mniej niż 15 USD.
źródło
Paralaksa składa się o Javelin Stamp , CoM (Computer-on-Module), który obsługuje JVM.
Kosztuje 60 USD i wykonuje błyskawicznie ~ 8500 instrukcji Java / s.
Ponadto PCB jest różowe (Naprawdę!)
źródło
Systemy Ajile tworzą różnorodne wbudowane układy java w czasie rzeczywistym i płyty ewaluacyjne.
Prowadzą goły metal java. To bardzo przyjemne.
www.ajile.com tworzą żetony i ewaluacyjne tablice.
www.systronix.com sprzedaje różne wbudowane urządzenia Java.
Używałem AJ-100 od ajile do wymagającej pracy, są bardzo przyjemne w pracy. I nie, nie są tak tanie jak AVR, ale przetwarzają dane jak tanie pentium.
Układy Ajilesa reagują na przerwania (opóźnienie przerwania) w czasie krótszym niż 1 mikrosekunda.
źródło
Moje osobiste doświadczenie jest takie, że kod C do programowania i rozpoczynania pracy z AVR jest dość łatwy, pochodzę również z wielu lat pracy w Javie, a po około 2 miesiącach używania szkiców arduino porzuciłem środowisko i wybrałem avr-gcc, strony jak avrfreaks ułatwiają znalezienie odpowiedzi na typowe problemy. (Nadal robię wszystko na moim zaufanym Arduino Duemillenove)
Używanie Eclipse do kompilacji i „wdrażania”, tj. Zapisu do układu, jest również miłe, ponieważ nie mam do czynienia z innym IDE
Myślę, że tak naprawdę trudniej jest ominąć rejestry, rejestry 16-bitowe i odczytać je w odpowiedniej kolejności, przerwań, timerów, sprzętowego PWM, niż sam język programowania.
źródło
Chociaż ogólnie należałbym do obozu „ucz się C i rozumiem, co faktycznie robią procesory”, jeśli chodzi o pracę osadzoną, warto zauważyć, że układ małego ramienia nie jest o wiele droższy niż AVR i jest prawie możliwy pozycja do obsługi prostych zadań na JVM.
źródło
NanoVM to wirtualna maszyna Java zaprojektowana do pracy na 8-bitowych mikrokontrolerach AVR.
(ze strony głównej)
źródło
To nie jest całkiem Java - ani 8 bitów, ale dostępny jest interpreter JavaScript dla mikrokontrolerów ARM o niskiej mocy, zwany Espruino .
źródło