Problema al cargar el programa en la placa

Problema al cargar el programa en la placa

de Nicolas Brignoni Dardano -
Número de respuestas: 1

Buenas, estábamos probando la función decreloj y al probarla en la placa nos aparece este cartel cuando presionamos el pulsador 2.

Unos minutos antes esto no pasaba, no sabemos que pudo haber pasado.

Gracias.


En respuesta a Nicolas Brignoni Dardano

Re: Problema al cargar el programa en la placa

de Juan Pedro Maestrone -

Buenas.

Se me ocurren varias cosas:

1. ¿Están inicializando el stack pointer? Fíjense de estar inicializándolo y con un valor acorde, y que sea lo primero que se observe en su código.

2. ¿Dónde están colocando la tabla hexa7seg? Si la están colocando muy lejos en memoria no solo les va a pasar que el Qemu+Gdb o el JtagCon+Gdb les van a demorar bastante en cargar, sino podría llegar a suceder que se pasen y sobreescriban código o bien de ustedes, o bien del monitor.

Lo segundo pueden corroborarlo al compilar, donde en azul les aparece dónde están ubicadas cada una de las etiquetas que tiene su programa en memoria. Esto también les puede ayudar a corroborar si los set que están utilizando en el Gdb están bien.

Nuevamente hago énfasis en el punto 1, ya que puede llegar a pasar que mientras corren su código el stack pointer se "pierda" y el programa al hacer un call y luego un ret no sepa a dónde volver y te aparezca esa señal de "SIGTRAP".

Otra cosa que les puede venir bien para debuggearlo es utilizar breakpoints/stepis buscando ver bien dónde es que se rompe el código. Acá por ejemplo podrían ver que luego de un ret el programa retorne correctamente, o también podrían chequear cómo cambia el valor del stackpointer (y lo que contiene) con los comandos info registers y x.

Espero los comentarios anteriores ayuden, sino cualquier cosa escriban de nuevo.

Saludos,
Juan Pedro.