diff --git a/avr/usbload/crc.c b/avr/usbload/crc.c index bbd1b6f..9a2e2dc 100644 --- a/avr/usbload/crc.c +++ b/avr/usbload/crc.c @@ -71,6 +71,8 @@ uint16_t crc_check_bulk_memory(uint32_t bottom_addr, uint32_t top_addr, uint32_t uint32_t addr = 0; uint8_t req_bank = 0; sram_bulk_read_start(bottom_addr); + debug(DEBUG_CRC,"crc_check_bulk_memory: bottom_addr=0x%08lx top_addr=0x%08lx\n", + bottom_addr,top_addr); for (addr = bottom_addr; addr < top_addr; addr++) { if (addr && addr % bank_size == 0) { diff --git a/avr/usbload/main.c b/avr/usbload/main.c index 3c9e266..7f36bac 100644 --- a/avr/usbload/main.c +++ b/avr/usbload/main.c @@ -51,7 +51,7 @@ extern const char _rom[] PROGMEM; extern FILE uart_stdout; -uint8_t debug_level = (DEBUG | DEBUG_USB | DEBUG_CRC | DEBUG_SHM); +uint8_t debug_level = (DEBUG | DEBUG_USB | DEBUG_CRC | DEBUG_SHM ); uint8_t read_buffer[TRANSFER_BUFFER_SIZE]; uint32_t req_addr = 0; @@ -359,8 +359,8 @@ int main(void) shared_memory_write(SHARED_MEM_TX_CMD_TERMINATE, 0); - shared_memory_scratchpad_region_tx_restore(); - shared_memory_scratchpad_region_rx_restore(); + //shared_memory_scratchpad_region_tx_restore(); + //shared_memory_scratchpad_region_rx_restore(); info("USB poll done\n"); set_rom_mode(); diff --git a/avr/usbload/shared_memory.c b/avr/usbload/shared_memory.c index 8b714aa..1f7b0dc 100644 --- a/avr/usbload/shared_memory.c +++ b/avr/usbload/shared_memory.c @@ -48,11 +48,13 @@ uint8_t scratchpad_locked_tx = 1; uint8_t shared_memory_scratchpad_region_save_helper(uint32_t addr){ - if(addr > (SHARED_MEM_TX_LOC_STATE + SHARED_MEM_TX_LOC_SIZE ) && scratchpad_locked_tx){ + if(addr > (SHARED_MEM_TX_LOC_STATE + SHARED_MEM_TX_LOC_SIZE) && scratchpad_locked_tx){ + debug(DEBUG_SHM,"shared_memory_scratchpad_region_save_helper: open tx addr=0x%06lx\n",addr); shared_memory_scratchpad_region_tx_save(); return 0; } - if(addr > (SHARED_MEM_RX_LOC_STATE + SHARED_MEM_RX_LOC_SIZE ) && scratchpad_locked_rx){ + if(addr > (SHARED_MEM_RX_LOC_STATE + SHARED_MEM_RX_LOC_SIZE) && scratchpad_locked_rx){ + debug(DEBUG_SHM,"shared_memory_scratchpad_region_save_helper: open rx addr=0x%06lx\n",addr); shared_memory_scratchpad_region_rx_save(); return 0; } @@ -62,9 +64,18 @@ uint8_t shared_memory_scratchpad_region_save_helper(uint32_t addr){ void shared_memory_scratchpad_region_tx_save() { +#if 1 + uint16_t crc; + crc = crc_check_bulk_memory((uint32_t)SHARED_MEM_TX_LOC_STATE, + (uint32_t)(SHARED_MEM_TX_LOC_STATE + SHARED_MEM_TX_LOC_SIZE), 0x8000); + debug(DEBUG_SHM,"shared_memory_scratchpad_region_tx_save: crc=%x\n",crc); +#endif + debug(DEBUG_SHM,"shared_memory_scratchpad_region_tx_save: unlock\n"); - sram_bulk_copy_into_buffer(SHARED_MEM_TX_LOC_STATE,scratchpad_region_tx,SHARED_MEM_TX_LOC_SIZE); + sram_bulk_copy_into_buffer((uint32_t)SHARED_MEM_TX_LOC_STATE,scratchpad_region_tx, + (uint32_t)SHARED_MEM_TX_LOC_SIZE); scratchpad_locked_tx = 0; + #if 0 dump_packet(SHARED_MEM_TX_LOC_STATE, SHARED_MEM_TX_LOC_SIZE, scratchpad_region_tx); dump_memory(SHARED_MEM_TX_LOC_STATE, SHARED_MEM_TX_LOC_STATE + SHARED_MEM_TX_LOC_SIZE); @@ -75,9 +86,18 @@ void shared_memory_scratchpad_region_tx_save() void shared_memory_scratchpad_region_rx_save() { +#if 1 + uint16_t crc; + crc = crc_check_bulk_memory((uint32_t)SHARED_MEM_RX_LOC_STATE, + (uint32_t)(SHARED_MEM_RX_LOC_STATE + SHARED_MEM_RX_LOC_SIZE), 0x8000); + debug(DEBUG_SHM,"shared_memory_scratchpad_region_tx_save: crc=%x\n",crc); +#endif + debug(DEBUG_SHM,"shared_memory_scratchpad_region_rx_save: unlock\n"); - sram_bulk_copy_into_buffer(SHARED_MEM_RX_LOC_STATE,scratchpad_region_rx,SHARED_MEM_RX_LOC_SIZE); + sram_bulk_copy_into_buffer((uint32_t)SHARED_MEM_RX_LOC_STATE,scratchpad_region_rx, + (uint32_t)SHARED_MEM_RX_LOC_SIZE); scratchpad_locked_rx = 0; + #if 0 dump_packet(SHARED_MEM_RX_LOC_STATE, SHARED_MEM_RX_LOC_SIZE, scratchpad_region_tx); dump_memory(SHARED_MEM_RX_LOC_STATE, SHARED_MEM_RX_LOC_STATE + SHARED_MEM_RX_LOC_SIZE); @@ -88,13 +108,22 @@ void shared_memory_scratchpad_region_tx_restore() { if (scratchpad_locked_tx) return; + debug(DEBUG_SHM,"shared_memory_scratchpad_region_tx_restore: lock\n"); - sram_bulk_copy_from_buffer(SHARED_MEM_TX_LOC_STATE,scratchpad_region_tx,SHARED_MEM_TX_LOC_SIZE); + sram_bulk_copy_from_buffer((uint32_t)SHARED_MEM_TX_LOC_STATE,scratchpad_region_tx, + (uint32_t)SHARED_MEM_TX_LOC_SIZE); scratchpad_locked_tx = 1; #if 0 dump_packet(SHARED_MEM_TX_LOC_STATE, SHARED_MEM_TX_LOC_SIZE, scratchpad_region_tx); dump_memory(SHARED_MEM_TX_LOC_STATE, SHARED_MEM_TX_LOC_STATE + SHARED_MEM_TX_LOC_SIZE); #endif + +#if 1 + uint16_t crc; + crc = crc_check_bulk_memory((uint32_t)SHARED_MEM_TX_LOC_STATE, + (uint32_t)(SHARED_MEM_TX_LOC_STATE + SHARED_MEM_TX_LOC_SIZE), 0x8000); + debug(DEBUG_SHM,"shared_memory_scratchpad_region_tx_restore: crc=%x\n",crc); +#endif } @@ -103,8 +132,21 @@ void shared_memory_scratchpad_region_rx_restore() if (scratchpad_locked_rx) return; debug(DEBUG_SHM,"shared_memory_scratchpad_region_tx_save: lock\n"); - sram_bulk_copy_from_buffer(SHARED_MEM_RX_LOC_STATE,scratchpad_region_rx,SHARED_MEM_RX_LOC_SIZE); + sram_bulk_copy_from_buffer((uint32_t)SHARED_MEM_RX_LOC_STATE,scratchpad_region_rx, + (uint32_t)SHARED_MEM_RX_LOC_SIZE); scratchpad_locked_rx = 1; + +#if 0 + dump_packet(SHARED_MEM_RX_LOC_STATE, SHARED_MEM_TX_LOC_SIZE, scratchpad_region_rx); + dump_memory(SHARED_MEM_RX_LOC_STATE, SHARED_MEM_TX_LOC_STATE + SHARED_MEM_RX_LOC_SIZE); +#endif + +#if 1 + uint16_t crc; + crc = crc_check_bulk_memory((uint32_t)SHARED_MEM_RX_LOC_STATE, + (uint32_t)(SHARED_MEM_RX_LOC_STATE + SHARED_MEM_RX_LOC_SIZE), 0x8000); + debug(DEBUG_SHM,"shared_memory_scratchpad_region_rx_restore: crc=%x\n",crc); +#endif } diff --git a/avr/usbload/shared_memory.h b/avr/usbload/shared_memory.h index fbe71eb..227aa4d 100644 --- a/avr/usbload/shared_memory.h +++ b/avr/usbload/shared_memory.h @@ -48,7 +48,7 @@ #define SHARED_MEM_RX_CMD_FILESEL 0x01 #define SHARED_MEM_RX_LOC_STATE 0x001000 -#define SHARED_MEM_RX_LOC_SIZE 0x000400 +#define SHARED_MEM_RX_LOC_SIZE 0x000100 #define SHARED_MEM_RX_LOC_CMD 0x001001 #define SHARED_MEM_RX_LOC_LEN 0x001002 #define SHARED_MEM_RX_LOC_PAYLOAD 0x001003 diff --git a/avr/usbload/sram.c b/avr/usbload/sram.c index 234296e..9a80ab4 100644 --- a/avr/usbload/sram.c +++ b/avr/usbload/sram.c @@ -289,7 +289,8 @@ void sram_bulk_copy_from_buffer(uint32_t addr, uint8_t * src, uint32_t len) uint32_t i; uint8_t *ptr = src; - debug(DEBUG_SRAM,"sram_bulk_copy_from_buffer: addr=0x%08lx src=0x%p len=%li\n\r", addr,src,len); + debug(DEBUG_SRAM,"sram_bulk_copy_from_buffer: addr=0x%08lx src=0x%p len=%li\n\r", + addr, src, len); sram_bulk_write_start(addr); for (i = addr; i < (addr + len); i++){ sram_bulk_write(*ptr++); @@ -303,7 +304,8 @@ void sram_bulk_copy_into_buffer(uint32_t addr, uint8_t * dst, uint32_t len) uint32_t i; uint8_t *ptr = dst; - debug(DEBUG_SRAM,"sram_bulk_copy_into_buffer: addr=0x%08lx dst=0x%p len=%li\n\r", addr,dst,len); + debug(DEBUG_SRAM,"sram_bulk_copy_into_buffer: addr=0x%08lx dst=0x%p len=%li\n\r", + addr, dst, len); sram_bulk_read_start(addr); for (i = addr; i < (addr + len); i++) { *ptr = sram_bulk_read(); diff --git a/avr/usbload/tags b/avr/usbload/tags index 9b48cde..74c6e63 100644 --- a/avr/usbload/tags +++ b/avr/usbload/tags @@ -385,9 +385,9 @@ snes_wr_enable sram.h 178;" d soft_reset watchdog.h 32;" d sram_bulk_addr_restore sram.c /^inline void sram_bulk_addr_restore()$/;" f sram_bulk_addr_save sram.c /^inline void sram_bulk_addr_save()$/;" f -sram_bulk_copy sram.c /^void sram_bulk_copy(uint32_t addr, uint8_t * src, uint32_t len)$/;" f +sram_bulk_copy sram.c /^void sram_bulk_copy_from_buffer(uint32_t addr, uint8_t * src, uint32_t len)$/;" f sram_bulk_read sram.c /^inline uint8_t sram_bulk_read(void)$/;" f -sram_bulk_read_buffer sram.c /^void sram_bulk_read_buffer(uint32_t addr, uint8_t * dst, uint32_t len)$/;" f +sram_bulk_copy_into_buffer sram.c /^void sram_bulk_copy_into_buffer(uint32_t addr, uint8_t * dst, uint32_t len)$/;" f sram_bulk_read_end sram.c /^void sram_bulk_read_end(void)$/;" f sram_bulk_read_next sram.c /^inline void sram_bulk_read_next(void)$/;" f sram_bulk_read_start sram.c /^void sram_bulk_read_start(uint32_t addr)$/;" f