Pregunta

Estoy haciendo investigación para una empresa como prácticas. Tenía algunas dudas en el uso de Mono, la implementación multiplataforma de la plataforma .NET. Mi empresa diseña hardware y sotware.

Mi conocimiento del uso de Linux embebido es muy limitada. Mi empresa en la que estoy haciendo mis prácticas es realmente importaba .NET. Pero los nuevos desarrollos de mono, que se preguntan si pueden destino Linux para proyectos más pequeños, también evitar el alto costo de las licencias para las personas para las que diseñar el software y el hardware.

Ya se veía a lo mono puede hacer (y sin embargo, no puede hacerlo). Ahora llego a la pregunta incrustada. Estoy un poco perdido en la historia de cómo se construye un Linux embebido.

vi algunas historias en las que se acaban de tomar algunas bibliotecas de Linux estándar para que el Linux embebido en el hardware. También vi que existe distribuciones de Linux especial como uClinux (también conocido como CLinux). Entonces, ¿cuál es la diferencia, o es sólo la misma. Que se ve el proceso como normalmente cuando quiero utilizar Linux embebido en un deivce objetivo?

OK, que la parte de mono, así que básicamente Quiero ser capaz de ejecutar C # en Linux embebido. Aquí la mayoría de ellos usan uClinux, soy capaz de utilizar para este mono? Miré a algunas especificaciones, y ellos no tienen Memory Management Unit (MMU).

Así que básicamente me preocupa que ningún MMU. Desde cómo reaccionará el recolector de basura?

Espero que no le doy una sobrecarga de preguntas,

Saludos, y gracias por leer ya que,

Benjamin

¿Fue útil?

Solución

El recolector de basura no depende de una MMU, aunque puede ser más eficiente si es que existe.

Actualmente aprovechamos para generar excepciones de referencia nula y sin controles: en uClinux tendrá que activar los controles explícitos (el código ya está ahí, sólo tiene que estar habilitado). Otras personas reportaron el uso de mono en uClinux, aunque probablemente hay algunos ajustes necesarios para las fuentes aquí y allí ya que nunca se prueban en esa plataforma (por supuesto que estoy hablando uClinux en una arquitectura de CPU que ya apoyamos, como ARM, se no especificó).

En cuanto a otros comentarios, AOT y mkbundle son en gran medida irrelevante para lo que necesita. Lo que realmente quiere es reducir la huella de mono para encajar en lo que su dispositivo permite, ver http: // www .mono-project.com / Small_footprint para obtener más información.

Si se toma la decisión de mí, me gustaría siempre elige un Linux ARM regular sobre uClinux para ejecutar el software complejo como mono o cualquier programa que necesita para funcionar en mono.

Otros consejos

Si los dispositivos no tienen una MMU, tal vez usted podría querer usar de código abierto de Microsoft .NET Micro Framework . Es mucho más limitada que .NET / Mono, y es un intérprete, no un JIT, pero puede funcionar en más hardware más limitado.

Mono puede ser tan limitado como usted quiere que sea. Si está usando un dispositivo que no tiene MMU, me vería en Por delante de tiempo de compilación .

mkbundle también puede funcionar tan bien, pero no estoy seguro de que puede prescindir de una MMU. Dicho esto, si usted está utilizando AOT, vas a estar usando mkbundle primero en tracción en todas las dependencias.

Si su empresa quiere apuntar a tablas de Linux embebido a través de MONO, y todo lo que se necesita es transferir alguna aplicación que ya se ejecuta en la computadora de escritorio de Windows, entonces es probable que tenga problemas muy pequeños. Pero si usted quiere hablar con algunos IO, I2C, SPI, 1-Wire y otros periféricos, tendrá un problema para acceder a ellos a través de MONO y es probable que tenga que hacer algún traductor (probablemente escrito en GCC) que será una puerta de enlace entre el hardware real y su aplicación MONO.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top