Commit 3cee361fbf6efd5b4fc76509efadc4a7aff977ce
authorMichel Pollet <buserror@gmail.com>
Thu, 17 Dec 2009 19:53:42 +0000 (19:53 +0000)
committerMichel Pollet <buserror@gmail.com>
Thu, 17 Dec 2009 19:53:42 +0000 (19:53 +0000)
This allow the VCD file to be flushed and closed properly.

Signed-off-by: Michel Pollet <buserror@gmail.com>
3 files changed:
simavr/sim/run_avr.c
simavr/sim/sim_avr.c
simavr/sim/sim_avr.h

index bc1d606ec8917ffc3694c441737b6f0e20ffaa87..f39fb3b1ec6a26882ed415a920224853f3ca5eaa 100644 (file)
@@ -135,5 +135,7 @@ int main(int argc, char *argv[])
        }
 
        for (;;)
-               avr_run(avr);   
+               avr_run(avr);
+       
+       avr_terminate(avr);
 }
index e0f9cb744788b8eba6d33bcb3de880db143dd112..ae480ffe7cbdaf13492d7015f77b622e838bf7c4 100644 (file)
@@ -26,6 +26,7 @@
 #include "sim_avr.h"
 #include "sim_core.h"
 #include "sim_gdb.h"
+#include "sim_vcd_file.h"
 
 
 int avr_init(avr_t * avr)
@@ -45,6 +46,13 @@ int avr_init(avr_t * avr)
        return 0;
 }
 
+void avr_terminate(avr_t * avr)
+{
+       if (avr->vcd)
+               avr_vcd_close(avr->vcd);
+       avr->vcd = NULL;
+}
+
 void avr_reset(avr_t * avr)
 {
        memset(avr->data, 0x0, avr->ramend + 1);
index cac737fde2dfc7586010c486ba19e4c70c8adcdc..27b2354ffc6e9f0550d69b8ca7949870162426b8 100644 (file)
@@ -212,6 +212,8 @@ int avr_init(avr_t * avr);
 void avr_reset(avr_t * avr);
 // run one cycle of the AVR, sleep if necessary
 int avr_run(avr_t * avr);
+// finish any pending operations 
+void avr_terminate(avr_t * avr);
 
 // load code in the "flash"
 void avr_loadcode(avr_t * avr, uint8_t * code, uint32_t size, uint32_t address);