Programación de computadoras: ¿cómo se crea su propio dispositivo integrado?

  1. Identifique los requisitos, especialmente con miras a establecer IO y dispositivos periféricos. En esencia, defina cómo el dispositivo interactúa con el mundo real.
  2. Identifique qué tipos de periféricos y circuitos relacionados realizarán esa interfaz con el mundo real.
  3. A partir de las interfaces eléctricas y lógicas utilizadas por sus sensores, controladores y otros dispositivos electrónicos, identifique una plataforma de CPU que se interconecte bien con esas partes.
  4. Identifique qué tipo de código necesitará para convertir las partes en algo que haga lo que quiere que haga. Estime los recursos que necesitará para que funcione; memoria, especialmente. Agregue la memoria y cualquier otro hardware a su lista en el paso 2.
  5. Obtenga las hojas de datos detalladas de todas las partes clave; CPU, memoria, periféricos, componentes relacionados con la alimentación, etc.
  6. Diseñe un diagrama esquemático del circuito, utilizando un editor esquemático. Para esto, necesitará datos de nivel lógico, como símbolos de partes con nombres y números de pin.
  7. Traduzca el esquema a un diseño de PCB, también utilizando herramientas de software. Esto requerirá datos sobre el diseño físico, las dimensiones, etc. de todos los componentes, conectores, hardware de montaje, etc. Es una buena idea permitir cosas como puntos de prueba en puntos lógicos clave, enchufes si planea ejecutar código desde una EPROM o tecnología de memoria similar, o de alguna manera para llevar el programa a la placa de destino, como JTAG. Permitir conectores y otros aspectos mecánicos.
    1. Diseñe el aparato de alojamiento / montaje, si eso es parte del proyecto. Probablemente entrará en juego otra herramienta CAD. Con suerte, alguien más se dedica a ese trabajo, pero al menos, deberá extraer las dimensiones mecánicas, los detalles de montaje y montaje de esta parte del diseño.
  8. Envíe la placa para su fabricación. Esto podría incluir simplemente obtener PCB desnudos que llene al soldar sus componentes a la placa, o podría significar que todo se haya soldado y ensamblado. Para los primeros prototipos, probablemente se ensamble usted mismo, e incluso podría usar técnicas de tablero si puede usar la lógica DIP.
  9. Configura tu entorno de programación. Eso podría ser tan simple como instalar desde un CD o DVD en una PC con Windows, o podría significar construir su propia cadena de herramientas cruzadas a partir de software de código abierto. Depende de la CPU de destino y de cuánto trabajo quieras hacer.
  10. Escriba el código para que la pizarra haga algo cuando salga del reinicio. Instale, pruebe hasta que pueda ver que el código se ejecuta como se esperaba.
  11. Escriba módulos de código que ejerciten todos los diversos componentes de hardware que requiere su diseño. También conocido como escribir controladores. Pegue todo esto junto con algo con lo que pueda interactuar para invocar a los controladores con diferentes valores de prueba para comenzar a ver cómo funcionan los dispositivos en la exposición del mundo real.
  12. Diseña y escribe el software.

Una persona con experiencia podrá realizar la mayoría de los primeros cuatro o cinco pasos en minutos, principalmente desde la memoria y esperando reutilizar partes de diseños anteriores. El diseño, la fabricación y las pruebas de hardware requerirán bastante esfuerzo incluso para diseñadores experimentados.

El diseño y la implementación del software deben seguir las mejores prácticas habituales. Lo que no es es una aplicación estándar de escritorio, servidor o web. Por lo general, deberá hacer todo usted mismo. Eso significa escribir rutinas para imprimir en algún tipo de pantalla, o alternar un LED como su GUI. Si tiene suerte, puede tener acceso a una herramienta de depuración a nivel de hardware, pero son caras.

Gran parte del proceso es iterativo. Tiende a descubrir que uno o más de los periféricos en realidad no funcionan de la manera que pensaba, o que hay errores en el diseño esquemático o PCB, o que se olvidó de alguna parte o que el tamaño y la forma del las partes han cambiado, o no tienes tanta memoria o CPU como pensabas, o el cliente quiere que tenga una forma un poco diferente, o libera el humo mágico en algunas condiciones imprevistas.

Comienza con un conjunto de requisitos y lo traduce a un diagrama de bloques a nivel de sistema. En este diagrama de bloques, captura las cosas que su dispositivo debe tener y lo que está haciendo con las cosas (por ejemplo, Bluetooth a auriculares inalámbricos)

Una vez que tiene este diagrama de bloques, utiliza la experiencia, los puntos de referencia y una encuesta de dispositivos / sistemas comparables para estimar las capacidades de cálculo. Clasifica las capacidades como debe tener, debería tener y es bueno tener.

Ahora, puede acercarse a los proveedores de silicio y comenzar a tratar de identificar las partes que pueden usarse en su sistema. Lentamente, los bloques en el diagrama de bloques de su sistema tienen Parte # s al lado de ellos. Una vez que tenga suficientes números de pieza y haya descubierto cómo se interconectarán entre sí, tiene un diagrama HW a nivel de bloque. Esto se convierte en la base de su circuito electrónico.

A continuación nos fijamos en la programación del tablero. Usted decide qué lenguajes de programación usar, RTOS, cadena de herramientas de desarrollo, y comienza a crear un paquete de soporte de placa que inicializa todo en la placa y los configura para que sean utilizables. A continuación, escriba los controladores de dispositivo para que pueda decirle a estas partes que hagan cosas simples (como transmitir 256 bytes a través de una interfaz SPI o escribir algo en el panel de visualización)

Una vez que tenga esto, comenzará a ceder el código de aplicación que hará de la placa su producto. Luego, debe validar que la unidad está haciendo exactamente lo que desea en una variedad de circunstancias. Tal vez necesite regresar y arreglar HW o FW … Varias iteraciones dolorosas más tarde, ya está listo para enviar …

Y luego, el primer cliente encuentra problemas en su dispositivo que nunca pensó probar.

Aplaudo su intención de aprender diseño de firmware, ¡y le deseo suerte! Pero su pregunta es como preguntar “¿Cómo puedo realizar un bypass cardíaco triple?” La respuesta es pasar diez o veinte años aprendiendo y entrenando para ser cirujano. El diseño del firmware es una búsqueda satisfactoria y gratificante, pero lleva tiempo aprender. La respuesta a su pregunta no es la que esperaba. Debe aprender lo suficiente sobre el hardware para escribir el código que lo usa, luego debe dominar los conceptos básicos del diseño de software (firmware). Esto probablemente llevará algunos años, pero valdrá la pena. Lo siento, no hay atajos.

No puedo dar el salto mental.

Veo muchos productos en Internet de las cosas.

Sé un poco acerca de una placa FPGA y otras placas de desarrollo. ¿Cómo se traduce algo así en un pequeño dispositivo de producto final?

More Interesting

¿Cuál es el concepto principal de los sistemas integrados y cómo se relacionan con un proyecto?

¿Cómo podría un graduado de ECE seguir una carrera en el campo de los sistemas integrados?

¿Puedes explicar sobre Linux embebido? ¿Hará grandes cambios en el campo de incrustado?

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

¿Todos los sistemas integrados tienen un sistema operativo?

Para un ingeniero electrónico, ¿será útil tomar un entrenamiento de un mes en Emb.Sys? En caso afirmativo, ¿cuáles son los institutos que brindan la mejor capacitación?

Cómo aprender C incrustado sin ir a ningún instituto de capacitación

¿Cuáles son las cosas que debo saber absolutamente sobre el microprocesador y el microcontrolador para estudiar sistemas embebidos?

¿Cuáles son algunos ejemplos de sistemas integrados en la aviación?

¿Qué es el mapeo en sistemas embebidos?

¿Cuál será el futuro de los sistemas embebidos? ¿Qué técnicas será la versión avanzada de los sistemas embebidos?

Quiero entrar en robótica y sistemas embebidos. Tengo muy poca idea sobre la programación (solo programación básica de arduino). ¿Como empiezo?

¿Cuáles son los mejores institutos de capacitación para IoT y sistemas integrados en India?

¿Cómo seleccionamos un IDE para el desarrollo de software integrado? ¿Debería basarse en RTOS planificado o procesador?

¿Dónde puedo encontrar un mini proyecto de sistema integrado con código fuente?