From 406c884cfee0b8a83c8a47df437366bac142360f Mon Sep 17 00:00:00 2001 From: optixx Date: Thu, 6 Aug 2009 12:15:04 +0200 Subject: [PATCH] add addr save and restore functions --- avr/usbload/sram.c | 17 +++++++++++++++++ avr/usbload/sram.h | 5 +++++ 2 files changed, 22 insertions(+) diff --git a/avr/usbload/sram.c b/avr/usbload/sram.c index 7baf527..29fef20 100644 --- a/avr/usbload/sram.c +++ b/avr/usbload/sram.c @@ -31,6 +31,10 @@ #include "debug.h" #include "info.h" +uint32_t addr_current = 0; +uint32_t addr_stash = 0; + + void system_init(void) { /*-------------------------------------------------*/ @@ -113,11 +117,23 @@ void sreg_set(uint32_t addr) } +inline void sram_bulk_addr_save() +{ + addr_stash = addr_current; +} + +inline void sram_bulk_addr_restore() +{ + sram_bulk_read_start(addr_stash); +} void sram_bulk_read_start(uint32_t addr) { debug(DEBUG_SRAM,"sram_bulk_read_start: addr=0x%08lx\n\r", addr); + + addr_current = addr; + avr_data_in(); AVR_CS_PORT &= ~(1 << AVR_CS_PIN); @@ -138,6 +154,7 @@ void sram_bulk_read_start(uint32_t addr) inline void sram_bulk_read_next(void) { + addr_current++; AVR_RD_PORT |= (1 << AVR_RD_PIN); counter_up(); AVR_RD_PORT &= ~(1 << AVR_RD_PIN); diff --git a/avr/usbload/sram.h b/avr/usbload/sram.h index d8a6774..7480d98 100644 --- a/avr/usbload/sram.h +++ b/avr/usbload/sram.h @@ -204,4 +204,9 @@ void sram_bulk_copy(uint32_t addr, uint8_t * src, uint32_t len); void sram_bulk_read_buffer(uint32_t addr, uint8_t * dst, uint32_t len); void sram_bulk_set(uint32_t addr, uint32_t len,uint8_t value); +inline void sram_bulk_addr_save(); +inline void sram_bulk_addr_restore(); + + + #endif