get shared mem working
This commit is contained in:
parent
1b45c2f325
commit
d1447db7b0
3656
avr/usbload/loader.c
3656
avr/usbload/loader.c
File diff suppressed because it is too large
Load Diff
@ -2,6 +2,6 @@
|
|||||||
#ifndef __FIFO_H__
|
#ifndef __FIFO_H__
|
||||||
#define __FIFO_H__
|
#define __FIFO_H__
|
||||||
|
|
||||||
#define ROM_SIZE 30151
|
#define ROM_SIZE 30119
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -124,7 +124,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
|
|||||||
req_bank, req_addr);
|
req_bank, req_addr);
|
||||||
|
|
||||||
req_bank++;
|
req_bank++;
|
||||||
shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
|
//shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
|
||||||
}
|
}
|
||||||
ret_len = USB_MAX_TRANS;
|
ret_len = USB_MAX_TRANS;
|
||||||
/*
|
/*
|
||||||
@ -167,7 +167,6 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
|
|||||||
req_addr = rq->wValue.word;
|
req_addr = rq->wValue.word;
|
||||||
req_addr = req_addr << 16;
|
req_addr = req_addr << 16;
|
||||||
req_addr = req_addr | rq->wIndex.word;
|
req_addr = req_addr | rq->wIndex.word;
|
||||||
sram_bulk_write_start(req_addr);
|
|
||||||
rx_remaining = rq->wLength.word;
|
rx_remaining = rq->wLength.word;
|
||||||
|
|
||||||
if (req_addr && req_addr % req_bank_size == 0) {
|
if (req_addr && req_addr % req_bank_size == 0) {
|
||||||
@ -179,8 +178,12 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
|
|||||||
req_bank, req_addr,timer_stop_int());
|
req_bank, req_addr,timer_stop_int());
|
||||||
#endif
|
#endif
|
||||||
req_bank++;
|
req_bank++;
|
||||||
|
shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
|
||||||
|
sram_bulk_write_start(req_addr);
|
||||||
timer_start();
|
timer_start();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
sram_bulk_write_start(req_addr);
|
||||||
}
|
}
|
||||||
ret_len = USB_MAX_TRANS;
|
ret_len = USB_MAX_TRANS;
|
||||||
|
|
||||||
@ -204,15 +207,16 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
|
|||||||
#endif
|
#endif
|
||||||
if (req_addr && ( req_addr % req_bank_size) == 0) {
|
if (req_addr && ( req_addr % req_bank_size) == 0) {
|
||||||
#ifdef FLT_DEBUG
|
#ifdef FLT_DEBUG
|
||||||
debug(DEBUG_USB,"USB_BULK_UPLOAD_ADDR: req_bank=0x%02x addr=0x%08lx time=%.4f\n",
|
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, req_addr,timer_stop());
|
||||||
#else
|
#else
|
||||||
debug(DEBUG_USB,"USB_BULK_UPLOAD_ADDR: req_bank=0x%02x addr=0x%08lx time=%i\n",
|
debug(DEBUG_USB,"USB_BULK_UPLOAD_NEXT: req_bank=0x%02x addr=0x%08lx time=%i\n",
|
||||||
req_bank, req_addr,timer_stop_int());
|
req_bank, req_addr,timer_stop_int());
|
||||||
#endif
|
#endif
|
||||||
req_bank++;
|
req_bank++;
|
||||||
shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
|
|
||||||
timer_start();
|
timer_start();
|
||||||
|
shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
|
||||||
|
sram_bulk_write_start(req_addr);
|
||||||
|
|
||||||
}
|
}
|
||||||
ret_len = USB_MAX_TRANS;
|
ret_len = USB_MAX_TRANS;
|
||||||
@ -489,7 +493,8 @@ void boot_startup_rom(){
|
|||||||
_delay_ms(100);
|
_delay_ms(100);
|
||||||
info("Reset Snes\n");
|
info("Reset Snes\n");
|
||||||
send_reset();
|
send_reset();
|
||||||
#if 0
|
_delay_ms(100);
|
||||||
|
#if 0
|
||||||
i = 20;
|
i = 20;
|
||||||
info("Wait");
|
info("Wait");
|
||||||
while (--i){
|
while (--i){
|
||||||
@ -559,9 +564,10 @@ int main(void)
|
|||||||
while (req_state != REQ_STATUS_AVR){
|
while (req_state != REQ_STATUS_AVR){
|
||||||
|
|
||||||
usbPoll();
|
usbPoll();
|
||||||
|
|
||||||
#ifdef DO_IRQ
|
#ifdef DO_IRQ
|
||||||
i = 10;
|
i = 10;
|
||||||
while (--i) { /* fake USB disconnect for > 250 ms */
|
while (--i) {
|
||||||
_delay_ms(100);
|
_delay_ms(100);
|
||||||
}
|
}
|
||||||
info("Send IRQ %i\n",++irq_count);
|
info("Send IRQ %i\n",++irq_count);
|
||||||
|
|||||||
@ -64,7 +64,8 @@ void shared_memory_irq_restore(){
|
|||||||
|
|
||||||
void shared_memory_put(uint8_t cmd, uint8_t value){
|
void shared_memory_put(uint8_t cmd, uint8_t value){
|
||||||
|
|
||||||
info("Write shared memory %06lx=%02x %06lx=%02x \n",SHARED_MEM_LOC_CMD,cmd,SHARED_MEM_LOC_PAYLOAD,value);
|
//return;
|
||||||
|
info("Write shared memory 0x%04x=0x%02x 0x%04x=0x%02x \n",SHARED_MEM_LOC_CMD,cmd,SHARED_MEM_LOC_PAYLOAD,value);
|
||||||
|
|
||||||
shared_memory_scratchpad_save();
|
shared_memory_scratchpad_save();
|
||||||
shared_memory_irq_hook();
|
shared_memory_irq_hook();
|
||||||
@ -73,23 +74,17 @@ void shared_memory_put(uint8_t cmd, uint8_t value){
|
|||||||
sram_write(SHARED_MEM_LOC_CMD,cmd);
|
sram_write(SHARED_MEM_LOC_CMD,cmd);
|
||||||
sram_write(SHARED_MEM_LOC_PAYLOAD,value);
|
sram_write(SHARED_MEM_LOC_PAYLOAD,value);
|
||||||
|
|
||||||
snes_irq_lo();
|
|
||||||
snes_irq_off();
|
|
||||||
snes_hirom();
|
snes_hirom();
|
||||||
snes_wr_disable();
|
snes_wr_disable();
|
||||||
snes_bus_active();
|
snes_bus_active();
|
||||||
|
_delay_ms(50);
|
||||||
//snes_irq_on();
|
|
||||||
//snes_irq_lo();
|
|
||||||
//_delay_us(20);
|
|
||||||
|
|
||||||
//snes_irq_hi();
|
|
||||||
//snes_irq_off();
|
|
||||||
|
|
||||||
avr_bus_active();
|
avr_bus_active();
|
||||||
snes_irq_off();
|
|
||||||
snes_irq_lo();
|
snes_irq_lo();
|
||||||
|
snes_irq_off();
|
||||||
snes_lorom();
|
snes_lorom();
|
||||||
|
snes_wr_disable();
|
||||||
|
|
||||||
shared_memory_scratchpad_restore();
|
shared_memory_scratchpad_restore();
|
||||||
shared_memory_irq_restore();
|
shared_memory_irq_restore();
|
||||||
|
|||||||
@ -34,8 +34,8 @@
|
|||||||
#define SHARED_IRQ_LOC_HI 0x00ffff
|
#define SHARED_IRQ_LOC_HI 0x00ffff
|
||||||
|
|
||||||
|
|
||||||
#define SHARED_IRQ_HANDLER_LO 0x12
|
#define SHARED_IRQ_HANDLER_LO 0x00
|
||||||
#define SHARED_IRQ_HANDLER_HI 0x34
|
#define SHARED_IRQ_HANDLER_HI 0x10
|
||||||
|
|
||||||
void shared_memory_put(uint8_t cmd, uint8_t value);
|
void shared_memory_put(uint8_t cmd, uint8_t value);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user