From 8e6c67db08458561f22ba2214246c3fd4a2e576c Mon Sep 17 00:00:00 2001 From: david Date: Thu, 25 Jun 2009 11:19:40 +0200 Subject: [PATCH 1/3] test branch --- avr/usbload/commandline/opendevice.c | 1 + 1 file changed, 1 insertion(+) diff --git a/avr/usbload/commandline/opendevice.c b/avr/usbload/commandline/opendevice.c index d2a7b69..7706310 100644 --- a/avr/usbload/commandline/opendevice.c +++ b/avr/usbload/commandline/opendevice.c @@ -11,6 +11,7 @@ * open a device based on libusb or libusb-win32. */ + #include #include "opendevice.h" From 811b82616e808360f6415d6f32282cdbfa150665 Mon Sep 17 00:00:00 2001 From: david Date: Thu, 25 Jun 2009 11:43:09 +0200 Subject: [PATCH 2/3] cleanup header files --- avr/usbload/config.h | 6 +-- avr/usbload/crc.h | 6 +++ avr/usbload/debug.c | 2 +- avr/usbload/debug.h | 4 +- avr/usbload/dump.h | 4 +- avr/usbload/fifo.h | 4 +- avr/usbload/main.c | 92 ++++++++++++------------------------------ avr/usbload/requests.h | 4 +- avr/usbload/sram.c | 80 ++++++++++-------------------------- avr/usbload/sram.h | 5 +++ avr/usbload/uart.h | 7 ++-- avr/usbload/usb_bulk.c | 15 +++---- 12 files changed, 78 insertions(+), 151 deletions(-) diff --git a/avr/usbload/config.h b/avr/usbload/config.h index 31752ba..1377182 100644 --- a/avr/usbload/config.h +++ b/avr/usbload/config.h @@ -1,10 +1,10 @@ -#ifndef __config_h__ -#define __config_h__ +#ifndef __CONFIH_H__ +#define __CONFIH_H__ #define DEBUG 1 #define DEBUG_USB 2 -#define DEBUG_USB_RAW 4 +#define DEBUG_USB_TRANS 4 #define DEBUG_SRAM 8 #define DEBUG_SRAM_RAW 16 #define DEBUG_SREG 32 diff --git a/avr/usbload/crc.h b/avr/usbload/crc.h index a563156..146ab4d 100644 --- a/avr/usbload/crc.h +++ b/avr/usbload/crc.h @@ -1,3 +1,7 @@ + +#ifndef __CRC_H__ +#define __CRC_H__ + #include #include @@ -8,3 +12,5 @@ uint16_t do_crc_update(uint16_t crc,uint8_t * data,uint16_t size); void crc_check_memory(uint32_t bottom_addr,uint32_t top_addr,uint8_t *buffer); uint16_t crc_check_memory_range(uint32_t start_addr, uint32_t size,uint8_t *buffer); void crc_check_bulk_memory(uint32_t bottom_addr,uint32_t top_addr); + +#endif diff --git a/avr/usbload/debug.c b/avr/usbload/debug.c index d95fdc0..17f77b8 100644 --- a/avr/usbload/debug.c +++ b/avr/usbload/debug.c @@ -13,7 +13,7 @@ extern int debug_level; /* the higher, the more messages... */ /* Nothing. debug has been "defined away" in debug.h already. */ #else void debug(int level, char* format, ...) { -#ifdef NDEBUG +#ifdef NO_DEBUG /* Empty body, so a good compiler will optimise calls to pmesg away */ #else diff --git a/avr/usbload/debug.h b/avr/usbload/debug.h index ff39127..fc3af63 100644 --- a/avr/usbload/debug.h +++ b/avr/usbload/debug.h @@ -1,5 +1,5 @@ -#ifndef DEBUG_H -#define DEBUG_H +#ifndef __DEBUG_H__ +#define __DEBUG_H__ #include #include diff --git a/avr/usbload/dump.h b/avr/usbload/dump.h index 9217254..99ed9ff 100644 --- a/avr/usbload/dump.h +++ b/avr/usbload/dump.h @@ -1,5 +1,5 @@ -#ifndef DUMP_H -#define DUMP_H +#ifndef __DUMP_H__ +#define __DUMP_H__ #include #include diff --git a/avr/usbload/fifo.h b/avr/usbload/fifo.h index bcf9aad..2d05d4b 100644 --- a/avr/usbload/fifo.h +++ b/avr/usbload/fifo.h @@ -1,5 +1,5 @@ -#ifndef _FIFO_H_ -#define _FIFO_H_ +#ifndef __FIFO_H__ +#define __FIFO_H__ #include #include diff --git a/avr/usbload/main.c b/avr/usbload/main.c index 7e32a81..a977a79 100644 --- a/avr/usbload/main.c +++ b/avr/usbload/main.c @@ -44,9 +44,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) if (rq->bRequest == USB_UPLOAD_INIT) { if (req_state != REQ_STATUS_IDLE){ -#if DEBUG_USB - printf("USB_UPLOAD_INIT: ERROR state is not REQ_STATUS_IDLE\n"); -#endif + debug(DEBUG_USB,"USB_UPLOAD_INIT: ERROR state is not REQ_STATUS_IDLE\n"); return 0; } @@ -55,9 +53,8 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) req_bank_size = 1 << rq->wValue.word; sync_errors = 0; crc = 0; -#if DEBUG_USB - printf("USB_UPLOAD_INIT: bank_size=0x%x\n", req_bank_size); -#endif + debug(DEBUG_USB,"USB_UPLOAD_INIT: bank_size=0x%x\n", req_bank_size); + /* * ------------------------------------------------------------------------- */ @@ -69,29 +66,24 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) req_addr = req_addr | rq->wIndex.word; if (rx_remaining) { sync_errors++; -#if DEBUG_USB - printf - ("USB_UPLOAD_ADDR: Out of sync addr=0x%lx remain=%i packet=%i sync_error=%i\n", + debug + (DEBUG_USB,"USB_UPLOAD_ADDR: Out of sync addr=0x%lx remain=%i packet=%i sync_error=%i\n", req_addr, rx_remaining, rq->wLength.word, sync_errors); -#endif ret_len = 0; } rx_remaining = rq->wLength.word; ret_len = USB_MAX_TRANS; -#if DEBUG_USB + if (req_addr && (req_addr % 0x1000) == 0) { - - printf("USB_UPLOAD_ADDR: bank=0x%02x addr=0x%08lx\n", + debug(DEBUG_USB,"USB_UPLOAD_ADDR: bank=0x%02x addr=0x%08lx\n", req_bank, req_addr); crc_check_bulk_memory(req_addr - 0x1000,req_addr); } -#endif if (req_addr && req_addr % req_bank_size == 0) { -#if DEBUG_USB - printf("USB_UPLOAD_ADDR: req_bank=0x%02x addr=0x%08lx\n", + debug(DEBUG_USB,"USB_UPLOAD_ADDR: req_bank=0x%02x addr=0x%08lx\n", req_bank, req_addr); -#endif + req_bank++; } ret_len = USB_MAX_TRANS; @@ -99,22 +91,19 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) * ------------------------------------------------------------------------- */ } else if (rq->bRequest == USB_DOWNLOAD_INIT) { -#if DEBUG_USB - printf("USB_DOWNLOAD_INIT\n"); -#endif + debug(DEBUG_USB,"USB_DOWNLOAD_INIT\n"); + /* * ------------------------------------------------------------------------- */ } else if (rq->bRequest == USB_DOWNLOAD_ADDR) { - printf("USB_DOWNLOAD_ADDR\n"); + debug(DEBUG_USB,"USB_DOWNLOAD_ADDR\n"); /* * ------------------------------------------------------------------------- */ } else if (rq->bRequest == USB_BULK_UPLOAD_INIT) { if (req_state != REQ_STATUS_IDLE){ -#if DEBUG_USB - printf("USB_BULK_UPLOAD_INIT: ERROR state is not REQ_STATUS_IDLE\n"); -#endif + debug(DEBUG_USB,"USB_BULK_UPLOAD_INIT: ERROR state is not REQ_STATUS_IDLE\n"); return 0; } @@ -122,27 +111,21 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) rx_remaining = 0; req_bank_size = (1 << rq->wValue.word) & 0xffff; sync_errors = 0; -#if DEBUG_USB - printf("USB_BULK_UPLOAD_INIT: bank_size=0x%x\n", req_bank_size); -#endif + debug(DEBUG_USB,"USB_BULK_UPLOAD_INIT: bank_size=0x%x\n", req_bank_size); /* * ------------------------------------------------------------------------- */ } else if (rq->bRequest == USB_BULK_UPLOAD_ADDR) { if (req_state != REQ_STATUS_IDLE){ -#if DEBUG_USB - printf("USB_BULK_UPLOAD_ADDR: ERROR state is not REQ_STATUS_IDLE\n"); -#endif + debug(DEBUG_USB,"USB_BULK_UPLOAD_ADDR: ERROR state is not REQ_STATUS_IDLE\n"); return 0; } req_state = REQ_STATUS_BULK_UPLOAD; req_addr = rq->wValue.word; req_addr = req_addr << 16; req_addr = req_addr | rq->wIndex.word; -#if DEBUG_USB - printf("USB_BULK_UPLOAD_ADDR: req_bank=0x%02x addr=0x%08lx \n",req_bank,req_addr); -#endif + debug(DEBUG_USB,"USB_BULK_UPLOAD_ADDR: req_bank=0x%02x addr=0x%08lx \n",req_bank,req_addr); ret_len = 0; /* @@ -151,27 +134,21 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) } else if (rq->bRequest == USB_BULK_UPLOAD_NEXT) { if (req_state != REQ_STATUS_BULK_UPLOAD){ -#if DEBUG_USB - printf("USB_BULK_UPLOAD_NEXT: ERROR state is not REQ_STATUS_BULK_UPLOAD\n"); -#endif + debug(DEBUG_USB,"USB_BULK_UPLOAD_NEXT: ERROR state is not REQ_STATUS_BULK_UPLOAD\n"); return 0; } if (rx_remaining) { sync_errors++; -#if DEBUG_USB - printf - ("USB_BULK_UPLOAD_NEXT: Out of sync addr=0x%lx remain=%i packet=%i sync_error=%i\n", + debug(DEBUG_USB, + "USB_BULK_UPLOAD_NEXT: Out of sync addr=0x%lx remain=%i packet=%i sync_error=%i\n", req_addr, rx_remaining, rq->wLength.word, sync_errors); -#endif ret_len = 0; } rx_remaining = rq->wLength.word; ret_len = USB_MAX_TRANS; if (req_addr && req_addr % req_bank_size == 0) { -#if DEBUG_USB - printf("USB_BULK_UPLOAD_NEXT: req_bank=0x%02x addr= 0x%08lx \n", + debug(DEBUG_USB,"USB_BULK_UPLOAD_NEXT: req_bank=0x%02x addr= 0x%08lx \n", req_bank, req_addr); -#endif req_bank++; } ret_len = USB_MAX_TRANS; @@ -179,17 +156,11 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) * ------------------------------------------------------------------------- */ } else if (rq->bRequest == USB_BULK_UPLOAD_END) { - if (req_state != REQ_STATUS_BULK_UPLOAD){ -#if DEBUG_USB - printf("USB_BULK_UPLOAD_END: ERROR state is not REQ_STATUS_BULK_UPLOAD\n"); -#endif + debug(DEBUG_USB,"USB_BULK_UPLOAD_END: ERROR state is not REQ_STATUS_BULK_UPLOAD\n"); return 0; } - -#if DEBUG_USB - printf("USB_BULK_UPLOAD_END:\n"); -#endif + debug(DEBUG_USB,"USB_BULK_UPLOAD_END:\n"); req_state = REQ_STATUS_IDLE; sram_bulk_write_end(); ret_len = 0; @@ -200,10 +171,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) req_addr = rq->wValue.word; req_addr = req_addr << 16; req_addr = req_addr | rq->wIndex.word; -#if DEBUG_USB - printf("USB_CRC: addr=0x%08lx \n", req_addr); -#endif - + debug(DEBUG_USB,"USB_CRC: addr=0x%08lx \n", req_addr); crc_check_bulk_memory(0x000000,req_addr); ret_len = 0; /* @@ -211,10 +179,8 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) */ } else if (rq->bRequest == USB_SNES_BOOT) { req_state = REQ_STATUS_BOOT; -#if DEBUG_USB - printf("USB_SNES_BOOT: "); + debug(DEBUG_USB,"USB_SNES_BOOT: "); ret_len = 0; -#endif /* * ------------------------------------------------------------------------- */ @@ -224,22 +190,16 @@ usbMsgLen_t usbFunctionSetup(uchar data[8]) req_addr = rq->wValue.word; req_addr = req_addr << 16; req_addr = req_addr | rq->wIndex.word; -#if DEBUG_USB - printf("USB_CRC_ADDR: addr=0x%lx size=%i\n", req_addr, + debug(DEBUG_USB,"USB_CRC_ADDR: addr=0x%lx size=%i\n", req_addr, rq->wLength.word); -#endif req_size = rq->wLength.word; req_size = req_size << 2; tx_remaining = 2; -#if DEBUG_USB - printf("USB_CRC_ADDR: addr=0x%lx size=%li\n", req_addr, req_size); -#endif + debug(DEBUG_USB,"USB_CRC_ADDR: addr=0x%lx size=%li\n", req_addr, req_size); - cli(); crc = crc_check_memory_range(req_addr,req_size,read_buffer); tx_buffer[0] = crc & 0xff; tx_buffer[1] = (crc >> 8) & 0xff; - sei(); ret_len = 2; req_state = REQ_STATUS_IDLE; } diff --git a/avr/usbload/requests.h b/avr/usbload/requests.h index 892144a..78da0a2 100644 --- a/avr/usbload/requests.h +++ b/avr/usbload/requests.h @@ -13,8 +13,8 @@ * communicate between the host and the device. */ -#ifndef __REQUESTS_H_INCLUDED__ -#define __REQUESTS_H_INCLUDED__ +#ifndef __REQUESTS_H__ +#define __REQUESTS_H__ #define USB_UPLOAD_INIT 0 #define USB_UPLOAD_ADDR 1 diff --git a/avr/usbload/sram.c b/avr/usbload/sram.c index 42ae2b0..1603ab7 100644 --- a/avr/usbload/sram.c +++ b/avr/usbload/sram.c @@ -57,6 +57,7 @@ void system_init(void) PORTD &= ~((1 << AVR_SNES_SW_PIN) | (1 << SNES_WR_EN_PIN)); + /*-------------------------------------------------*/ @@ -66,28 +67,19 @@ void system_init(void) void sreg_set(uint32_t addr) { uint8_t i = 24; -#if DEBUG_SREG - printf("sreg_set: addr=0x%08lx",addr); -#endif + debug(DEBUG_SREG,"sreg_set: addr=0x%08lx",addr); while(i--) { if ((addr & ( 1L << i))){ -#if DEBUG_SREG - printf("1"); -#endif + debug(DEBUG_SREG,"1"); AVR_ADDR_SER_PORT |= ( 1 << AVR_ADDR_SER_PIN); } else { AVR_ADDR_SER_PORT &= ~( 1 << AVR_ADDR_SER_PIN); -#if DEBUG_SREG - printf("0"); -#endif - + debug(DEBUG_SREG,"0"); } AVR_ADDR_SCK_PORT |= (1 << AVR_ADDR_SCK_PIN); AVR_ADDR_SCK_PORT &= ~(1 << AVR_ADDR_SCK_PIN); } -#if DEBUG_SREG - printf("\n"); -#endif + debug(DEBUG_SREG,"\n"); AVR_ADDR_LATCH_PORT |= (1 << AVR_ADDR_LATCH_PIN); AVR_ADDR_LATCH_PORT &= ~(1 << AVR_ADDR_LATCH_PIN); @@ -99,9 +91,7 @@ void sreg_set(uint32_t addr) void sram_bulk_read_start(uint32_t addr) { -#if DEBUG_SRAM - printf("sram_bulk_read_start: addr=0x%08lx\n\r", addr); -#endif + debug(DEBUG_SRAM,"sram_bulk_read_start: addr=0x%08lx\n\r", addr); avr_data_in(); AVR_CS_PORT &= ~(1 << AVR_CS_PIN); @@ -141,9 +131,8 @@ inline uint8_t sram_bulk_read(void) void sram_bulk_read_end(void) { -#if DEBUG_SRAM - printf("sram_bulk_read_end:"); -#endif + debug(DEBUG_SRAM,"sram_bulk_read_end:"); + AVR_RD_PORT |= (1 << AVR_RD_PIN); AVR_CS_PORT |= (1 << AVR_CS_PIN); avr_data_in(); @@ -152,9 +141,7 @@ void sram_bulk_read_end(void) uint8_t sram_read(uint32_t addr) { uint8_t byte; -#if DEBUG_SRAM_RAW - printf("sram_read: addr=0x%08lx\n\r", addr); -#endif + debug(DEBUG_SRAM_RAW,"sram_read: addr=0x%08lx\n\r", addr); avr_data_in(); @@ -186,9 +173,7 @@ uint8_t sram_read(uint32_t addr) void sram_bulk_write_start(uint32_t addr) { -#if DEBUG_SRAM - printf("sram_bulk_write_start: addr=0x%08lx\n\r", addr); -#endif + debug(DEBUG_SRAM,"sram_bulk_write_start: addr=0x%08lx\n\r", addr); avr_data_out(); @@ -215,9 +200,7 @@ inline void sram_bulk_write( uint8_t data) void sram_bulk_write_end(void) { -#if DEBUG_SRAM - printf("sram_bulk_write_end:"); -#endif + debug(DEBUG_SRAM,"sram_bulk_write_end:"); AVR_WR_PORT |= (1 << AVR_WR_PIN); AVR_CS_PORT |= (1 << AVR_CS_PIN); avr_data_in(); @@ -226,10 +209,7 @@ void sram_bulk_write_end(void) void sram_write(uint32_t addr, uint8_t data) { - -#if DEBUG_SRAM_RAW - printf("sram_write: addr=0x%08lx data=%x\n\r", addr, data); -#endif + debug(DEBUG_SRAM_RAW,"sram_write: addr=0x%08lx data=%x\n\r", addr, data); avr_data_out(); @@ -254,9 +234,7 @@ void sram_bulk_copy(uint32_t addr, uint8_t * src, uint32_t len) uint32_t i; uint8_t *ptr = src; -#if DEBUG_SRAM - printf("sram_copy: addr=0x%08lx src=0x%p len=%li\n\r", addr,src,len); -#endif + debug(DEBUG_SRAM,"sram_copy: 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++); @@ -270,9 +248,7 @@ void sram_bulk_read_buffer(uint32_t addr, uint8_t * dst, uint32_t len) uint32_t i; uint8_t *ptr = dst; -#if DEBUG_SRAM - printf("sram_bulk_read_buffer: addr=0x%08lx dst=0x%p len=%li\n\r", addr,dst,len); -#endif + debug(DEBUG_SRAM,"sram_bulk_read_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(); @@ -284,15 +260,11 @@ 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){ uint32_t i; -#if DEBUG_SRAM - printf("sram_bulk_set: addr=0x%08lx len=%li\n\r", addr,len); -#endif + debug(DEBUG_SRAM,"sram_bulk_set: addr=0x%08lx len=%li\n\r", addr,len); sram_bulk_write_start(addr); for (i = addr; i < (addr + len); i++) { if (0 == i % 0xfff) -#if DEBUG_SRAM - printf("sram_bulk_set: addr=0x%08lx\n\r", i); -#endif + debug(DEBUG_SRAM,"sram_bulk_set: addr=0x%08lx\n\r", i); sram_bulk_write(value); sram_bulk_write_next(); } @@ -302,14 +274,10 @@ void sram_bulk_set(uint32_t addr, uint32_t len,uint8_t value){ void sram_setr(uint32_t addr, uint32_t len,uint8_t value) { uint32_t i; -#if DEBUG_SRAM - printf("sram_clear: addr=0x%08lx len=%li\n\r", addr,len); -#endif + debug(DEBUG_SRAM,"sram_clear: addr=0x%08lx len=%li\n\r", addr,len); for (i = addr; i < (addr + len); i++) { if (0 == i % 0xfff) -#if DEBUG_SRAM - printf("sram_clear: addr=0x%08lx\n\r", i); -#endif + debug(DEBUG_SRAM,"sram_clear: addr=0x%08lx\n\r", i); sram_write(i, value); } } @@ -319,9 +287,7 @@ void sram_copy(uint32_t addr, uint8_t * src, uint32_t len) uint32_t i; uint8_t *ptr = src; -#if DEBUG_SRAM - printf("sram_copy: addr=0x%08lx src=0x%p len=%li\n\r", addr,src,len); -#endif + debug(DEBUG_SRAM,"sram_copy: addr=0x%08lx src=0x%p len=%li\n\r", addr,src,len); for (i = addr; i < (addr + len); i++) sram_write(i, *ptr++); } @@ -331,9 +297,7 @@ void sram_read_buffer(uint32_t addr, uint8_t * dst, uint32_t len) uint32_t i; uint8_t *ptr = dst; -#if DEBUG_SRAM - printf("sram_read_buffer: addr=0x%08lx dst=0x%p len=%li\n\r", addr,dst,len); -#endif + debug(DEBUG_SRAM,"sram_read_buffer: addr=0x%08lx dst=0x%p len=%li\n\r", addr,dst,len); for (i = addr; i < (addr + len); i++) { *ptr = sram_read(i); ptr++; @@ -344,9 +308,7 @@ void sram_read_buffer(uint32_t addr, uint8_t * dst, uint32_t len) uint8_t sram_check(uint8_t * buffer, uint32_t len) { uint16_t cnt; -#if DEBUG_SRAM - printf("sram_check: len=%li\n\r",len); -#endif + debug(DEBUG_SRAM,"sram_check: len=%li\n\r",len); for (cnt = 0; cnt < len; cnt++) if (buffer[cnt]) return 1; diff --git a/avr/usbload/sram.h b/avr/usbload/sram.h index 24e2620..a5f53ec 100644 --- a/avr/usbload/sram.h +++ b/avr/usbload/sram.h @@ -1,3 +1,6 @@ +#ifndef __SRAM_H__ +#define __SRAM_H__ + #include #include #include @@ -162,3 +165,5 @@ void sram_bulk_write(uint8_t data); 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); + +#endif diff --git a/avr/usbload/uart.h b/avr/usbload/uart.h index 7f559ec..e76fccc 100644 --- a/avr/usbload/uart.h +++ b/avr/usbload/uart.h @@ -1,9 +1,8 @@ -#ifndef _UART_H_ -#define _UART_H_ +#ifndef __UART_H__ +#define __UART_H__ #define CR "\r\n" - #include #include #include @@ -14,6 +13,6 @@ void uart_puts(const char *s); void uart_puts_P(PGM_P s); static int uart_stream(char c, FILE *stream); +#endif -#endif /* _UART_H_ */ diff --git a/avr/usbload/usb_bulk.c b/avr/usbload/usb_bulk.c index 8af1354..ab8fe66 100644 --- a/avr/usbload/usb_bulk.c +++ b/avr/usbload/usb_bulk.c @@ -33,26 +33,22 @@ uint8_t usbFunctionWrite(uint8_t * data, uint8_t len) uint8_t *ptr; uint8_t i; if (len > rx_remaining) { - printf("usbFunctionWrite more data than expected remain: %i len: %i\n", + printf("ERROR:usbFunctionWrite more data than expected remain: %i len: %i\n", rx_remaining, len); len = rx_remaining; } if (req_state == REQ_STATUS_UPLOAD) { rx_remaining -= len; -#if DEBUG_USB_RAW - printf("usbFunctionWrite REQ_STATUS_UPLOAD addr: 0x%08lx len: %i rx_remaining=%i\n", + debug(DEBUG_USB_TRANS,"usbFunctionWrite REQ_STATUS_UPLOAD addr: 0x%08lx len: %i rx_remaining=%i\n", req_addr, len, rx_remaining); -#endif sram_copy(req_addr, data, len); req_addr += len; } else if (req_state == REQ_STATUS_BULK_UPLOAD) { rx_remaining -= len; -#if DEBUG_USB_RAW - printf("usbFunctionWrite REQ_STATUS_BULK_UPLOAD addr: 0x%08lx len: %i rx_remaining=%i\n", + debug(DEBUG_USB_TRANS,"usbFunctionWrite REQ_STATUS_BULK_UPLOAD addr: 0x%08lx len: %i rx_remaining=%i\n", req_addr, len, rx_remaining); -#endif ptr = data; i = len; while(i--){ @@ -69,9 +65,8 @@ uint8_t usbFunctionRead(uint8_t * data, uint8_t len) if (len > tx_remaining) len = tx_remaining; tx_remaining -= len; -#if DEBUG_USB_RAW - printf("usbFunctionRead len=%i tx_remaining=%i \n", len, tx_remaining); -#endif + debug(DEBUG_USB_TRANS,"usbFunctionRead len=%i tx_remaining=%i \n", len, tx_remaining); + for (i = 0; i < len; i++) { *data = tx_buffer[len]; data++; From daae8ef05186543eeb9027a1ea9e51a6e22db6d5 Mon Sep 17 00:00:00 2001 From: david Date: Thu, 25 Jun 2009 11:47:15 +0200 Subject: [PATCH 3/3] stash --- avr/usbload/commandline/snesuploader | Bin 18552 -> 26274 bytes avr/usbload/sram.h | 1 - 2 files changed, 1 deletion(-) diff --git a/avr/usbload/commandline/snesuploader b/avr/usbload/commandline/snesuploader index 6df35292a420ae71d111c64239f7ce40fff32c27..81e9e6965c64c58888514890a54c40e67d922caa 100755 GIT binary patch literal 26274 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 VjHFtws;p}>R%3InlmCU`{{V!&F>U|= literal 18552 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 diff --git a/avr/usbload/sram.h b/avr/usbload/sram.h index a5f53ec..cc6eb5f 100644 --- a/avr/usbload/sram.h +++ b/avr/usbload/sram.h @@ -145,7 +145,6 @@ void system_init(void); void sreg_set(uint32_t addr); - uint8_t sram_read(uint32_t addr); void sram_write(uint32_t addr, uint8_t data); void sram_set(uint32_t addr, uint32_t len, uint8_t value);