remove address setting and tweak upload speed
This commit is contained in:
parent
10d435d2f9
commit
f1b89eee83
Binary file not shown.
@ -133,7 +133,6 @@ int main(int argc, char **argv)
|
||||
uint8_t bank = 0;
|
||||
uint8_t bank_cnt = 0;
|
||||
uint32_t file_size = 0;
|
||||
struct stat st;
|
||||
|
||||
FILE *fp;
|
||||
usb_init();
|
||||
@ -197,13 +196,22 @@ int main(int argc, char **argv)
|
||||
|
||||
addr_lo = addr & 0xffff;
|
||||
addr_hi = (addr >> 16) & 0x00ff;
|
||||
if (addr == 0x000000){
|
||||
|
||||
cnt = usb_control_msg(handle,
|
||||
cnt = usb_control_msg(handle,
|
||||
USB_TYPE_VENDOR | USB_RECIP_DEVICE |
|
||||
USB_ENDPOINT_OUT, USB_BULK_UPLOAD_ADDR, addr_hi,
|
||||
addr_lo, (char *) read_buffer + step,
|
||||
SEND_BUFFER_SIZE, 5000);
|
||||
|
||||
} else {
|
||||
|
||||
cnt = usb_control_msg(handle,
|
||||
USB_TYPE_VENDOR | USB_RECIP_DEVICE |
|
||||
USB_ENDPOINT_OUT, USB_BULK_UPLOAD_NEXT, addr_hi,
|
||||
addr_lo, (char *) read_buffer + step,
|
||||
SEND_BUFFER_SIZE, 5000);
|
||||
|
||||
}
|
||||
if (cnt < 0) {
|
||||
fprintf(stderr, "USB error: %s\n", usb_strerror());
|
||||
usb_close(handle);
|
||||
@ -225,6 +233,11 @@ int main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
bank = 0;
|
||||
cnt = usb_control_msg(handle,
|
||||
USB_TYPE_VENDOR | USB_RECIP_DEVICE |
|
||||
USB_ENDPOINT_OUT, USB_BULK_UPLOAD_END, 0, 0, NULL,
|
||||
0, 5000);
|
||||
|
||||
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
while ((cnt = fread(read_buffer, READ_BUFFER_SIZE, 1, fp)) > 0) {
|
||||
|
||||
@ -133,7 +133,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
|
||||
rx_remaining = rq->wLength.word;
|
||||
|
||||
if (req_addr && req_addr % req_bank_size == 0) {
|
||||
debug(DEBUG_USB,"USB_BULK_UPLOAD_ADDR: req_bank=0x%02x addr= 0x%08lx time=%.4f\n",
|
||||
debug(DEBUG_USB,"USB_BULK_UPLOAD_ADDR: req_bank=0x%02x addr=0x%08lx time=%.4f\n",
|
||||
req_bank, req_addr,timer_stop());
|
||||
req_bank++;
|
||||
timer_start();
|
||||
@ -146,23 +146,19 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
|
||||
*/
|
||||
} else if (rq->bRequest == USB_BULK_UPLOAD_NEXT) {
|
||||
|
||||
if (req_state != REQ_STATUS_BULK_UPLOAD){
|
||||
debug(DEBUG_USB,"USB_BULK_UPLOAD_NEXT: ERROR state is not REQ_STATUS_BULK_UPLOAD\n");
|
||||
return 0;
|
||||
}
|
||||
if (rx_remaining) {
|
||||
sync_errors++;
|
||||
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);
|
||||
ret_len = 0;
|
||||
}
|
||||
req_state = REQ_STATUS_BULK_UPLOAD;
|
||||
req_addr = rq->wValue.word;
|
||||
req_addr = req_addr << 16;
|
||||
req_addr = req_addr | rq->wIndex.word;
|
||||
//sram_bulk_write_start(req_addr);
|
||||
rx_remaining = rq->wLength.word;
|
||||
ret_len = USB_MAX_TRANS;
|
||||
|
||||
if (req_addr && req_addr % req_bank_size == 0) {
|
||||
debug(DEBUG_USB,"USB_BULK_UPLOAD_NEXT: req_bank=0x%02x addr= 0x%08lx \n",
|
||||
req_bank, req_addr);
|
||||
debug(DEBUG_USB,"USB_BULK_UPLOAD_NEXT: req_bank=0x%02x addr= 0x%08lx time=%.4f\n",
|
||||
req_bank, req_addr,timer_stop());
|
||||
req_bank++;
|
||||
timer_start();
|
||||
|
||||
}
|
||||
ret_len = USB_MAX_TRANS;
|
||||
/*
|
||||
@ -192,7 +188,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
|
||||
*/
|
||||
} else if (rq->bRequest == USB_SNES_BOOT) {
|
||||
req_state = REQ_STATUS_BOOT;
|
||||
debug(DEBUG_USB,"USB_SNES_BOOT: ");
|
||||
debug(DEBUG_USB,"USB_SNES_BOOT:\n");
|
||||
ret_len = 0;
|
||||
/*
|
||||
* -------------------------------------------------------------------------
|
||||
@ -353,33 +349,21 @@ int main(void)
|
||||
|
||||
dump_memory(0x7f00,0x8000);
|
||||
|
||||
printf("IRQ off\n");
|
||||
snes_irq_lo();
|
||||
snes_irq_off();
|
||||
printf("IRQ off\n");
|
||||
|
||||
printf("Set Snes lowrom\n");
|
||||
snes_lorom();
|
||||
printf("Set Snes lowrom\n");
|
||||
|
||||
printf("Disable snes WR\n");
|
||||
snes_wr_disable();
|
||||
printf("Disable snes WR\n");
|
||||
|
||||
snes_bus_active();
|
||||
printf("Activate Snes bus\n");
|
||||
|
||||
#if 0
|
||||
i = 50;
|
||||
while (--i) { /* fake USB disconnect for > 250 ms */
|
||||
_delay_ms(100);
|
||||
printf(".");
|
||||
}
|
||||
printf("\n");
|
||||
avr_bus_active();
|
||||
printf("Activate AVR bus\n");
|
||||
crc_check_bulk_memory(0x000000, 0x80000);
|
||||
#endif
|
||||
|
||||
while(1);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user