Estoy usando at91sam3s8b (cortex-M3) para mi proyecto. La placa de hardware se conecta a la PC mediante el puerto USB. El firmware contiene algunos algoritmos criptográficos (incluye desplazamientos, Xors, operaciones de sustitución de memoria). La salida del algoritmo es correcta cuando la placa está encendida pero comienza a fallar a medida que pasa el tiempo.
El reloj maestro está configurado como máximo (64 MHz).
mis observaciones son:
-
si reduzco la frecuencia MCK, la tasa de fallos disminuye. (no está relacionado con la tasa de disminución de frecuencia. La falla se desvanece completamente si uso una frecuencia de 55 MHz)
-
Si elevo la temperatura de la placa, ¡la falla ocurre antes y si la bajo la temperatura lo suficiente, la falla se desvanece nuevamente!
-
Algunos microcontroladores fallan (la mayoría de ellos). pero algunos otros no lo hacen. (incluso a una temperatura artificial de 85 grados centígrados)
Las tarjetas y el hardware que funcionan mal se envían a Atmel para su prueba. realizaron algunas pruebas eléctricas y respondieron que no hay ningún problema relacionado con nuestra placa o sus microcontroladores.
¿Alguna idea de cómo o dónde puedo rastrear este problema? ¿Alguna sugerencia técnica?
Editar:
Más información:
- El proyecto se está construyendo con keil 4.7
- Las rutinas criptográficas se implementan en ensamblado y c, y están vinculadas al proyecto principal como bibliotecas estáticas (hay 2 bibliotecas separadas. el ensamblado se construye con código fuente).
- cambiar el orden de las bibliotecas en el proyecto desplaza la falla a otro algoritmo. cambiar el nombre, el lugar o las declaraciones de algunas funciones elimina o desplaza la falla.
- La placa de hardware es simple. un microcontrolador, un puerto USB y una memoria flash SPI (winbond serial nand flash) + ese pequeño LED. El puerto USB y la memoria flash SPI no se utilizan en el código de prueba simplificado que todavía está defectuoso.