Pregunta

Me gustaría crear / iniciar un simulador para la siguiente placa de microcontrolador: http://www.sparkfun.com/commerce/product_info.php?products_id=707#

El firmware está escrito en ensamblado, así que estoy buscando algunos indicadores sobre cómo simular las entradas que recibiría el hardware y luego el simulador respondería a las salidas del firmware. (lo que también requeriría ejecutar el firmware en el entorno simulado).

¿Alguna sugerencia sobre cómo comenzar?

Gracias Chris

¿Fue útil?

Solución

Escribir un emulador completo será un verdadero desafío. He intentado escribir un emulador ARM antes, y déjame decirte que no es un proyecto pequeño. Tendrás que emular todo el núcleo de la CPU o encontrar uno que ya esté escrito.

También deberás descubrir cómo funciona todo el IO. Puede haber documentos de sparkfun sobre esa placa, pero deberá escribir un administrador de memoria si usa MMIO, etc.

El concepto de un emulador no está tan lejos de un intérprete, en realidad. Debe interpretar el código del firmware y, básicamente, seguir las instrucciones.

Recomendaría un buen depurador interactivo en lugar de abordar un emulador. Las posibilidades de destruir el hardware son bajas, pero realmente, ¿preferiría comprar una nueva placa o pasar 9 meses escribiendo algo que no implementará todo el sistema?

Es probable que el PIC 18F2520 ya tenga un núcleo de emulador escrito para él, pero deberá profundizar en todas las especificaciones de hardware para ver cómo se asigna todavía todo el IO. Si lo desea, sería un buen proyecto, pero consideraría usar un depurador remoto en su lugar.

Otros consejos

Tendrá que escribir un simulador PIC y luego emular la funcionalidad IO de los puertos.

Para ser honesto, parece que está diseñado como un kit de desarrollo: no me preocuparía si su código destruye el dispositivo si se cuida. A menos que este sea un segundo lugar para un paquete empresarial, cuestionaría seriamente el ROI al escribir un sim.

¿Hay alguna razón particular para hacer un emulador / simulador, en lugar de simplemente usar el real?

El tablero es económico; Microchip ahora tiene el depurador RealICE que es bastante más receptivo que el viejo ICD2 "hockey puck".

El MPLAB de Microchip ya tiene un simulador incorporado. No simulará toda la placa, pero manejará el 18F2520. Puede utilizar los vectores de prueba de entrada & amp; archivos de salida de registro, he hecho esto antes con un Microchip IC diferente y era factible pero un poco engorroso. Te sugiero que adoptes el enfoque de pruebas unitarias y modularices la forma en que haces las cosas; calcule sus entradas de prueba y salidas esperadas para una parte manejable del sistema.

  

Es probable que el PIC 18F2520 ya tenga un núcleo de emulador escrito para él,

Un simulador multiplataforma de código abierto para microchip / PIC está disponible bajo el nombre de " gpsim " ;.

Es extremadamente improbable que un error en su código pueda dañar los circuitos físicos. Si eso es posible, entonces es un error en el diseño de la placa o debería estar claramente documentado.

Si puedo ofrecerle una sugerencia de muchos años de experiencia trabajando con estos dispositivos: no los programe en conjunto. Te volverás loco. Use C o BASIC o algún lenguaje de nivel superior. Microchip produce un compilador de C para la mayoría de sus chips (no sé sobre este), y otras compañías también los producen.

Si insiste en usar un emulador, estoy bastante seguro de que Microchip hace un emulador para casi todos sus microcontroladores (al menos uno de cada línea de productos, lo que probablemente sería lo suficientemente bueno). Estos emuladores no siempre son baratos, y no estoy seguro de su capacidad para aceptar entradas externas complejas.

Si todavía quiere intentar escribir el suyo, creo que encontrará que emular el PIC en sí será bastante sencillo: el formato de todos los códigos de operación está bien documentado, al igual que la arquitectura de la memoria, etc. estar emulando los otros dispositivos en el tablero y las interconexiones entre ellos que te matarán. Es posible que desee analizar la codificación de las interconexiones entre los componentes utilizando una herramienta VHDL que le permitirá crear simulaciones personalizadas para los diferentes componentes.

¿No es este un problema de simulador de hardware en el bucle? (por ejemplo, http://www.embedded.com/15201692 )

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top