瀏覽代碼

debug SHM

optixx 14 年之前
父節點
當前提交
f9e1a7a151
共有 5 個文件被更改,包括 28 次插入18 次删除
  1. 2 2
      avr/usbload/config.h
  2. 7 9
      avr/usbload/main.c
  3. 14 5
      avr/usbload/shared_memory.c
  4. 2 2
      avr/usbload/shared_memory.h
  5. 3 0
      tools/ucon64/src/backup/quickdev16.c

+ 2 - 2
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"
 

+ 7 - 9
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();

+ 14 - 5
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){

+ 2 - 2
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

+ 3 - 0
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,