Browse Source

split shared memroy access into tx and rx section

optixx 15 years ago
parent
commit
97962b8e89
3 changed files with 46 additions and 37 deletions
  1. 6 6
      avr/usbload/main.c
  2. 15 15
      avr/usbload/shared_memory.c
  3. 25 16
      avr/usbload/shared_memory.h

+ 6 - 6
avr/usbload/main.c

@@ -126,7 +126,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
                   req_bank, req_addr);
 
             req_bank++;
-            // shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS,req_bank);
+            shared_memory_write(SHARED_MEM_TX_CMD_UPLOAD_PROGESS,req_bank);
         }
         ret_len = USB_MAX_TRANS;
         /*
@@ -158,7 +158,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
               "USB_BULK_UPLOAD_INIT: bank_size=0x%08lx bank_cnt=0x%x end_addr=0x%08lx\n",
               req_bank_size, req_bank_cnt, req_addr_end);
 
-        shared_memory_put(SHARED_MEM_CMD_BANK_COUNT, req_bank_cnt);
+        shared_memory_write(SHARED_MEM_TX_CMD_BANK_COUNT, req_bank_cnt);
         if (req_addr == 0x000000) {
             timer_start();
         }
@@ -184,7 +184,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
                   req_bank, req_addr, timer_stop_int());
 #endif
             req_bank++;
-            shared_memory_put(SHARED_MEM_CMD_UPLOAD_PROGESS, req_bank);
+            shared_memory_write(SHARED_MEM_TX_CMD_UPLOAD_PROGESS, req_bank);
             sram_bulk_write_start(req_addr);
             timer_start();
 
@@ -226,7 +226,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
 #endif
             req_bank++;
             timer_start();
-            shared_memory_put(SHARED_MEM_CMD_BANK_CURRENT, req_bank);
+            shared_memory_write(SHARED_MEM_TX_CMD_BANK_CURRENT, req_bank);
             sram_bulk_write_start(req_addr);
 
         }
@@ -243,7 +243,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
         debug(DEBUG_USB, "USB_BULK_UPLOAD_END:\n");
         req_state = REQ_STATUS_IDLE;
         sram_bulk_write_end();
-        shared_memory_put(SHARED_MEM_CMD_UPLOAD_END, 0);
+        shared_memory_write(SHARED_MEM_TX_CMD_UPLOAD_END, 0);
         ret_len = 0;
 
         /*
@@ -524,7 +524,7 @@ int main(void)
         while (req_state != REQ_STATUS_SNES) {
             usbPoll();
         }
-        shared_memory_put(SHARED_MEM_CMD_TERMINATE, 0);
+        shared_memory_write(SHARED_MEM_TX_CMD_TERMINATE, 0);
         info("USB poll done\n");
         snes_reset_hi();
         snes_reset_off();

+ 15 - 15
avr/usbload/shared_memory.c

@@ -38,18 +38,18 @@ uint8_t scratchpad_state;
 uint8_t scratchpad_cmd;
 uint8_t scratchpad_payload;
 
-void shared_memory_scratchpad_save()
+void shared_memory_scratchpad_tx_save()
 {
-    scratchpad_state = sram_read(SHARED_MEM_LOC_STATE);
-    scratchpad_cmd = sram_read(SHARED_MEM_LOC_CMD);
-    scratchpad_payload = sram_read(SHARED_MEM_LOC_PAYLOAD);
+    scratchpad_state = sram_read(SHARED_MEM_TX_LOC_STATE);
+    scratchpad_cmd = sram_read(SHARED_MEM_TX_LOC_CMD);
+    scratchpad_payload = sram_read(SHARED_MEM_TX_LOC_PAYLOAD);
 }
 
-void shared_memory_scratchpad_restore()
+void shared_memory_scratchpad_tx_restore()
 {
-    sram_write(SHARED_MEM_LOC_STATE, scratchpad_state);
-    sram_write(SHARED_MEM_LOC_CMD, scratchpad_cmd);
-    sram_write(SHARED_MEM_LOC_PAYLOAD, scratchpad_payload);
+    sram_write(SHARED_MEM_TX_LOC_STATE, scratchpad_state);
+    sram_write(SHARED_MEM_TX_LOC_CMD, scratchpad_cmd);
+    sram_write(SHARED_MEM_TX_LOC_PAYLOAD, scratchpad_payload);
 }
 
 void shared_memory_irq_hook()
@@ -66,18 +66,18 @@ void shared_memory_irq_restore()
     sram_write(SHARED_IRQ_LOC_HI, irq_addr_hi);
 }
 
-void shared_memory_put(uint8_t cmd, uint8_t value)
+void shared_memory_write(uint8_t cmd, uint8_t value)
 {
 
     info("Write shared memory 0x%04x=0x%02x 0x%04x=0x%02x \n",
-         SHARED_MEM_LOC_CMD, cmd, SHARED_MEM_LOC_PAYLOAD, value);
+         SHARED_MEM_TX_LOC_CMD, cmd, SHARED_MEM_TX_LOC_PAYLOAD, value);
 
-    shared_memory_scratchpad_save();
+    shared_memory_scratchpad_tx_save();
     shared_memory_irq_hook();
 
-    sram_write(SHARED_MEM_LOC_STATE, SHARED_MEM_SNES_ACK);
-    sram_write(SHARED_MEM_LOC_CMD, cmd);
-    sram_write(SHARED_MEM_LOC_PAYLOAD, value);
+    sram_write(SHARED_MEM_TX_LOC_STATE, SHARED_MEM_TX_SNES_ACK);
+    sram_write(SHARED_MEM_TX_LOC_CMD, cmd);
+    sram_write(SHARED_MEM_TX_LOC_PAYLOAD, value);
 
     snes_hirom();
     snes_wr_disable();
@@ -91,7 +91,7 @@ void shared_memory_put(uint8_t cmd, uint8_t value)
     snes_lorom();
     snes_wr_disable();
 
-    shared_memory_scratchpad_restore();
+    shared_memory_scratchpad_tx_restore();
     shared_memory_irq_restore();
 
 }

+ 25 - 16
avr/usbload/shared_memory.h

@@ -22,30 +22,39 @@
 #define __SHARED_MEMORY_H__
 
 
-#define SHARED_MEM_SNES_ACK           0xa5
-#define SHARED_MEM_SNES_RTS           0x5a
+#define SHARED_MEM_TX_SNES_ACK              0xa5
+#define SHARED_MEM_TX_SNES_RTS              0x5a
 
+#define SHARED_MEM_TX_CMD_BANK_COUNT        0x00
+#define SHARED_MEM_TX_CMD_BANK_CURRENT      0x01
 
-#define SHARED_MEM_CMD_BANK_COUNT     0
-#define SHARED_MEM_CMD_BANK_CURRENT   1
+#define SHARED_MEM_TX_CMD_UPLOAD_START      0x03
+#define SHARED_MEM_TX_CMD_UPLOAD_END        0x04
+#define SHARED_MEM_TX_CMD_UPLOAD_PROGESS    0x05
+#define SHARED_MEM_TX_CMD_TERMINATE         0x06
 
-#define SHARED_MEM_CMD_UPLOAD_START   3
-#define SHARED_MEM_CMD_UPLOAD_END     4
-#define SHARED_MEM_CMD_UPLOAD_PROGESS 5
-#define SHARED_MEM_CMD_TERMINATE      6
+#define SHARED_MEM_TX_LOC_STATE             0x000000
+#define SHARED_MEM_TX_LOC_CMD               0x000001
+#define SHARED_MEM_TX_LOC_PAYLOAD           0x000002
 
+#define SHARED_MEM_RX_AVR_ACK               0xa5
+#define SHARED_MEM_RX_AVR_RTS               0x5a
 
-#define SHARED_MEM_LOC_STATE            0x000000
-#define SHARED_MEM_LOC_CMD              0x000001
-#define SHARED_MEM_LOC_PAYLOAD          0x000002
+#define SHARED_MEM_RX_CMD_PRINFT            0x00
+#define SHARED_MEM_RX_CMD_FILESEL           0x01
 
-#define SHARED_IRQ_LOC_LO              0x00fffe
-#define SHARED_IRQ_LOC_HI              0x00ffff
+#define SHARED_MEM_RX_LOC_STATE             0x001000
+#define SHARED_MEM_RX_LOC_CMD               0x001001
+#define SHARED_MEM_RX_LOC_LEN               0x001002
+#define SHARED_MEM_RX_LOC_PAYLOAD           0x001003
 
+#define SHARED_IRQ_LOC_LO                   0x00fffe
+#define SHARED_IRQ_LOC_HI                   0x00ffff
 
-#define SHARED_IRQ_HANDLER_LO           0x00
-#define SHARED_IRQ_HANDLER_HI           0x10
+#define SHARED_IRQ_HANDLER_LO               0x00
+#define SHARED_IRQ_HANDLER_HI               0x10
 
-void shared_memory_put(uint8_t cmd, uint8_t value);
+void shared_memory_write(uint8_t cmd, uint8_t value);
+void shared_memory_read(uint8_t *cmd, uint8_t *len,uint8_t *buffer);
 
 #endif