Mono en Raspberry Pi [cerrado]

78

He visto mucho hablar sobre la ejecución de código Mono / .NET en Raspberry Pi . ¿Ha tenido éxito en ejecutar algún código Mono en una Raspberry Pi?

En su sitio, enumeran varias distribuciones de Linux que funcionan en el dispositivo y algunas de estas distribuciones incluyen Mono. Sin embargo, ninguno detalla si Mono funciona en él.

¿Existe una implementación funcional?

AngryHacker
fuente
2
posible duplicado de MonoDevelop ARMv6 Raspberry PI
skolima
20
Esa pregunta es sobre MonoDevelop (el IDE) en lugar del tiempo de ejecución, creo que los desarrolladores que deseen usar Mono en Raspberry Pi, no en el otro, lo recibirán primero.
Ani
Estoy de acuerdo, ejecutar mono es bastante diferente de ejecutar MonoDevelop. Ésta es una pregunta separada legítima.
Joe Strout
Pude ejecutar el servicio WCF con EntityFramework consumiendo la base de datos MySql instalada en Pi. Fue solo un proyecto de prueba, pero el rendimiento fue bueno.
vpetrovic

Respuestas:

32

Me las arreglé para ejecutar mi compilador Delta Forth .NET en Debian 6.0 (Squeeze) y Mono. Funcionó perfectamente con compatibilidad binaria completa, lo único que tuve que hacer fue recompilar el código para apuntar a .NET 3.5 (en lugar de 4.0) ya que Mono en Debian se retrasa un poco con respecto a las versiones de .NET.

El compilador no es una aplicación .NET trivial, así que me alegré de ver el compilador en acción en mi pequeña Raspberry Pi.

Los pasos reales que tomé para hacer que la magia sucediera fueron (lo recuerdo de memoria):

  • Instale el tiempo de ejecución de Mono usando: sudo apt-get install mono
  • Invoque el compilador usando: mono DeltaForth.exe file_to_compile.4th

Eso es todo. La parte más desafiante de este esfuerzo fue transferir los archivos de mi máquina Windows a Raspberry Pi usando una unidad flash :-)

vbocan
fuente
9
'sudo apt-get install mono' no funcionó para mí. Usé 'sudo apt-get install mono-complete' ... ¡parece que funciona hasta ahora!
kodybrown
2
Nota al margen para aquellos que buscan compilar ... Tuve que usar 'mcs sample.cs' para compilar mi código en raspi y 'mono sample.exe' para ejecutarlo ... funciona, así que estoy totalmente emocionado de poder para programar c # en mi pi :-D
kodybrown
2
@wasatchwizard - no es "mono" sino "mono-runtime", el "mono-completo" también funciona, pero es MUCHO más grande y CADA parte de mono, por lo que obtienes muchas bibliotecas adicionales. Si está tratando de construir una huella pequeña, ese paquete no es la solución, pero yo también lo prefiero, aunque la instalación lleva años.
BerggreenDK
3
@vbocan -Sólo monto una unidad de red CIFS en mi PC / LAN y luego uso MonoDeveloper para compilar los archivos mono.exe a toda velocidad en una PC moderna (Intel Core i7). Luego, cuando el binario esté listo, simplemente ejecútelo a través de LAN en la Raspberry PI ... ¡funciona como un encanto! y compilar es muy sencillo.
BerggreenDK
4
La próxima vez, SCP sus archivos a su Raspberry pi en lugar de utilizar una unidad flash. En Windows puede usar WinSCP para eso.
Tom van Zummeren
21

La gente de la placa Raspberri Pi informa que Mono sí funciona , al menos para aplicaciones simples.

AngryHacker
fuente
pero con errores en este momento ya que DateTime no funciona como se esperaba cuando se usa el formato de cadena
BerggreenDK
No es solo el formato de cadena de DateTime. Los problemas son profundos y generalizados, por desgracia. Vea el informe de error ( bugzilla.xamarin.com/show_bug.cgi?id=7938 ) y los demás vinculados a ese.
Joe Strout
Los problemas de fecha y hora suenan como problemas de flotación suave / dura. Necesita una distribución flotante suave para mono 2. Puede usar una distribución flotante dura si usa mono 3 (puede que necesite compilar mono usted mismo, lo cual no es tan difícil).
fiat
19

Mono en la Raspberry Pi es posible y razonablemente fácil de configurar. Lo siguiente asume que estás en Debian. Esto está tomado de mi blog que ofrece una serie de tutoriales de Raspberry Pi

Una nota: el tiempo de ejecución Mono estándar actualmente disponible solo admite hasta .NET 3.5 a menos que usted mismo compile desde la fuente.

Entonces, desea comenzar a desarrollar algunas aplicaciones para su Raspberry Pi, pero su conocimiento de programación se limita a los lenguajes .NET modernos, como VB.NET y C # . ¡¡No es un problema!! Bienvenido al mundo de Mono, una versión compatible y multiplataforma de código abierto del marco .NET. Al usar un IDE de desarrollo como Visual Studio, o incluso mejor MonoDevelop , puede producir archivos EXE que se ejecutarán en su Raspberry Pi. Todo lo que necesita hacer es instalar los tiempos de ejecución Mono en la Raspberry Pi. Para ello ingresamos las siguientes líneas.

sudo apt-get update

sudo apt-get install mono-runtime

Como se mencionó en otros tutoriales, la primera línea se usa para actualizar el administrador de paquetes APT-GET para asegurarse de que esté usando las últimas fuentes para descargar sus paquetes. La segunda línea instala y prepara los tiempos de ejecución para su uso. Eso es todo, ahora para ejecutar un archivo EXE desarrollado por Mono. Simplemente prefija el comando con la palabra monocomo se muestra a continuación.

mono myprogram.exe 
S_BatMan
fuente
¿Cómo caracterizaría el rendimiento de las aplicaciones mono en la Raspberry? ¿Diría que es lo suficientemente bueno para aplicaciones del mundo real (como tal vez un dispositivo integrado o un dispositivo de procesamiento en tiempo real)?
AngryHacker
@AngryHacker En general, diría que es bueno por su precio. No es un microcontrolador súper estable en el que se deba confiar para operaciones críticas de datos / tiempo. y puede carecer de la potencia debido a sus partes (precio) para ser utilizado para cualquier cosa sustancial, pero como base de prueba / marco, o como marco de prototipos inicial es fantástico. Está diseñado para enseñar y su hardware lo refleja. Para uso en campo, otras opciones serán mejores.
S_BatMan
¿Puedo usar MonoDevelop en Windows 7 para desarrollar / compilar / probar mi aplicación y luego transferirla a mi Raspberry PI o necesitaría mover los archivos fuente y compilar en el dispositivo directamente? Estaba pensando en transferir archivos a través de LAN ... solo haga pública la carpeta bin en LAN ..
BerggreenDK
Honestamente, no es algo que haya intentado, sin embargo, debido a la naturaleza del JIT, sí, esto debería ser completamente posible. De hecho, suponiendo que no use ninguna funcionalidad que no esté disponible en la versión mono en el pi, debería poder ejecutar cualquier exe mono
S_BatMan
5

El soporte hard float ahora está en mono 3.2.7:
http://www.raspberrypi.org/phpBB3/viewtopic.php?t=62496&p=468500

La última fuente se puede instalar desde git. Debería ser algo como esto:
(primero elimine las instalaciones mono anteriores)

sudo apt-get update
sudo apt-get install git build-essential automake autoconf libtool gettext
git clone git://github.com/mono/mono.git
cd mono
./autogen.sh --prefix=/usr/local
make get-monolite-latest
make EXTERNAL_MCS="${PWD}/mcs/class/lib/monolite/gmcs.exe"
sudo make install

Así es como se ve "mono -V" en mi frambuesa:

Mono JIT compiler version 3.4.0 (master/ae165c5 Thu Mar 13 01:20:37 UTC 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
    TLS:           __thread
    SIGSEGV:       normal
    Notifications: epoll
    Architecture:  armel,vfp+hard
    Disabled:      none
    Misc:          softdebug
    LLVM:          supported, not enabled.
    GC:            sgen

Una prueba rápida parece funcionar bien:

csharp> Math.Pow(2,4);
16
r03
fuente
4

En mi Raspberry Pi con el remix de Fedora 18, todo lo que necesitaba era:

    # yum -y install mono-devel

Verificar:

    # csharp
    Mono C# Shell, type "help;" for help
    Enter statements below.
    csharp> Console.WriteLine("Hello, I am PI");
    Hello, I am PI
    csharp>  

fuente
6
Debe agregar a su cheque: "Math.Pow (2,4);". Si devuelve 16, estás bien. Si devuelve basura, se ha encontrado con el error en las distribuciones de Mono en ARM Linux que usan la ABI de flotación rígida.
Joe Strout
1

Puede ejecutar la versión x86 de Mono en Raspberry Pi utilizando el software ExaGear Desktop .

Permite ejecutar casi todas las aplicaciones x86 e incluso instalar Wine para ejecutar aplicaciones de Windows.

Dicen que Firefox funciona más rápido incluso que los nativos ...

vadik_lyutiy
fuente