¿Cómo debo comenzar con la programación incrustada?

Pasé años escribiendo código para microprocesadores PIC en C usando el compilador CCS. Este último está diseñado específicamente para los dispositivos PIC, con excelente manejo de bits, soporte para los módulos de hardware, etc.

La razón por la que el hardware te está tropezando es probablemente porque no estás leyendo las hojas de datos con suficiente cuidado. A menudo, en un PIC, los módulos de hardware, que, por supuesto, están cableados, se superponen entre sí si no tiene cuidado.

Piense en C como una buena manera de escribir lenguaje ensamblador. Escríbalo de la manera más clara y simple que pueda, con un pensamiento por línea y con nombres de variables claros y explícitos. Nunca use punteros a menos que sea absolutamente necesario. No use ningún concepto avanzado a menos que deba hacerlo; es mucho más probable que se equivoque que el compilador y el procesador. Preste mucha atención al uso de memoria y nunca use la asignación dinámica de memoria. ¡Nunca use malloc ()! No use las matemáticas de coma flotante a menos que tenga mucho tiempo y espacio.

Además, escriba el código para que pueda ver fácilmente dónde se encuentra cuando lo depura. Esto significa, por ejemplo, no use macros como expresiones, sino que escriba cada instrucción de hardware en su propia línea. Y no ponga expresiones dentro de otras expresiones, como printf (figure_something_out); descúbrelo primero, luego imprime el resultado. De esa manera puedes depurarlo.

Finalmente, mire la lista de ensamblaje cuando la haya compilado. Probablemente tendrá que ahorrar todo el espacio que pueda, y es instructivo ver qué partes de su código están ocupando la sala.

Espero domo si esto ayuda!

La mejor manera de comenzar a aprender en este campo es con el objetivo de diseñar un producto simple. No importa cuán simple, hágalo usted mismo, lea mucho sobre los pasos, pero no solo
“Haz lo que se te indique”. Piensa y reflexiona sobre eso

La electrónica es algo inútil si se usa sin un objetivo final. Cada producto electrónico tiene una aplicación en uno u otro campo.

Comience con una plataforma simple como Arduino, Raspberry Pi o puede ser la serie TIVA. La idea es comprender cómo funciona un sistema de microcontrolador y cómo generalizar su conocimiento para construir algo a partir de lo que sabe.

La mayoría de las veces, si aprende las 12-15 partes básicas de un sistema embebido, está listo para comenzar. Temporizadores VIZ, DIO, ADC, UART, SPI, I2C, modos de alimentación, etc.

No hay un libro en particular que pueda ayudar, pero hay muchas comunidades que pueden ayudarlo con esto. El desafío aquí es ser muy particular y paciente, ya que la estructura interna del hardware suele ser una caja negra para principiantes, y lentamente despliega o pela la cebolla mientras se sumerge.

Le sugiero que prepare un kit de desarrollo y comience a experimentar con los diferentes periféricos.

Supongo que eres un principiante.

Hay x cosas a tener en cuenta en la programación integrada.

  1. Arquitectura de la computadora: ¿qué tipo de hardware está tratando de programar? Atmel AVR, 8051 Development Board, STM cortex M series ARM Development Board, Teensy, arduino, Raspberry., Etc. Hay n número de tableros. Incluso su PC / computadora portátil tiene placas x86 / AMD, su teléfono inteligente es un chipset Snapdragon / Exynos / Mediatek / A10 Fusion. Por lo tanto, debe comprender las funcionalidades de cada hardware que contiene. Periféricos como temporizadores, DMA, interrupciones, I2C, SPI, UART, CAN, LIN, WIFI, BLE, I2S, ZigBee, Zwave., Etc. Si es un SoC, también puede tener DSP (Hexagon DSP presente en Snapdragons), Procesador de señal de imagen-ISP (Spectra ISP presente en Snapdragon 820), GPU (Adreno GPU presente en Snapdragon), Módems LTE. El proveedor de hardware le proporcionará el SDK / API / OS / Tool / IDE para trabajar en él. Por lo general, para la programación de bajo nivel de ARM, Keil o IAR suele ser el camino a seguir.
  2. El idioma y el entorno: como mencioné anteriormente, debe seguir con el software proporcionado por el proveedor para que su trabajo sea más rápido. El lenguaje suele ser C. A veces C ++. Si tiene que trabajar en componentes internos de Android integrados, necesita Android NDK. Si está trabajando en Arduino, debe usar Arduino IDE. Si la placa de desarrollo / incrustada viene con un sistema operativo (principalmente basado en Linux), solo necesita compilar su código C con un compilador adecuado para su arquitectura. Conozca las diferencias en la compilación cruzada.
  3. C: este debería ser el parámetro más importante de todos. Estar en contacto con eso. Juega con punteros. Implemente varias estructuras de datos y algoritmos. Pon a prueba tus habilidades C con las pruebas en línea. Intente resolver problemas en HackerRank y HackerEarth: desafíos de programación y trabajos de desarrollador.
  4. Sistema operativo / RTOS / Unix / Linux: debe conocer los 3 conceptos básicos que contiene. 1. Gestión de procesos 2. Gestión de memoria 3. Sistemas de E / S. Juega con comandos de Linux y scripts de shell. Aunque la mayoría de los RTOS son propietarios, intente trabajar en ello. Juega con subprocesos múltiples y procesamiento múltiple. No va a escribir el código de Unix / Linux Kernel para una arquitectura particular desde cero en su primer trabajo.
  5. Si se familiariza con la arquitectura Multi-Core, juegue con GPU usando CUDA / OpenCL / Vulkan.

Si está interesado en ver recursos para estudiar, vea mis publicaciones anteriores.

Comienza a trabajar con C en Linux.

La comprensión del concepto de hardware es la parte principal de la programación integrada. En general, 8051 es un controlador simple y bien organizado para comenzar.
Puede referirse al 8051- Microcontrolador y sistemas integrados de Ali Mazidi.
Primero aprenda los conceptos generales de los módulos de E / S, memoria y arquitectura, etc. (toneladas de materiales disponibles en Internet). Port, DIO son módulos de refuerzo fáciles y de confianza para comenzar. Verifique las notas de la aplicación para un controlador específico e intente comprender cómo se puede desarrollar una aplicación simple utilizando módulos básicos y SFR. Aprende poco a poco todos los días.
Además de todo, siempre tome el manual del usuario / hoja de datos del controlador específico como base para su aprendizaje y desarrollo.

Comience con la codificación de microcontrolador.

y cómo, verifique la siguiente respuesta:

¿Cómo aprendo la codificación de un microcontrolador?

Gracias por A2A

Es genial que haya hecho una base sólida en ‘C’ porque eso es todo lo que necesita en la programación integrada. Ahora, para la programación integrada, deberá comprender el hardware; de ​​lo contrario, no podrá realizar la programación. Comience con algunos conceptos básicos de la electrónica y, cuando sus conceptos básicos sean claros, no le resultará difícil programar incrustado.

Lea esto: ¿Cómo hago una carrera en sistemas integrados?

Fácil de comenzar con la programación integrada. La programación de C incrustado se usa ampliamente en el mundo de los sistemas embebidos.

Siga los pasos de este artículo para comenzar la programación de Embedded C

Puede consultar este curso en línea gratuito que comienza en 26 días:

Sistemas Embebidos – Da Forma al Mundo

Tiene muchas buenas críticas, no lo he tomado, pero planeo hacerlo este año.

Comience con la placa Arduino Uno