embedded - programacion - programar online
¿La mejor plataforma para aprender programación integrada? (21)
Estoy buscando aprender sobre programación embebida (principalmente en C, pero espero mejorar mi ASM también) y me preguntaba cuál sería la mejor plataforma. Tengo cierta experiencia en el uso de Atmel AVR y la programación con stk500 y encontré que es relativamente fácil. Me gusta especialmente AVR Studio y el depurador que le permite ver ese estado de registros.
Sin embargo, si tuviera que tomarme el tiempo para aprender, preferiría aprender sobre algo que prevalece en la industria. Estoy pensando en ARM, a menos que alguien tenga una mejor sugerencia.
También estaría buscando algún material de referencia, he encontrado la sección de libros en el sitio web de ARM y si uno es un libro técnicamente mejor que otro, apreciaría un aviso.
Lo último que estaría buscando es una placa de prototipos / programación como la STK500 que tiene algunos botones, etc.
Gracias =]
"programación integrada" es un término muy amplio. AVR está bastante bien en esa categoría, pero está un paso por debajo de ARM, ya que es más fácil de usar y menos potente.
Si solo quieres jugar con ARM, compra una Nintendo DS o una Gameboy Advance. Estos son muy baratos en comparación con el hardware interno (maravillas de la producción en masa), y ambos tienen cadenas de herramientas de desarrollo libres basadas en gcc que pueden compilar para ellos.
Si quieres jugar con Linux embebido, BeagleBoard está buscando ser una buena opción, solo $ 150 y tiene un montón de características.
Personalmente, creo que AVR es mejor para las plataformas de 8 bits de menor tamaño, y ARM es mejor para las plataformas más grandes y potentes de 32 bits. Al igual que muchos fanáticos de AVR, no me gusta el PIC. Simplemente parece peor en casi todos los sentidos. También evite cualquier cosa que requiera que escriba cualquier tipo de BASIC.
ARM tiene el mejor conjunto de instrucciones de las plataformas integradas ampliamente utilizadas, permitiéndote elegir los principios generales de escribir software para plataformas integradas sin empantanarse en detalles extraños como registros no ortogonales o ranuras de retardo de ramificación. Hay muchos emuladores: los de ARM, aunque no son gratuitos, son precisos para el ciclo; y una gran variedad de hardware programable basado en ARM es barato y fácil de conseguir también.
Para un proyecto divertido de prueba, eche un vistazo a xgamestation
Pero para una programación de solución de un chip más industrial utilizada, fíjate en PIC
Si solo quieres jugar con él, te sugiero la plataforma Arduino ( http://www.arduino.cc ). Se basa en ATmega168 o ATmega8, según la versión. Utiliza un lenguaje similar a C y tiene su propio IDE.
Una buena opción sería PIC18 de Microchip
Tiene un montón de material, documentación, tutoriales y proyectos en Internet
IDE gratuito y compilador.
puede extraer su propia grabadora de flash en unos minutos. (Aunque para que un depurador funcione, tendrá que trabajar más)
Si eres un estudiante (o tienes una dirección de correo electrónico de un estudiante), Microchip te enviará muestras gratuitas. Entonces, básicamente, puedes tener un entorno de desarrollo completo por casi nada.
Los PIC son bastante frecuentes en la industria. Específicamente como controladores para robots por alguna razón, aunque pueden hacer mucho más.
Arduino parece ser la plataforma elegida en estos días para principiantes, aunque hay muchos otros. Me gustan los tableros Olimex personalmente, pero no son realmente para principiantes.
La gama de CPUs PIC de Microchip también es excelente para principiantes, especialmente si desea programar en ensamblador.
Por cierto, Assembler no se usa tanto como solía hacerlo. La regla general con embedded es si tienes 4k de memoria o más, usa C. Obtienes portabilidad y puedes desarrollar código más rápido.
Supongo que depende de tu nivel de habilidad y de lo que quieras hacer con el chip. Normalmente elijo qué chip incrustado usar con los periféricos disponibles. Si desea un puerto USB, busque uno con USB integrado, si quiere analógico a digital, busque uno con un ADC, etc. Si tiene una aplicación simple, use una de 8 bits, pero si necesita un número serio crujido, ve 32 bits.
Para mi curso de Arquitectura de Computadora tuve que trabajar con un PIC y un AVR; en mi opinión, fue más fácil trabajar con el PIC, pero tal vez sea porque es con lo que más trabajamos y tuvimos más tiempo para acostumbrarnos. Usamos el AVR tal vez solo un par de veces, así que no pude entenderlo a la perfección, pero tampoco fue demasiado complicado, o al menos no más frustrante que el otro.
Creo que también puede pedir muestras de microprocesador desde el sitio web de Microchip para que también pueda comenzar con eso.
Eche un vistazo a Processing y las placas Arduino y Wiring asociadas.
La TI MSP430 es una gran plataforma para aprender a programar microcontroladores. TI tiene una variedad de Herramientas GRATUITAS y algunas placas de evaluación baratas (desde $ 20). Además, es un microcontrolador moderno de baja potencia.
Me gustaría sugerir el beagleboard de TI. Tiene un Omap3 en él. Es una CPU Cortex-A8 ARM11, una C64x + DSP y un acelerador de video también.
La placa no necesita un dispositivo jtag costoso. Para comenzar, todo lo que necesita es un cable serie y una tarjeta SD. La junta cuesta solo $ 150 y hay una comunidad muy activa.
www.beagleboard.org
Blackfin de ADI es otra opción, ya que es una arquitectura bastante sencilla de programar, pero también puede hacer algunas cosas de DSP bastante fuertes si decide ir por esa ruta. Ayuda que el lenguaje ensamblador sea bastante sensato también.
Los tableros Blackfin STAMP son económicos (~ $ 100 último que revisé) y admiten las herramientas gratuitas de GCC y uClinux.
Cualquiera que sea la arquitectura que elijas, definitivamente recomiendo descargar primero la toolchain / SDK y mirar a través de los ejemplos de proyectos y tutoriales, en general teniendo algo de juego. A menudo puede familiarizarse con la arquitectura a través de la simulación sin siquiera tocar ningún hardware.
Si solo quieres divertirte, prueba el chip Parallax Propeller. La plataforma de juegos HYDRA parece una explosión. Hay un compilador de $ 100 C para eso ahora.
Comencé con sellos BASIC, avancé a través de chips SX y PIC en 8051s, luego 68332s, varios DSP, procesadores suaves FPGA, etc.
Los 8051 son más útiles en el mundo real ... las cosas no desaparecerán. Hay toneladas de derivados y cosas locas para ellos. (Solo aléjese del DS80C400) La industria energética está absolutamente llena de ellos.
Comience con algo pequeño. Si tiene RAM externa y muchos registros ... ¿cuál es la diferencia entre eso y un SBC?
Yo mismo he trabajado en programación integrada durante 9 años y tengo experiencia en TI MSP430, Atmel AVR (un par de sabores) y pronto usaré un ARM.
Mi sugerencia es recoger algo que tenga algunas características adicionales en el procesador como el controlador de ethernet y el controlador CAN, incluso obtenga dos o tres si puede. Es agradable trabajar con los dispositivos integrados, pero una vez que pueden hablar con otros dispositivos similares a través de CAN o conectarse a una red, pueden ser mucho más divertidos.
Hace muchas lunas trabajé con 8 bits como 68HC05 y Z80, luego AVR y MSP430 (16 bits). Sin embargo, la mayoría de los proyectos recientes estaban en ARM7. Varios fabricantes ofrecen controladores ARM, en todos los colores y tamaños (bueno, no realmente de color).
ARM (7) está reemplazando la arquitectura de 8 bits: es más eficiente (RISC de 32 bits en ciclos de instrucciones más rápidos que la mayoría de los 8 bits), tiene más memoria y está disponible con varias configuraciones IO. Trabajé con los controladores NXP LPC2000, que también son baratos (<1 USD por un 32-bitter!).
Si estás en Europa http://www.olimex.com/dev/index.html tiene algunas placas de desarrollo de bajo costo. Funciona en el resto del mundo también :-)
Para aprender, no puedes pasar el AVR. Los chips son baratos y funcionarán con cero componentes externos; también suministran suficiente corriente para impulsar un LED directamente desde el puerto.
Puede comenzar con un programador barato como el USBTinyISP de lady-ada (USD $ 22 por un kit) que puede alimentar su placa con 5V desde el puerto USB. Obtenga las herramientas gratuitas WinAVR (basadas en GCC) y AVRStudio y obtenga un pequeño proyecto que funcione en muy poco tiempo.
Sí, los AVR tienen limitaciones, pero desarrollar software para microcontroladores se trata principalmente de administrar los recursos y hacer frente a esos problemas. Es poco probable que experimente problemas como quedarse sin espacio en la pila, RAM o ROM cuando está realizando proyectos hobbistas para poderosas plataformas ARM.
Dicho esto, ARM también es una gran plataforma que se usa ampliamente en la industria, sin embargo, para aprender, recomiendo AVR.
Sugeriría la serie PIC18F de Microchip. Empecé a desarrollar para ellos con el emulador en circuito RealICE, pero el pickit2 es un depurador decente por el precio. Podría decir esto también para el AVR, pero hay una gran cantidad de seguidores para el dispositivo en toda la web. Pude tener un dispositivo USB incrustado, pero funcional, incrustado que se ejecutaba en cuestión de días debido a toda la charla relacionada con PIC.
Lo único que no me gusta de los PIC es que gran parte del código de muestra está MUY entrelazado en los paneles de demostración. Eso puede dificultar arrancar las secciones que necesita y aún tener una aplicación que se compilará y ejecutará para su aplicación.
Texas Instruments ha lanzado un kit de desarrollo muy interesante a un precio muy bajo: la herramienta de desarrollo eZ430-Chronos contiene un MSP430 con pantalla y varios sensores en un reloj deportivo, incluyendo un programador de depuración usb y un punto de acceso de radio usb por 50 $
También hay una wiki que contiene mucha y mucha información.
Ya he creado una propuesta stackexchange para el kit eZ430-Chronos.
Debería probar y aprender de kits para desarrolladores proporcionados por Embedded Artists . Después de que obtenga el kit, consulte los videos y videos instructivos proporcionados por NXP, que no son tan detallados como podrían ser, pero cubren muchas cosas. Los problemas para aprender ARM como su primera arquitectura y tratar de hacer algo práctico son:
- Necesitas comprar dev. equipo.
- Necesita un buen libro para aprender el ensamblaje de ARM, porque tarde o temprano se encontrará con el código de inicio de ARM, que es un buen negocio para un principiante. El libro que mencioné allso cubre algunos programas en C.
- Combine el libro mencionado anteriormente con una guía del usuario para su procesador específico como este . Asegúrese de obtener esto ya que estudiar esto en combinación con el libro anterior es la única forma de aprender su proceso ARM. en detalle.
- Si desea realizar una transferencia desde el ensamblaje ARM a la programación en C, necesitará leer este libro , que cubre un procesador ARM diferente, pero que es más fácil para el principiante C. El inconveniente es que no explica ningún ensamblaje de ARM, pero es por eso que necesitas el primer libro.
No hay manera fácil.
mikroElektronika tiene buenos tableros ARM y compiladores C, Pascal y Basic que pueden satisfacer sus demandas.
Tu pregunta ha sido respondida en esta pregunta .
Para agregar a eso, la industria de los procesadores integrados está muy segmentada, no tiene un jugador importante como Intel / x86 es para la industria de los procesadores "de escritorio". El procesador ARM tiene una gran cuota, también lo hace MIPS, y hay muchos chips microcontroladores más pequeños y específicos disponibles (como el MSP430, etc. de TI).
En cuanto a la documentación, hago desarrollo integrado para un trabajo diario, y la documentación a la que tenemos acceso (como desarrolladores de software) es bastante escasa. Su mejor opción es usar la documentación disponible en el sitio del fabricante del procesador.