Tim perangkat keras saya berencana untuk menggunakan mikrokontroler Atmel AVR 8-bit untuk proyek mendatang.
Sejauh yang saya tahu, itu harus diprogram dalam C. Saya telah menemukan JVM untuk AVR, meskipun lebih terbatas daripada perpustakaan C asli dari Atmel.
Bisakah Anda menyarankan saya mikrokontroler 8-bit yang mendukung Java?
PS. Saya tidak tahu C dan saya tidak berpengalaman dalam pemrograman mikroprosesor.
microcontroller
avr
java
sterz
sumber
sumber
big_floating_skirt
objek yang mengimplementasikanboat
antarmuka dalamorg.buoyant
paket, danpole
objek, yang memiliki semacam pola pewarisan aneh denganjava.net
yang saya tidak ingat sekarang (tetapi jelas dijelaskan dalam UML)?Jawaban:
Jika Anda tidak berpengalaman dalam bidang pemrograman mikroprosesor / mikrokontroler, Anda mungkin harus belajar C terlebih dahulu, sehingga Anda dapat memahami kapan dan mengapa Java adalah pilihan yang buruk untuk sebagian besar proyek mikrokontroler.
Apakah Anda membaca batasan pada JVM yang Anda tautkan? Ini termasuk masalah-masalah berikut:
Jika Anda tidak terbiasa dengan arti pembatasan ini, pastikan Anda memiliki paket B jika ternyata Anda tidak dapat benar-benar melakukan proyek dengan Java karena batasan ruang dan kecepatan.
Jika Anda masih ingin menggunakan Java, mungkin karena Anda mengharapkan perangkat diprogram oleh banyak orang yang hanya mengenal Java, saya sangat menyarankan untuk mendapatkan perangkat keras yang lebih besar, kemungkinan sesuatu yang menjalankan Linux tertanam. Lihat halaman ini dari Oracle untuk beberapa spesifikasi yang akan diambil untuk menjalankan JVM yang tertanam, di FAQ diskusi mereka, mereka merekomendasikan minimal 32MB RAM dan 32MB Flash. Itu sekitar 32.000 kali RAM dan 1.0000 kali Flash AVR yang Anda lihat. Halaman Java Embedded Intro Oracle menjelaskan lebih detail tentang batasan JVM. Nada suara mereka, seperti yang Anda duga, jauh lebih ramah-Java daripada saya. Sadarilah bahwa jenis perangkat keras ini jauh lebih sulit untuk dirancang daripada AVR 8-bit.
Saya seorang mahasiswa teknik komputer dengan minor ilmu komputer. Departemen CS universitas saya telah meminum Java Kool-aid, jadi banyak siswa dalam program teknik hanya mengetahui Java (yang merupakan keadaan menyedihkan bagi seorang programmer, setidaknya mempelajari beberapa Python atau C ++ jika Anda tidak ingin belajar C ...), jadi salah satu profesor saya menerbitkan C Cheat Sheet untuk siswa dengan pengalaman Java selama satu tahun. Hanya 75 halaman; Saya sarankan Anda membaca atau membaca sepintas lalu sebelum membuat keputusan. Menurut pendapat saya, C adalah bahasa yang paling efisien, tahan lama, dan profesional untuk mengembangkan proyek tertanam.
Alternatif lain untuk dipertimbangkan adalah kerangka kerja Arduino . Ini menggunakan versi dilucuti dari bahasa Wiring , yang seperti C ++ tanpa objek atau header. Itu dapat berjalan pada banyak chip AVR, itu pasti tidak terbatas pada perangkat keras mereka. Ini akan memberi Anda kurva belajar yang lebih mudah daripada melompat langsung ke C.
Kesimpulannya,
teks Alt: Butuh lima kali mencoba menemukan yang tepat, tetapi saya berhasil menyelamatkan malam kami - jika bukan kapal - pada akhirnya.
sumber
Lingkungan pemrograman yang paling populer untuk Atmel AVR adalah Arduino . Bahasa Arduino adalah bagian dari C ++.
Arduino "sketsa" / program muncul secara sintaksis sangat mirip dengan Java. Bahasa Wiring yang berasal dari Arduino memiliki implementasi dalam C ++ ( Arduino ), Java ( Processing ) dan Javascript ( processing.js ).
Kedua bahasa memiliki gaya deklarasi, konstruksi loop, dan operator aritmatika yang sama karena nenek moyang mereka yang sama di Algol68. Biasanya, semua objek di Arduino dideklarasikan secara global atau di stack, jadi seperti Java, fungsi anggota dipanggil dengan
.
operator (mis.LED.flash()
).Bahasa ini akan sangat akrab bagi seorang programmer Java - tetapi, yang penting, sketsa Arduino dikompilasi ke dalam kode asli yang berjalan dengan kecepatan penuh dengan akses perangkat keras penuh. Ini sangat penting untuk mendapatkan hasil maksimal dari mikrokontroler Anda.
Ini APInya .
Arduino menyediakan semua yang Anda butuhkan untuk memulai: perangkat keras berbiaya rendah, lingkungan pengembangan terintegrasi gratis, dan bootloader (sehingga Anda dapat memuat kode melalui USB / serial).
sumber
Saya ingin menjelaskan bahwa saya belum pernah menggunakannya sebelumnya, tetapi dulu ada satu tahun yang lalu yang disebut Javelin. Mungkin saja Parallax telah mengakuisisi mereka atau sesuatu, karena sekarang satu-satunya yang muncul adalah "Stempel Javelin". Bertahun-tahun yang lalu ada juga yang dulu bernama Velocity Semiconductor, yang membuat penggantian (untuk) drop-in untuk modul inti Rabbit Semiconductor, dan memiliki JVM di perangkat keras, tetapi perusahaan itu tampaknya telah menghilang. Semoga berhasil dalam pencarian Anda!
sumber
Sun Microsystems digunakan untuk membuat platform yang disebut Sun Spot yang merupakan platform java tertanam pada dasarnya. Sekarang jelas Sun Microsystems sudah tidak ada lagi (Oracle membelinya), tetapi sepertinya Anda masih dapat membeli Sun Spots - http://www.sunspotworld.com/products/ . Saya tidak terlalu suka dengan ide menggunakan Java di lingkungan yang tertanam (level abstraksi yang salah untuk pekerjaan imho), tetapi ini tampaknya merupakan platform yang paling alami untuk Java. Perhatikan spesifikasi pada hal-hal ini - mereka adalah tugas berat 180MHz / RAM 512k, dan mereka tidak murah di $ 400 untuk starter kit.
Jadi saya akan menjadi yang kedua atau ketiga dari responden advokasi Arduino untuk pertanyaan ini. Ada satu komunitas di luar sana yang mendukung Anda jika Anda membutuhkan bantuan. Dan jika Anda memerlukan perangkat keras periferal, lihat "Arduino Shields" di google dan kagum - Anda dapat melakukan apa saja dari motor kontrol servo untuk naik ke jaringan nirkabel 802.11 dengan kombinasi perisai yang tepat. Tidak praktis untuk mempelajari C (pointer mengatakan apa !?) tanpa waktu latihan, tetapi Anda dapat mulai menulis sketsa Arduino dalam waktu singkat ... Anda juga bisa mendapatkan platform Arduino "asli" sekitar $ 30 dan klon (mis. RBBB atau DorkBoard) dengan harga di bawah $ 15.
sumber
Parallax membuat Javelin Stamp , sebuah CoM (Computer-on-Module) yang menjalankan JVM.
Ini $ 60 dan mengeksekusi ~ 8,500 instruksi Java / detik.
Juga, PCB berwarna merah muda (Sungguh!)
sumber
Sistem ajile membuat berbagai chip java asli dan papan eval yang tertanam asli.
Mereka menjalankan bare metal java. Sangat menyenangkan.
www.ajile.com membuat chip dan papan eval.
www.systronix.com menjual berbagai perangkat keras java yang disematkan.
Saya telah menggunakan AJ-100 dari ajile untuk pekerjaan yang menuntut, mereka sangat baik untuk bekerja dengan. Dan tidak, mereka tidak semurah avr tetapi mereka memproses data seperti pentium low-end.
Chip Ajiles merespons interupsi (interupsi latensi) dalam waktu di bawah 1 mikrodetik.
sumber
Pengalaman pribadi saya adalah bahwa kode C untuk memprogram dan memulai dengan AVR cukup mudah, saya juga berasal dari bertahun-tahun melakukan java, dan setelah sekitar 2 bulan menggunakan sketsa arduino saya menjatuhkan lingkungan dan pergi untuk avr-gcc, situs seperti avrfreaks memudahkan untuk menemukan jawaban untuk masalah umum. (Saya masih melakukan semua pada Arduino Duemillenove yang saya percayai)
Menggunakan gerhana untuk mengkompilasi dan "menyebarkan" yaitu menulis ke chip, juga bagus karena saya tidak harus berurusan dengan IDE lain
Saya pikir sebenarnya lebih sulit untuk mendapatkan sekitar register, register 16 bit dan membacanya dalam urutan yang tepat, menyela, timer, PWM perangkat keras, daripada bahasa pemrograman itu sendiri.
sumber
Sementara saya biasanya akan menjadi "belajar C dan memahami apa prosesor sebenarnya" kamp di mana pekerjaan tertanam yang bersangkutan, ada baiknya menunjukkan bahwa chip lengan kecil tidak jauh lebih mahal daripada AVR, dan dalam hampir masuk akal posisi untuk menangani tugas-tugas sederhana di atas jvm.
sumber
NanoVM adalah Java Virtual Machine yang dirancang untuk berjalan pada mikrokontroler AVR 8-bit.
(dari beranda)
sumber
Ini tidak cukup Java - atau 8 bit, tetapi ada penerjemah Javascript yang tersedia untuk mikrokontroler ARM daya rendah yang disebut Espruino .
sumber