2009-06-02 18 views
15

Como una especie de opuesto a esta pregunta: "Is low-level embedded systems programming hard for software developers" Me gustaría pedir consejo sobre cómo pasar de los sistemas integrados de bajo nivel a la programación para sistemas más avanzados con sistema operativo, especialmente Linux incorporado.¿Cómo pasar de los microcontroladores al linux integrado?

He trabajado principalmente con hardware y software de microcontroladores pequeños, pero ahora solo uso software. Mi educación también consiste en hardware y cosas integradas principalmente. No he tenido muchos cursos de programación y no sé mucho sobre diseño de software o codificación OO.

Ahora tengo un gran proyecto en mis manos que se va a hacer en Linux incorporado. Tengo grandes problemas para diseñar cosas y mantener las cosas manejables porque realmente no tenía que hacer eso antes. También hacer uso de llamadas multitarea y bloqueo en lugar de ejecutar tareas "paralelas" desde la función principal es como otro mundo.

¿Qué tipo de experiencias tiene al pasar de la programación de bajo nivel a sistemas más grandes con sistema operativo (Linux)? ¿Qué fue difícil y cómo lo resolvió? ¿Qué tipo de mentalidad se necesita?

¿Valdría la pena aprender C++ desde cero o continuar usando C simple?

+0

Votación para cerrar como demasiado amplia. –

Respuesta

10

Los principales problemas con el uso del kernel de Linux para reemplazar los sistemas de microcontroladores son los dispositivos con los que está interactuando. Para esto, puede que tenga que escribir controladores. Yo diría que se adhieren a C como el idioma porque querrá mantener el espacio de usuario lo más limpio posible. Mire en la biblioteca uclibc para una biblioteca estándar C más delgada.

http://www.uclibc.org/

También puede encontrar busybox útil. Esto proporciona muchas utilidades de espacio de usuario como un solo binario.

http://www.busybox.net/

entonces es simplemente una cuestión de arranque desde algunos de almacenamiento a un sistema vivo y funcionando algo de lógica de control a través de init que interactúa con el hardware. Si es necesario, puede acceder al sistema en vivo y ejecutar las utilidades de busybox. Realmente, la única diferencia es que el espacio de usuario es mucho más ágil que en una distribución normal y trabajarás 'más cerca' del kernel en términos de objetivos.

También busque en Linux en tiempo real.

http://www.realtimelinuxfoundation.org/

Si necesita alguna promesa formal de finalización de la tarea. Sospecho que lo más difícil será el arranque/almacenamiento persistente y la interfaz con su hardware si es exótico. Si no está familiarizado con el arranque de Linux y luego

http://www.cromwell-intl.com/unix/linux-boot.html

podría ayudar.

En resumen, si no se ha desarrollado a un nivel profundo para Linux, construyó su propia distribución, o tiene experiencia kernel entonces puede encontrar la programación difícil.

http://www.linuxdevices.com/ también podría ayudar a

buena suerte

+1

Tengo un hardware en funcionamiento, al menos por ahora. Y además, he estado probando el código principalmente en la pc. Entonces, la codificación real es el mayor problema en este momento, pero podría necesitarlos más adelante. Gracias. –

+1

¡Sin preocupaciones! Buena suerte con todo. –

2

Estaba en una situación muy similar no hace mucho tiempo. Compré y leí Embedded Linux Primer y fue una forma muy útil de hacer la transición mental a un sistema operativo de alto nivel (desde la perspectiva de un microcontrolador).

Si tiene el "tiempo para 'tomarse su tiempo'," obviamente podría hacer la transición. Pero si necesita ponerse al día rápidamente, es posible que desee considerar la posibilidad de contratar un mentor técnico que lo guíe.

1

También puede serle útil ingresar a Linux comenzando con ucLinux. Básicamente es Linux en un microcontrolador. Puede obtener una idea del kernel sin el aspecto de memoria virtual como transición. Vea si ucLinux admite un microcontrolador con el que ya está familiarizado y vea cómo el kernel interactúa con esa arquitectura.

Estoy de acuerdo con que el libro de Incrustar Incrustado de Linux es excelente para que su cerebro se compenetre con Linux embebido. Es mejor que sigas con C por ahora. C++ puede esperar, y es más útil para las aplicaciones, no para el código del controlador.

Cuando se sienta cómodo con la forma en que opera ucLinux, entonces podría comenzar con un kernel Linux normal en una arquitectura de microprocesador como ARM que tiene una MMU y memoria virtual.

¡Solo mis dos centavos!

Cuestiones relacionadas