Arduino / Pemrosesan versus .NET Micro Framework? Bahasa terbaik? Perangkat keras terbaik?


10

Saya sudah bermain-main dengan Arduino untuk sementara waktu sekarang, dan saya sedang dalam proses pindah dari pemula ke perantara. Saya ingin beberapa pendapat tentang .NET Micro Framework , dalam hal kinerja dan ketersediaan perangkat keras.

Saya seorang programmer. NET, tetapi saya telah menemukan Memproses untuk Arduino menjadi nol gesekan ... Ini sangat dekat dengan C # bahwa apa pun yang ingin saya lakukan bahkan tidak memerlukan perjalanan ke dokumentasi.

Bagaimanapun, mana yang lebih baik?


Lihat juga pertanyaan ini (Terkait dengan C ++): chiphacker.com/questions/3027/…
Kevin Vermeer

Jawaban:


17

Jika Anda ingin beralih dari pemula ke menengah, bahasa yang perlu Anda pelajari adalah C. Bahkan jika Anda mengesampingkan seluruh perdebatan penguncian Windows, Anda harus pandai pemrograman di C sebelum Anda dapat melakukan pekerjaan yang berkualitas pada sebuah mikrokontroler dalam bahasa tingkat yang lebih tinggi seperti .NET Micro atau C ++.

Sistem tertanam terdiri dari piramida pengetahuan, dan Anda benar-benar perlu tahu setidaknya beberapa dari setiap langkah untuk menjadi desainer yang baik:
^ Kode pengguna
^^ Sistem operasi
^^^ Bahasa C
^^^^ Bahasa assembly
^^^ ^^ Arsitektur mikrokontroler
^^^^^^ Desain digital
^^^^^^^ Semikonduktor
^^^^^^^^ Elektronik dasar (hukum Ohm)

Kerangka kerja Arduino menyediakan kait yang mudah bagi para penghobi ke piramida di suatu tempat antara bahasa C dan sistem operasi.

Khusus untuk pertanyaan .NET Micro Framework Anda, Tentang mengatakan:

Perangkat .NET Micro Framework khas memiliki prosesor 32 bit tanpa unit manajemen memori eksternal (MMU) dan dapat memiliki hanya 64K memori akses acak (RAM).

Juga, brosur membedakannya dari Windows Mobile , Windows Embedded , CE 6.0 , dan .NET Compact Framework, dan membandingkannya dengan Linux, Real-Time, Java, dan sistem operasi khusus. Ini adalah lompatan besar dari kerangka kerja Arduino / Pemrosesan.

Arduino Anda memiliki prosesor 8-bit dengan RAM 1k. Selain kehilangan daya 8-bit vs 32-bit, itu juga berjalan kurang dari setengah secepat sebagian besar prosesor yang terdaftar. Meskipun saya tidak akan mencegah Anda untuk beralih ke prosesor 32-bit, saya akan merekomendasikan itu sebagai langkah menengah ke lanjutan.

Sangat mudah untuk menggunakan banyak waktu dan memori dengan beberapa baris dalam C # atau C ++, yang tidak signifikan pada prosesor dual core yang berjalan pada beberapa gigahertz dengan gigabytes RAM, tetapi yang dapat membuat perbedaan besar pada perangkat tertanam . Sampai Anda mahir dalam bahasa assembly dan / atau C, atau guru di C # atau C ++, saya tidak akan merekomendasikan menggunakannya untuk pemrograman tertanam.

Jadi, saya akan mulai dengan mengunduh WinAVR , dan memprogram rutin kedip LED sederhana di C. Jika C benar-benar membingungkan Anda, lakukan sedikit kode asli ("Hello World") pada PC Anda, dan kemudian pindah ke mikrokontroler, tapi itu seharusnya tidak perlu. Selanjutnya, beralihlah ke komunikasi melalui UART, mulailah menggunakan interupsi, dan ulangi beberapa proyek Arduino Anda di C. Kemudian, cari (atau buat!) Papan pengembangan baru dengan mikrokontroler yang berbeda, mungkin PIC atau ARM , dan beberapa barang seperti layar LCD, Ethernet, kartu SD , atau apa pun yang Anda inginkan, dan cobalah mempelajari sistem baru. Setelah sampai di sana, Anda akan tahu lebih baik ke mana Anda ingin pergi.

Kami akan berada di sini untuk membantu Anda sepanjang jalan!


6
Saya tidak setuju bahwa pengetahuan assembler dan C sangat penting. Sangat penting untuk memahami cara kerja mikrokontroler . Learning assembler (c, kurang begitu) tentu saja merupakan salah satu rute menuju pemahaman ini, tetapi itu bukan satu-satunya.
Connor Wolf

4
@Fake Name: Tentu, itu sebabnya saya berkata "setidaknya beberapa dari masing-masing." Mengikuti program sederhana dari C ke assembly ke hex, dan memahami setiap langkah, akan membuat Anda menjadi programmer yang jauh lebih baik. Anda kemudian dapat membiarkan keajaiban melakukan hal itu jika Anda mau, tetapi Anda perlu memahami kemampuan mesin yang sedang Anda gunakan.
Kevin Vermeer

Aduh, maaf. Merindukan "Some of".
Connor Wolf

7

Saya tidak punya pengalaman dengan ".NET Micro Framework", tetapi saya sangat curiga terhadap apa pun yang melibatkan menjalankan mesin virtual pada platform tertanam bertenaga rendah. Rasanya seperti sia-sia bagiku. Anda memerlukan lebih banyak prosesor daya, lebih banyak memori, lebih banyak konsumsi daya, untuk mencapai efek yang sama seperti menjalankan platform yang lebih berdedikasi yang mengkompilasi ke kode mesin asli. Mungkin mengapa ponsel Android 528MHz saya yang menjalankan mesin virtual (mirip dengan JVM) sering terasa lebih lambat daripada Palm Treo 312MHz saya yang berumur beberapa tahun sebelumnya yang menjalankan aplikasi yang dikompilasi untuk kode mesin asli.

Dari tampilan cepat, .NET MF membutuhkan prosesor ARM, yang merupakan langkah di atas dalam hal daya & kompleksitas dari chip ATMega 8-bit yang digunakan di Arduino.

Saran saya adalah jika Arduino melakukan apa yang Anda inginkan, tetaplah dengan itu. Jika tidak, Anda dapat melihat chip ATMega atau ATXmega yang lebih kuat, dan di atas itu bekerja dengan ARM langsung di C / C ++, tanpa lapisan terjemahan NET tambahan di atasnya.


2
Saya sepenuh hati setuju, tetapi saya tidak berpikir itulah yang terjadi. Saya pikir IL akan diterjemahkan ke dalam kode spesifik mesin ketika dikerahkan. Berikut ini tautan yang mendasari asumsi tersebut: microsoft.com/downloads/... Saya cukup senang dengan Arduino sejauh ini ... Saya pikir satu-satunya hal yang mungkin meyakinkan saya adalah bahwa saya telah menemukan pilihan perisai yang cukup mengesankan di tinyclr.com .. Saya belum melihat pilihan perisai yang luas untuk Arduino.
Chris B. Behrens

1
Upaya trade-to-programmer poweroff juga mengapa PC desktop kita membutuhkan waktu yang sama untuk boot dan meluncurkan program seperti komputer yang kita gunakan 5 atau 10 tahun yang lalu.
Kevin Vermeer

@ Chris - Masalahnya bukan karena ia tidak menjalankan kode mesin, melainkan menjalankannya melalui banyak abstraksi. Abstraksi, objek, pustaka generik, modularitas, dll. Semuanya bagus karena menyederhanakan pemrograman, tetapi membutuhkan waktu dan ruang.
Kevin Vermeer

Ya, tapi saya pikir lapisan abstraksi hanya ada (atau setidaknya sebagian besar hanya) pada mesin pengembangan. Tapi tentu saja, ini hanya jenis informasi yang saya butuhkan.
Chris B. Behrens

2
@ Chris - Abstraksi disebarkan sampai ke kode mesin. Pada akhirnya, mesin melakukan operasi pada alamat: Memuat, menyimpan, menambah, cabang bersyarat, dll. Majelis adalah terjemahan kode mesin satu-ke-satu, dan peta C relatif dekat dengannya. Namun, bahasa tingkat yang lebih tinggi memiliki banyak pekerjaan yang harus dilakukan, karena tidak ada, katakanlah, coba / coba instruksi dalam set instruksi prosesor apa pun. Kode mesin yang diperlukan untuk mengimplementasikan pengendali pengecualian tidak sepele.
Kevin Vermeer

4

Jika Anda ingin pindah ke perantara Anda harus mencoba platform di luar lingkungan Arduino. Ada banyak dari mereka untuk memilih, Anda dapat tetap pada 8 bit, bahkan dengan Atmel MCU atau pindah ke satu dari vendor lain. Gunakan IDE, tulis bahasa kode C, pahami cara kerja MCU, tulis kode bootloader Anda sendiri atau gunakan programmer di-sirkuit dan terus bergerak.

Tetapi jika Anda benar-benar ingin mencoba menulis dalam C # untuk mikrokontroler, coba ini: http://www.trygtech.com/products/sh7619_evb.php

Menggunakan MCU yang jauh lebih besar, jejak .NET khasnya adalah sekitar 512K memori flash dan 256 ribu RAM.


2
Sistem itu menggunakan .NET Micro framework. Justru jenis sistem yang Chris cari pendapatnya.
Kevin Vermeer

4

Saya baru saja melihat Netduino yang mungkin merupakan kompromi yang menarik untuk Anda. Saya tidak tahu spesifikasi atau rincian sistem tetapi tampaknya menggunakan. NET Micro sehingga terdengar seperti cara yang baik untuk setidaknya mencoba kerangka itu.


3

Masalah tunggal terbesar bagi saya dengan Processing / Arduino adalah kurangnya debugger yang layak. Saya memiliki naga AVR, tetapi ini tidak banyak membantu karena (a) debugger AVR Studio lambat dan bermasalah, atau (b) debugging di Eclipse benar-benar lambat dan, meski kurang begitu, masih bermasalah. Saya belum punya kesempatan untuk mencobanya di WinAVR, tapi itu ada di daftar selanjutnya.

Tentu saja tidak ada debugger di Arduino IDE.

Setelah Anda keluar dari aplikasi sederhana dan mulai membuat aplikasi yang harus melakukan hal-hal yang terlibat di tingkat jaringan kabel dan nirkabel, itu cukup membuat frustrasi. Ini terutama mengapa saya serius melihat .NET MF - telah bermain dengan SDK, dan memiliki beberapa perangkat keras yang segera muncul.


Ups ... kehilangan konsentrasi! Saya menggunakan rantai WinAVR juga dengan eclipse ;-)

1
Saya akui ... tidak pernah terpikir oleh saya bahwa di kedua sistem itu akan ada debugger, selain dari pin 13. Itu pasti mengharuskan pandangan kedua pada Netduino ...
Chris B. Behrens

Ya; Anda dapat menggunakan DebugWire pada ATMegas yang lebih kecil, dan JTAG pada chip yang lebih besar (1280 dan di atas saya pikir) untuk melakukan debigging on-chip aplikasi Arduino melalui dua lingkungan yang disebutkan di atas. Anda harus memiliki perangkat keras untuk melakukan ini, dan bagi saya Naga di sekitar $ 50USD adalah pembelian yang bagus

Tapi, seperti yang saya sebutkan kedua opsi tampaknya rata-rata di pengalaman terbaik. Saya menantikan untuk melakukan perbandingan debugging dengan netduino yang saya miliki.

1
Pembaruan ini - menerima netduino plus beberapa hari yang lalu dan telah bermain dengannya. Saya harus mengatakan pengalaman di luar kotak luar biasa dibandingkan dengan keadaan bermain saat ini di Arduino. Tidak ada yang mewah yang diperlukan - hanya studio visual (Anda dapat menggunakan versi 'ekspres' gratis) dan kabel usb dan Anda dapat menjalankan dan menjalankan debugging on-board dengan cepat. Semua hal intellisense bekerja di IDE, dan saya harus mengatakan - meskipun saya telah melakukan banyak c / c ++ bekerja pada platform lain, menggunakan .NET membuat kode tertanam buildnig mudah; ;-)

2

Anda mungkin ingin memeriksa Netduino . Ini dibangun agar kompatibel dengan tata letak arduino dan pin, dan menjalankan .NET Micro Framework. Jadi Anda dapat kode dalam C # dan bahkan men-debug di dalam Visual Studio!

Sejauh ini saya merasa sangat bagus dan mudah digunakan. Meskipun saya belum menemukan banyak tutorial, saya pikir Anda bisa mem-port banyak hal Arduino. Saya seorang pemula, saya dapat dengan mudah port setup photoresistor / photocell dan kode dari tutorial Arduino.


1

Anda dapat mempertimbangkan melakukan pengembangan C Arduino-style pada STM32 (ARM M3), melalui salah satu dari beberapa proyek sumber terbuka. LeafLabs dan xduino keduanya memiliki perangkat keras yang berfungsi dan toolchain berbasis Arduino. Saya telah menggunakan papan Leaflabs Maple ketika saya membutuhkan mikrokontroler 32bit, lebih dari chip Atmega biasa


1

Anda dapat melihat http://www.hpinfotech.ro/html/cvavr.htm yang merupakan IDE yang mudah digunakan dan bagus untuk Atmel dan menulis beberapa CI telah menggunakan ini secara profesional dan sangat bagus, lebih seperti tingkat kenyamanan Anda dapatkan dari IDE seperti Visual Studio. Saya memiliki Eclipse untuk menjadi agak kikuk untuk pengembangan Android tidak selipis yang dibeli.

Saya memiliki Netduino yang telah menerapkan sistem kontrol Tricopter untuk bersenang-senang, yang sangat real-time dan bekerja dengan andal, ditulis dalam C # dengan Visual Studio 2010. debugging pada perangkat umumnya sangat baik, saya memilikinya secara otomatis menyinkronkan data melalui wifi dan saya punya server HTTP kecil di pesawat.


0

Kami menggunakan .NET Micro Framework dalam aplikasi produksi (perangkat pengukuran presisi). Ini bekerja dengan baik.

Mikroprosesor hari ini telah mencapai keadaan ketika Anda dapat menggunakan paradigma 'buat-lihat-profil-ubah-lihat ...'. Jumlah memori cukup besar dan murah sekarang, jadi kemungkinan besar Anda tidak akan menumpuk dengan kondisi kehabisan memori.

Dan sebagai pengembang C #, Anda tahu bahwa profil yang memadai untuk mencapai kondisi yang diinginkan adalah cara yang lebih baik untuk hidup daripada menebak apa lagi dan lebih rumit yang harus Anda lakukan saat membuat kode Anda untuk membuat kode Anda (dan mungkin tidak) sedikit lebih cepat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.