2011-08-11 14 views
7

Normalmente, en SBC con RTOS, sería una tarea fácil escribir registros de datos/eventos en un medio externo como las tarjetas SD. Sin embargo, en sistemas integrados que usan microcontroladores, p. Los microchips PIC tienen una memoria de datos/programa limitada. Aunque algunos chipset tienen soporte para medios externos, asumiendo que no es así, ¿cómo se puede iniciar sesión en MCU?Registro de eventos en Embedded Systems

La única manera plausible que lo que podía pensar es que escribir en la EEPROM del MCU, pero es esto posible? Si esto se pudiera hacer, ¿cómo se escribiría y leería?

Respuesta

2

El registro se puede realizar en cualquier dispositivo de memoria, incluidas las tarjetas SD (suponiendo que el periférico de hardware pertinente esté disponible). Si hay un dispositivo externo conectado a un puerto serie, puede escribir datos en él.

Comúnmente, el registro de eventos se realiza solo en casos excepcionales. Escribir en EEPROM o Flash (para dispositivos más nuevos) es relativamente lento, consume energía y consume recursos finitos (espacio y ciclos de borrado).

para la depuración, el uso de un puerto serie (o el puerto de la OSM en Cortex-M3) es común.

+0

Olvidé mencionar que el sistema podría estar operativo todo el día y solo estar disponible para el mantenimiento durante la noche. Supongo que hay algo que es portátil y desmontable de modo que pueda ser conectado? – freonix

+0

Sí. Como tiene "registro no desarrollador", y según sus requisitos de hardware, es probable que desee eliminar algo.Las tarjetas SD funcionan bien (solo necesita un puerto SPI), y técnicamente no necesita tener una biblioteca de sistema de archivos FAT (si está dispuesto a leer bytes brutos). –

2

puede implementar una función de registro que simplemente se escribe un byte en una matriz cada vez que desee registrar un evento. La lista de registro se puede recuperar y convertir a una lista de eventos legible por el ser humano. Este enfoque tiene el beneficio de ser menos intrusivo para las aplicaciones en tiempo real.

Utilicé este enfoque para una aplicación en la que se generaron 100-200 eventos en una sesión de prueba de 1-2 minutos. La lista luego se descargó en un puerto serie y se analizó con un pequeño script de Python.

1

Dependiendo de sus necesidades de datos, usted podría ir para un flash SPI o una EEPROM I²C.

I2C EEPROMS son más pequeños en términos de almacenamiento pero su interfaz está disponible en la mayoría de los microcontroladores (si no, es relativamente fácil hacerlo en software con IO normal) y son mucho más lentos (principalmente debido a I2C autobús que está limitado a 1Mhz). Es fácil de find them up to 1mbit en capacidad y con empacado de 8 DIP.

Los flashes SPI son más rápidos, con mayor densidad y a menudo más baratos, por lo que si necesita escrituras rápidas y, para ser honesto, mejor tecnología que should go for them.

+1

También puede echar un vistazo a este tipo de memoria no volátil: http://en.wikipedia.org/wiki/Ferroelectric_RAM – 0x6d64

1

uno normalmente de salida de los datos a un UART y la captura o mostrarlo en un emulador de terminal como TeraTerm (o HyperTerminal si es necesario).

Si implementa un buffer de anillo e ISR para alimentar el UART, habrá un impacto mínimo en el comportamiento del sistema en tiempo de ejecución siempre que no exceda la capacidad de rendimiento de datos del puerto durante períodos prolongados. Es probable que tenga un menor impacto en el sistema y sea más determinista que escribir en EEPROM o Flash, especialmente si el UART tiene capacidades FIFO o DMA, y aunque el ancho de banda puede ser limitado, tiene la ventaja de una capacidad prácticamente ilimitada.

Su chip puede tener capacidades de depuración en el chip que podría ir asociada a un depurador de host con la salida de depuración arbitraria o capacidad de semi-hosting. Esto tendría un impacto mínimo en el tiempo de ejecución.

Cuestiones relacionadas