¿Cuál es la mejor manera de comenzar con la programación de firmware / sistemas integrados?

Arduino, sin duda , seguro!

Algunos han sugerido que comenzar con Arduino te da una desventaja. Estoy de acuerdo en que si nunca profundizas un poco más, es insuficiente, sin embargo, aquí está mi opinión:

La programación incorporada es un campo tan complicado en el que realmente necesita un trampolín. No tiene la capacidad de comenzar con máscaras de bits, macros, usar programadores complicados, elegir y aprender un IDE completo, elegir un microcontrolador basado en sus especificaciones, compilar o cargar código. También necesita una comunidad de usuarios sólida para obtener ayuda. Arduino se encarga de los detalles, proporciona una comunidad de usuarios * excelente * y te ayuda a dar ese gran primer salto. Una vez que te mejores, expande desde allí.

Arduino no es tan limitado como mucha gente piensa:

Produje una placa de interfaz de comunicación simple que actualmente se usa para filmar películas de Hollywood, incluida Mission Impossible 5 … usando un Arduino. No estoy de acuerdo con que te haga discapacitado. Cuando esté listo, comience a leer el código fuente de Arduino para funciones particulares que le interesen, y lentamente baje para manipular temporizadores, contadores, registros y puertos directamente según sea necesario, siempre que el proyecto requiera algo un poco más profundo … y aún haga esto en la placa Arduino / clon basado en ATmega328, a menos que su proyecto requiera un hardware más rápido o más capaz.

En resumen, Arduino es genial. No es una desventaja; es un trampolín, una ayuda, una herramienta, un maestro, un dispositivo muy capaz, un producto de creación de prototipos, un producto para principiantes, un producto intermedio, un producto final, incluso un producto experto, y … un regalo del cielo.

Aquí hay un montón de enlaces (vea la parte inferior del artículo al que apunta el enlace) que he compilado a medida que avanzo (y continúo progresando) a través de las diversas etapas de aprendizaje de Arduino y programación integrada:
El poder de Arduino

Y aquí hay algo de ayuda en el lado de la soldadura de los sistemas integrados:
Kit de soldadura recomendado y tutoriales (para Arduino, electrónica y control de radio)

Mi voto es por la plataforma Arduino. Es extremadamente fácil comenzar en sistemas embebidos utilizando un Arduino gracias al hardware a un precio razonable, la comunidad de soporte en línea masiva y el código de ejemplo que es increíblemente fácil de descargar, compilar y cargar en su propio hardware.

El lenguaje de programación simplificado y las bibliotecas gratuitas también ofrecen una introducción más suave al mundo de la interacción de software y hardware de bajo nivel que tradicionalmente se ofusca por los matices sintácticos de C y macros, pragmas y hojas de datos específicos del microcontrolador / compilador.

Además, hay toneladas de “escudos” adicionales que permiten una fácil interfaz con diferentes tipos de sensores y el mundo exterior en general.

  1. Comienza a construir cosas. Más detalles están en la respuesta de Aniket Maithani.
  2. Haga cosas reales y no en software de simulador pirateado.
  3. Y no te unas a ningún instituto de formación. Por lo general, cubren tecnología de 20 años.
  4. Consigue un mentor de la industria. Incrustado no es marcas. Así que evita a los maestros. Solo pueden ayudarlo a eliminar las pruebas. (Existen excepciones, así que usa tu criterio y no me grites).

Bueno, han pasado dos años desde que aprendí y me sumergí en el mundo de la electrónica integrada. Lo primero que debe tener es la actitud correcta y el hambre de conocimiento. Actualmente estoy persiguiendo B.Tech, en ciencias de la computación e ingeniería. El mundo del PANEL “WIRES”, CHIPSETS siempre me ha fascinado.

Para empezar : Obtenga su kit de herramientas, no uno costoso. Pero debe contener todo el equipo adecuado. Por ejemplo, soldador, probadores, cables, ¡ placa de pruebas! etc.
¿Cómo empezar? La respuesta es simple: ¡ Explora ! Después del segundo año, tenemos que hacer un proyecto en cualquiera de los dominios, ya sea software o hardware. Elegí la posterior, porque pensé que sería una gran oportunidad para hacer un proyecto digno que no sea otro libro de texto, sino que también tendrá implementaciones prácticas.

Puede pensar en los problemas del mundo real que enfrenta al tratar con sus dispositivos. Por ejemplo, ¡elegí un monitor de energía abierto e intenté hacerlo más barato! Y por alrededor de 2000 / – dólares hice un monitor de energía simple que rastrea las necesidades de energía de los usuarios sobre la marcha.
Qué no esperar: he interactuado con algunas de las personas que están en esta industria. En primer lugar, este es un juego práctico; la teoría lo ayudará, pero la practicidad del sistema de hardware es un caso completamente diferente.
Revistas: Revistas como EFY o revistas ayudan mucho. También puede obtener una gran cantidad de ayuda de algunos de los grupos de Facebook / Google relacionados con el mismo.
Bricolaje: En resumen, ¡ hazlo tú mismo !
Carrera: no soy un fanático cuando se trata de lo que la industria realmente quiere, ya que actualmente estoy explorando mi gusto en el campo de la electrónica integrada, pero esta imagen realmente lo resume:

Compartiendo mi experiencia personal:

1. He estado trabajando en el campo integrado desde principios de 2007, aprendiendo de Internet, haciendo proyectos en simuladores o en placas de hardware.

2.Pero después de unirme a la industria, lo que realmente extrañé fue la mayor experiencia de C (puntero, estructuras, matriz, lista de enlaces y lista de enlaces doble), microcontrolador básico (conjuntos de instrucciones de lenguaje ensamblador), sistema operativo (conceptos básicos del sistema operativo, componentes internos y arquitectura), y conocimiento de aspectos internos de Linux.

3. Arquitectura de memoria básica (RAM, SRAM y arquitectura interna flash).

4. Conceptos de red (arquitectura central del modelo OSI, componentes internos de todo el modelo OSI)

Todas estas cosas no se pueden aprender simultáneamente; tienes que aprenderlos paso a paso, por lo que primero debes mejorar tus habilidades en C, luego implementarlas en microcontroladores (durante unos días), cuando llegue el momento aprendiste un poco y luego cambias a ARM, y aprendes el funcionamiento interno de Linux en paralelo -y

Entonces estás listo para borrar todas las entrevistas. Pero tenga en cuenta que el campo incrustado necesita más su interés de la persona en particular.

Espero que esto pueda ayudarte, todo lo mejor. Pero recuerda, sin C eres cero (así como yo).

Sigue aprendiendo … Sigue compartiendo. Usar Internet es la forma más fácil de aprender, pregunte en blogs. Puedes borrar todas tus preguntas.

Ver mi página de inicio, My Electronics Lab

Si está buscando comenzar con la programación integrada, personalmente le recomiendo a Arduino que se familiarice con la programación de sistemas integrados.

Sin embargo, cuando pase a arquitecturas más complejas (ARM, etc.), y debería hacerlo muy rápidamente, se dará cuenta de que Arduino era solo para hacer que su interés continuara. Programar otras arquitecturas es una historia completamente diferente. Pero, para empezar, Arduino lo haría.

  1. Lo más esencial: aprender a programar. Se recomienda C / C ++.
  2. Hoy puede comprar computadoras de una sola placa muy asequibles, Arduino (sin sistema operativo) o Raspberry (con sistema operativo). También hay placas SoC, como Terasic Atlas Soc que ejecuta Linux.

Compre tableros, encuentre tutoriales en Internet y comience a compilar su código cargándolo en el tablero y simplemente ejecútelo.

Aprenderá mucho sobre programación, código incrustado, cargadores de arranque y depuración (esto último es muy importante, el firmware debe ser depurado, necesita aprender cómo establecer puntos de interrupción de manera eficiente, evaluar variables, registros internos, contenido de memoria). Lo más importante, solo hazlo.

Le sugiero que comience con Arduino, debido a la facilidad de aprendizaje y programación. Hay muchos recursos en línea, formularios de discusión para obtener ayuda. Tienes algunas buenas respuestas para esta pregunta, puedes confiar en sus consejos. Me gustaría darte algo diferente.

Convertirse en un buen programador de Arduino no lo convierte en un buen diseñador de sistemas integrados. En algunos proyectos complejos de desarrollo de sistemas integrados, los desarrolladores tienen que estudiar en profundidad los protocolos de hardware y comunicación.
En ocasiones, debe consultar las hojas de especificaciones de hardware para estudiar cómo funcionan realmente. Te sugiero que también aprendas lenguaje ensamblador. El ensamblaje está muy cerca del lenguaje de máquina, la experiencia que obtienes al codificar programas de ensamblaje te dará una mejor comprensión de los protocolos de hardware.

Vistas personales: Arduino es realmente genial para comenzar, pero te hace discapacitado. Casi olvido programar AVR, y tengo miedo de la idea de hacerlo,
y vuelvo al Arduino.

Pero el problema es que no he visto a nadie usar esto para un producto embebido real. De hecho, prefieren el lenguaje ensamblador ya que les da un mejor control sobre el código. Si opta por AVR, hay muchos buenos tutoriales disponibles en Page en Extremeleectronics … No puedo decir mucho, incluso si estoy confundido.

Puede comenzar aprendiendo C. Arduino es una excelente manera de comenzar, pero también le sugiero que haga la programación de nivel de ensamblaje con atmega8,16 o 32. Es genial aprender programación básica y también eliminaría muchos conceptos básicos de microcontroladores.

Más tarde, puede pasar a raspberry-pi y beagle bone black para sumergirse profundamente en los controladores de dispositivos y la programación del sistema operativo.

Raspberry Pi y BeagleBoard.

Arduino es excelente, pero el uso del IDE oculta la verdadera naturaleza de la programación incrustada.

Si no ha programado antes, entonces es un buen lugar para comenzar.

Si está familiarizado con la codificación, consulte el curso en línea gratuito para crear su propio sistema operativo en la Raspberry Pi.

http://www.cl.cam.ac.uk/projects

Esto no está rodando su propio sistema operativo Linux, sino que está creando un dispositivo de arranque de metal desnudo.

Dado que el Pi utiliza efectivamente un chip móvil, aprenderá mucho sobre el firmware / desarrollo integrado.

Lea este artículo [http://bit.ly/2Dmojke] para obtener más detalles sobre qué aprender a ser un buen ingeniero de diseño integrado.

1: Verifique lo que estudió en profundidad en los últimos 4 años y luego intente hacer un proyecto basado en él (no tan costoso).
2: Después de eso, comience a hacer un proyecto pequeño pero efectivo utilizando varias herramientas basadas en un sistema integrado.
3: El último y último mundo “mantente hambriento y tonto” porque “Eres tu mejor maestro”.

More Interesting

¿Qué curso es más beneficioso en sistemas electromecánicos de concentración mecatrónica, microcontroladores o control automático?

¿Qué / quién determina qué microcontrolador utiliza una empresa para un producto?

¿Qué es 'Internet de las cosas', qué lenguaje de programación se requiere para esto?

¿Cuáles son las instrucciones PUSH y POP en los microcontroladores 8051?

Cómo fusionar un sistema integrado en Android

¿Qué te interesó en la programación de sistemas embebidos?

¿Podría evaluar mi perfil para una maestría en sistemas integrados / CS en Alemania?

¿Cómo son útiles las estructuras de datos en sistemas embebidos?

¿Cuál es el mejor instituto para capacitación en sistemas integrados en Bangalore con buenas ubicaciones?

¿Por qué se desarrolló Verilog? ¿Puede C / C ++ hacer lo que hace Verilog?

¿Los dispositivos militares usan los mismos microcontroladores que nosotros estamos usando, como los microcontroladores AVR, PIC y ARM?

¿De qué manera la programación de robótica es diferente de la programación principal e integrada?

¿Hay algún algoritmo con una amplia aplicación que un ingeniero de sistemas integrados debería conocer?

¿Puede un estudiante de BBA estudiar Sistemas Embebidos, Microcontrolador, Nanotecnología para hacer algo creativo pero relacionado con la tecnología?

¿Con qué frecuencia se usa el lenguaje C en sistemas militares integrados para una forma de disparadores de respuesta automática para armas?