Tenga en cuenta que el equipo de hardware tardará 2 meses en desarrollar algo de hardware, pero para entonces tendré que tener el software listo.
Mi pregunta es: ¿cómo puedo escribir el software y probarlo sin tener el hardware?
¿Hay algún estándar / s a seguir? ¿Cómo lo haces?
exit()
porque trató de mapear direcciones codificadas en / dev / mem.Respuestas:
No tiene hardware durante las etapas iniciales del desarrollo del firmware. Las estrategias comunes para lidiar con esto son:
Aquí es donde el diseño modular ayuda nuevamente. Si no puede simular razonablemente algunas interacciones de hardware de bajo nivel, utilice una versión diferente del módulo que toca ese hardware pero que pasa sus propias acciones simuladas a los niveles superiores. Los niveles superiores no sabrán que esto está sucediendo. No verificará el módulo de bajo nivel de esta manera, pero casi todo lo demás.
En resumen, use buenas prácticas de diseño de software, que por supuesto debería estar haciendo de todos modos.
fuente
Sin tener una idea de qué es lo que está desarrollando, o en qué familia de microcontroladores se basará su hardware, la mayoría de las familias de microcontroladores tienen sistemas de desarrollo de bajo costo disponibles que tienen un conjunto de periféricos comunes en ellos, lo que puede permitirle simule al menos parte de su hardware objetivo final.
fuente
Dependiendo de cuán dependiente será el hardware de la aplicación, puede comenzar a implementar el proyecto en una PC estándar (Windows, Linux ...). La mayoría del acceso periférico debe abstraerse de todos modos, por lo que no es un gran problema implementar algunas funciones ficticias, que se reemplazarán más adelante. Si no es posible simular algún comportamiento, al menos podría hacer una maqueta del sistema (API ...), por lo que la implementación real será mucho más rápida y clara, tan pronto como el hardware esté listo.
Por supuesto, hay muchas cosas que no se pueden simular, como el comportamiento en tiempo real o los controladores de hardware complejos. Por otro lado, un ADC controlado por interrupción puede simularse fácilmente utilizando un hilo que lee valores de un archivo o un puerto de red.
Por supuesto, todo esto depende en gran medida de varios factores:
Por mi parte, primero estoy diseñando prácticamente todos los módulos de firmware en una PC.
fuente
Intenta obtener un simulador para tu chip. Debe simular todas las entradas esperadas y algunas inesperadas también. Modular / abstraer todo lo que pueda y escribir pruebas unitarias. Si puede, esas pruebas pueden convertirse en parte de su código real y convertirse en una función (autocomprobación de la placa).
Si no puede obtener un simulador, resuma tanto como pueda a través de una HAL (capa de abstracción de hardware). Todos los conductores lo respaldan. Intente abstraer todo el ensamblaje específico de la plataforma detrás de alguna llamada de función C y piense en ellos como controladores también. Escriba el resto como código C / C ++ portátil y cree un HAL delgado para x86 y ejecútelo en su máquina con todos los casos de prueba.
De esa manera, cuando obtenga el hardware, solo tendrá que depurar el HAL. Cuanto más delgado sea, más rápido lo depurará y tendrá todo funcionando. Recuerde que si usa un ensamblaje específico de plataforma para operaciones más rápidas, usted sí queremos MUCHO para obtener pruebas bit a bit .
fuente
a == b
comparaciones con flotadores, pero todavía las usan sin pensar con números de puntos fijos.Tu pregunta es un poco amplia. El hardware (HW) podría significar un desarrollo ASIC / FPGA totalmente personalizado, DSP programados por ensamblador, o "solo" un sistema embebido típico basado en microprocesadores / microcontroladores / SoC disponibles en el mercado (por supuesto, un SoC también puede contener un DSP que tal vez quieras programar ...). Para grandes cantidades de venta, convertirlo en un ASIC no es infrecuente.
Pero para un proyecto de 2 meses, espero que esté basado en algún microcontrolador:
En cualquier caso, debe insistir en que el equipo de hardware le dé un prototipo para que pueda comenzar a probar su código antes de la fecha límite absoluta; esto podría consistir en una placa de desarrollo genérica, como algunas personas ya han mencionado, pero en mi opinión es su trabajo para proporcionarle el correcto, y potencialmente también algunos periféricos requeridos / similares para las pruebas.
Los simuladores también son posibles hasta cierto punto, pero es posible que deba caracterizar algunos sensores / datos del mundo real que pueda obtener. Aquí el equipo de hardware también necesita al menos ayudarlo.
Aparte de eso, el diseño del software ya se puede hacer y todos los módulos de alto nivel pueden implementarse (y deberían) implementarse y probarse sin el hardware real. Idealmente, también definirá una API junto con el equipo de hardware, y le proporcionarán las funciones de nivel más bajo, por lo que cualquier cambio que hagan en el lado del hardware allí (por ejemplo, simplemente redefiniendo qué pines de puerto usan), no siempre será Sé crítico contigo.
En todos los casos, la comunicación es clave.
fuente
Sí, puede desarrollar su código para su placa de destino antes de que se fabriquen.
Cómo ?
Primero debes conocer el objetivo principal de ese sistema. Entonces, a partir de esto, puede elegir el controlador de manera apropiada de una gran fuente de disponibilidad como digikey, mouser.
Y elige un simulador como Proteus. Esto simulará el procesador / controlador exacto ahora puede comenzar su codificación. Pero no puede esperar la precisión como en el hardware.
fuente