2012-03-22 8 views
13

Estoy buscando comenzar desde cero para aprender a programar sistemas integrados. Después de un tiempo mirando alrededor me encontré un poco confundido.Programación incorporada ... muy inicial

Puedo programar tanto C como C++, pero no sé por dónde empezar con la programación integrada, si compro algún tipo de dispositivo para practicar, uso un emulador de microprocesador (en caso afirmativo, ¿cuál?) - cosas así, cualquier consejo o recurso sobre dónde comenzar es muy bienvenido.

+1

Es posible que desee reducir el alcance de su objetivo. Un "sistema integrado" podría ejecutar el rango desde una CPU ARM de 1 GHz de 32 bits, 1 GB de RAM, 32 GB de almacenamiento, ejecutando Linux; hasta un microcontrolador de 8 bits con 1KB de RAM sin ningún O/S en absoluto. Trata de imaginar, más específicamente, qué tipo de cosas quieres crear e ir desde allí. –

+0

C/C++? Elegir uno. – Puppy

+0

@DeadMG: Es bastante claro en contexto que quiere decir que puede programar en ambos. Solo por ti lo hice más claro. – Clifford

Respuesta

8

En mi opinión, omita Arduino. Siempre lo he visto como un sistema un poco tonto para los no programadores. Busca algo que te permita aplicar tus conocimientos de C para obtener el nivel más bajo posible al principio. Desea comprender cómo funcionan los vectores de interrupción, cómo su RAM limitada limita su pila, cómo depurar.

Compruebe los microcontroladores de 8 bits y 16 bits de Freescale, especialmente el HCS08 o el HCS12. Hay algunos sistemas de desarrollo de $ 100-200 y algunos de menos de $ 100 con una interfaz de depuración incorporada (Modo de depuración de fondo). Estos son también un mayor rendimiento y memoria que Arduino. El software CodeWarrior es gratuito (limitaciones de tamaño de código, pero en la mayoría de los casos el número de limitación es mayor que la cantidad de flash en estos dispositivos) y completamente funcional. No sé si puede establecer puntos de corte de depuración de código con Arduino, pero puede hacerlo con estos. Hay otro beneficio para CodeWarrior: al principio, usted desea profundizar en las hojas de datos para comprender cómo funcionan los registros mapeados en memoria para los diversos módulos (por ejemplo, cómo se debe borrar una bandera, cómo establecer un modo, lo que sea), CodeWarrior viene con Processor Expert que generará funciones para usted derivados de la familia HCSxx específicos y sus módulos específicos. Como la mayoría de estos productos reutilizan la lógica entre derivados, con algunas diferencias menores, tiene sentido reutilizar el código. Processor Expert ha recorrido un largo camino desde su comienzo hace aproximadamente 10 años. A la larga es un gran ahorro para el tiempo de desarrollo, ya que estas funciones se encargan de escribir acciones de muy bajo nivel (por ejemplo, configurar un pin de salida del temporizador PWM para un ciclo de trabajo xx/aa con una llamada de función C).

Luego puede usar algunos de los sistemas operativos que se ejecutarán en estos, o puede pasar a ARM o ePPC. Conozco al menos una placa de demostración HCS12 que viene con Linux y un servidor web, que siempre podría eliminar para su primer desarrollo, y luego volver a ponerla cuando esté listo. Freescale también es muy bueno para proporcionar tutoriales, notas de aplicaciones y documentación, excepto que su sitio a veces es difícil de navegar. Supongo que es solo un síntoma de un gran ecosistema. ¡Buena suerte!

+1

En mi opinión, Arduino (el dispositivo) es una plataforma de desarrollo de uC bastante buena y barata. Simplemente no use la biblioteca Arduino. –

4

Existen varias plataformas integradas que son populares entre los aficionados y muy fáciles de usar. El Arduino es probablemente el más popular. Las placas son baratas ($ 20-30) y fáciles de usar, y hay un montón de buen software. El sitio web principal de la plataforma Arduino es . Encontrará muchos enlaces a otros recursos que lo ayudarán a comenzar.

Es posible que desee comprobar SparkFun, que es principalmente un proveedor a nivel de aficionado de piezas electrónicas (incluyendo Arduino y otras tablas útiles) y herramientas. Tienen a lot of great content en su sitio web para ayudarlo a comenzar con el hardware y el software.

2

¡Tienes muchísimas opciones! Supongo que comenzarás con un emulador (no importa qué tipo de sistema operativo incrustado uses, probablemente no usarás una CPU x86). Si trabaja con una CPU X86, no necesita ningún emulador pero es posible que necesite una máquina virtual.

Has etiquetado tu pregunta con "arm", así que supongo que quieres usar un procesador ARM (entonces necesitarás un emulador). Comience a buscar here, encontrará tutoriales y recursos para comenzar con la programación integrada.

3

Se podría dividir sistemas embebidos en dos clases:

  • los que funcionan una completa OS. Si hay una forma documentada de obtener el SO y arrancarlo, entonces estos no se manejan de manera diferente a los escritorios, excepto que tendrá que compilar o descargar un compilador cruzado. Para cosas como teléfonos, por supuesto, el patrocinador del entorno proporciona entornos de desarrollo elaborados con depuradores.

  • Los que ejecutan un programa en lo que se llama "bare metal". Estos tendrán poco más que tu programa y el tiempo de ejecución del idioma cargado. (Algunos de estos son realmente simple y puede funcionar con un simple intérprete o lenguaje ensamblador. Estos tienen la ventaja de una programación compleja, no es necesario sólo para configurar los periféricos integrados.)

puede que no necesite un emulador u otra configuración de depuración de hardware, de hecho, es posible que ni siquiera necesite hardware para comenzar. Si es posible, intente realizar el desarrollo inicial en una máquina virtual.

Como siempre, obtienes lo que pagas.En un proyecto comercial, hay muchos entornos disponibles, pero presumiblemente no se usan mucho para proyectos de robots y similares.

Hay muchas plataformas que cuentan con cantidades razonables de soporte. La última rabia (debido a su notable precio de US $ 35) es the Raspberry Pi,, sin embargo, no está disponible de inmediato en este momento.

2

Sugeriría probar algunas de las herramientas de desarrollo de la serie EZ430 de TI. Algunas de las herramientas se pueden comprar por tan solo $ 20 y tienen una funcionalidad básica, así como formas de expandirlas. Puede comprar fácilmente dos eZ430-F2013 y hacer que hablen entre sí o con otra computadora.

TI viene con Code Composer Studio para sus MSP430s que es gratuito y con todas las funciones (está basado en Eclipse) por lo que el entorno de programación es muy fácil de usar. TI también proporciona una gran cantidad de muestras de código que cubren la mayor parte de la funcionalidad del sistema.

Con el MSP430, estará programando en código "bare metal" como se dijo, por lo que no solo va a programar C, sino que estará alternando entre salidas y golpes de bit. Pero parece que estás interesado en aprenderlo en este nivel, por lo que este es un buen lugar para comenzar.

Por otro lado, si desea un sistema operativo integrado (como Linux) echa un vistazo al sitio web de gumstix.

2

Debido a que su pregunta proporciona poca información en cuanto al tipo de aplicación, los requisitos de rendimiento y el presupuesto, etc., ninguna respuesta será particular, bien enfocada.

Sin embargo, dado que sugeriría que elija un dispositivo de arquitectura ARM, simplemente porque esto cubre dispositivos de unos pocos dólares con rendimiento en los 10 de MIPS y pequeñas memorias en chip para procesadores de aplicaciones en tablas de costos algunos cientos de dólares capaces de ejecutar Linux, WinCE o Android, por ejemplo.

Nos guste o no ARM es omnipresente en el mundo de los sistemas integrados; todo lo demás es nicho en términos de diseño y participación en el mercado. Un dispositivo basado en Cortex-M3 en una placa de desarrollo/evaluación simple es un buen lugar para comenzar. Sin embargo, se sentirá frustrado si no tiene en cuenta el costo de las herramientas y el hardware de depuración.

+0

¿No hay algunas herramientas de software que pueda usar solo para poder probar un poco de programación? Por ejemplo, algunos tutoriales que usan emuladores de microprocesador? ¿O aconsejas comenzar de inmediato con un chip físico? – nuno

+1

+1 para tratar de obtener el PO para reducir el alcance de la pregunta. Sugiero al OP que pase algún tiempo para decidir qué debe hacer el dispositivo integrado. Si debe hacer todo, va a ser una de las juntas más caras. Si se trata simplemente de un dispositivo de telemetría o algo simple (es decir, la supervisión de la temperatura de un refrigerador o algo así), puede ser una placa mucho más barata. – ldav1s

+0

Acepto que el alcance de mi pregunta puede ser extremadamente genérico, lo siento por eso. Solo estaba tratando de obtener algunos consejos sobre cómo comenzar a hacer algunos programas bastante simples, solo por diversión. Así que supongo que simplemente comenzaría con algunas placas simples/baratas o incluso un emulador si eso es posible – nuno

Cuestiones relacionadas