Runtime: Arm6 Raspberry PI Nol - PI 1

Dibuat pada 31 Mar 2017  ·  68Komentar  ·  Sumber: dotnet/runtime

Apakah ada upaya untuk memberikan dukungan untuk platform ARM6?
Saya pikir PI Zero adalah platform yang sempurna untuk banyak proyek IOT yang berbeda dan akan sangat disayangkan jika tidak ada dukungan untuk itu.

arch-arm32 area-VM-coreclr port

Komentar yang paling membantu

Ini jauh melampaui Pi/Zero, untuk apa nilainya. Mendukung ARMv6 membuka pintu ke beragam mikrokontroler. Memiliki .NET tersedia sebagai pilihan dalam ekosistem itu akan sangat penting, dan akan memberikan lebih banyak minat/cakupan pada aspek IoT dari CoreRT.

Saya akan mempertimbangkan langkah 1 ini dalam urutan yang pada akhirnya akan melihat .NET sebagai opsi untuk pemrograman dalam sistem operasi waktu nyata. Dengan kata lain, tolong jangan hanya menyamakan dukungan ARMv6 dengan dukungan Raspberry Pi Zero , karena ini jauh lebih jauh dari itu dalam arti langsung (banyak MCU lain yang menggunakan set instruksi itu, dan tidak akan kemana-mana dalam waktu dekat untuk daya rendah /biaya MCU), dan dunia luar dalam arti yang lebih abstrak (misalnya melihat target CoreRT PAL untuk FreeRTOS atau serupa).

Semua 68 komentar

Tidak, tidak ada upaya seperti itu. Mungkin masalah terbesar yang perlu dipecahkan adalah bahwa JIT tidak mendukung pengkodean instruksi ARM6 Thumb.

Jadi apa yang harus saya harapkan? Apakah ada kemungkinan akan ada komitmen dari komunitas atau MS untuk membawa dukungan Arm6 atau satu-satunya cara adalah Mono?

Saya akan luar biasa jika ada dukungan untuk ARMv6 cpu seperti Pi Zero dan Pi Zero W. Untuk beberapa kasus penggunaan tidak perlu menggunakan ARMv7 yang lebih kuat seperti Pi 3.

Akan senang melihat ARMv6 didukung :)

Saya setuju Anda harus menyertakan dukungan untuk ARMV6. Saya ingin menjalankan inti dotnet di Pi Zero sekarang saya terjebak dengan mono.

Ada kabar tentang dukungan armv6? Saya memiliki dua nol pi hanya menunggu untuk suatu tujuan ..

@janvorli Jika JIT adalah masalahnya, dapatkah kita mengharapkan .Net Core pada CoreRT untuk mengaktifkan ini?

@dcuccia CoreRT menggunakan kompiler JIT yang sama dengan CoreCLR sehingga masalahnya tetap ada.

@dcuccia , @mikedn corert memiliki mode di mana ia mengkompilasi ke dalam C++, sehingga bisa memecahkan masalah. Namun, saya telah kehilangan jejak tentang seberapa banyak hal yang benar-benar berfungsi dalam mode itu. @jkotas dapatkah Anda memberikan beberapa detail tentang itu?

CppCodeGen menjalankan program sederhana (hello world, dll.). Dari https://github.com/dotnet/corert#platform -support : Fitur besar yang hilang adalah refleksi, pengumpulan sampah, dan penanganan pengecualian.

Saya setuju bahwa CoreRT + CppCodeGen akan menjadi pilihan yang baik untuk jangkauan platform.

@jkotas Apakah saya membaca ini dengan benar - mengikuti contoh dari corert -> https://github.com/dotnet/corert/tree/master/samples/WebApi saya dapat mengkompilasinya dengan cppCodeGen dan itu dapat berjalan di rasp pi zero saya?

Atau masih gagal karena hanya memiliki ARMv6?

CppCodeGen terlalu lengkap untuk sampel WebApi. Refleksi dan pengumpulan sampah harus bekerja terlebih dahulu.

terima kasih @jkotas - tetapi kemudian halo dunia dan beberapa hal dasar IO/httpclient akan berfungsi?

httpclient adalah bagian kode yang cukup rumit. Anda dapat mencobanya, tetapi saya ragu itu akan berfungsi dengan CppCodeGen hari ini.

Apakah ada niat untuk memberikan dukungan untuk ARMv6?

Saya juga sangat tertarik melihat dukungan ARMv6. Tampaknya inti semakin dekat, namun saya tidak memenuhi syarat untuk menilai dengan baik.

Menambahkan +1 saya untuk dukungan ARMv6. Selisih harga antara rPi0w dan rPi3 adalah $25, membuat Pi Zero W jauh lebih berguna untuk proyek IoT di mana banyak perangkat digunakan. Apakah mungkin bagi kami untuk menggunakan kembali beberapa kode dari Mono untuk ini?

Dan saya juga cenderung setuju. Ada komunitas yang lebih besar yang ingin menjalankan Linux yang jauh lebih baik di Pi, termasuk Pi Zero daripada hanya rilis yang didukung komunitas mereka.

Ini jauh melampaui Pi/Zero, untuk apa nilainya. Mendukung ARMv6 membuka pintu ke beragam mikrokontroler. Memiliki .NET tersedia sebagai pilihan dalam ekosistem itu akan sangat penting, dan akan memberikan lebih banyak minat/cakupan pada aspek IoT dari CoreRT.

Saya akan mempertimbangkan langkah 1 ini dalam urutan yang pada akhirnya akan melihat .NET sebagai opsi untuk pemrograman dalam sistem operasi waktu nyata. Dengan kata lain, tolong jangan hanya menyamakan dukungan ARMv6 dengan dukungan Raspberry Pi Zero , karena ini jauh lebih jauh dari itu dalam arti langsung (banyak MCU lain yang menggunakan set instruksi itu, dan tidak akan kemana-mana dalam waktu dekat untuk daya rendah /biaya MCU), dan dunia luar dalam arti yang lebih abstrak (misalnya melihat target CoreRT PAL untuk FreeRTOS atau serupa).

@metanoic Saya sepenuhnya setuju dengan Anda. Dan ini akan membantu porting IoT Edge juga (https://github.com/Azure/iotedge/issues/12)

Kita harus memiliki Platform IoT di tangan kita dengan harga kurang dari $10!

+1

Setuju. Sebenarnya saya terjebak dengan Mono :)

Membangun beberapa hal IoT di armv6. Datang ke sini sedih. Ingin menambahkan +1 saya ke masalah ini.

Adakah yang punya pembaruan jika ada kemajuan dalam hal ini? Saya baru saja mencoba berpikir itu akan berfungsi seperti pada pi3b+. Saya lupa bahwa mereka adalah dua prosesor yang berbeda :(

Saya memiliki Raspberry Pi model B lama (CPU armv6l) dan ingin menjalankan beberapa proyek inti dotnet di atasnya

Saya memiliki banyak server mini berbasis CPU ARMv6 dengan Linux & Mono. Ingin mengalihkannya ke .NET core.

Juga akan memilih dukungan armv6! +1

+1 untuk dukungan armv6!

+1 akan menyenangkan untuk dimiliki

YA!

Silahkan!

Itu akan sangat bagus!

Hanya ingin tahu, apakah ada alasan teknis mengapa misalnya runtime Go dapat dikompilasi ke banyak arsitektur menggunakan kompiler yang sama, namun untuk CoreCLR tampaknya proses yang lebih lama untuk menambahkan dukungan lengkungan? https://Gist.github.com/asukakenji/f15ba7e588ac42795f421b48b8aede63

@mms- ya, ada alasan teknis. Go telah dikompilasi sebelumnya. Ini memiliki dua kompiler - gc yang hanya mendukung x86 (32 dan 64 bit) dan arm dan gccgo yang GCC sebagai backendnya. Jadi apapun arsitektur yang didukung oleh GCC, mereka mendapatkannya secara gratis.
CoreCLR menggunakan JIT, jadi kami sendiri menambahkan dukungan untuk arsitektur baru.

Masuk akal. Akan menarik jika .Net Native dapat diperluas untuk mengaktifkan jalur yang sama untuk .Net Core ini pada arsitektur lain di mana JIT belum ada.

Menambahkan suara saya untuk ARMv6

Kami membutuhkan ini!

ARMv6 memiliki banyak daya tarik di luar Raspberry Pi Zero. Raspberry Pi Compute Module 1, misalnya, menjalankan ARMv6 dan membuatnya lebih aman untuk mengandalkan dotnet. Saat ini runtime Mono harus digunakan yang baik-baik saja, tetapi dukungan dotnet yang tepat adalah sesuatu yang sangat saya inginkan.

@richlander

Dukungan ARMv6 akan luar biasa.

Adakah yang bisa menjelaskan mengapa Core membutuhkan JIT dan karenanya tidak dapat berjalan di Armv6, tetapi Mono bisa? Tentunya Mono memiliki JIT karena hanya membutuhkan kode IL untuk dijalankan - yang harus di-JIT ke CPU lokal?

Adakah yang bisa menjelaskan mengapa Core membutuhkan JIT dan karenanya tidak dapat berjalan di Armv6, tetapi Mono bisa?

Mono memiliki JIT berbeda yang mendukung Armv6. CoreCLR JIT tidak mendukungnya. ARM memiliki dua set instruksi - ARM dan THUMB. ARM v6 memiliki THUMB, ARM v7 memiliki THUMB2.
Mono JIT mengkompilasi semuanya ke dalam set instruksi ARM, sehingga berfungsi pada Armv6 dan v7, tetapi itu menghasilkan jejak memori kode yang lebih besar sekitar 30%.
Perbedaan antara Armv7 THUMB2 dan Armv6 THUMB cukup besar dan menambahkan dukungan untuk Armv6 akan membutuhkan cukup banyak perubahan pada CoreCLR JIT.

.NET Core 3.0 sudah keluar, 3.1 sudah dekat, 5.0 direncanakan dan diiklankan sebagai platform terpadu .
Blazor menggunakan Mono, JIT tidak dapat dipilih saat membuat proyek baru (memilih target), jika ARMv7 dipilih maka CoreCLR harus digunakan jika ARMv6 maka JIT mirip Mono.

Raspberry Pi 4 setidaknya $35, Pi Zero berharga $5, Pi Zero W adalah $10. Jadi untuk harga satu Pi 4 Anda mendapatkan 7 Pi Zero!

Dan seperti yang ditulis banyak orang sebelumnya, ini bukan hanya tentang Raspberry Pi Zero, semua perangkat ARMv6 dapat menjalankan aplikasi .NET Core.

2,5 tahun kemudian kami masih menunggu

+1

Ada PR yang disebut dukungan armv6 dalam proyek runtime: https://github.com/dotnet/runtime/pull/657

Tolong tambahkan dukungan ini

Saya juga menunggu dukungan ini ...

Dukungan Armv6 untuk inti bersih akan luar biasa...

Ada kabar tentang dukungan armv6? Saya memiliki dua nol pi hanya menunggu untuk suatu tujuan ..

Terima kasih

Tolong tambahkan dukungan untuk armv6

https://blogs.windows.com/windowsdeveloper/2020/05/26/build-your-iot-devices-with-windows-for-iot-a-comprehensive-platform-for-every-device-developer/

Kami sangat senang untuk menyampaikan bahwa ke depannya, ada satu rilis OS untuk Windows untuk IoT, Windows 10 IoT Enterprise yang dapat memenuhi kebutuhan ini.

Saya mungkin salah menafsirkan ini tetapi itu membuat saya khawatir tidak akan ada lagi IoT Core untuk RPi kecuali ARM64.

@miloush Saya tidak berpikir bahwa masalah ini ada hubungannya dengan Windows IoT. Topik di sini adalah menambahkan dukungan dotnet ke prosesor armv6 sehingga kita dapat menjalankan dotnet di Raspberry Pi Zero.

@realivanjx memang saya buruk

Dari bacaan di atas tampaknya dukungan ARM6 tidak mungkin karena pekerjaan yang diperlukan untuk set instruksi ibu jari. Adakah yang punya pengalaman menjalankan dotnet core pada perangkat keras berbiaya rendah lainnya seperti Orange Pi Zero?

PR #657 untuk menambahkan ARMv6 ditutup...

Datang ke sini karena proyek .NET Core, kami perlu menjalankan RPi Zero di sekolah karena kami memiliki sekitar 25x RPi Zero yang dibeli untuk proyek ini. Kami tidak punya, kami juga tidak akan membeli 25 RPi 3 baru karena .NET Core tidak mendukung ARMv6.

Kira saya akan menulis ulang proyek di Golang...

@eduncan911 Coba gunakan rute mono. Berikut beberapa detailnya.

Net6 harus mendukung beberapa arsitektur cpu melalui mono runtime. mungkin.

Saya menjalankan lebih dari seribu perangkat cpu ARMv6 melalui mono. 3 tahun yang lalu kami memperkenalkan perangkat keras ARMv7, masih menggunakan mono, tetapi sekarang kami melakukan refactoring dan bermigrasi ke standar Net core/net, jadi hanya executable kecil yang akan berbeda dan library digunakan kembali antara mono dan net core.

Sama disini. Saya menjalankan papan skor di lapangan kriket Lord dari pi 1
dan Pi B+ menggunakan Mono. Kit yang lebih baru menjalankan Pi 3 menggunakan Net Core. Sama
file sumber, dengan objek inti yang berfungsi. Dalam kerangka
dan aplikasi inti itu hanya membuat objek layanan dan memuat aplikasi
konfigurasi ke dalamnya.

Bryan Crotaz
Kurva PerakE

Sayangnya mono penuh dengan bug. Bug yang mungkin tidak akan pernah diperbaiki oleh siapa pun. Kebanyakan dari mereka terkait jaringan. Misalnya pada beberapa jaringan ketika dns tersedia tetapi lalu lintas normal bermasalah - aliran https/ssl memiliki kebocoran memori yang dapat memakan seluruh memori. Atau mono tidak dapat berkomunikasi di beberapa jaringan tanpa bermain dengan ukuran MTU. Tetapi python atau NET Core tidak memiliki masalah dalam berkomunikasi.

Anehnya, mono terkadang lebih cepat dari net core, setidaknya pada ARMv7. Tidak selalu, tetapi saya berharap bahwa inti bersih akan memenangkan perlombaan kinerja dengan selisih yang besar.

Saya merasa sulit untuk percaya bahwa Mono penuh dengan bug, tetapi itu bisa bergantung pada aplikasi. Blazor WASM diimplementasikan di Mono dan jika ada masalah terkait jaringan itu akan menjadi masalah besar.

Mono: dari Xamarin ke WebAssembly, Blazor, dan .NET 5

cc @marek-safar

Saya menjalankan mono pada beberapa ribu mesin dan banyak konfigurasi jaringan. Bug ini tidak terjadi pada setiap mesin dan konfigurasi jaringan. Mereka memiliki gambar linux yang sama.

Masalah ukuran MTU - 0,3% instalasi - pada jaringan ini 100% dapat direproduksi. Saya sama sekali tidak tahu mengapa. Tetapi ssh berfungsi di jaringan ini dan fakta bahwa saya harus mengubah ukuran mtu hanya ditemukan secara tidak sengaja.

Kebocoran memori SSL Stream - 2% dari instalasi. Sangat sulit untuk mereproduksi, pada akhirnya kami berhasil mereproduksinya dengan router 4G dengan data yang dikonsumsi, jadi hanya dns yang berfungsi, permintaan lain tidak berfungsi. Tetapi kami tidak dapat mensimulasikannya dengan simulator kesalahan tcp pada jaringan lan normal. Kami menggunakan router 4G dan kartu SIM khusus untuk mensimulasikan kebocoran itu. Biasanya terjadi pada instalasi dengan 4G atau jaringan nirkabel lainnya. Tampaknya jika dalam hal membangun koneksi TCP & HTTPS jabat tangan TCP tidak selesai, itu menciptakan kebocoran.

Dari waktu ke waktu kami menemukan bug, terkadang itu diperbaiki dalam waktu singkat, terkadang kami mengatasinya dan setelah saya memperbaikinya di mono dan pull request diterima (juga terkait dengan jaringan) :) Tapi jujur ​​saja, minggu ini saya menemukan (dan melaporkan) bug di NET5 RC1. Bagi saya mono adalah perangkat lunak yang sangat baik (saya bekerja dengannya selama 9 tahun) tetapi memiliki beberapa gangguan dalam kode jaringan.

Cukup adil, tetapi mengkarakterisasi Mono sebagai penuh dengan bug agak tidak adil. Kombo 4G router/kartu SIM tentu saja tampak seperti kasus tepi, saya mendorong Anda untuk membuat masalah pada repo Mono dan memberikan info sebanyak mungkin. Bahkan jika tidak dapat diselesaikan setidaknya orang lain dengan masalah yang sama dapat menemukan bug tersebut. Terima kasih atas kontribusi Anda sebelumnya pada repo Mono/NET5.

Oke, maaf, itu tidak adil.

Tapi kami baru saja kehilangan beberapa ratus jam kerja untuk menemukan mengapa beberapa instalasi memiliki masalah ini. Mono terutama dapat digunakan untuk aplikasi yang berumur pendek - seperti ponsel. Kami memiliki beberapa instalasi di mana kami memiliki waktu aktif lebih dari satu tahun, tetapi terkadang itu bermasalah.

@michaldobrodenka btw testimoni anda sangat menarik !

Apakah dukungan ARMv6 akan disertakan dalam .NET 6.0?

Richard Lander menyebutkan sesuatu tentang itu di komentar pengumuman .NET 5 Pratinjau 4
https://devblogs.microsoft.com/dotnet/announcing-net-5-preview-4-and-our-journey-to-one-net/#comment -5958

Pemikiran saya dengan itu adalah bahwa kami akan menggunakan Mono untuk Armv6 sebagai bagian dari .NET 5.0. Kami hampir semua proyek terkait Mono/Xamarin ke 6.0. Saya berharap kami dapat mendanai pembangunan Mono Armv6 di 6.0.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

bencz picture bencz  ·  3Komentar

EgorBo picture EgorBo  ·  3Komentar

GitAntoinee picture GitAntoinee  ·  3Komentar

jzabroski picture jzabroski  ·  3Komentar

jamesqo picture jamesqo  ·  3Komentar