Czy jest możliwe (i wykonalne) uruchamianie aplikacji .NET na Raspberry Pi z Mono ?
Jeśli tak, to jak dobrze działają? Czy można używać podstawowego interfejsu GUI, czy też niska wydajność realistycznie ogranicza go do aplikacji wiersza poleceń?
Czy jest możliwe (i wykonalne) uruchamianie aplikacji .NET na Raspberry Pi z Mono ?
Jeśli tak, to jak dobrze działają? Czy można używać podstawowego interfejsu GUI, czy też niska wydajność realistycznie ogranicza go do aplikacji wiersza poleceń?
Odpowiedzi:
Istnieje pytanie StackOverflow dość podobne do tego, Mono na Raspberry Pi . Jednak dzięki własnym badaniom nie udało mi się znaleźć niczego konkretnego dla platformy .NET, a jedynie C #.
Możesz zainstalować środowisko wykonawcze za pomocą APT na dystrybucji Debiana, wykonując:
$ sudo apt-get install mono-runtime
Możesz także (zakładając, że masz GUI, takie jak LXDE) zainstalować wolne Mono IDE z:
$ sudo apt-get install monodevelop
Dla Arch Linux ARM musisz zainstalować środowisko uruchomieniowe za pośrednictwem Pacmana , tak jak:
$ sudo pacman -S mono
Mono IDE można zainstalować w podobny sposób:
$ sudo pacman -S monodevelop
Wbrew powszechnemu przekonaniu kod skompilowany w VB.NET działa dobrze na Raspberry Pi, przynajmniej pod Debianem. apt-get zainstaluj mono-vbnc, a następnie uruchom exe VB jako argument mono, np. mono yourexe.exe
Nie wykonałem żadnych testów wydajności, ponieważ nie piszę aplikacji wymagającej dużej wydajności, ale jak dotąd wydaje się w porządku.
Kod .NET korzystający z bibliotek .NET Framework nie może działać na Raspberry Pi, ponieważ do działania wymaga wersji NETMF lub CLR kompatybilnej z ARM . Na razie Microsoft nie wydał jeszcze Windowsa na ARM (WoA). Zapoznaj się z eksperymentem 19 dotyczącym pracy Microsoft Research CLR na ARM.
Jednak uruchomienie kodu .NET (bez odwołania lub korzystania z bibliotek .NET Framework) jest możliwe przy użyciu Mono, ponieważ Mono ma CLR dla urządzeń ARM.
Zobacz także Budowanie systemu Windows dla architektury procesora ARM, aby uzyskać informacje o systemie Windows na ARM (WoA).
Mam aplikację .NET z wierszem poleceń do pracy z Mono. Aplikacja zasadniczo robi coś podobnego do przekierowania portów, pobiera dane otrzymane przez szeregowy UART i przekazuje je przez TCP / IP. Wykorzystuje klasy SerialPort, TcpListener, TcpClient i Socket .NET, z niewielkimi zmianami wymaganymi w kodzie obsługi SerialPort. Używam miękkiego systemu operacyjnego Debian.
Jeśli chodzi o wydajność, pierwszą rzeczą, na którą natknąłem się, było znaczne spowolnienie w kodzie debugowania / śledzenia, który formatował tablicę bajtów w ciąg znaków do celów logowania. Było 50 razy wolniej w porównaniu do komputera.
Zalecam więc napisanie testów wydajności jednostek podczas przenoszenia istniejącego kodu na RPi.
Do testowania jednostkowego NUnit działa dobrze na RPi ...
Aby zainstalować NUnit:
sudo apt-get install nunit
Biegać:
nunit-console appUnderTest.exe