Cómo practicar la programación C y C incrustada

Solo puedo adivinar lo que el entrevistador podría haber querido decir cuando dijo que tiene ‘conocimiento’ pero que carece de ‘habilidades de programación’. ¿Quizás conocía bien la parte de hardware / electrónica pero su sintaxis C era inestable? ¿Tal vez parecía conocer bien el lenguaje C, pero tuvo problemas para escribir código para problemas simples que el entrevistador le pidió que resolviera?

Cualquiera que sea el caso, estoy completamente de acuerdo con lo que la mayoría de las personas que han respondido a su pregunta han sugerido: ¡ sigan practicando! Simplemente no puede aprender programación de un libro más de lo que puede aprender natación o ciclismo de un libro. Debe probarlo usted mismo y definitivamente mejorará con el tiempo. La depuración también es una habilidad tan importante como la programación, para la cual desafortunadamente no encontrarás muchos libros.

En primer lugar, obtenga el lenguaje C en sí antes de entrar en la complejidad adicional de un sistema integrado. Intente hacer sus propios proyectos simples, experimente con punteros, implemente algunas estructuras de datos y algoritmos básicos (listas vinculadas, colas, clasificación, búsqueda, etc.). Incluso podría probar sitios como HackerEarth que le permiten practicar problemas de programación fácilmente en línea sin necesidad de un compilador. Una vez que conozca el idioma lo suficientemente bien, intente buscar en el código de otras personas más ideas.

Para la programación integrada, obtenga una placa de desarrollo basada en, por ejemplo, un AVR o un MSP430 o algún otro microcontrolador simple de 8 bits e intente abrir los periféricos uno por uno. Aprenda a usar temporizadores, interfaces de comunicación en serie, puertos GPIO, etc. Intente crear un sistema independiente con solo su propio código. Aprenda lentamente a integrarse con el código de otros y las bibliotecas de terceros. Ahora comience a hacer sus propios proyectos de pasatiempo de complejidad gradualmente creciente.

Sobre todo, no se desanime, sin importar cuántos rechazos pueda enfrentar. Mantén vivo tu interés. La mayoría de los buenos programadores que conozco realmente adoran el acto mismo de programar y eso los convierte en estudiantes apasionados, lo que a su vez mantiene sus habilidades afiladas.

¡Así que diviértete, buena suerte!

Como todos los demás dijeron, obtenga un hardware apropiado, piense en algún proyecto que tenga que ver con él y luego hágalo. No hay mejor manera que las manos.

El entrevistador dijo que “carece de habilidades de programación”. Eso es solo inexperiencia. No tengas miedo de aprender mirando el trabajo de los demás. Elija su plataforma de hardware, algo así como un Arduino, o una Raspberry Pi, o esa placa STM que Roger DiPaolo estaba recomendando, y luego mire los proyectos que otras personas han hecho con ella. Habrá un gran número en línea. Lea su código , aprenda las técnicas de él y hágalo suyo. No es robar.

El trabajo integrado generalmente requiere una familiaridad cercana con el hardware, así que obtenga las hojas de datos para el procesador y léalas hasta que las entienda. Eso será difícil para Raspberry Pi, que usa un SOC secreto de Broadcom. Puede leer sobre el núcleo ARM, pero no sobre el resto del chip.

Además, ¿puedo recomendarle que si desea trabajar en la Compañía X, averigüe qué procesador utiliza la Compañía X en sus productos y aprenda cuál ?

Retarte a ti mismo. Escribe algo que no se pueda escribir sin realmente aprender cosas. Un gestor de arranque para algún tipo de objetivo incrustado sería un proyecto bastante bueno. Elija un proyecto en el que se vea obligado a escribir todo o prácticamente todo el código; sin enredar una serie de llamadas a alguna biblioteca o API existente que hace el trabajo pesado. Piensa en metal desnudo.

Sea metódico al respecto, creando una especificación por adelantado y un plan de cómo abordar el proyecto. Haga parte del plan en una lista de incógnitas y comience a investigar esas incógnitas. Haga esa lista abierta, porque mientras investiga, debería encontrar otras cosas que necesitará aprender. Cada cosa que aprenda puede ir acompañada de un código de prueba / capacitación que demuestre el uso del principio o método que ha aprendido. No se preocupe demasiado por hacer el código demasiado bonito todavía; vas a querer reescribirlo eventualmente. Solo después de haber agotado esa lista de incógnitas, debería comenzar a escribir el código para el proyecto. Es posible o incluso probable que esos fragmentos de código del banco de pruebas que escribió inicialmente se correspondan bastante bien con partes de la estructura en su proyecto. Vuelva a escribirlos (no los reutilice) para adaptarlos de manera óptima a esa estructura e incluya un marco de prueba (prueba de unidad) con cada pieza. Esto reforzará su comprensión, así como también proporcionará un producto de calidad profesional para demostrar a los posibles empleadores (es posible que no tenga idea de la fuerte impresión que esto causará).

Para abordar el tema de sus habilidades de programación, solicite ayuda de conocidos en el campo para revisar parte de su trabajo. Si sus deficiencias son obvias para un entrevistador, puede ser fácil para alguien identificar las cosas en las que necesita trabajar. La habilidad de programación tarda un tiempo en desarrollarse. No hay solución para ese problema; tienes que poner en el trabajo.

Puede practicar C utilizando cualquiera de los compiladores mencionados aquí: Turbo C , DevC ++ , Codeblocks , etc. Para C incorporado, comience con cualquier microcontrolador básico, preferiblemente 8051. Obtenga el compilador para ello, Keil IDE

Comience con un parpadeo led que es análogo a hello world en cualquier lenguaje de programación. Luego proceda a los patrones de led, hay muchas interfaces de E / S.

Si no tiene hardware real, puede comenzar con un simulador como Proteus.

Espero que te ayude.

El aprendizaje es un proceso constante. No podemos aprender todo en un solo día, pero podemos aprender algo todos los días. Aprendemos y crecemos, todo sucede gradualmente. Ningún gran líder o científico tuvo éxito o mejor en su campo en un día. Aprendieron, practicaron, fracasaron, aprendieron de sus errores e intentaron nuevamente hasta que obtuvieron lo que querían. Mejorar las habilidades de programación no es una excepción. Sabemos que aprender un conocimiento de programación de computadoras no es un juego de niños a menos que te apasione la programación. Por lo tanto, está claro que si desea mejorar sus conocimientos y habilidades en un sistema integrado, debe practicar en C. integrado. También sabemos que la ingeniería tiene que ver con el conocimiento práctico y sin conocimiento práctico no puede hacer nada.

Quizás se pregunte cuál es la mejor manera posible de aprender y dominar el lenguaje C. Una de las mejores formas es incorporar un proyecto simple e intentar completarlo usted mismo . No hace falta decir que enfrentará dificultades al hacerlo. Puede fallar y sentirse frustrado, pero una vez que lo complete por su cuenta, se sentirá orgulloso y motivado, lo cual es muy importante para continuar. Aprenderá cómo cometer errores y cómo aprender de ellos.

Durante su fase inicial, puede unirse a un instituto de capacitación integrado para aprender los conceptos básicos de la programación. Si vives en el área de Bangalore, entonces hay un mejor instituto para la capacitación integrada . La razón es muy simple. Bangalore es la ciudad de TI y está llena de oportunidades.

Todo lo mejor para tu futuro. Revertir cualquier consulta técnica o no técnica.

En mi humilde opinión, no hay mejor manera que hacerlo en hardware real. Aquí es cómo casi cualquier persona puede hacerlo por una cantidad ridículamente pequeña de dinero.

Como una forma fácil y económica de practicar la programación en C para sistemas embebidos, recomendaría encarecidamente la placa de desarrollo del sistema mínimo STM8 . Los he estado comprando recientemente por 99 centavos cada uno , sin incluir el envío. Puedes hacer una cantidad increíble de cosas con uno de estos por casi nada de dinero.

Esta placa de desarrollo tiene convertidores A / D, salidas PWM, I2C, SPI, UART e incluso algunos EEPROM integrados. Practique escribiendo controladores para cada uno de estos periféricos, luego piense en una aplicación simple que haga uso de esos controladores.

Los sistemas IAR (y algunos otros) le permitirán descargar sus herramientas de desarrollo profesional para los procesadores STM8 de forma gratuita, con un límite de tamaño de código de 8K, pero eso está bien ya que este procesador solo tiene 8K de memoria flash para el código. Estas son herramientas que cuestan varios miles de dólares para la “versión ilimitada”, por lo que esta es una excelente manera de obtener un conjunto profesional de herramientas de desarrollo integradas sin costo alguno.

Para su “pod” de descarga / depuración, la placa STM8S-DISCOVERY hecha por ST Microelectronics cuesta solo $ 8.51 en DigiKey, e incluye una placa de programador SWIM que se puede separar de la placa principal si se desea utilizar como interfaz de depuración / programación para la placa de desarrollo del sistema mínimo STM8.

¡Entonces, puede obtener una configuración de desarrollo integrada de grado profesional por menos de $ 10! Tengo más de 30 de ellos y estoy desarrollando un dispositivo IoT con una arquitectura de procesador distribuido que usa 3 de ellos. ¡Una gran cantidad de poder de procesamiento por $ 3! Puedes comprarlos en muchos lugares diferentes, yo obtengo el mío en eBay, pero te animo a que busques el mejor precio y las mejores opciones de envío.

Obtenga una maravilla de IoT, como un Raspberry Pi o un Arduino, e infle vida en un dispositivo que construya a su alrededor. Arduino tiene un nivel algo más bajo y, utilizando uno de los escudos ya preparados, puede ensamblar fácilmente un dispositivo de hardware interesante.

Luego programe para hacer cosas, interrumpir rutinas de servicio, controladores de movimiento y cosas similares.

Practicará la programación de manera difícil y económica y divertida.

Siempre puedes practicar con el Raspberry PI. Use las salidas para algo: controle una grúa de juguete, un robot para caminar / rodar, agregue sensores … Agregue una cámara y luego úsela de forma remota.

Le dará un buen aprendizaje mientras lo hace.

Al escribir más códigos, encontrar sus errores y reescribirlos … ¡no hay teclas de acceso directo disponibles!