Convertirse en un ingeniero oficial de diseño y desarrollo de placas base de PCB integradas es un proceso difícil que requiere que los desarrolladores mantengan y gestionen cada bit y Byte del sistema. Desde el ciclo de desarrollo estandarizado hasta la implementación estricta y la inspección del sistema, hay muchas tecnologías que pueden desarrollar sistemas integrados altamente confiables. Hoy presentaré siete tecnologías de PCB fáciles de operar y que se pueden usar durante mucho tiempo. Ayudan mucho a garantizar que el sistema funcione de manera más confiable y capte comportamientos anormales.
Los desarrolladores de software suelen ser un grupo de personas muy optimistas, siempre y cuando su Código pueda funcionar fielmente durante mucho tiempo, eso es todo. Parece muy raro que un Microcontrolador salte del espacio de aplicación y lo ejecute en un espacio de código inesperado. Sin embargo, esto no es menos probable que ocurra que un desbordamiento de la zona de amortiguación o una referencia incorrecta a la pérdida del puntero. ¡¡ sucederá! Después de esto, el comportamiento del sistema es incierto, ya que el espacio de memoria es 0xff por defecto, o porque el área de memoria generalmente no se escribe, este valor puede ser conocido solo por Dios.
Sin embargo, hay habilidades bastante completas de Enlazador o IDE que se pueden usar para ayudar a identificar tales eventos y restaurar el sistema de ellos. El truco es rellenar la ROM no utilizada con un patrón de bits conocido con el Comando fill. Para llenar la memoria no utilizada se pueden usar muchas combinaciones posibles diferentes, pero si desea construir un sistema más confiable, la opción más obvia es colocar el controlador de fallas ISR en estos lugares. Si el sistema tiene problemas y el procesador comienza a ejecutar el Código fuera del espacio del programa, activará el isr y brindará la oportunidad de almacenar el procesador, el registro y el Estado del sistema antes de decidir las medidas correctivas.
Una de las grandes ventajas de los ingenieros integrados es que nuestro IDE y la cadena de herramientas pueden generar automáticamente la aplicación o la suma de verificación del espacio de memoria (checksum), lo que verifica si la aplicación está intacta en función de esta suma de verificación. Curiosamente, en muchos de estos casos, la suma de verificación solo se utiliza cuando el Código del programa se carga en el dispositivo.
Sin embargo, si el CCR o la suma de verificación se guardan en la memoria, verificar al arrancar si la aplicación está intacta (para sistemas que funcionan durante mucho tiempo, o incluso con verificaciones periódicas) es una buena manera de asegurarse de que no se produzcan situaciones inesperadas. Hoy en día, la posibilidad de cambios en las aplicaciones de programación es pequeña, pero teniendo en cuenta los miles de millones de microcontroladores entregados cada año y los entornos de trabajo potencialmente malos, la posibilidad de que las aplicaciones de instrumentos médicos colapsen no es cero. Lo más probable es que los defectos en el sistema puedan causar que la memoria flash en un sector se escriba o se borre, destruyendo así la integridad de la Aplicación.
Realizar la inspección de Ram al arrancar
Para construir un sistema más confiable y sólido, es muy importante garantizar que el hardware del sistema funcione correctamente. Después de todo, el hardware fallará. (afortunadamente, el software nunca falla, el software solo hace lo que el Código quiere que haga, correcto o incorrecto). Verificar que no hay problemas con la Ram interna o externa al arrancar es una buena manera de garantizar que el hardware pueda funcionar como se esperaba.
Hay muchas maneras diferentes de realizar la inspección de ram, pero la forma común es escribir un patrón conocido y luego esperar un poco antes de leerlo de nuevo. El resultado debería ser que lo que lees es lo que escribes. Lo cierto es que, en la mayoría de los casos, los controles de Ram pasan, y eso es lo que queremos. Sin embargo, la posibilidad de que la inspección no pase es muy pequeña, lo que brinda una excelente oportunidad para que el sistema instruya problemas de hardware.
Usar el monitor de pila
Para muchos desarrolladores integrados, la pila parece ser una fuerza bastante misteriosa. Cuando las cosas extrañas comenzaron a suceder, los ingenieros finalmente se vieron perplejos y comenzaron a pensar en lo que podría pasar en la pila. ¿El resultado es ajustar ciegamente el tamaño y la ubicación de la pila, etc. pero los errores a menudo no tienen nada que ver con la pila, pero ¿ cómo puede estar tan seguro? ¿Después de todo, ¿ cuántos ingenieros han hecho realmente un análisis del tamaño de la pila en el peor de los casos?
El tamaño de la pila se asigna estáticamente en el momento de la compilación, pero la pila se utiliza de manera dinámica. A medida que se ejecuta el código, las variables necesarias para la aplicación, la dirección de retorno y otra información se almacenan constantemente en la pila. Este mecanismo hace que la pila crezca en la memoria que asigna. Sin embargo, este aumento a veces supera el límite de capacidad determinado en el momento de la compilación, lo que hace que la pila destruya datos en áreas de memoria adyacentes.
Una forma de garantizar absolutamente que la pila funcione correctamente es implementar el monitor de pila como parte del Código de "estado de funcionamiento" del sistema (cuántos ingenieros lo hacen?). El Monitor de pila crea un amortiguador entre la pila y "otros" campos de memoria y lo llena con patrones de bits conocidos. Luego, el monitor seguirá monitoreando si hay algún cambio en el modo. ¡¡ si el patrón de bits cambia, significa que la pila crece demasiado y el sistema está a punto de ser empujado al infierno oscuro! En este momento, el monitor puede registrar la ocurrencia del evento, el Estado del sistema y cualquier otro dato útil para diagnosticar el problema en el futuro.
Proporciona monitores de pila en la mayoría de los sistemas operativos en tiempo real (rtos) o sistemas de microcontroladores que implementan unidades de protección de memoria (mpu). Lo terrible es que estas funciones están apagadas por defecto o a menudo son apagadas deliberadamente por los desarrolladores. ¡Las búsquedas rápidas en Internet han descubierto que muchos recomiendan cerrar el monitor de pila en el sistema operativo en tiempo real para ahorrar 56 bytes de espacio flash, etc. ¡ no vale la pena la pérdida!
Usar MPU
En el pasado, era difícil encontrar unidades de protección de memoria (mpu) en un pequeño Microcontrolador barato, pero esta situación ha comenzado a cambiar. Ahora, los microcontroladores de gama alta a gama baja ya tienen mpu, que brindan a los desarrolladores de software de PCB integrados la oportunidad de mejorar en gran medida la solidez del firmware.
El MPU se ha ido acoplando gradualmente al sistema operativo para crear un espacio de memoria donde se pueda separar el procesamiento o las tareas puedan ejecutar su Código sin tener que preocuparse por ser pisoteadas. si pasa algo, se cancelará el procesamiento descontrolado y se implementarán otras medidas de protección. Tenga en cuenta el Microcontrolador con este componente y, si lo tiene, aproveche más sus características.
Construir un potente sistema de perros guardianes
Una de las implementaciones favoritas de los perros guardianes que encuentras a menudo es la posición habilitada de los perros guardianes (que es un buen comienzo), pero también puedes usar temporizadores regulares para eliminar la posición de los perros guardianes; La activación del cronómetro está completamente aislada de cualquier situación que ocurra en el programa. El propósito del uso del perro guardián es ayudar a garantizar que si se produce un error, el perro guardián no será eliminado, es decir, cuando se suspende el trabajo, el sistema se verá obligado a realizar un reinicio de hardware para la recuperación. Incluso si el sistema falla, el uso de un cronómetro independiente de la actividad del sistema puede mantener al perro guardián despejado.
Cómo integrar las tareas de la aplicación en el sistema de perro guardián, los desarrolladores de placas base de PCB integradas deben considerar y diseñar cuidadosamente. Por ejemplo, hay una tecnología que permite que cada tarea que se ejecuta durante un período de tiempo específico instruya que pueden completar con éxito su tarea. En este caso, el perro guardián no será eliminado, sino que será obligado a restablecer. También hay tecnologías más avanzadas, como el uso de procesadores de perros guardianes externos, que se pueden utilizar para monitorear el comportamiento del procesador principal de PCB y viceversa. Para un sistema confiable, es muy importante establecer un sistema de supervisión Fuerte.
Evitar la asignación de memoria volátil
Los ingenieros que no están acostumbrados a trabajar en entornos con recursos limitados pueden intentar usar las funciones de su lenguaje de programación, lo que les permite usar la asignación de memoria de PCB volátiles. Después de todo, esta es una tecnología de PCB comúnmente utilizada en sistemas de calculadoras. En el sistema de calculadora, la memoria solo se asigna si es necesario. Por ejemplo, cuando se desarrolla con el lenguaje c, los ingenieros pueden preferir usar malloc para asignar espacios en el montón. Hay una operación que se llevará a cabo. Una vez completado, puede usar Free para devolver la memoria asignada para el uso del montón.