From f9e1a7a151334f34f80eaa8f2b8184fa27126bfb Mon Sep 17 00:00:00 2001 From: optixx Date: Sun, 30 Aug 2009 11:44:27 +0200 Subject: [PATCH] debug SHM --- avr/usbload/config.h | 4 ++-- avr/usbload/main.c | 16 +++++++--------- avr/usbload/shared_memory.c | 19 ++++++++++++++----- avr/usbload/shared_memory.h | 4 ++-- tools/ucon64/src/backup/quickdev16.c | 3 +++ 5 files changed, 28 insertions(+), 18 deletions(-) diff --git a/avr/usbload/config.h b/avr/usbload/config.h index 0318f0d..0eb647e 100644 --- a/avr/usbload/config.h +++ b/avr/usbload/config.h @@ -42,8 +42,8 @@ #define USB_MAX_TRANS 0xff #define USB_CRC_CHECK 0x01 -#define TRANSFER_BUFFER_SIZE 0x200 -#define FORMAT_BUFFER_LEN 0x0FF +#define TRANSFER_BUFFER_SIZE 0x000 +#define FORMAT_BUFFER_LEN 0x100 #define HW_VERSION "2.6" #define SW_VERSION "1.0" diff --git a/avr/usbload/main.c b/avr/usbload/main.c index 3706e1e..529a18c 100644 --- a/avr/usbload/main.c +++ b/avr/usbload/main.c @@ -137,7 +137,6 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) * ------------------------------------------------------------------------- */ } else if (rq->bRequest == USB_BULK_UPLOAD_NEXT) { - req_state = REQ_STATUS_BULK_UPLOAD; req_addr = rq->wValue.word; req_addr = req_addr << 16; @@ -146,8 +145,6 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) req_percent = (uint32_t)( 100 * req_addr ) / req_addr_end; if (req_percent!=req_percent_last){ - //debug_P(DEBUG_USB, - // PSTR("USB_BULK_UPLOAD_ADDR: precent=%i\n", req_percent); shared_memory_write(SHARED_MEM_TX_CMD_UPLOAD_PROGESS, req_percent); sram_bulk_write_start(req_addr); } @@ -165,7 +162,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) sram_bulk_write_start(req_addr); #endif -#if SHM_SCRATCHPAD +#if 1 if (!shared_memory_scratchpad_region_save_helper(req_addr)){ debug_P(DEBUG_USB, PSTR("USB_BULK_UPLOAD_NEXT: scratchpad_region_save_helper was dirty\n")); @@ -293,7 +290,7 @@ void usb_connect() void boot_startup_rom() { - info_P(PSTR("Boot startup rom\n")); + info_P(PSTR("Fetch loader rom\n")); info_P(PSTR("Activate AVR bus\n")); avr_bus_active(); info_P(PSTR("IRQ off\n")); @@ -302,7 +299,7 @@ void boot_startup_rom() snes_lorom(); rle_decode(&_rom, ROM_BUFFER_SIZE, 0x000000); info_P(PSTR("\n")); -#if 1 +#if 0 dump_memory(0x10000 - 0x100, 0x10000); #endif snes_hirom(); @@ -310,9 +307,7 @@ void boot_startup_rom() snes_bus_active(); info_P(PSTR("Activate SNES bus\n")); send_reset(); - _delay_ms(50); - send_reset(); - _delay_ms(50); + _delay_ms(100); } void banner(){ @@ -348,6 +343,7 @@ int main(void) stdout = &uart_stdout; banner(); system_init(); + shared_memory_init(); snes_reset_hi(); snes_reset_off(); irq_init(); @@ -417,6 +413,8 @@ int main(void) info_P(PSTR("Read 0x3000=%c\n"), c); #endif } + system_init(); + shared_memory_init(); irq_init(); boot_startup_rom(); globals_init(); diff --git a/avr/usbload/shared_memory.c b/avr/usbload/shared_memory.c index f2974fd..1fefceb 100644 --- a/avr/usbload/shared_memory.c +++ b/avr/usbload/shared_memory.c @@ -48,6 +48,13 @@ uint8_t scratchpad_locked_rx = 1; uint8_t scratchpad_locked_tx = 1; +void shared_memory_init(void){ + scratchpad_locked_rx = 1; + 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){ @@ -183,10 +190,11 @@ void shared_memory_irq_restore() void shared_memory_write(uint8_t cmd, uint8_t value) { - - if (scratchpad_locked_tx) + return 0; + if (scratchpad_locked_tx){ debug_P(DEBUG_SHM, PSTR("shared_memory_write: locked_tx\n")); - + return 1; + } debug_P(DEBUG_SHM, PSTR("shared_memory_write: 0x%04x=0x%02x 0x%04x=0x%02x \n"), SHARED_MEM_TX_LOC_CMD, cmd, SHARED_MEM_TX_LOC_PAYLOAD, value); @@ -242,9 +250,10 @@ int shared_memory_read(uint8_t *cmd, uint8_t *len,uint8_t *buffer) { uint8_t state; - if (scratchpad_locked_rx) + if (scratchpad_locked_rx){ debug_P(DEBUG_SHM, PSTR("shared_memory_write: locked_tx\n")); - + return 1; + } state = sram_read(SHARED_MEM_RX_LOC_STATE); if (state != SHARED_MEM_RX_AVR_ACK){ diff --git a/avr/usbload/shared_memory.h b/avr/usbload/shared_memory.h index 1abe4d7..227aa4d 100644 --- a/avr/usbload/shared_memory.h +++ b/avr/usbload/shared_memory.h @@ -37,7 +37,7 @@ #define SHARED_MEM_TX_CMD_TERMINATE 0x06 #define SHARED_MEM_TX_LOC_STATE 0x000000 -#define SHARED_MEM_TX_LOC_SIZE 0x000040 +#define SHARED_MEM_TX_LOC_SIZE 0x000100 #define SHARED_MEM_TX_LOC_CMD 0x000001 #define SHARED_MEM_TX_LOC_PAYLOAD 0x000002 @@ -48,7 +48,7 @@ #define SHARED_MEM_RX_CMD_FILESEL 0x01 #define SHARED_MEM_RX_LOC_STATE 0x001000 -#define SHARED_MEM_RX_LOC_SIZE 0x000040 +#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/tools/ucon64/src/backup/quickdev16.c b/tools/ucon64/src/backup/quickdev16.c index 4e695cb..2658753 100644 --- a/tools/ucon64/src/backup/quickdev16.c +++ b/tools/ucon64/src/backup/quickdev16.c @@ -156,6 +156,9 @@ quickdev16_write_rom (const char *filename) USB_ENDPOINT_OUT, USB_MODE_AVR, 0, 0, NULL, 0, 5000); + /* wait for the loader to depack */ + usleep(500000); + cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT,